DIY Plant Humidity Sensor

Do you want perfection for your plants well being? Are you unsure how much water your plant needs? or do you just want to track how much water the plant consumes? Then this project is for you.

Hardware Required

  • Arduino Nano (any other microcontroller)
  • Arceli Water Level Sensor (alternatively: soil moisture sensor)
  • 16×2 QAPASS LCD
  • RGB LED Module
  • Cables/Wires
  • Power Cable (Mini USB type B to USB type A)


  • PLA Filament


  • CAD Software (Autodesk Fusion 360)
  • 3D Printer (Flashforge Adventurer 3)
  • 3D Print Slicer Software (FlashPrint)
  • Soldering Iron & Wire

Step 1: Build Your Circute

Build Your Circute

Make your circuit schematic after selecting your components. When programming the microcontroller, the diagram will be very helpful.

Step 2: Program Your Microcontroller

Program Your Microcontroller

Microcontroller programming and system testing are required.

Arduino Code:

#include <LiquidCrystal_I2C.h>     // include the library code for the LCD screen
LiquidCrystal_I2C lcd(0x27,20,4);  // set the LCD address to 0x27 for a 16 chars and 2 line display

#define POWER_PIN 6
#define SIGNAL_PIN A1

int value = 0;  // variable to store the sensor value
int red_light_pin = 4;
int green_light_pin = 3;
int blue_light_pin = 2;

void setup() {
  Serial.begin(9600);           // start the serical console

  // sensor setup
  pinMode(POWER_PIN, OUTPUT);   // configure D4 pin as an OUTPUT
  digitalWrite(POWER_PIN, LOW); // turn the sensor OFF

  // LCD setup

  // LED setup
  pinMode(red_light_pin, OUTPUT);
  pinMode(green_light_pin, OUTPUT);
  pinMode(blue_light_pin, OUTPUT);

void loop() {
  // sensor loop
  digitalWrite(POWER_PIN, HIGH);  // turn the sensor ON
  delay(10);                      // wait 10 milliseconds
  value = analogRead(SIGNAL_PIN); // read data from SIGNAL_PIN and store it to value variable
  digitalWrite(POWER_PIN, LOW);   // turn the sensor OFF

  // LCD loop
  lcd.setCursor(2,1);             // define where to write on the LCD screen
  lcd.print(value);               // write value on LCD screen

  //LED loop
  if (value<300) RGB_color(150,0,0);                     //Red
  else if (value>300 && value<350) RGB_color(150,150,0); //Yellow
  else if (value>350) RGB_color(0,150,0);                //Green

  delay(990); // wait 990 milliseconds

void RGB_color(int red_light_value, int green_light_value, int blue_light_value)
  analogWrite(red_light_pin, red_light_value);
  analogWrite(green_light_pin, green_light_value);
  analogWrite(blue_light_pin, blue_light_value);

Step 3: Model Your Enclosure

To model the enclosure for this project, I utilised Autodesk Fusion 360. So that it may fit in the plant pot, the purpose was to create it as small as feasible. I made a tight fit using the 3D models of the electronic components I acquired in order to accomplish this. Yes, I did leave room for the wires. The enclosure was ultimately made up of three components that could be press-fit together.

Step 4: 3D Print Your Enclosure

3D Print Your Enclosure

The three components were 3D printed using a FlashForge Adventurer 3 after being first cut with FlashPrint. It was made of PLA in black.

Step 5: Assemble


Place the electronics inside the main enclosure after soldering them. Next, attach the other two enclosure components.

Step 6: Test Your Unit

Test Your Unit

Connect the power source, then test your plant’s sensor unit.

Step 7: Final Result

Hope you enjoyed this project. We superkitz will be back soon with more interesting projects.

Leave a Reply