from machine import Pin, PWM
import utime
import dht
# Initialize DHT sensor (DHT22 on GP15)
dht_sensor = dht.DHT22(Pin(15))
# Initialize passive buzzer on GP16 with PWM
buzzer = PWM(Pin(16))
# Temperature threshold
TEMP_THRESHOLD = 30
def sound_buzzer(frequency=1000, duration=0.5):
"""Sound the passive buzzer at a given frequency for a set duration (in seconds)."""
buzzer.freq(frequency)
buzzer.duty_u16(30000) # 50% duty cycle approx
utime.sleep(duration)
buzzer.duty_u16(0) # Turn off buzzer
while True:
try:
dht_sensor.measure()
temp = dht_sensor.temperature()
print("Temperature: {:.1f}C".format(temp))
if temp > TEMP_THRESHOLD:
print("!! Temperature HIGH !! Alarm Triggered")
sound_buzzer(frequency=2000, duration=0.2) # Beep at 2kHz for 0.2s
utime.sleep(0.3) # Short pause between beeps
else:
buzzer.duty_u16(0) # Ensure buzzer is off
except OSError as e:
print("Failed to read from DHT sensor:", e)
utime.sleep(2)