from machine import Pin, ADC, Timer
import dht
import time
from time import sleep
motion = False
# Pin assignments
pir_pin = Pin(14, Pin.IN) # PIR sensor connected to GPIO14
led_pin = Pin(2, Pin.OUT) # LED connected to GPIO27
ldr_pin = ADC(Pin(36)) # LDR connected to GPIO34
buzzer_pin = Pin(4, Pin.OUT) # Buzzer connected to GPIO26
temp_pin = Pin(15) # DHT sensor connected to GPIO4
relay_pin = Pin(5, Pin.OUT) # Relay connected to GPIO25
# Setup DHT22 temperature sensor
dht_sensor = dht.DHT22(temp_pin)
# Setup LDR
ldr_pin.atten(ADC.ATTN_11DB) # Full range: 3.3V
# Thresholds
ldr_threshold = 2000 # Adjust based on LDR readings for sunrise
temp_threshold = 27 # Adjust temperature threshold for turning on the fan/air conditioner
# Function to handle LED based on PIR sensor
def handle_pir(pin):
global motion
motion = True
global interrupt_pin
interrupt_pin= pin
pir_pin.irq(trigger=Pin.IRQ_RISING, handler=handle_pir)
# Function to handle Buzzer based on LDR sensor
def handle_ldr():
ldr_value = ldr_pin.read()
if ldr_value > ldr_threshold:
buzzer_pin.on()
time.sleep(0.5) # Buzzer on for 0.5 seconds
buzzer_pin.off() # Turn on buzzer if LDR detects high light intensity (sunrise)
else:
buzzer_pin.value(0) # Turn off buzzer
# Function to handle Relay based on Temperature sensor
def handle_temp():
dht_sensor.measure()
temp = dht_sensor.temperature()
if temp > temp_threshold:
relay_pin.value(1) # Turn on relay (fan/air conditioner)
else:
relay_pin.value(0) # Turn off relay
# Main loop
while True:
handle_ldr()
handle_temp()
time.sleep(1) # Delay for debouncing
if motion :
print("Movement detect! Interrupt by:",interrupt_pin)
led_pin.on()
sleep(20)
led_pin.off()
print('Motion stopped!')
motion =False
else:
print("Motion not detected")
led_pin.off()
motion = False