Оглавление:

Мониторинг температуры и влажности с помощью Raspberry Pi: 6 шагов (с изображениями)
Мониторинг температуры и влажности с помощью Raspberry Pi: 6 шагов (с изображениями)

Видео: Мониторинг температуры и влажности с помощью Raspberry Pi: 6 шагов (с изображениями)

Видео: Мониторинг температуры и влажности с помощью Raspberry Pi: 6 шагов (с изображениями)
Видео: Модернизация Raspberry Pi 4 - модуль X857, mSATA SSD диск KingSpec, ставим Supervised Home Assistant 2024, Ноябрь
Anonim
Мониторинг температуры и влажности с помощью Raspberry Pi
Мониторинг температуры и влажности с помощью Raspberry Pi
Мониторинг температуры и влажности с помощью Raspberry Pi
Мониторинг температуры и влажности с помощью Raspberry Pi

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

Я использую плату Raspberry Pi 1 и датчик DHT22. Вы можете сделать то же самое на любом компьютере, на котором есть Интернет, GPIO и Python. Более дешевый датчик DHT11 тоже работает нормально.

Шаг 1. Подготовка оборудования

Подготовка оборудования
Подготовка оборудования
Подготовка оборудования
Подготовка оборудования

Начнем с самого начала, так как я довольно давно не использовал свой Raspberry Pi.

Нам понадобится:

  • Плата Raspberry Pi (или другая платформа, ориентированная на IoT).
  • Карта SD или microSD (в зависимости от платформы).
  • 5 В / 1 А через micro-USB.
  • Кабель LAN, обеспечивающий подключение к Интернету.
  • Дисплей HDMI, дисплей RCA или порт UART (для включения SSH).

Самый первый шаг - это загрузка Raspbian. Я выбрал версию Lite, так как собираюсь использовать SSH вместо дисплея. Все изменилось с тех пор, как я последний раз это делал: теперь есть отличное программное обеспечение для записи под названием Etcher, которое отлично работает и имеет потрясающий дизайн..

После завершения записи образа я вставил SD-карту в свой Pi, подключил LAN и кабели питания, и через некоторое время мой маршрутизатор зарегистрировал новое устройство.

Шаг 2. Включение SSH

Включение SSH
Включение SSH
Включение SSH
Включение SSH
Включение SSH
Включение SSH

По умолчанию SSH отключен. Я могу использовать либо конвертер UART-USB, либо просто подключить дисплей, чтобы получить доступ к оболочке и включить SSH.

После перезагрузки я наконец-то в деле. Перво-наперво, давайте обновим:

sudo apt update && sudo apt upgrade -y

Теперь давайте подключим это новое устройство к облаку.

Шаг 3. Установка Cloud4RPi

Установка Cloud4RPi
Установка Cloud4RPi

Я решил попробовать облачную платформу Cloud4RPi, предназначенную для Интернета вещей.

Согласно документации, для его запуска нам понадобятся следующие пакеты:

sudo apt install git python python-pip -y

Клиентскую библиотеку можно установить одной командой:

sudo pip установить cloud4rpi

Теперь нам нужен образец кода, чтобы убедиться, что он работает.

git clone https://github.com/cloud4rpi/cloud4rpi-raspberrypi-python && cd cloud4rpi-raspberrypi-python git clone https://gist.github.com/f8327a1ef09ceb1ef142fa68701270de.git e && mv e / minimal.py minimal.py && rmdir -re

Я решил запустить Minimal.py, но мне не нравятся фальшивые данные. К счастью, в этом примере я заметил простой способ сделать диагностические данные реальными: добавить еще один импорт в раздел импорта:

из импорта rpi *

Затем удалите эти функции, которые предоставляют поддельные данные (теперь их определяет rpi.py):

def cpu_temp ():

return 70 def ip_address (): return '8.8.8.8' def host_name (): return 'hostname' def os_name (): return 'osx'

Теперь нам нужен токен, который позволяет Cloud4RPi связывать устройства с учетными записями. Чтобы получить его, создайте учетную запись на cloud4rpi.io и нажмите кнопку «Новое устройство» на этой странице. Замените строку _YOUR_DEVICE_TOKEN_ в файле minimal.py на токен вашего устройства и сохраните файл. Теперь мы готовы к первому запуску.

Python Minimal.py

Откройте страницу устройства и проверьте наличие данных.

Теперь перейдем к реальным данным.

Шаг 4: Подключение датчика

Подключение датчика
Подключение датчика

Нам понадобится:

  • Датчик влажности DHT22 или DHT11
  • Подтягивающий резистор (5-10 кОм)
  • Провода

Датчик DHT22 одновременно измеряет температуру и влажность. Протокол связи не стандартизирован, поэтому нам не нужно включать его в raspi-config - простого вывода GPIO более чем достаточно.

Для сбора данных я буду использовать отличную библиотеку Adafruit для датчиков DHT, но она может не работать как есть. Однажды я обнаружил странную постоянную задержку в коде, которая не работала на моем оборудовании, и через два года мой запрос на перенос все еще ожидает обработки. Я также изменил константы обнаружения платы, потому что мой Raspberry Pi 1 с BCM2835 был неожиданно обнаружен как Raspberry Pi 3. Я бы хотел, чтобы это было правдой… Таким образом, я рекомендую использовать свою вилку. Если у вас возникнут проблемы с этим, попробуйте исходный репозиторий, возможно, он у кого-то работает, но я не один из них.

git clone https://github.com/Himura2la/Adafruit_Python_DHT…. Adafruit_Python_DHT

Поскольку библиотека написана на C, она требует компиляции, поэтому вам понадобятся пакеты build-essential и python-dev.

sudo apt install build-essential python-dev -ysudo python setup.py install

Пока пакеты устанавливаются, подключите DHT22, как показано на рисунке.

И протестируем это:

cd ~ python -c "импортировать Adafruit_DHT как d; распечатать d.read_retry (d. DHT22, 4)"

Если вы видите что-то вроде (39.20000076293945, 22.600000381469727), знайте, что это влажность в процентах и температура в градусах Цельсия.

А теперь соберем все вместе!

Шаг 5: Отправка показаний датчика в облако

Отправка показаний датчика в облако
Отправка показаний датчика в облако

Я буду использовать Minimal.py в качестве основы и добавлю к нему взаимодействие DHT22.

cd cloud4rpi-raspberrypi-python

cp minimal.py ~ / cloud_dht22.py cp rpi.py ~ / rpi.py cd vi cloud_dht22.py

Поскольку DHT22 возвращает и температуру, и влажность за один вызов, я сохраняю их глобально и обновляю только один раз в запросе, предполагая, что задержка между ними составляет более 10 секунд. Рассмотрим следующий код, который получает данные DHT22:

импортировать Adafruit_DHT

temp, hum = None, None last_update = time.time () - 20 def update_data (): global last_update, hum, temp if time.time () - last_update> 10: hum, temp = Adafruit_DHT.read_retry (Adafruit_DHT. DHT22, 4) last_update = time.time () def get_t (): update_data () return round (temp, 2) if temp is not none else None def get_h (): update_data () return round (гул, 2) если гул нет Никто другой нет

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

переменные = {

'DHT22 Temp': {'type': 'numeric', 'bind': get_t}, 'DHT22 Humidity': {'type': 'numeric', 'bind': get_h}, 'CPU Temp': {'type ':' numeric ',' bind ': cpu_temp}}

Нажмите красную кнопку, чтобы начать передачу данных:

python cloud_dht22.py

Затем вы можете проверить страницу устройства.

Вы можете оставить все как есть, но я предпочитаю иметь сервис для всего. Это гарантирует, что сценарий всегда выполняется. Создание сервиса с полностью автоматизированным скриптом:

wget -O https://github.com/cloud4rpi/cloud4rpi-raspberrypi-python/blob/master/service_install.sh | sudo bash -s cloud_dht22.py

Запуск службы:

sudo service cloud4rpi start

И проверяем это:

pi @ raspberrypi: ~ $ sudo service cloud4rpi status -l

● cloud4rpi.service - демон Cloud4RPi Загружен: загружен (/lib/systemd/system/cloud4rpi.service; включен) Активен: активен (работает) с 17.05.2017, 20:22:48 UTC; 1мин назад Основной PID: 560 (python) CGroup: /system.slice/cloud4rpi.service └─560 / usr / bin / python /home/pi/cloud_dht22.py 17 мая 20:22:51 raspberrypi python [560]: публикация iot -hub / messages: {'type': 'config', 'ts': '2017-05-17T20… y'}]} 17 мая 20:22:53 raspberrypi python [560]: публикация iot-hub / messages: {'type': 'data', 'ts': '2017-05-17T20: 2… 40'}} 17 мая 20:22:53 raspberrypi python [560]: публикация iot-hub / messages: {'type': 'system', 'ts': '2017-05-17T20….4'}}

Если все работает, как ожидалось, мы можем продолжить и использовать возможности платформы Cloud4RPi для манипулирования данными.

Шаг 6: графики и сигналы тревоги

Графики и сигналы тревоги
Графики и сигналы тревоги
Графики и сигналы тревоги
Графики и сигналы тревоги
Графики и сигналы тревоги
Графики и сигналы тревоги

Прежде всего, давайте изобразим переменные, чтобы увидеть, как они меняются. Это можно сделать, добавив новую панель управления и поместив в нее необходимые диаграммы.

Еще одна вещь, которую мы можем сделать здесь, - это установить оповещение. Эта функция позволяет вам настроить безопасный диапазон для переменной. Как только диапазон выходит за рамки, он отправляет уведомление по электронной почте. На странице редактирования Панели управления вы можете переключиться на Оповещения и настроить их.

Сразу после этого влажность в моей комнате начала быстро падать без какой-либо заметной причины, и вскоре последовала тревога.

Вы можете использовать Cloud4RPi бесплатно с любым оборудованием, способным выполнять Python. Что касается меня, теперь я всегда знаю, когда включить увлажнитель воздуха, и я даже могу подключить его к реле для удаленного управления через Cloud4RPi. Я готов к жаре! Добро пожаловать, лето!

Рекомендуемые: