DIY Automatic plant watering system

This project is about a moisture-sensing automatic plant watering system using 8051 microcontroller. The system simply senses the moisture level and switches on the irrigation pump when the moisture is below the set limit. The system switches off the pump when the moisture rises above the set point. The moisture level threshold can be set using a trim pot on the system. The status of the pump (whether ON or OFF) is displayed on a 16×2 LCD display. The system can be divided into three section as follows.

Sensing prob.

YL 69 moisture sensing probe is used to sense the moisture here. It is simply a fork-shaped PCB with tracks running on both sides of the legs.  Just plug this probe into the soil where you want to sense the moisture. Image of the YL 69 sensing probe is given below.

YL 69 moisture sensor

Comparator circuit.

YL 38 comparator module is used in this project. It is a single channel opamp comparator based on L393 IC. This module just compares the output voltage of the sensing probe with a reference voltage and switches its voltage appropriately for the microcontroller to read. Circuit diagram of the YL 38 comparator module is shown below.

yl-38-circuit-diagram

The output voltage of the sensing probe is connected to the inverting input of the opamp. When the moisture level is high more current passes through the sensing probe and so the voltage at the inverting pin will be higher than the reference. The reference can be set using the trim pot R2. At this condition output of the opamp goes low and sinks the LED D1 to make it glow. When the moisture is lower than the set point, the opposite happens. So in simple words, a LOW output of the opamp indicates a high moisture and a HIGH output of the opamp indicates a low moisture. The output of the opamp is marked as pin D0 on the sensor YL 38 module. This pin is connected to the microcontroller for further processing. LED D2 is just a power ON indicator. Capacitors C1 and C2 are noise filters.

Microcontroller section.

Microcontroller section senses the status of the comparator module and switches the irrigation motor appropriately. It also displays the status of the pump on the LCD screen. The power supply unit and the motor driver unit are incorporated in this section. Full circuit diagram of the project is given below.

automatic-plant-watering-systemOutput pin of the comparator module (D0) is connected to P3.5 pin of the 8051 microcontroller. The microcontroller monitors the moisture level by polling the status of the P3.5 pin which is the output of the comparator.

Supporting Tutorials

Interfacing LCD Module to 8051 – read this tutorial to learn how to interface 16×2 LCD module to 8051.

Motor to 8051 –  this tutorial teaches how to interface a DC motor to 8051.

 

Program

RS EQU P2.7
RW EQU P2.6
E  EQU P2.5

ORG 00H
SETB P3.5
MOV TMOD,#00000001B 
MAIN:ACALL DINT
     ACALL TEXT1
     JB P3.5, NEXT
     ACALL LINE2
     ACALL TEXT2
     CLR P2.0
     SJMP EXIT
NEXT:ACALL LINE2
     ACALL TEXT3
     SETB P2.0
     EXIT:ACALL DELAY1
SJMP MAIN


DELAY1:MOV R0,#15D
BACK1: MOV TH0,#00000000B   
       MOV TL0,#00000000B   
       SETB TR0             
HERE2: JNB TF0,HERE2         
       CLR TR0             
       CLR TF0             
       DJNZ R0,BACK1
       RET




TEXT1: MOV A,#"M"
    ACALL DISPLAY
    MOV A,#"o"
    ACALL DISPLAY
    MOV A,#"i"
    ACALL DISPLAY
    MOV A,#"s"
    ACALL DISPLAY
    MOV A,#"t"
    ACALL DISPLAY
    MOV A,#"u"
    ACALL DISPLAY
    MOV A,#"r"
    ACALL DISPLAY
    MOV A,#"e"
    ACALL DISPLAY
    MOV A,#" "
    ACALL DISPLAY
    MOV A,#"C"
    ACALL DISPLAY
    MOV A,#"o"
    ACALL DISPLAY
    MOV A,#"n"
    ACALL DISPLAY
    MOV A,#"t"
    ACALL DISPLAY
    MOV A,#"r"
    ACALL DISPLAY
    MOV A,#"o"
    ACALL DISPLAY
    MOV A,#"l"
    ACALL DISPLAY
    RET 
    
TEXT2: MOV A,#"["
    ACALL DISPLAY
     MOV A,#"O"
    ACALL DISPLAY
    MOV A,#"K"
    ACALL DISPLAY
    MOV A,#"]"
    ACALL DISPLAY
    MOV A,#" "
    ACALL DISPLAY
    MOV A,#"P"
    ACALL DISPLAY
    MOV A,#"u"
    ACALL DISPLAY
    MOV A,#"m"
    ACALL DISPLAY
    MOV A,#"p"
    ACALL DISPLAY
    MOV A,#" "
    ACALL DISPLAY
    MOV A,#"O"
    ACALL DISPLAY
    MOV A,#"F"
    ACALL DISPLAY
    MOV A,#"F"
    ACALL DISPLAY
    RET 
    
TEXT3: MOV A,#"["
    ACALL DISPLAY
    MOV A,#"L"
    ACALL DISPLAY
    MOV A,#"o"
    ACALL DISPLAY
    MOV A,#"w"
    ACALL DISPLAY
    MOV A,#"]"
    ACALL DISPLAY
    MOV A,#" "
    ACALL DISPLAY
    MOV A,#"P"
    ACALL DISPLAY
    MOV A,#"u"
    ACALL DISPLAY
    MOV A,#"m"
    ACALL DISPLAY
    MOV A,#"p"
    ACALL DISPLAY
    MOV A,#" "
    ACALL DISPLAY
    MOV A,#"O"
    ACALL DISPLAY
    MOV A,#"N"
    ACALL DISPLAY
    RET        
    

 DINT:MOV A,#0CH 
    ACALL CMD
    MOV A,#01H 
    ACALL CMD
    MOV A,#06H 
    ACALL CMD
    MOV A,#80H 
    ACALL CMD
    MOV A,#3CH 
    ACALL CMD
    RET

LINE2:MOV A,#0C0H 
    ACALL CMD
    RET   

CMD: MOV P0,A
    CLR RS
    CLR RW
    SETB E
    CLR E
    ACALL DELAY
    RET

DISPLAY:MOV P0,A
    SETB RS
    CLR RW
    SETB E
    CLR E
    ACALL DELAY
    RET

DELAY: CLR E
    CLR RS
    SETB RW
    MOV P0,#0FFH
    SETB E
    MOV A,P0
    JB ACC.7,DELAY
    CLR E
    CLR RW
    RET

 END        

About the program.

will be added soon

 

Author

7 Comments

  1. sir/mam, in which software the programm will run.

  2. Samson Chan

    Hi, the 8051 codes has problems and cannot function, can send me the correct codes? Thank you so much.

  3. Hi. I have found this information very useful. Thank you.
    I would like to know a few things regarding the code. Why is the input from the sensor attached to the timer T1 pin? Any specific reason?Also what is the exact output expected out of this code?

  4. Keerthana

    I put the same circuit and entered the program using multisim for simulation but it’s showing error for code mov a,#”m”
    Could you help us how to fix it

  5. I used TC54VC as comparators in many different projects. It is extremely simple and least expensive.

    Rusting of the probe is a real problem. The carbon rod inside the batteries can be used. They are very good conductors and do not rust.

  6. In my distant past and in a less sophisticated manner I tried this sort of thing and found that the probes corroded or in some other way changed with time and exposure to soil. Think I tried various metals with little success.

    Also read that impressing AC on the probes would mitigate this corrosion but never ‘played’ with it.