from machine import Pin, PWM
import time
import dht
# Initialize PIR sensor
pir = Pin(9, Pin.IN)
# Initialize DHT22 sensor
dht_sensor = dht.DHT22(Pin(2))
# Initialize Servo motor
servo = PWM(Pin(11))
servo.freq(50) # Typical servo frequency
# Function to set servo angle
def set_servo_angle(angle):
# Servo expects pulse width between 0.5ms to 2.5ms
pulse_width = int((angle / 180) * 2000 + 500)
duty = pulse_width * (65535 // 20000)
servo.duty_u16(duty)
try:
while True:
# Check for motion
if pir.value() == 1:
print("Motion detected!")
# Turn servo to 90 degrees
set_servo_angle(90)
else:
# Turn servo back to 0 degrees
set_servo_angle(0)
# Read temperature and humidity from DHT22
dht_sensor.measure()
temp = dht_sensor.temperature()
hum = dht_sensor.humidity()
print(f"Temperature: {temp}°C, Humidity: {hum}%")
# Wait a bit before the next read
time.sleep(2)
except KeyboardInterrupt:
print("Program stopped by user")