Arduino Managed Greenhouse - SHProject 6
by DeviceCtrl in Circuits > Arduino
231 Views, 2 Favorites, 0 Comments
Arduino Managed Greenhouse - SHProject 6
This project will use an Arduino to help manage a small greenhouse to grow strawberries. It will protect the plants during the cold of winter and from pests and insects during the growing season. Since I have a rain water collection system, I can give them consistent and measured watering. The Arduino monitors the temperature and can activate a heater during cold spells or a large fan if the temperature gets to hot. It also monitors the water tank using horizontal liquid float switch (to prevent the pump from running dry). The water pump uses micro tubing to deliver the right amount of water to each planter.
Supplies
Arduino Uno
Arduino Ethernet shield
12vdc to 9vdc power supply
120vac Solid State relay
12vdc Solid State relay
5V Optocoupler relay
12vdc PC cooling fan
12vdc water pump
DHT11 temperature and humidity sensor
DHT22 temperature and humidity sensor
500-Watt Ceramic Small Indoor Space Heater
waterproof project box
planters
small backyard greenhouse
water tank
outdoor wiring
outdoor Ethernet cable
Downloads
Arduino Schematic
I like to begin my Arduino projects by mocking up the wiring using bread boards and jumper wires. Adding each component one by one, ensuring that I have hooked them up correctly and they are giving the expected results. So follow the above diagram to construct the device.
Assemble Your Greenhouse
Build or purchase a small to medium greenhouse. I had treated lumber and salvaged window glass and Plexiglas on hand, so I built a simple greenhouse. There are also very nice urban greenhouses on Amazon or at your local garden center.
Micro Tubing Watering System
This next part takes a bit of plumbing. I installed a small 10-15 gallon RV tank at the bottom of the greenhouse. From there I ran PVC piping from the tank branching out to micro tubing at each level of the greenhouse. These small RV tanks are perfect for this kind of project. A small water pump can be attached to the bottom 1/2 inch female NTP opening and the horizontal float level switch can be installed at the 1.5 inch female NTP fitting on the opposite side.
A solid state relay will be used to activate the pump. The Arduino will first check the float switch to ensure that there is water in the tank. This will prevent the pump from running dry.
Heating
To prevent damage or freezing during the coldest part of the winter, I installed a small space heater, that is activated by a solid state relay. It's not necessary to keep the greenhouse at super warm temperatures. It just needs a little heat to keep the interior temperature above freezing. The DHT22 will monitor the temperature and humidity in the greenhouse and be used to determine when to activate/deactivate the heater.
System Unit Cooling
The system unit will be outside and subject to very high temperatures during the summer. I recorded temps around 120F/49C deg. So I installed a DHT11 inside the project box. The DHT11 is cheaper and not as accurate as the DHT22, but its good enough to monitor the temp and turn the cooling fan on and off.
Project Box
Very important to put all the electronics in a waterproof box with waterproof bulkhead connectors
Arduino Ethernet Shield
While preparing and mounting all the components, don't forget to first mount the Ethernet shield to the Arduino Uno. Make sure the Cat6 Ethernet cable is rated for outdoor use. If you dont want to run cable, Arduino makes a WiFi shield for the Uno.
Polling and Commanding the Unit
Since this unit will be installed outdoors, it's not practical to connect a display. Instead, I have my PC poll the system unit every minute and store the readings in a SQL database. This gives me both up-to-date environment data, water level and disposition of the heater and fan.
I decided to use UDP protocol instead of TCP. Arduino's Ethernet/WIFI library include software to communicate using UDP. Every minute my PC sends a timestamp in the form of r2406131422054 - this translate to 2024-06-13 14:22:05 4=Thursday (ie day of the week)
Sending a timestamp to my Arduino devices is very handy. It allows the device to know the date and time (within a second) without any additional code, NTC sync or RTC device.
If the device receives this string, it immediately responds with a tab delimited string of the current sensor readings. like: C\t000\t79\t761\t99\t1\t745\t95\t22300209
This is made up of Temperatures, humidity, water level, pump and fan relays and the current watering schedule.