Умный дом с HTU21D + BMP180 + BH1750FVI и Raspberry pi 3+

Купил себе Raspberry Pi 3+ и заказал несколько датчиков для построения умного дома. Это мой первый опыт в этом деле и я постараюсь описать как можно больше подводных камней при работе с моими купленными датчиками и малиной.

Модуль Погода Сенсор Температура и влажности Давление освещения Сенсор CJMCU

  • HTU21D
  • BMP180
  • BH1750FVI

Хватит описаний, приступаем…..

Умный дом с HTU21D + BMP180 + BH1750FVI и Raspberry pi 3+

Установка Raspbian

Первое что необходимо сделать — установить и настроить вашу малинку. Я описывал процесс установки в своей статье:

Установка Raspbian from scratch на Unix/Linux

Покупка датчиков

Я заказывал на алиэкспресс по запросу «HTU21D + BMP180 + BH1750FVI Модуль Погода Сенсор Температура и влажности Давление освещения Сенсор CJMCU». Не знаю почему, но выбрал именно эту микросхему. В ней имееться несколько датчиков с которыми можно будет разобраться как это все работает. При необходимости, я всегда могу купить другой вариант.

Данная микросхема выглядит вот так:

HTU21D + BMP180 + BH1750FVI
HTU21D + BMP180 + BH1750FVI

Имееться 4 пина:

  • GND — Земля.
  • SDA — Пин для опроса метрик.
  • SCL — Пин для опроса метрик.
  • 3V3 — Вольтаж, в 3.3V.

Распиновка для Raspberry pi 3 +

Погуглил распиновку и решил добавить ее сюда для дальнейшего юседжа:

Собственно, подключаем микруху по описанию пинов. Там всего их 4 шт, по этому — думаю что не составит труда все вставить как нужно.

Включаем 1-Wire, I2C, SPI в Raspberry pi 3+

Сейчас, стоит включить некоторые интерфейсы для работы с датчиками, для этого, выполняем следующую команду:

# raspi-config

Выглядит это вот так:

Нас интересует «Interfacing Options». Переходим на данный пункт и кликаем «enter». Следующим действием включаем «SPI»:

Выбираем что необходимо включить/выключить и жмакаем «enter». Затем, выбираем что нужно, включить «YES» или выключить «NO».

Аналогичными действиями, включаем «1-Wire» и «I2C».

Замечание: Если у вас /boot раздел смонтирован в read-only (ro), то стоит отредактировать /etc/fstab и убрать данную опцию или добавить write (rw) и после чего, выполнить reboot.

Установка ПО для Raspberry pi 3 +

Ну, для начала, обновим ОС:

# apt update && apt dist-upgrade

Ставим пакет для python3:

# pip3 install sensor i2csense

Если нужно уставить PIP, то вот статья:

Установка pip/setuptools/wheel в Unix/Linux

Ставим пакеты:

# apt install -y i2c-tools python3-smbus

Для работы с htu21d и python3 стоит поставить пакет:

 # pip3 install adafruit-circuitpython-htu21d lm-sensors

Для работы с другими модулями/датчиками и python3 стоит поставить пакет:

# apt install -y python3-pigpio rpi.gpio python3-gpiozero

Иницилиазируем pigpiod либу:

# pigpiod

Если получили ошибку:

2019-05-29 02:17:32 initInitialise: Can't lock /var/run/pigpio.pid
Can't initialise pigpio library

Решение:

# rm -f /var/run/pigpio.pid && killall pigpiod && pigpiod

Можно идти дальше.

Проверка ПО для Raspberry, сбор данных

Проверим, работает ли модуль i2c, с помощью следующей команды:

# lsmod | grep i2c_
i2c_bcm2835            16384  0
i2c_dev                16384  0

Смотрим датчики которые используют 1-wire:

# ls /sys/bus/w1/devices/
00-03b000000000  00-7db000000000  00-fdb000000000  w1_bus_master1

Смотрим датчики которые используют SPI:

# i2cdetect -y 0
Error: Could not open file `/dev/i2c-0' or `/dev/i2c/0': No such file or directory

Смотрим датчики которые используют I2C:

# i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- 23 -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- 77

Или вот еще утилита которая может определить сенсоры:

# i2csense
Running i2cdetect utility in i2c bus 1:
The command '/usr/sbin/i2cdetect -y 1' has returned:
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- 23 -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- 77

3 sensors detected in 0x23, 0x40, 0x77

Еще полезности:

# cat /sys/bus/i2c/devices/i2c-*/name
bcm2835 I2C adapter

Или:

# i2cdetect -l
i2c-1	i2c       	bcm2835 I2C adapter             	I2C adapter

Идем дальше.

Написание ПО для Raspberry pi 3 + и датчиков

Пример 1, открываем файл:

$ vim htu21d_sensor/htu21d_sensor.py

И прописываем:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from Adafruit_HTU21D.HTU21D import HTU21D

sensor = HTU21D()

temperature = sensor.read_temperature()
humidity = sensor.read_humidity()
dewpoint = sensor.read_dewpoint()

print("Temperature(Температура): {}C".format(round(temperature, 1)))
print("Humidity(Влажность): {}%".format(round(humidity, 1)))
print("Dewpoint: {}".format(round(dewpoint, 1)))
sensor.reset()

Запускаем:

$ python3 htu21d_sensor/htu21d_sensor.py
Temperature(Температура): 36.5C
Humidity(Влажность): 22.9%
Dewpoint: 12.1

Честно, температура явно не такая. Попробую разобраться попозже. А для тестов — пойдет и так (хотя и печальненько….).

Вот и все, статья «Умный дом с HTU21D + BMP180 + BH1750FVI и Raspberry pi 3+» завершина.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.