Перейти до вмісту
    Без категорії / ESP32 Метеостанція з OLED та HA: Швидкий Підключення

    ESP32 Метеостанція з OLED та HA: Швидкий Підключення

    Оцініть цю публікацію!
    [Усього: 0 Середнє значення: 0]

    За вечір можна створити повноцінну метеостанцію на 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 хвилин.

    Залишити відповідь

    Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *