Introduction: CoreConduit: Indoor Garden Controller System
A garden controller helps us to manage the environment by controlling fans, heaters, lights, pumps, and notifying us when the garden needs our attention.
The Garden Controller System will help you to grow:
- Greens such as lettuce, spinach, Swiss chard, and kale.
- Herbs such as basil, parsley, oregano, cilantro and mint
- Tomatoes, peppers, strawberries, and many more
using hydroponics (or soil) because I believe everyone, even on a budget, should be able to grow their own plants at home without having to go through the painful process of learning what does and doesn't work. I've distilled it down to an electronic control system that provides you with the insight you need to get your little green friends growing and thriving. I want to help you learn more about your plants by using the controller and using helpful reminders..
I recommend using hydroponics, before you try aquaponics - try hydroponics so that you know what success looks like! Also, for growing indoors it's a must, besides, plants will grow much faster after germination.
Just about any plant can be grown hydroponically, but for beginners it is best to start small. The best choices are herbs and vegetables that grow quickly, require little maintenance, and do not have a huge variety of nutrient needs. You want fast-growing plants so that you can assess how well your system works and tweak it as necessary. It would be a real letdown to wait months until harvest time only to find out your system is not working properly. Low-maintenance plants are great for beginners because they allow you to focus on learning about your system. If you are growing a variety of plants it is also important to make sure that they are similar in their nutrient requirements, so that they grow well together.
Step 1: Requirements
After trying several different styles and configurations of hydroponic gardening, I decided a robust control system needed the following traits:
- A modular controller system that doesn't break the bank. Low-cost, but effective and easy to troubleshoot. What every product is supposed to be, but rarely is!
- Alert me when my plants need my attention. It is helpful to have reminders to check-in on my garden and alerts if appliances such as fans, lights, pumps, heaters need adjusting. Can’t spend all my time watching you guys grow!
- Regulated temperature and humidity in my growing environment. In my closed indoor space, the exhaust and intake fans, humidifier, and dehumidifier should all be toggled as needed based on self-monitoring sensors.
- Regulated delivery of nutrient solution. Ideally, my nutrient solution pump should operate for at least 5 minutes every half hour. By automating the pump cycle, plants receive optimum nutrient levels.
- Light sensors. For indoor growing, I personally prefer the lights be on traditional mechanical timers but I wanted my controller to be able to know when the lights are on. And tell me if they go off before they should.
- What’s going on in there?! You know what would be awesome? An LCD with cool buttons to show the status and communicate any messages that I need to know. It would be even more amazing if I could receive text messages (SMS).
- Remote message commands (in development). If needed, I can send a remote command to override the controller via text. This function is currently undergoing testing, as are email alerts. Doesn’t need the Internet to function. For security and practical reasons, the controller should not need to have access to the Internet unless I decide.
- Data logging. Check the history of my system with an optional method for logging data that can later be analyzed.
- Keep the clutter minimal. You want the minimal amount of equipment inside the growing environment, too many wiring, wires, cables, etc., can be a real pain. I decided to use a wireless remote control set with on/off buttons on the remote so that I could program the Arduino-based system to take control and verify my commands are followed.
- Green wizard needs food, badly. The controller should know the level of nutrient solution in the tank and notify me when it is low.
- Available to everyone. Being open-source and community-oriented is very important to me. I firmly believe that anyone who chooses to spend a little time and effort can learn to build and upgrade their own modular garden system.
Step 2: Gather Your Arduino and Friends
- Arduino Uno R3 ( this project can be extended using more units.)
- Arduino Uno Protoshield
- Real-Time Clock module (DS3231)
- 10k resistor
- male pcb headers
- female pcb headers
- wire w/ connectors for the sensors
- DHT21/22 Temperature / Humidity sensor
- Water Level Sensor
- Dallas Temperature Sensor (for nutrient solution temperature)
- 433MHz RF Transmitter & Receiver Modules
- set set 5 pack of Wireless Controlled Outlets (recommend Etekcity 5 Pack Auto-programmable Function Wireless Remote Control Outlet Switches)
- 2 or more - nRF24L01 2.4Ghz Wireless Radio Transceiver modules
- Arduino Uno R3* or Pro Mini*
- Real-Time Clock Module
- Optional: nRF24L01 Adapter with 3.3v regulator
- connector wires
- Display Option LCD w/ buttons Shield + Arduino Uno R3*
- 2 x 4-pin male header connector wires
- SD Card Option SD Card Shield + Arduino Uno R3*
- connector wires
- Internet Connectivity Option Ethernet or WiFi Shield + Arduino Uno R3*
- connector wires - see https://www.instructables.com/id/Custom-Wire-Connectors/
- PVC conduit box w/ lid
Step 3: Soldering Review
If you are not comfortable using a soldering iron, please consider brushing-up on it before proceeding with the next step.
Step 4: Solder Some Bits to the Prototyping Shield and Sensors
- Solder the headers to the protoshield into position (indicated in the picture)
- Solder the 10k resistor to the pins for the DHT sensor. (shown in the picture)
- Solder the 4-pin connector to the Real-Time Clock module (as shown in the picture in the next step.)
- Solder two wires with connector to the Dallas Temperature sensor.
- Solder three wires with connector to the DHT sensor.
- Solder any remaining optional sensors.
I've included some datasheets to help with pinouts but if you are using the same protoshield you should be able to follow the pictures.
Step 5: Assemble the Controller
Seat the protoshield into the female headers on the Arduino Uno*. Connect the sensors and RTC (Real-Time Clock) module to the protoshield as pictured.
Plug-in the USB cord and connect it to your computer with the Arduino Compiler software available at arduino.cc. I personally prefer working with the Atmel Visual Studio environment because it does an amazing job with code completion and library linking. (contact me if you'd like help switching using Atmel VS)
Step 6: Download the Source-code and Modify
In the source-code I created a base foundation for managing, transmitting, and receiving "sensor" objects and "appliance" objects. This project could easily be modified to work with other environments in which control is achieved by reading sensors and operating appliances based on programmed rules. You'll need to make a few adjustments to the source-code in order for it to work properly with your wireless outlets. To make the changes, you'll need to find out what the codes are that your wireless remote control uses and the outlets are programmed to receive. I have included a sketch for installing onto your Arduino Uno* w/ protoshield to set the Real-Time Clock to the current time and step you through the process of acquiring the codes. You will need to insert the 433Mhz Receiver module (as pictured) and upload this sketch StartCore.ino to the Arduino Uno* and open up the serial console for that port so that you can receive data from the Arduino. After you complete the process of acquiring all of the codes from your remote you can copy and paste directly into TheDecider.h header file where I have indicated.
Step 7: Compile and Upload
Make the modifications to the source-code as shown in the included readme file. The controller has been programmed to help you maintain optimum growing conditions so plants with thrive. You are welcome to make changes, adjustments, tweaks, whatever you like to customize the controller to your style of gardening.
Compile the source, upload to Arduino, and the controller is ready to use provided a power source. The USB or the barrel jack are typically used to power the device.
Step 8: Assemble the Receiver
Let's assemble the parts we'll be using to build The Receiver.
- Connect the nRF24L01 and RTC (Real-Time Clock) module (as pictured).
- The nRF24L01 connects to the protoshield so that the Arduino can communicate wirelessly with The Receiver. (The Receiver is a second Arduino Uno* or Arduino Pro Mini*.)
The Receiver will use the built-in I2C communications capability to connect to a Display (LCD) shield, SD Card data logging shield, Internet connectivity shield, if you dare ;-p and even SMS text messaging.
Step 9: Repeat the Steps
Each microcontroller we use needs to be programmed.
Plug-in the USB cord and compile the source, upload to Arduino, and the controller is ready to use provided a power source. The USB or the barrel jack are typically used to power the device.
Are you ready to dig deeper into the inner workings of this project?
Step 10: FAQ
Why doesn't the controller connect directly to the Internet?
I have also evaluated many other similar projects and found that the more complex garden controllers typically connect you to the Internet of Things. Personally, I do not want to share my garden’s data and potentially its control to just ANYONE (e.g. remote servers) unless I choose to do so. I strongly believe that the Internet of Things is a potentially dangerous path and will most certainly be exploited by those who wish to hurt honest people for their gain. The more control we give to the Internet of Things, the more we enable dependence on the internet and give away the simple freedom to live our lives in a way that we choose. I may sound a bit paranoid, and maybe I am, but hopefully I have at least convinced you to think more about what or WHO has control over your appliances. Having said that, this project is capable of connecting to the Internet. ;-)
Does this project include measuring pH and/or E.C.?
The option to use these sensors has been considered, however, not been implemented as of now. The pH of water is an important measurement whether you are gardening indoors or outdoors, soil or soil-less, because it affects whether a plant can properly take in nutrients. The electrical conductivity (EC) of water estimates the total amount of solids dissolved in water -TDS, (Total Dissolved Solids). TDS is often measured in ppm (parts per million). In hydroponics, this measurement is used to determine the approximate concentration of nutrient solution to water.
I decided that the cost of including these sensors far outweighs the benefit of constant monitoring. I recommend a hand-held pH tester such as the Oakton EcoTestr pH 2 Waterproof pH Tester, which is excellent for the home gardener and has been proven time and again to be accurate. There are many hand-held EC devices available as well and if you are checking the pH, it’s a great time to check the E.C. If there is enough interest in adding these sensors to the controller, it’s flexible and open-source and I’m willing to work with anyone interested.
What do I need in addition to the CoreConduit Garden Controller?
The basic equipment needed to successfully garden indoors using the controller: http://www.hydromazing.com