import machine, onewire, ds18x20, dht, time
from machine import *
from time import sleep
from pico_i2c_lcd import I2cLcd
i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)
I2C_ADDR = i2c.scan()[0]
lcd = I2cLcd(i2c, I2C_ADDR, 2, 16)
# Initialize 1-Wire bus on GPIO 4
ow = onewire.OneWire(machine.Pin(14))
# Create DS18X20 object for temperature measurement
temp_sensor = ds18x20.DS18X20(ow)
# Scan for available DS18X20 sensors
roms = temp_sensor.scan()
# Initialize DHT22 sensor on GPIO 18
dht_sensor = dht.DHT22(machine.Pin(28))
red_led = Pin(2,Pin.OUT)
green_led= Pin(3,Pin.OUT)
while True:
# Perform temperature measurement with DS18B20 sensor
temp_sensor.convert_temp()
time.sleep_ms(750)
# Read temperature from DS18B20 sensor
for rom in roms:
temp = temp_sensor.read_temp(rom)
# Perform humidity measurement with DHT22 sensor
dht_sensor.measure()
# Read humidity and temperature from DHT22 sensor
humidity = dht_sensor.humidity()
temperature = dht_sensor.temperature()
# Print temperature and humidity to console
print("Temperature: {:.1f} C, Humidity: {:.1f}%".format(temp, humidity))
print('-----------------------------')
if temp > 45:
red_led.value(1)
green_led.value(0)
print("High Temperature Alert!",temp)
lcd.putstr("High Temperature Alert!")
sleep(5)
lcd.clear()
sleep(1)
elif humidity>55:
red_led.value(1)
green_led.value(1)
time.sleep(0.5)
red_led.value(0)
green_led.value(0)
time.sleep(0.5)
print("High Humidity Alert!",humidity)
lcd.putstr("High Humidity Alert!")
sleep(5)
lcd.clear()
sleep(1)
else:
red_led.value(0)
green_led.value(1)
print("Normal weather conditions")
lcd.putstr("Normal Weather Conditions")
sleep(5)
lcd.clear()
sleep(1)
# Wait for 1 second
time.sleep(1)