from machine import Pin, PWM
from utime import sleep
import dht
# Pin definitions
PIN_TEMPERATURE_SENSOR = 15
PIN_SERVO = 16
# Create sensor object
sensor = dht.DHT22(Pin(PIN_TEMPERATURE_SENSOR))
# Create servo object
servo = PWM(Pin(PIN_SERVO))
servo.freq(50)
# Helper function to move servo
def set_servo_position(duty_value):
servo.duty(duty_value)
while True:
try:
sensor.measure()
temp = sensor.temperature()
hum = sensor.humidity()
print("Temperature:", temp, "C")
print("Humidity:", hum, "%")
# Smart ventilation logic
if temp < 22:
set_servo_position(26) # nearly closed
print("Room is cool -> Vent closed")
elif temp < 26:
set_servo_position(50) # slightly open
print("Room is comfortable -> Vent slightly open")
elif temp < 30:
set_servo_position(75) # half open
print("Room is warm -> Vent half open")
elif temp < 34:
set_servo_position(100) # mostly open
print("Room is hot -> Vent mostly open")
else:
set_servo_position(123) # fully open
print("Room is very hot -> Vent fully open")
print("------------------------")
sleep(2)
except OSError:
print("Failed to read from DHT22 sensor")
sleep(2)