from machine import Pin, I2C
import time
import dht
import ssd1306
# Định nghĩa các chân GPIO
LED_XANH = Pin(2, Pin.OUT)
LED_DO = Pin(4, Pin.OUT)
LED_VANG = Pin(0, Pin.OUT)
DHT_PIN = Pin(15)
# Khởi tạo cảm biến DHT
sensor = dht.DHT11(DHT_PIN)
# Khởi tạo màn hình OLED
i2c = I2C(0, scl=Pin(22), sda=Pin(21)) # Điều chỉnh số chân I2C nếu cần
display = ssd1306.SSD1306_I2C(128, 64, i2c)
# Định nghĩa các ngưỡng
TEMP_HIGH_THRESHOLD = 40.0
TEMP_LOW_THRESHOLD = 25.0
HUM_HIGH_THRESHOLD = 65.0
HUM_LOW_THRESHOLD = 20.0
def update_leds(temperature, humidity):
# Điều khiển LED theo trạng thái nhiệt độ
if temperature < TEMP_LOW_THRESHOLD:
LED_DO.on()
LED_XANH.off()
LED_VANG.off()
elif temperature > TEMP_HIGH_THRESHOLD:
LED_DO.off()
LED_XANH.off()
LED_VANG.off()
time.sleep(0.5)
LED_DO.on()
time.sleep(0.5)
LED_DO.off()
else:
LED_DO.off()
LED_XANH.on()
LED_VANG.off()
# Điều khiển LED theo trạng thái độ ẩm
if humidity < HUM_LOW_THRESHOLD:
LED_VANG.on()
LED_XANH.off()
LED_DO.off()
elif humidity > HUM_HIGH_THRESHOLD:
LED_VANG.off()
LED_XANH.off()
LED_DO.off()
time.sleep(0.5)
LED_VANG.on()
time.sleep(0.5)
LED_VANG.off()
else:
LED_VANG.off()
LED_XANH.off()
LED_DO.off()
def main():
while True:
# Đọc nhiệt độ và độ ẩm
sensor.measure()
temperature = sensor.temperature()
humidity = sensor.humidity()
# Hiển thị lên màn hình OLED
display.fill(0) # Xóa màn hình
display.text("Temp: {} C".format(temperature), 0, 0)
display.text("Humidity: {} %".format(humidity), 0, 10)
display.show()
# Cập nhật trạng thái LED
update_leds(temperature, humidity)
# Đợi 10 giây trước khi đọc lại
time.sleep(10)
if __name__ == "__main__":
main()