For anyone who grows plants at home, it is a struggle to keep consistent irrigation due to busy life or travel... etc.
Also birds could eat plants leaving them in poor condition.
So My project's idea is to make automated irrigation system, and smart system to keep birds away.
After exporting already nested DXF files from Fusion 360, It is time for Laserworks.
DXFs are imported in Laserworks , setting proper speed and power for cutting and scanning.
For the big sides (shown below) I faced a challenge, when I found actual wood sheets dimensions less than 30*50 cm (which was the dimension of the frame in the design), but the solution came with a feature in Laserworks that controls the dimensions of the outer frame without affecting the location of the slots' holes.
Input:
Ultrasonic sensor.
Bluetooth module (user input via serial communication).
Action components:
Selenoid valve (referred to as DC motor).
Buzzer.
Power Input:
12v Adaptor (for selenoid valve).
5v Adaptor (for Arduino).
Other components:
Arduino Uno.
Breadboard.
5v relay.
RTC Module.
Jumpers.
Circuit diagram (Fritzing)
1.selenoid valve opens at certain times allowing water to flow:
Selenoid valve is controlled by 5v relay which gives it the signal from Arduino to open at certain time.
Time is set by means of RTC (real time clock) module.
Signal to open is pre-set by the user in mobile app and sent via Bluetooth module.
2-Buzzer sound when objects get in range:
Ultrasonic sensors detects objects in range (birds).
Ultrasonic sensor triggers Buzzer to keep them away.
For Arduino: 5v Adaptor
For Selenoid valve: 12V Adaptor
Code function:
This code triggers relay to open selenoid valve at certain time.
OnHour is a variable that user defines in the mobile app, and the value is sent via Bluetooth (Serial communication).
The code compares OnHour with current hour value from RTC module, so that when the values are equal the valve opens.
another function is to trigger buzzer based on signal from ultrasonic sensor.
Code structure
First step to identify the pins for buzzer & relay.
OnHour variable is the time when the relay signal is high letting the water flow through selenoid valve.
functions regarding time from RTC module.
Functions regarding ultrasonic sensor.
void setup:
start serial communication.
start RTC module.
define output pins.
void loop:
First part triggers the buzzer if the distance reading on either ultrasonic sensor is less than or equal 25cm.
The second part is for the timer, first we get time from RTC module and print it.
After that we get the value OnHour with (Serial.parseint) function which converts it to integer.
then we can compare this integer with current hour value from RTC module.
If the values are equal for hours, the relay signal is high for 10 seconds when minutes value is 0 (for example at 6:00).
Mobile application
Mobile application is created using MIT app inventor to communicate between smartphone and smart circuit via Bluetooth module.
The interface is very simple, it consists of one Listpicker to select Bluetooth device, a text box to set alarm hour, and OK button to confirm.
The listpicker is used to open bluetooth devices menu to connect with HC-05.
The button sends the user input from text box.
First, I tested the circuit with a fan instead of selenoid valve as it is easier to test functionality. I also tested with serial communication via USB cable from PC.
After That I tested it with solenoid Valve and Bluetooth.
Then I mounted all components into enclosure, and put a towel to protect electronics from any water leakage.
When lasercutting big sides (shown below) I faced a challenge, when I found actual wood sheets dimensions less than 30*50 cm, I realized that it was better if I made the dimensions of the sides less than 50*30, but the solution came with the help of my instructor (Menna), she showed me a feature in Laserworks that controls the dimensions of the outer frame without affecting the location of the slots' holes.
The most part which took me to research was to set the alarm based on user input from serial communication.
Serial.parseint function helped me much as it enabled me to take user serial input and convert it to integer.
I came with an idea to make it as simple as possible by making one user input (Hours) so it is easier to get it as serial input.
develop better mobile app to make schedule for each plant.
communicate circuit via Wi-Fi instead of Bluetooth to allow distant communication.
Track water level in the bottle to notify user at low water reserve.