Smart Home Irrigation Project

This project is to build a smart home connected irrigation system using an Arduino processor and readily available components. It can work with one channel or with many, to enable smart irrigation of one or more plants, each with a custom watering regime.

We have been using this project in our conservatory now for some time and not only is it incredibly water efficient, it also does a fantastic job of looking after our many plants when we go away on holiday. This includes some quite exotic plants such as a lime tree, an lemon tree, an orange tree, coconut palms, an avocado plant and many more.

Design

This design provides 8-channels and each on uses it's own compact, 12V dc pump to pump water to a plant via a 6mm irrigation tube.

Tank

I use harvested rain water to irrigate all of my plants inside and outside my home. In my conservatory, I'm using a 20 litre water tank to store the water. My irrigation system is so efficient that this tank can last for months.

I have fitted a float sensor to the tank, to detect when it is empty.

Manifold

I have fitted an 8mm outlet to the tank, which goes to my manifold. This 8-way manifold is used to stop each individual pump sucking air back through the other channels. I could have used one-way valves but this solution works better and is cheaper.

Pumps

To enable individual channel control, I have used a 12V dc pump for each channel. These are cheap, reliable and deliver water at a nice speed for watering plants in pots. They are also quite quiet. These pumps are not self-priming, so they need to be below the water tank level.

The amount of water delivered is controlled by how long the pump runs. They are rated at 5W and so a power transistor is used to control them. They come with a mounting bracket and measure 56mm × 52mm × 47mm. The outlet and inlet are designed for an 8mm hose.

Each pump is connected via a 3-position switch, so that the motors can be set to on, off or automatic control. This makes it really easy to test or disable each channel individually.

I have 3D printed a mount for the 8 switches.

Soil Moisture Sensor

To ensure optimal watering patterns for each plant, we are going to be using our Smartisant Soil Moisture Sensor SML1. This is a wired sensor that is ideally suited to working with the 5V supply and analogue input ports on device like the Arduino Uno and Arduino Mega 2560. It was developed following a lot of research on moisture level sensors and has been in use in our home for some time now.

The sensor outputs a voltage between 0V and the supply voltage but it does not use the full range. For example, when using the Arduino 5V supply, the output voltage will result in analogRead() values between 0 (dry air) and approximately 750 (salty water). In practice the output values are mapped from 100 to 750 to give a soil moisture reading of 0% to 100%. This gives a more usable range, especially at the lower end.

Note:  Should the sensor become disconnected by accident, the values seen at the analogue input will be close to zero, which indicates completely dry soil. This potentially means the plant could be irrigated every time the sensor/pump check occurs and the plant pot could eventually overflow.

To prevent this, we implement a safety check in our software which means that we don't operate our irrigation pumps when the soil moisture level is below 5%. Our irrigation controller also reports soil moisture values and pump activity to our contextual smart home and if the soil moisture values drop below a preset level, we get a notification.

Interface PCB

There is an on-board 5V voltage regulator on most Arduino boards but you can only take so much current from it before the voltage starts to drop. To avoid any issues, I've designed my own PCB, which features its own dc-dc convertor, to provide an accurate and stable 5V supply to all of the soil moisture sensors.

Timing

With an application like this, there is not much point in checking the sensor very often. Typically we take a measurement every 30 minutes and then decide if we should turn on a pump, to water a plant or several plants. We also usually limit the pump operation so that it never gets activated more than once every 3 to 6 hours. This ensures that any water delivered is distributed throughout the soil in the plant pot before we take another measurement.

Sample Code

We have developed some sample Arduino code: SoilMoisture.ino

This shows how the sensor can be read to get useful values which can then be used to intelligently control an irrigation pump.

Leaks

When plumbing in automated irrigation systems, you need to make sure you don't have leaks and are not simply pumping water all over the floor! This means using quality pipework and clips. It also means fixing the ends of the irrigation pipes so that they deliver water close to the centre of the plant pots and cannot be dislodged by accident, pets, children, etc. We typically use tie-wraps to fix pipe ends to stakes or the plant itself (should it have a sufficiently strong trunk).

In our conservatory, we have also connected our Smartisant Flood & Leak Sensor FLD1 to our Arduino-based irrigation controller and installed it next to the manifold and pumps, just in case. This will trigger our smart home alarm if a leak is detected.

Smart Home Integration

My contextual smart home models things like soil moisture level sensors, irrigation pumps and water tanks. The Arduino is sending encrypted events using my unified communications protocol and these are in JSON format. This includes soil moisture levels, pumps being switched on and off, etc.

When the tank is empty, my contextual smart home will generate a notification and also make a voice announcement (if someone is at home). A local buzzer is also activated in the conservatory.

Summary

My conservatory irrigation system has looked after my plants for several years now and has been completely reliable.

All this hardware sounds like quite a lot of kit to install but, it is mounted in such a way that it is hidden behind furniture and out of site. Even the wires and irrigation pipework are hidden in ducting along the skirting boards.

Examples

This irrigation is used to water a wide range of plants. Some reside in the conservatory all year round and others are put outside in the summer months.

My @smartest_home occasionally tweets about the soil moisture levels for the plants that it looks after for me. This includes an orange tree, which stays indoors all year round. The use of soil moisture sensors means that it is optimally watered to keep it healthy.

My lemon tree produces lots of edible limes. Not many people know that ripe limes are actually yellow. In the warmer months it lives outside and is irrigated by another irrigation system. During the colder months it comes into the conservatory, to protect it from frost.

My @smartest_home occasionally tweets about the soil moisture levels for my avocado plant. This type of plant likes moist soil, so the pump is activated when the soil moisture level drops below 70%. This plant also lives in our conservatory all year round.

My banana plant is now pretty large and over 9 foot tall! In the warmer months it lives outside and is irrigated by my patio irrigation system. During the colder months it comes into the conservatory, to protect it from frost. This is why I designed my irrigation system to have channels that can be enabled and disabled.

Moving plants this big requires a trolley and two people!

I plant basil at each spring and crop it throughout the summer. It's a cooking ingredient I use a lot.

My lemon tree produces edible lemons. In the warmer months it lives outside and is irrigated by another irrigation system. During the colder months it comes into the conservatory, to protect it from frost.

My chilli plants start off in the conservatory but towards the end of the summer I put them outside. Last year, I was picking fresh chillis into December.