Build watering system for house plants. In part two of this video series we will create a central unit for our system.
All source files are open-source open-hardware and available at GitHub: https://github.com/SasaKaranovic/HousePlantMonitoringSystem
This looks like a great idea, could be very helpful in home gardening.
I have one suggestion – since it’s likely that each plant will need individual watering, why not place the solenoid controller on the sensor board? This way the system would be less cluttered and more straightforward to set up.
Thank you for sharing the idea by making it open source.
Keep up the good work
Thanks Luke! That’s a great suggestion and I was actually “debating” should I make sensor and actuator into a single unit or separate.
Main reason for keeping them separate was modularity. Some people may just want to have the sensors and they will water the plants manually, or on the other end, thy just want the actuator and set the system to water the plants on a regular schedule (ie. for plants that don’t require a lot of babysitting).
Also in my video I try to keep everything visible so people can get a clear idea how system works. But in the final design, because everything is separate; solenoids, tubing, wiring etc. is very well hidden and virtually invisible, and sensors are barely sticking out of the soil. If they were a same unit, keeping everything “clean looking” might be a challenge, at least for me. But I totally get your point.
In the end it’s a compromise, and I built what I think (hoped) would work best for most people or give them most flexibility/freedom. Obviously this is not a finished product, it’s just one idea/suggestion. 🙂
With that said, everything is open-source/open-hardware, so it would be super simple to merge sensor and solenoid into a single board and have that board co-exist with the rest of the system.
Or to add another type of board that for example turns on LEDs (DC), another one that turns on/off humidifier (AC) and etc. The whole system is very flexible and can be expanded or modified as needed.
Thank you again for the suggestion! It’s a great idea and I appreciate your feedback!
Let me know which path you chose for your system and if you decide to build one, please share, I would love to take a look. 🙂
Hi Sasha,
Thank you for the reply and sharing your design thought process.
First, I need to mention that my knowledge of PCB design is almost non-existent and I barely managed to even open your design files, so my ideas or suggestions may turn out be technically impossible or impractical…?
Apologies if that’s the case.
I fully understand and support the idea of modularity, but I would approach it a bit differently – I’d try to strike a balance between full modularity and common requirements (and I think that solenoid control would be common feature).
Full modularity (i.e. all functions as separate modules) is great, but sometimes inconvenient as it increases number of modules, connections and overall cost.
From what I saw on the sensor PCB, there is quite a lot of space on the back and solenoid controller could fit in there as is, or maybe with a slight PCB size increase.
Ideally, the sensor PCB could be designed in a way where it could be assembled with or without the solenoid controller and related components, depending on the target use case. Such approach may minimally increase the price of the sensor PCB itself, but it also removes the need for a dedicated solenoid controller PCB and reduces overall number of components in the whole system.
This way you could achieve modularity while at the same time reducing the number of individual module boards.
What do you think about such approach?
You are absolutely right. Both approaches have their pros and cons. While something might be a pro for one person, it might be a con for another and vice-versa. 🙂
But with that said, one of many reasons why I release my designs as open-source and open-hardware is that anyone can checkout the design and use it as a starting point for their own personalized design, or use it as-is if they like it.
Also, one of the goals of this system is to show how easy it is to build a system that has “many” small parts and coordinate them to wok in sync to create a bigger more useful system. Although the system is pretty simple, it would be super easy to, later down the line, design another board(s) that controls the AC, humidifier, lights, dispenses nutrients etc. and that board should work with the existing solution.
So to summarize; what you are suggesting can easily be done. I’ve opted to keep the sensor and solenoid as separate boards mainly because that works better for my use case, but you can easily merge them into single board. If you decide to do that, please let me know how the end result looks like, I would love to take a look at it. 🙂
Combining the sensor and solenoid would make the system more reliable in that fewer water connectors would be outside of the plant soil, and they could be put into the same wrapper or protective container.
I would think that you would want to add a warning system that would alert you if there is an unexpected increase in moisture (caused by a stuck solenoid) or unexpected decrease in water pressure (caused by a leak).
Depends on how well you build your system. Combining modules doesn’t always mean more reliable.
The idea behind an an open-source, open-hardware project is; Anyone can replicate it, and along the way modify features to fit their use case. And even contribute to the project so everyone can benefit from it.
Do you have anything that breaks down the cost of the components and sources of where to purchase the components? I’d like to know what the cost (not including wire and tubing) would be for each station/plant’s components. Thank you.
Hi John,
For a hobbyist application, most parts can be sourced from AliExpress, eBay or Amazon. Depending on the supplier and the quality, price may vary.
This is a really great and inspiring video!!
Thanks a lot for sharing!!
I was wondering how do you deal at the discovery of all I2C devices when the central unit boot up, to avoid I2C adresses collision?
Do you make sure to set manually for each sensors and solenoid controller that trey have a unique I2C address?
or it doesn’t matter if few of the sub modules have the same address? I understood that on an I2C bus each slaves needs to have a unique adress but did you find a walk around?
Again thanks a lot for sharing this great projet!
Thank you Christian!
In this example ever device has a hard-coded I2C address, which is a bit tedious but less confusing for the end user. Of course this is for simplicity.
For mass produced stuff you would want to have discovery and provisioning mechanism in place.
Ok clear!
I have never heard of possibility to have a discovery and provisioning mechanism for I2C. Do you know the basic principle of how this works?
Thanks again!
Hi Christian. I2C does not support it on it’s own, that is, it’s not defined by the I2C/SMBus spec. However there is nothing stopping you from implementing one.
For inspiration, you can look at other protocols that have discovery and provisioning and see how it’s done. Then if you like it, adopt it for your I2C application.
Ok. Thanks a lot for your answers!
What is the coding of this program?