bme280: http://alii.pub/5yjrsz
Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.
Модуль BME280 предназначен для измерения атмосферного давления, температуры и влажности. Это очередной датчик давления фирмы Bosch Sensortec для измерения атмосферного давления и температуры. По сравнению с первыми датчиками серии (BMP085 и BMP180) он имеет лучшие характеристики и меньшие размеры. Отличие от датчика BMP280 – наличие гигрометра, что позволяет измерять относительную влажность воздуха и создать на его основе маленькую метеостанцию.
Технические характеристики датчика BME280:
- Интерфейс: SPI, I2C;
- Напряжение питания: 3.3В;
- Диапазон измерений давления: 300-1100hPa;
- Диапазон измерений температуры: -40 – +85 °C;
- Диапазон измерений влажности: 0 – 100 %;
- Энергопотребление: режим измерений – 2.74 нА; в спящий режим: – 0.1 нА
- Точность измерений:давление – 0.01 hPa ( < 10 cm). Температура – 0.01° CВлажность – 3%
Теперь давайте поговорим про подключение его к ESP8266 или ESP32 чтоб работать с ним в ESPHome.
Так как датчик имеет шину i2c он собственно и подключаться будет к ESP32 или ESP8266 по 4рем пинам. Это VCC, GND, SDA, SCL.
Для ESPHome существует интеграция bme280 https://esphome.io/components/sensor/bme280.html. С ней собственно и работают датчики bme280.
Для начала в ESPHome Нужно задать пины для шины i2c. Это делается следующим образом:
i2c:
sda: 32
scl: 33
scan: true
Собственно 32 и 33 – это заданные пины. ( имейте введу, абы какие пины нельзя назначать, нужно именно те которые умеют работать с i2c. Смотреть это нужно в технической документации контроллера.)
А вот строка scan: true – означает, что esp будет сканировать шину I2c постоянно и показывать адреса устройств. Дело в том что датчики bme280 имеют разные адреса i2c. И чтоб узнать какой у Вас мы включаем сканнер.
Заливаем этот скетч, и открываем логи. И у нас должно написаться адрес I2c устройства. Выглядит это примерно так:
Ну а теперь когда узнали адрес I2c нашего датчика, полностью код будет выглядеть следующим образом:
i2c:
sda: 32
scl: 33
scan: true
sensor:
- platform: bme280
temperature:
name: "BME280 Temperature"
oversampling: 16x
pressure:
name: "BME280 Pressure"
humidity:
name: "BME280 Humidity"
address: 0x76
update_interval: 60s
Переменные конфигурации:
- temperature (необязательное): информация для датчика температуры.
- name (Обязательно): имя датчика температуры.
- id (необязательно, ID): установите идентификатор этого датчика для использования в лямбдах.
- pressure (Optional): информация для датчика влажности.
- name (Обязательно, string): Имя датчика влажности.
- id (необязательно, ID): установите идентификатор этого датчика для использования в лямбдах..
- address (необязательно, int): вручную укажите адрес I²C датчика. По умолчанию
0x77
. - update_interval (необязательно, Time): интервал проверки датчика. По умолчанию
60s
.
А так выглядит Вывод значений Температуры, влажности и давления на экран M5stack:
spi:
clk_pin: 18
mosi_pin: 23
miso_pin: 19
i2c:
sda: 21
scl: 22
scan: true
sensor:
- platform: bme280
temperature:
name: "BME280 Temperature"
id: temperature
pressure:
name: "BME280 Pressure"
id: pressure
humidity:
name: "BME280 Humidity"
id: humidity
address: 0x76
update_interval: 60s
font:
- file: "fonts/Roboto-Medium.ttf"
id: font_roboto_medium22
size: 22
color:
- id: RED
red: 100%
green: 0%
blue: 0%
- id: BLUE
red: 0%
green: 0%
blue: 100%
- id: WHITE
red: 100%
green: 100%
blue: 100%
display:
- platform: ili9341
id: m5stack_display
model: M5Stack
cs_pin: 14
dc_pin: 27
led_pin: 32
reset_pin: 33
rotation: 0
lambda: |-
it.rectangle(0, 0, it.get_width(), it.get_height(), WHITE);
it.rectangle(0, 22, it.get_width(), it.get_height(), WHITE); // header bar
it.print(it.get_width() / 2, 11, id(font_roboto_medium22), WHITE, TextAlign::CENTER, "SHT21");
it.print(11, 33, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "Temperature");
it.print(11, 55, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "Humidity");
it.print(11, 77, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "Pressure");
it.printf(it.get_width() - 11, 33, id(font_roboto_medium22), WHITE, TextAlign::RIGHT, "%.1f ", id(temperature).state);
it.printf(it.get_width() - 11, 55, id(font_roboto_medium22), WHITE, TextAlign::RIGHT, "%.1f ", id(humidity).state);
it.printf(it.get_width() - 11, 77, id(font_roboto_medium22), WHITE, TextAlign::RIGHT, "%.1f ", id(pressure).state);
Ну а как добавить этот датчик подключенный таким способом к ESPHome в Home Assistant. Тут все как обычно.
Заходим в Настройки->Интеграции-> Добавляем новую интеграцию ESPHome и введя ip адрес нашей ESPшки к которой подключен bme280. И все интеграция добавится.
В системе Home Assistant это все будет видеться какBME280
Temperature, BME280 Humidity
и BME280 Pressure
соответственно. И выглядит это так:
Ну и при добавлении в карточку: