I was standing at a bus stop one day waiting for my bus to work and saw the municipal water tank come in and water the plants on the road-side that are a part of the city's beautification process. I was confused because it rained in the morning and I was sure that the plants on the side of the road need not be watered. I thought if there was a way to tell people when to stop watering plants as most people I have seen with gardens tend to be overzealous with watering their plants.
What it does
- It monitors the moisture content of the soil using soil moisture sensors
- If the soil moisture is below a certain threshold, it checks the probability of rain through the temperature and humidity sensors and passing them through a machine learning algorithm (2-stage logistics regression)
- If the soil moisture is below the threshold and there is no chance of rain, it turns the water pumps and starts watering the soil till the water content is sufficient
- If it starts raining while the watering process is going on, it turns the water pumps off and lets rain restore the water content
- If the soil has sufficient moisture and rain continues to pour down, the system switches on the irrigation valves to drain the water out from the fields, thereby preventing water logging and run-off
How I built it
Since I just an idea, to begin with, I got tremendous help from the Microsoft documentation in learning about all the technologies in use. I started with the sensors and their integration with Azure cloud in a bi-directional fashion and ended with visualization on Power BI.
Challenges I ran into
The greatest challenge I faced was getting the device actuators to trigger based on the feedback from the cloud. With a lot of support from several websites, I was able to make it work.
Accomplishments that I'm proud of
I am proud that I was able to complete my first Azure IoT project that addresses one of the foremost issues facing the entire planet. I hope I am able to continue this and would be thankful even if this solution is able to produce the smallest benefit to any community.
What I learned
This being my first stint with Azure and IoT as a whole, the entire process was a great learning experience. I guess whatever the solution does was entirely an immense learning experience.
What's next for Jalsutra
- I intend to expand the solution to take network availability into consideration using a swarm of nodes (low-cost microcontrollers viz., ESP8266/ESP32 or Arduino Uno connected with sensors). These microcontrollers can be run off normal batteries for extensive durations using proper deep-sleep/wake-up cycles
- All the nodes connect over LoRaWAN (LOw Power Long RAnge Wide Area Network) to a central gateway. Raspberry Pi is used as a gateway and is configured as an IoT Edge device
- The gateway receives the data from the nodes and sends it over to Azure cloud (MQTTS) as per the current architecture to perform predictive analysis, reporting and storage. In the absence of a reliable network connection, the Edge device takes over and performs these tasks
- The Azure could sends in messages (MQTTS) to the gateway device (Raspberry Pi) to switch on/off the water pump/irrigation switch gates. This functionality is also taken over by the edge device if the network connection is unstable.