Introduction: Interactive Plant Mood Detector

The Plant mood detector is an interactive robot, that communicates between a plants and we humans, telling the mood of the plant! We often tend to over-water or under-water our plants, making the plant sad . So, how do we know whether a plant is happy or not? Solving this problem, I present 'THE INTERACTIVE PLANT MOOD DETECTOR', providing everybody with a green thumb, whether a professional gardner or just a novice.

The interactive plant mood detector display the mood of the plant on it's LED display in the form of emojis, making it simple and interesting for children or a novice to water his/her plants. It gathers sensor value from the precise soil moisture sensor and converts these signals into emotions such as - Happy, Irritated, Grumpy, or Sad.

This device is equipped with a soil moisture sensor which detects and differentiates soil moisture conditions and the micro controller used is Arduino Uno and is powered using a 9V battery. The LED display is a custom display made of eight independent LED's meant to display the different emotions.It was a short project and took a few days calibrate and completing it.

Hope you like it

NOTE- The video will we upload as soon as possible.

Step 1: Materials and Parts

All the material and parts required for the project are listed below along with their respective links.

Electronic components

1) Soil moisture sensor x1

2) LED's x8

3) Arduino UNO x1

4) Jumper wires x20

5) Resistor - 1k ohms or 1000 ohms x1


1) Soldering iron

2) Wire stripper

3) Cutter


1) Arduino IDE


1) Perforated board

2) Solder wire

3) MDF board

4) Double sided tape

Step 2: TEST #1 Sensor Values

This experiment/test was conducted to find out accurate values given by the sensor in different soil conditions (very dry, normal, and wet) for different plants. To test the different values, I prepared four samples of soils (as shown in the picture), each of them having different moisture content as per required by my plant. The first sample,labelled as 'very dry' , was dry soil which wasn't water for the past 2 weeks. The second sample had very little water and the third had the right amount of water for my plant ( this system is calibrated according to my Jade plant ), whereas the fourth sample was flooded with water.


1) Upload the example analoginOut Serial from the Arduino IDE to your Arduino board.

Files > Examples > Analog > AnaloginOut Serial

2) connect the sensor to the Arduino following the instructions-

Sensor - Arduino

Ac - A0

Vcc - 5v


3) Open the serial monitor and note the values in different samples


1) Wet 157 212 0 < value < 250

2) Normal 338 463 350 < value < 500

3) Dry 631 720 500 < value < 800

4) Very Dry 956 1008 800 < value

Step 3: TEST #2 Sensor Values With LED Panel (emotions)

This test was conducted to test whether the sensor values were correctly calibrated with the different emotions in the LED panel. The sensor values are calibrated in such a way that in 'normal' conditions display a happy face with a smile, in 'dry' conditions an irritated face, in a 'very dry' situation a sad face and a grumpy face in a flooded state.

When sensor values are between 0 and 250 ---- grumpy face

When sensor values are between 350 and 500 ---- happy face with a smile

When sensor values are between 500 and 800 ---- irritated face

When sensor values are greater than 800 ---- sad face

Step 4: Calibration

Since each plant has different requirement of water, each plant has to be calibrated differently. The samples prepared by me to test the sensor values, were according to the requirements of my Jade plant (Crassula ovata). Jade plant, as compared to other plants, require less moisture hence the code is calibrated accordingly. To calibrate the program, perform the experiment no.1 . Then take about 25 values from the serial monitor and calculate the mean by dividing the sum of the readings by no. of readings -

sum of all readings / no. of readings.

This mean will give an idea of the range required for the specific conditions. Next upload the code with the approximate ranges, and test again with the samples. If the results are satisfactory, that is , if you think that the water content in the soil ( as per your knowledge) is matching the condition/emotion given by the module, then proceed to the next step. If not, then try adjusting the sensor values about the mean value, in reference to the amount of water in the soil.

Step 5: LED Display

For the this project I required a display of not more than eight LED's, so I decided to build it, except for buying one. On a piece of PCB of the suitable size, place all the eight LED's in 4x2 format ( 2 rows and 4 columns ), with the positive terminal facing outside. Cut all the negative terminals to 3 mm in length and bend inwards. Solder all the bent points together in a single line, thereby making the ground common for all LED's. For the positive terminal, you could either use separate header pins for each LED or just solder from the base. I have soldered from the base and directly connected it to the jumper wires.

Step 6: Connections

The following connections are to be made in order to make this project work-










GND(all) > Resistor (1000 ohms) > GND arduino


Vcc - 5v


AC - A0


positive(+) - positive(+)

negative(-) - negative(-)

Step 7: Getting the Mount Ready

To make the mount, I have used MDF board of 2mm thickness. The mount can be customised as per liking or convenience. I tried making two different types of mounts, the first one horizontal, with the LED's hidden under paper. This method did not give me the desired outcome because of -

1. Space management of components was not proper ( my arduino was floating in air ).

2. The lights from the LED's were blurred by the paper, making the emotion unclear.

So, I decided to change the orientation of the mount. I made it vertical with eight holes of the LED display. The dimensions of the board are 12.2x8 cm. To make the splash proof case I used a plastic chocolate box. It has been cut from the bottom for the sensor to pass.

For a better look and presentation, I covered the mdd board with a thick paper, and decorated it with two eyes made from used medicine wrappers caps:-

Step 8: Uploading the Code

The code is attached below in the file. The code is explained where ever required and is pretty self explanatory and easy to interpret.

Before uploading make sure the correct COM port and board are selected and your Arduino is in sync with the IDE to avoid any error

Step 9: Other Possibilities....

DIY and Open source is all about imagination. Since Imagination can be endless, the improvements are also endless. This robot can be equipped with a DHT 11 or 12( Temperature and Humidity sensor) along with the soil moisture sensor or a sensor to detect the Ph value of the soil can be interfaced. A sensor to detect different nutrients in soil and gases in the surrounding atmosphere can be added as well. Even a LDR can be added to measure the light intensity

Explore Science Contest 2017

Participated in the
Explore Science Contest 2017

Invention Challenge 2017

Participated in the
Invention Challenge 2017

Makerspace Contest 2017

Participated in the
Makerspace Contest 2017