Съдържание:

Мониторинг на температура и влажност с помощта на Raspberry Pi: 6 стъпки (със снимки)
Мониторинг на температура и влажност с помощта на Raspberry Pi: 6 стъпки (със снимки)

Видео: Мониторинг на температура и влажност с помощта на Raspberry Pi: 6 стъпки (със снимки)

Видео: Мониторинг на температура и влажност с помощта на Raspberry Pi: 6 стъпки (със снимки)
Видео: [Webinar] DIY: графични контролни интерфейси за IoT домашна автоматизация 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 карта (в зависимост от платформата).
  • 5V/1A чрез микро-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, която е предназначена за IoT.

Според документите се нуждаем от следните пакети, за да го стартираме:

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 && 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 KΩ)
  • Проводници

Сензорът 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-съществен python-dev -ysudo python setup.py инсталиране

Докато пакетите се инсталират, свържете 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 (): глобално 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 () връщане на кръг (temp, 2) ако temp не е никой друг Няма def get_h (): update_data () връщане на кръг (hum, 2) ако hum не е Никой друг Никой

Вмъкнете този код след съществуващите импорти и редактирайте секцията с променливи, така че да използва новите функции:

променливи = {

'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 услуга cloud4rpi старт

И проверявайки:

pi@raspberrypi: ~ $ sudo услуга cloud4rpi статус -l

● cloud4rpi.service-демонът Cloud4RPi Зареден: зареден (/lib/systemd/system/cloud4rpi.service; активиран) Активен: активен (работи) от сряда 2017-05-17 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. Подготвен съм за горещините! Добре дошло лято!

Препоръчано: