IOT project


Project-related information:

I used an ESP32 microcontroller to automate the garden irrigation system at home.

The system makes use of capacitive soil moisture sensors to measure the moisture content in the soil.
The microcontroller is designed to keep track of and store the minimum and maximum values from each sensor, which is then used to calibrate the sensor readings on a scale from 0 - 100% rh. Below is a screenshot (Image 1) of the user interface with the soil moisture sensor and its related settings for the front section of the garden.

Image 1 - Garden section with a moisture sensor and solenoid output

 

Other parameters that are taken into consideration are the ambient temperature, humidity and sunlight intensity, which can be used to configure the automatic operation of the system. As an example, you don't want the system to activate if the temperature is too high with sunny conditions, since that'll result in a higher evaporation rate, making the system less efficient. These parameters are configurable by the user as shown in image 2 below.

Image 2 - Custom user interface

 

The system operates on the wifi network with its own custom interface as shown in the image above. The first time connecting, the microcontroller will present the user with a wifi manager, where the user has to enter the network credentials. There is a OLED screen connected to the controller as well, which will indicate its current state and also show the IP address that you need to connect to in order to access the wifi manager as shown in the screenshots (Image 3 and 4) below.

Image 3 - Wifi manager
Image 4 - OLED display with status information

 

All the required components were built into a control panel and mounted on the chassis plate.
Below is a photo of the completed chassis just before installing it into the panel.

Image 5 - System control panel

 

The system features over-the-air updates, so any programming changes can be made via the wifi network.
The user interface is updated via web sockets from the controller, so if you're connected to the system from multiple devices, the same information would be presented on all devices.

 

Development Tools:

Programming languages and tools includes, but are not limited to the following:

  • Arduino IDE
  • HTML
  • CSS
  • JS

The controller is configured as a webserver and the HTML, CSS and JS files are uploaded onto the controller's filesystem.

Below is a video with a short demonstration of the system.