Оценка влажности с помощью еловой шишки.
Шишка размещается вдалеке от батарей и наблюдается. Воздух сухой, если ее чешуйки открылись и влажный, если они плотно прижаты к основанию. Способ, безусловно, интересный, но…
На первый взгляд датчик температуры воздуха может быть мало актуален, ведь можно посмотреть погоду в интернете, но на самом деле это не так. Он может использоваться в качестве температурной сигнализации дома или как вторичный (косвенный) элемент контроля произвольного объекта/помещения.
Что касается датчика влажности, подход к вопросу полностью аналогичен. Ориентируясь на показатели влажности, можно включать/выключать ваши вытяжки или применять какие-то климатические сценарии.
В качестве примера сегодня выступает si7021. Стоимость на ali около 200 рублей за штуку уже с доставкой. Это цифровой датчик температуры и влажности с весьма приличной точностью, для широкого спектра температур, работающий как цивилизованное устройство на шине I2C. Единственный минус данного изделия — датчик не защищен от внешного воздействия. Так что придется подыскивать для него корпус или нормальное место расположения. Дополнительно приведу характеристики:
Диапазон измерения относительной влажности 0 … 100 %
Точность измерения относительной влажности ± 3% RH в диапазоне 0 … 80 % RH
Диапазон измерения температуры -40 … +125 °C
Точность измерения температуры ±0.4 °C в диапазоне -10 … 85 °C
Напряжение питания 1,9 … 3,6 В
Ток потребления в активном состоянии 150 мкА
Ток потребления в режиме ожидания 60 нА
Интерфейс передачи данных I2C
Размеры 13 х 10 мм
Подключение si7021
Шаг ноль: необходимо активировать шину i2c.
1 |
$ sudo raspi-config |
Идем в дополнительные настройки и активируем I2C (Важно: в более новых версиях это interfacing options)
Далее соглашаемся активировать модуль и разрешаем его автозагрузку, нажимая везде YES.
В конце — Finish
Перезагружаемся:
1 |
$ sudo reboot |
Схема подключения датчика si7021 к rasberry pi
Приучайте себя к хорошему тону и производите подключение устройств к Raspberry без питания!
Ставим необходимые пакеты для работы с шиной I2C:
1 2 |
sudo apt-get install -y python-smbus sudo apt-get install -y i2c-tools |
Проверим, правильно ли мы подключили датчик. Для этого исполним команду сканирования шины I2C:
1 |
$ i2cdetect -y 1 |
1 2 3 4 5 6 7 8 9 10 |
$ i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- |
Видим подключенный 40-й адрес. Это адрес нашего датчика. Все в порядке.
Теперь нам потребуется небольшой сценарий для работы с датчиком через Python.
1 |
$ vim /home/pi/si7021.py |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
#!/usr/bin/env python # -*- coding: utf-8 -*- # SI7021 import smbus import time # Get I2C bus (Номер шины в разных МК может отличаться. В PI3 - 1) bus = smbus.SMBus(1) # SI7021 address, 0x40(64) # 0xF5(245) Select Relative Humidity NO HOLD master mode bus.write_byte(0x40, 0xF5) time.sleep(0.3) # SI7021 address, 0x40(64) # Read data back, 2 bytes, Humidity MSB first data0 = bus.read_byte(0x40) data1 = bus.read_byte(0x40) # Convert the data humidity = ((data0 * 256 + data1) * 125 / 65536.0) - 6 time.sleep(0.3) # SI7021 address, 0x40(64) # 0xF3(243) Select temperature NO HOLD master mode bus.write_byte(0x40, 0xF3) time.sleep(0.3) # SI7021 address, 0x40(64) # Read data back, 2 bytes, Temperature MSB first data0 = bus.read_byte(0x40) data1 = bus.read_byte(0x40) # Convert the data cTemp = ((data0 * 256 + data1) * 175.72 / 65536.0) - 46.85 fTemp = cTemp * 1.8 + 32 # Output data to screen print "Влажность: %.2f %%" %humidity print "Температура C: %.2f" %cTemp print "Температура F: %.2f" %fTemp |
Делаем наш сценарий исполняемым:
1 |
$ sudo chmod +x /home/pi/si7021.py |
Проверяем:
1 2 3 4 |
$ /home/pi/si7021.py Влажность: 28.31 % Температура C: 26.19 Температура F: 79.15 |
Enjoy, господа! Можно приступать к написанию температурных сигнализаций или произвольных сценариев на основе текущей влажности.
Подскажите, пожалуйста, а как привязать этот датчик к Homebridge? Плагина не нашел 🙁
Заранее благодарю.
Или нужно использовать плагины для SHT21 и HTU21?