import dht
import machine
import ssd1306
import time
# 1. Ініціалізація екрана та датчика DHT22 відповідно до схеми diagram.json
i2c = machine.I2C(0, scl=machine.Pin(22), sda=machine.Pin(21))
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
# Робимо паузу для стабілізації віртуального екрана у Wokwi
oled.fill(0)
oled.show()
time.sleep_ms(200)
# Налаштування датчика DHT22 на пін D23
sensor = dht.DHT22(machine.Pin(23))
while True:
try:
# 2. Отримання даних (Датчик DHT22 потребує замірів не частіше ніж раз на 2 секунди)
sensor.measure()
temp = sensor.temperature() # Отримуємо температуру (наприклад: 24.5)
hum = sensor.humidity() # Отримуємо вологість (наприклад: 40.0)
# 3. Виведення інформації на OLED-дисплей
oled.poweron() # Увімкнути екран
oled.fill(0) # Очистити від попередніх цифр
# Шапка метеостанції
oled.text("METEO STATION", 12, 0)
oled.text("----------------", 0, 10)
# Рядок температури
oled.text("Temp: ", 10, 28)
oled.text(str(temp), 55, 28)
oled.text("C", 105, 28)
# Рядок вологості
oled.text("Humid: ", 10, 48)
oled.text(str(hum), 55, 48)
oled.text("%", 105, 48)
oled.show() # Надіслати дані на екран
time.sleep(4) # Тримаємо дані на екрані 4 секунди
except OSError as e:
# Захист на випадок помилки зчитування з датчика
oled.poweron()
oled.fill(0)
oled.text("DHT22 Error!", 20, 30)
oled.show()
time.sleep(2)
# 4. Енергозбереження (Сон)
oled.poweroff() # Гасимо матрицю екрана
machine.lightsleep(5000) # Відправляємо ESP32 у легкий сон на 5 секунд