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

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

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

    За вечір можна зібрати ESP32 метеостанцію з OLED дисплеєм та інтегрувати її з Home Assistant (HA), отримуючи дані про температуру, вологість, атмосферний тиск та інші параметри в реальному часі.

    Контекст і проблема

    Сучасні розумні будинки потребують локальних сенсорів для забезпечення надійності та мінімізації залежності від хмарних сервісів. Підключення сенсорів до HA вручну – тривалий процес, що займає до 4 годин на один пристрій. Використання ESP32 дозволяє автоматизувати збір даних і передачу їх до HA через MQTT, скорочуючи час налаштування до 30 хвилин.

    Практична реалізація

    Для реалізації проекту нам знадобиться ESP32 плата, датчик BME280 (температура, вологість, тиск), OLED дисплей (128×64), резистори, дроти та прошивка. Підключення датчика BME280 до ESP32 здійснюється за стандартною схемою: VCC до 3.3V, GND до GND, SDA до D2, SCL до D1.

    #include <Wire.h>
    #include <Adafruit_Sensor.h>
    #include <Adafruit_BME280.h>
    #include <U8g2lib.h>
    
    Adafruit_BME280 bme;
    U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/U8G2_RESET_PIN_NONE, /* clock=*/U8G2_EN_PIN_NONE);
    
    const char* mqtt_server = "your_mqtt_server";
    const char* mqtt_topic = "homeassistant/sensor_data";
    
    void setup() {
      Serial.begin(115200);
      Serial.println(F("BME280 test!"));
    
      if (!bme.begin(0x76)) { // I2C address
        Serial.println(F("Could not find BME280 sensor!"));
        while (1);
      }
    
      u8g2.begin();
      u8g2.setFont(u8g2_font_6x10);
    }
    
    void loop() {
      float tempC = bme.readTemperature();
      float humidity = bme.readHumidity();
      float pressure = bme.readPressure() / 100.0F;
    
      u8g2.clearBuffer();
      u8g2.drawStr(0, 10, "Temp: ");
      u8g2.drawStr(0, 25, String(tempC).c_str());
      u8g2.drawStr(0, 40, "Humidity: ");
      u8g2.drawStr(0, 55, String(humidity).c_str());
      u8g2.drawStr(0, 70, "Pressure: ");
      u8g2.drawStr(0, 85, String(pressure).c_str());
      u8g2.send();
    
      Serial.print("Temp: "); Serial.print(tempC); Serial.print(" C, ");
      Serial.print("Humidity: "); Serial.print(humidity); Serial.print(" %, ");
      Serial.print("Pressure: "); Serial.print(pressure); Serial.println(" hPa");
    
      delay(5000); // Затримка 5 секунд
    }
    

    Цей код ініціалізує датчик BME280 та OLED дисплей, зчитує дані та виводить їх на дисплей та в Serial Monitor. Для передачі даних в HA необхідно додати MQTT клієнт та налаштувати відповідні компоненти в HA конфігурації.

    Типові помилки

    • Неправильний I2C адрес: Датчик BME280 може мати різні I2C адреси (0x76 або 0x77). Перевірте адрес за допомогою I2C сканера.
    • Відсутність бібліотек: Переконайтеся, що встановлено необхідні бібліотеки Adafruit_Sensor, Adafruit_BME280 та U8g2lib через Arduino IDE Library Manager.
    • Неправильне підключення OLED дисплея: Переконайтеся, що OLED дисплей правильно підключений до ESP32 (VCC, GND, SCL, SDA). Помилкове підключення може призвести до пошкодження дисплея або ESP32.

    Результат

    Після налаштування, ESP32 метеостанція з OLED дисплеєм буде передавати дані в HA кожні 5 секунд, що дозволить автоматизувати моніторинг параметрів мікроклімату. Налаштування займає приблизно 30 хвилин, включаючи прошивання, налаштування MQTT та додавання сенсорів в HA. Спробуйте зараз підключити датчик BME280 до ESP32 і запустити код!

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

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