За вечір можна створити повноцінну метеостанцію на ESP32 з OLED дисплеєм, яка буде передавати дані в Home Assistant (HA) для моніторингу та автоматизації, без необхідності глибоких знань в програмуванні.
Контекст і проблема
Збір даних про погоду в реальному часі стає все більш актуальним для розумного дому. Існуючі хмарні сервіси часто мають обмеження щодо безкоштовного трафіку або затримки оновлення. Ручне збирання даних вручну займає до 15 хвилин на день і є не практичним рішенням.
Практична реалізація
Для збірки метеостанції нам знадобиться ESP32, OLED дисплей (128×64), датчик DHT22 (температура/вологість), та модуль Wi-Fi. Прошивка буде написана на Arduino IDE з використанням бібліотек Adafruit Unified Sensor та OLED.
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
#define DHTPIN 2 // Пін DHT22
#define DHTTYPE DHT22 // Тип датчика DHT
DHT dht(DHTPIN, DHTTYPE);
Adafruit_SSD1306 display(128, 64, &Wire);
void setup() {
Serial.begin(115200);
display.begin(SSD1306_SWITCHCHIPS);
display.clearDisplay();
dht.begin();
Serial.println(F("DHT22 test!"));
}
void loop() {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println(F("Failed to read from DHT sensor!"));
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println("DHT Error");
display.show();
return;
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.print("Temp: ");
display.print(t);
display.print(" C Humidity: ");
display.print(h);
display.print(" %");
display.show();
Serial.print(F("Humidity: "));
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C ");
}
Цей код зчитує дані з DHT22, виводить їх на OLED дисплей, і надсилає їх в Serial Monitor. Для інтеграції з HA потрібно використовувати MQTT або HTTP API.
Типові помилки
- Неправильне підключення датчика: Неправильне підключення DHT22 до ESP32 може призвести до невірних показників. Перевірте схему підключення та переконайтеся, що VCC, GND, та Data підключені правильно. Використання резистора підтягування (pull-up) на лінії даних DHT22 може покращити стабільність сигналу.
- Проблеми з OLED дисплеєм: Некоректна адреса I2C дисплея може призвести до відсутності зображення. Перевірте адресу дисплея за допомогою I2C сканера. У деяких випадках потрібно змінити конфігурацію дисплея (наприклад, перемикання на 0x3D).
- Проблеми з Wi-Fi з’єднанням: Неправильно вказані налаштування Wi-Fi призводять до неможливості підключення до мережі. Переконайтеся, що SSID та пароль введені правильно. Використовуйте Serial Monitor для перевірки логів підключення.
Результат
Після завершення збірки та налаштування, метеостанція здатна оновлювати дані про температуру та вологість кожні 2 секунди. Інтеграція з HA дозволяє автоматизувати дії на основі цих даних (наприклад, включення вентилятора при перевищенні температури 28°C). Час на налаштування HA інтеграції займає приблизно 15 хвилин.