from machine import Pin , I2C , ADC , PWM
import time
import ssd1306
moisture_sensor = ADC(Pin(35))
buzzer = PWM(Pin(5))
DRY_VALUE = 48000
WET_VALUE = 18000
BLUE_LED = Pin( 4 , Pin.OUT)
RED_LED = Pin ( 19 , Pin.OUT)
Relay = Pin ( 25 , Pin.OUT)
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
RED_LED.value(0)
BLUE_LED.value(0)
Relay.value(0)
buzzer.freq(1000)
while True:
raw_value = moisture_sensor.read_u16()
try:
moisture_percent = ((DRY_VALUE - raw_value) / (DRY_VALUE - WET_VALUE)) * 100
except ZeroDivisionError:
moisture_percent = 0
oled.fill(0)
oled.text(f"Raw Value: {raw_value}" , 0 , 0)
oled.text(f"Moisture: {moisture_percent:.1f}%" , 0 , 10)
if raw_value < WET_VALUE :
RED_LED.value(0)
BLUE_LED.value(1)
Relay.value(0)
oled.text("Moist" , 0 , 30)
oled.show()
buzzer.duty_u16(0)
elif raw_value < DRY_VALUE :
RED_LED.value(0)
BLUE_LED.value(0)
Relay.value(0)
oled.text("Suitable" , 0 , 30)
oled.show()
buzzer.duty_u16(0)
else:
BLUE_LED.value(0)
RED_LED.value(1)
Relay.value(1)
oled.text("Dry : Pump on" , 0 ,30)
oled.show()
buzzer.duty_u16(30000)
time.sleep(1)Loading
esp32-devkit-c-v4
esp32-devkit-c-v4