устройства умный дом
Оценка влажности с помощью еловой шишки.
Шишка размещается вдалеке от батарей и наблюдается. Воздух сухой, если ее чешуйки открылись и влажный, если они плотно прижаты к основанию. Способ, безусловно, интересный, но…
На первый взгляд датчик температуры воздуха может быть мало актуален, ведь можно посмотреть погоду в интернете, но на самом деле это не так. Он может использоваться в качестве температурной сигнализации дома или как вторичный (косвенный) элемент контроля произвольного объекта/помещения.
Что касается датчика влажности, подход к вопросу полностью аналогичен. Ориентируясь на показатели влажности, можно включать/выключать ваши вытяжки или применять какие-то климатические сценарии.
В качестве примера сегодня выступает 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, господа! Можно приступать к написанию температурных сигнализаций или произвольных сценариев на основе текущей влажности.
умный дом скачать