My mother grows her own food as a hobby and is very passionate about it. I usually benefit a lot from this hobby since as a vegetarian I get basically all my food from my mother's garden during the summer months. On top of that, organic home-grown food is not only much richer in nutrients and free of pesticides, it also tastes a lot better in my experience. Since I will be moving out and will no longer be able to help water the plants, I decided to use my engineering skills to build her an automated gardening system which takes care of her greenhouse and the three 5 m² raised bed fields.
After talking to my mother about her needs with the system, I came up with the following user requirements.
ID | Description |
---|---|
UREQ-001 | Must deliver water to 4 separate fields with an average of 20L per day on a dry, sunny day and 0-5L on a cloudy or rainy day |
UREQ-002 | Could keep the soil at a configured moisture level between 0-100% |
UREQ-003 | Must ventilate when the temperature in the green house reaches a user set temperature |
UREQ-004 | Must heat actively when the temperature in the green house drops below a user set temperature |
UREQ-005 | Should fend of snails effectively |
UREQ-006 | Should not kill snails so as not to attract more snails |
UREQ-007 | Must Monitor minimum and maximum temperatures over the day |
UREQ-008 | Must be powered by solar since no grid connection is available in the garden |
UREQ-009 | Must be low-cost |
UREQ-010 | Must operate during 3 cloudy summer days in a row |
UREQ-011 | Monitor must be easily readable from 50cm |
UREQ-012 | Must be repairable |
UREQ-013 | Must be safe |
UREQ-014 | Must not break down in the first year |
UREQ-015 | Should be low noise |
The first thing I usually do is to define the different functional elements of a system together with inputs and outputs. I like to do that in a system diagram because it is intuitive and easy to read. I could use standardized symbols, but since I want this project to be accessible to hobbyists, I'll keep it simple and visual.
Next, I thought about what parts my system would need to consist of and what each of these parts must fulfill to cover the user requirements. I did not take this too seriously and did not go into all the detailed module requirements like the behavior requirements of the software. This was just to document my thinking process and practice my product requirements skills a little.
ID | Description | Trace |
---|---|---|
Wiring | ||
REQ-001 | All cables need to be detachable with little effort for maintenance purposes | > UREQ-011 |
REQ-002 | All wires must exceed the standard diameters based on the rated amperage of the attached utility | > UREQ-013 |
Water Distribution | ||
REQ-011 | Must have a pump that delivers a set amount of water up to 40 Liter per day to four different locations based on user input | > UREQ-001 |
REQ-012 | Could deliver separate amounts of water up to 40 Liter per day to four different locations based on moisture readings | > UREQ-002 |
REQ-013 | Could have hygrometers in each field | > REQ-012 |
REQ-014 | Must have a flowmeter with a measuring range compatible to the selected pump | > REQ-011 |
REQ-015 | Must take the water from a water tank with potentially dirty water | > UREQ-001 |
REQ-016 | Pump must not run dry | > UREQ-014 |
User Interface | ||
REQ-021 | Display must be at least 1.3" | > UREQ-010 |
REQ-022 | Must have a means to set the water/humidity for each field | > UREQ-001 |
REQ-023 | Must have a means to configure the internal clock | > UREQ-001 |
REQ-024 | Must display the minimum and maximum temperature and humidity over the day | > UREQ-007 |
REQ-025 | Must allow to set a minimum temperature at which heating is turned on | > UREQ-004 |
REQ-026 | Must allow to set a maximum temperature at which ventilation is turned on | > UREQ-003 |
Control Board | ||
REQ-031 | Must be protected from rain and/or condensation | > UREQ-014 |
Snail Fence | ||
REQ-041 | Must surround each of the three 1m x 5m raised beds with two copper tapes attached to a 9V power supply | > UREQ-005 > UREQ-006 |
REQ-042 | should have a switch to turn off | > UREQ-006 |
Greenhouse Ambient Regulation | ||
REQ-051 | Must have a 12V fan | > REQ-061 > UREQ-003 |
REQ-052 | Must have a 12V heater | > REQ-061 > UREQ-004 |
REQ-053 | Must have a temperature and humidity sensor | > UREQ-004 |
Power Supply | ||
REQ-061 | Must have a battery with twice the capacity to power the controller module and operate the pump long enough to deliver a total of 80L per day for three days in a row. | > UREQ-001 > UREQ-008 |
REQ-062 | Battery must be a 12V lead acid battery for cost effectiveness (because we had an old one laying around) | > UREQ-009 |
REQ-063 | Must have a solar panel that generates enough electricity to charge the battery on an average sunny day in germany through a charge controller as constrained by> REQ-061 | > UREQ-010 > UREQ-008 |
REQ-064 | Must provide enough power for the fan | > UREQ-003 |
REQ-065 | Must provide enough power for the heater | > UREQ-004 |
REQ-066 | Must provide enough power for the water distribution system | > UREQ-001 |
REQ-067 | Must provide enough power for the snail fence | > UREQ-005 |
Next, I started looking for parts and thinking about how I may build it cost-effectively with the parts on the market. There is no point in designing the perfect system if you can't build it because you can't find the right parts. For example, I had to get multiple adapters between thread sizes and a pressure regulator because the pump would deliver more pressure than the drip hose could endure. I made a more detailed module diagram of the water distribution since this one was the most complicated and I wanted to visualize what adaptors I needed and how everything fits together.
I thought about making diagrams for the electronics and software as well. but I feel like the code and electronic schematics are pretty self-explanatory, and since I am a busy man, I will leave it at that. If you have any questions, please create a github issue and I will try to answer it.
Since my mother did not want me to spend much money, I ordered most parts from AliExpress which arrived within 2-4 weeks. Since I did not write down all requirements, traceability kind of loses its purpose so I'll leave it out.
ID | Description | Properties | Requirements | Quantity | Price € | Buy |
---|---|---|---|---|---|---|
PART-001 | Hose | 20m, 12mm inner diameter | low-cost, tolerate pressure of pump | 1 | 10 | get locally |
PART-002 | Dripping Hose | 20m length 4/9mm, minimum of 1-2 bar working pressure, maximum of 4 bar | 4 | 11,43 | Link | |
PART-003 | Hose Clamp | 3/4", 5pc per pack | 3/4" | 2 | 0,86 | Link |
PART-004 | Pump | 5 Bar, 3.5 L/min | Flow Rate, Pressure | 1 | 8,46 | Link |
PART-005 | Flow Meter | 1-30L/min, 17.5 Bar, 1/2" threads | 12V, can handle the pressure | 1 | 1,60 | Link |
PART-006 | Inlet Filter | Double Net | Easy to clean, hang into water | 1 | 2,64 | Link |
PART-007 | Pre-pump Filter | 3/4" threads | connectors on both ends | 1 | 6,34 | Link |
PART-008 | Pressure Regulator | 3 Bar, 3/4" in female, 3/4" out male, | less than 4 bar PART-002 | 1 | 1,58 | Link |
PART-009 | 1/2" to 3/4" adapter | low cost UREQ-009 | 4 | 0,45 | Link | |
PART-010 | Adaptor 1/2"to hose | 1/2" internal thread12mm barbed connector (PART-001) | 5 | 0,43 | Link | |
PART-011 | Adaptor 3/4"to hose | 3/4" internal thread12mm barbed connector (PART-001) | 2 | 0,43 | Link | |
PART-012 | Fan | 12Vlow noise | 2 | 3,27 | Link | |
PART-013 | 4 Way hose splitter | can screw into solenoid | 1 | 5,51 | Link | |
PART-014 | Soaking hose connector | 4mm outside3/4" splitter | 4 | 1,86 | Link | |
PART-015 | Solenoid Valve | 1/2" threads, 0.2-8 bar | runs at 12V, normally closed | 4 | 1,36 | Link |
PART-016 | Float Switch | mounts to side of the tank | 2 | 0,64 | Link | |
PART-017 | Solar Panel | 20W | >= 4x battery capacity | 1 | 22,17 | Link |
PART-018 | Solar Charge Controller | 10A | for lead acid batteries, | 1 | 3,66 | Link |
PART-019 | Battery | 60Wh | low-cost, >= 60 Wh | 1 | 18 | get locally |
PART-020 | Heater | 100W, 12V | 1 | 10,59 | Link | |
PART-021 | ESP32 | low-cost, I2C interface, USB flashing, | 1 | 4,62 | Link | |
PART-022 | Real Time Clock module | Based on PCF8563T | I2C, Battery mount | 1 | 0,32 | Link |
PART-023 | Hygrometer | Analog reading | 3.3V, low-cost | 8 | 0,23 | Link |
PART-024 | Bare Copper Wire | 25mx0.9mm | without enameling | 2 | 12 | Link |
PART-025 | 5V Step Down Converter | input 6-32V, output 5V 2A, | input 12V, output 1A | 1 | 2,18 | Link |
PART-026 | Micro USB Cable | for code uploading and powering of the USB | 20cm length, capable of data transmission | 1 | 2,18 | get locally |
PART-027 | Button | Standard Button 12x12mm | 1 | 1 | Link | |
PART-028 | I2C Display | 1.3", OLED | I2C communication | 1 | 3,15 | Link |
PART-029 | HTU31D Humidity & Temperature Sensor | 0-100% humidity, -40 to +125 C, | 0-100% humidity, -10 to +60 C, resistant to condensation, breakout so it can be lead outside of the enclosure | 1 | 2,57 | Link |
PART-030 | Connectors | 2,3,4 pin connectors, suitable for selected wire diameter | 1 | 1,52 | Link | |
PART-031 | Potentiometers | WTH118 linear Potentiometer | fully enclosed, else there are issues with humidity | 4 | 1,30€ | Link |
PART-032 | PCB | See electronics folder for detailed BOM | 1 | 15 | ordered from JLCPCB using the files in the electronics folder | |
PART-033 | Barbed Connector adaptor | I 3D printed this from TPU because I realized later that I was missing this part | flexible, convert 9mm outer diameter to 12mm outer diameter | 1 | 0,05 |
After a first iteration using a prototype through-hole circuit board and several bug-fixes, I upgraded to a PCB for version 2. The schematics and PCB design can be found at https://www.flux.ai/michox/greenhouse?editor=schematic
Since the MOQ on JLCPCB was 5 pieces I have a few more PCBs left, so if you are interested in one of those, contact me by raising an issue.
Since I regularly upload to the PCB while connected to the main power supply, I decided to use a USB step-down converter rather than an onboard voltage regulator, as I would otherwise have issues with the USB power Supply and the onboard PCB power supply.
In the future, integrating the power supply for the ESP32 and the RTC Module would be opportunities for improvement. The PCB is also larger than necessary as I wanted to keep my old enclosure, but the PCB could easily be half the size.
I will also consider designing an enclosure for 3D printing.
Me assembling the box. I did not have any hinges so I 3D printed some with my resin printer They work! Assembling the electronics the fans this is where the fans get their air from solar panel battery at full charge! The snail fence
This is where the water is taken in Here the pump distributing it. I broke one of the connectors and need to get a replacement so it's leaking right now but that should get fixed soon. The hoses and wiring of the snail fence and hygrometers (we will install the snail fence later) Installing the drip hoses it's running!
This was a fun project and I had a chance to apply my skills in engineering and product design on a small, low risk scale which made this very enjoyable. The system is fully functional and my mom is delighted, but I will share any design improvements I come up with.