The main motto of this project is to provide automatic water supply to plant when it feels thirsty. We intend to automate the watering of plants and deploy Arduino to do the job for us. This will take care of the water requirements of a plant by continuously monitoring its needs. Also this plant watering system will indicate the happiness level of plant to user 🙂 .
COMPONENTS USED:
- Arduino Uno Board
- Servo motor
- Moisture sensor
- MAX7219 8×8 LED matrix module
SCHEMATIC DIAGRAM OF PLANT MONITORING SYSTEM:
MAX7219 8×8 LED MATRIX MODULE:
I have used a MAX7219 based 8×8 LED matrix module which will make our job pretty easier in driving the dot matrix. Also it will save I/O pins from our Arduino. You can buy one easily from Amazon.in  or make one on your own, the choice is up to you. You even can interface the dot matrix directly to Arduino. Here is the circuit for making your own dot matrix module.
WORKING EXPLANATION:
The moisture sensor provides an analogue output, which will be fed to Arduino. In this project moisture sensor is connected to analogue pin A0 of the Arduino board. Moisture sensors are widely available in many stores or you can get one from online vendors.
PLANT WATERING:
- Arduino reads the moisture value from the sensor.
- If the value reaches the dry threshold, it activates the servomotor.
- As soon as the motor starts pumping water into soil the moisture level gradually rises
- Arduino will test for moisture level repeatedly and when wet soil threshold is reached, it stops the servo from supplying water.
HAPPINESS MONITORING:
We have written the code in such a way that various range of moisture level in the soil will trigger different reaction in the dot matrix. We have assigned three smileys to indicate the plant condition (so called happiness).
- Happy face -when it have sufficient water
- Sad face- Â when it needs water supply
- Moderate – when its water level is low
PROJECT AT WORK:
CODE:
#include<SoftwareSerial.h> #include<Servo.h> #include "LedControl.h" #include "binary.h" Servo myservo1; int pos1=90; int SensorValue1=0; //int SensorPin1=A0; /* DIN connects to pin 12 CLK connects to pin 11 CS connects to pin 10 */ LedControl lc=LedControl(1,2,3); int SensorPin =A1; int sensorValue=0; // happy face byte hf[8]= {B00111100,B01000010,B10100101,B10000001,B10100101,B10011001,B01000010,B00111100}; // sad face byte sf[8]= {B00111100,B01000010,B10100101,B10000001,B10011001,B10100101,B01000010,B00111100}; void setup() { // put your setup code here, to run once: Serial.begin(9600); myservo1.attach(12); lc.shutdown(0,false); // Set brightness to a medium value lc.setIntensity(0,8); // Clear the display lc.clearDisplay(0); Serial.begin(9600); sensorValue=analogRead(SensorPin); } void draw_SadFaces() { // Display sad face lc.setRow(0,0,sf[0]); lc.setRow(0,1,sf[1]); lc.setRow(0,2,sf[2]); lc.setRow(0,3,sf[3]); lc.setRow(0,4,sf[4]); lc.setRow(0,5,sf[5]); lc.setRow(0,6,sf[6]); lc.setRow(0,7,sf[7]); } // Display neutral face *void draw_neutralFaces() { lc.setRow(0,0,nf[0]); lc.setRow(0,1,nf[1]); lc.setRow(0,2,nf[2]); lc.setRow(0,3,nf[3]); lc.setRow(0,4,nf[4]); lc.setRow(0,5,nf[5]); lc.setRow(0,6,nf[6]); lc.setRow(0,7,nf[7]); }*/ // Display happy face void draw_happyFaces() { lc.setRow(0,0,hf[0]); lc.setRow(0,1,hf[1]); lc.setRow(0,2,hf[2]); lc.setRow(0,3,hf[3]); lc.setRow(0,4,hf[4]); lc.setRow(0,5,hf[5]); lc.setRow(0,6,hf[6]); lc.setRow(0,7,hf[7]); } void loop(){ Serial.print("sensor="); sensorValue = analogRead(SensorPin); Serial.println(sensorValue); if (sensorValue>=700) { draw_happyFaces(); delay(15); } else if (sensorValue<=300) { draw_SadFaces(); delay(15); } /* else { draw_neutralFaces(); }*/ int SensorValue1=analogRead(SensorPin); if(SensorValue1<300) { for(pos1=90;pos1<=180;pos1++) { myservo1.write(pos1); delay(15); } } }
 APPLICATIONS:
- Used in artificial application of watering the plants in the houses(over lawn,potted plants,etc) in the absence of a person.
- Used in the plant nursery, where it is difficult to watch over all plants at a time.
MAKERS:
- Bhavya Sree
- Lalitha
What kind of servomotor is used here? And will it run on Arduino Mega?
Marrion,
I don’t think there is much any specification about Servo motor. Arduino Mega should do fine but you should do appropriate libraries.