What problem are you going to solve?

We run in a busy world where we find it difficult to water plants on time. It was found that gardeners used so much water in their gardens or on their balconies that they lost track of things. The result is that the plants are often either too dry or have to deal with floods. As far as the environment is concerned, it is necessary to take precautions against possible floods beforehand and to be careful not to waste too much water unnecessarily. Otherwise, we will have to deal with serious consequences in the future, such as water shortages, droughts, and so on. With Automatic Plant Watering Systems, you don't need to worry about your plants being thirsty.

What are you going to build to solve this problem? How is it different from existing solutions? Why is it useful?

The idea is to measure temperature, humidity automatically, and moisture levels, transmit them wirelessly via BT and can control a hose if necessary, which can also be controlled remotely via an app from anywhere in the world. The moisture and temperature data are constantly fed to a TinyML model to water the plant based on the inference. An automatic plant watering system ensures that plants get just the right amount of water at just the right time. You can use the Automatic Plant Watering System to care for all your plants effortlessly 24*7.

Block Diagram

Hardware Setup & Connections

I'll be using the Nordic Thingy:53 which has numerous in-built sensors (Temperature, Humidity, Pressure, Gas, Inertial measurement unit (IMU), Magnetometer, Low-power accelerometer, Color, and light sensor), and a Gas sensor to measure temperature, humidity levels using edge impulse.

NodeMCU is programmed to control the functioning of the water pump and to measure the soil moisture level.

We will be setting up the Nordic Thingy 53 for edge impulse classification.

IDE setup

  • Connect the development board to your computer
  • Use a USB cable to connect the development board to your computer. Then, set the power switch to 'on'.
  • Download the latest Edge Impulse firmware: Edge Impulse firmware: nordic-thingy53-full.zip
  • Open nRF Connect for Desktop and launch the Programmer app. Move the power switch SW1 to the OFF position. Take off the top cover to access the SW2 button. Press SW2 while switching SW1 to the ON position.
  • Update the firmware

Generating TFLite Model

We will use edge impulse to build & train the TensorFlow Lite model. We will be collecting the gas sensor data for the following cases

  • Temperature
  • Humidity
  • Pressure

We will be creating an edge impulse project named Thingy 53: Env sensing. Running the following command will require your edge impulse email & password.


We have a 65% & 35% split for training and testing data. Next, we create Impulse and add the processing block with Flattern that Flatten an axis into a single value, useful for slow-moving averages like temperature data, in combination with other blocks. Next, we add a Keras Classification learning block, then click on Save Impulse. Next, we click the Generate features to train the model. After a few minutes, we can see the output in the Feature Explorer.

You can visualize the features using the feature explorer.

Hardware & Software

Connect the soil moisture sensor and water pump to the nodemcu as shown below. The main goal of this project is to implement a cost-effective and efficient solution for watering our plants automatically using IoT that uses sensors, Wi-Fi-enabled microcontrollers, and cloud systems. This can be done by sending the soil moisture data to the cloud to be accessed anywhere and anytime. A smartphone or tablet application is also provided to automate the process of watering plants. This device can measure soil humidity/moisture in percentage (%). When the soil is wet, it will have a higher resistance between AO and GND pins, if it is dry it...

Read more »