import machine
import time
import dht
from machine import Pin
decho = Pin(18, Pin.IN)
dtrig = Pin(19, Pin.OUT)
becho = Pin(25, Pin.IN)
btrig = Pin(26, Pin.OUT)
# Define pin numbers
LED_PIN = 22
DHT_PIN = 15
CURTAINS_SERVO_PIN = 12
WATER_SERVO_PIN = 32
# Initialize components
led = Pin(LED_PIN, Pin.OUT)
dht_sensor = dht.DHT11(Pin(DHT_PIN))
curtains_servo = machine.PWM(machine.Pin(CURTAINS_SERVO_PIN), freq=50)
water_servo = machine.PWM(machine.Pin(WATER_SERVO_PIN), freq=50)
led.off()
# Function to control LEDs
def control_led(state):
led.value(state)
# Function to open/close curtains
def control_curtains(angle):
curtains_servo.duty(angle)
# Function to control water pipe stopper
def control_water(angle):
water_servo.duty(angle)
# Function to read temperature and humidity
def read_dht():
dht_sensor.measure()
return dht_sensor.temperature(), dht_sensor.humidity()
# Function to measure distance using ultrasonic sensor
def dmeasure_distance():
dtrig.value(0)
time.sleep_us(5)
dtrig.value(1)
time.sleep_us(10)
dtrig.value(0)
x = machine.time_pulse_us(decho, 1)
distance = (0.0343 * x) / 2
return distance
def bmeasure_distance():
btrig.value(0)
time.sleep_us(5)
btrig.value(1)
time.sleep_us(10)
btrig.value(0)
x = machine.time_pulse_us(becho, 1)
distance = (0.0343 * x) / 2
return distance
try:
while True:
temperature, humidity = read_dht()
door_distance = dmeasure_distance()
bin_distance = bmeasure_distance()
if door_distance < 10 or humidity>75:
control_led(1) # Turn on LED
else:
control_led(0) # Turn off LED
if bin_distance < 20:
control_water(90)
else:
control_water(0)
if temperature > 25:
control_curtains(0)
control_curtains(90)
time.sleep(1)
except KeyboardInterrupt:
pass