import machine
import utime
import dht
# Pin definitions
pir_pin = machine.Pin(16, machine.Pin.IN)
dht22_pin = machine.Pin(0)
servo_pin = machine.Pin(26)
# Initialize DHT22 sensor
dht22 = dht.DHT22(dht22_pin)
# Initialize Servo Motor
servo = machine.PWM(servo_pin)
servo.freq(50)
def set_servo_angle(angle):
duty = int((angle / 18) + 2)
servo.duty_u16(duty * 65535 // 100)
def read_dht22():
try:
dht22.measure()
temperature = dht22.temperature()
humidity = dht22.humidity()
return temperature, humidity
except Exception as e:
print('Failed to read DHT22 sensor:', e)
return None, None
def main():
while True:
if pir_pin.value():
print("Motion detected! Turning servo on.")
set_servo_angle(90) # Move servo to 90 degrees
else:
print("No motion detected. Turning servo off.")
set_servo_angle(0) # Move servo to 0 degrees
temperature, humidity = read_dht22()
if temperature is not None and humidity is not None:
print("Temperature:", temperature, "C")
print("Humidity:", humidity, "%")
utime.sleep(1)
if __name__ == '__main__':
main()