from machine import Pin, ADC, PWM, time_pulse_us
from dht import DHT22
import time
temp_humidity_sensor = DHT22(Pin(4))
light_sensor = ADC(Pin(34))
light_sensor.atten(ADC.ATTN_11DB)
soil_moisture_sensor = ADC(Pin(35))
soil_moisture_sensor.atten(ADC.ATTN_11DB)
water_level_trigger = Pin(5, Pin.OUT)
water_level_echo = Pin(18, Pin.IN)
water_pump = PWM(Pin(13), freq=50)
green_led = Pin(23, Pin.OUT)
red_led = Pin(22, Pin.OUT)
buzzer = Pin(15, Pin.OUT)
while True:
temp_humidity_sensor.measure()
temperature = temp_humidity_sensor.temperature()
humidity= temp_humidity_sensor.humidity()
light = light_sensor.read()
soil_raw = soil_moisture_sensor.read()
soil_percent = 100 - int((soil_raw/4095)*100)
if soil_percent < 0:
soil_percent = 0
if soil_percent > 100:
soil_percent = 100
water_level_trigger.off()
time.sleep_us(2)
water_level_trigger.on()
time.sleep_us(10)
water_level_trigger.off()
duration = time_pulse_us(water_level_echo, 1, 3000)
if duration > 0:
distance = duration / 58
tank_percent = int((20 - distance) * 5)
if tank_percent < 0:
tank_percent = 0
if tank_percent > 100:
tank_percent = 100
else:
tank_percent = 0
if tank_percent < 10:
status = "Refill Tank"
pump_status = "OFF"
water_pump.duty(40)
green_led.off()
red_led.on()
buzzer.on()
elif soil_percent < 60 :
status = "Watering"
pump_status = "ON"
water_pump.duty(155)
green_led.on()
red_led.off()
buzzer.off()
pump_status = "ON"
else:
status = "Healthy"
pump_status = "OFF"
water_pump.duty(40)
green_led.off()
red_led.off
buzzer.off
print("\n======================================")
print(" SMART GARDEN DASHBOARD")
print("======================================")
print("Temperature :", temperature, "°C")
print("Humidity :", humidity, "%")
print("Light Level :", light)
print("Soil Moisture :", soil_percent, "%")
print("Water Tank :", tank_percent, "%")
print("--------------------------------------")
print("Pump Status :", pump_status)
print("Green LED :", "ON" if green_led.value() else "OFF")
print("Red LED :", "ON" if red_led.value() else "OFF")
print("Buzzer :", "ON" if buzzer.value() else "OFF")
print("--------------------------------------")
print("Plant Status :", status)
print("======================================")
time.sleep(1)Loading
esp32-devkit-c-v4
esp32-devkit-c-v4