Cuprins:

Monitorizarea temperaturii și umidității folosind Raspberry Pi: 6 pași (cu imagini)
Monitorizarea temperaturii și umidității folosind Raspberry Pi: 6 pași (cu imagini)

Video: Monitorizarea temperaturii și umidității folosind Raspberry Pi: 6 pași (cu imagini)

Video: Monitorizarea temperaturii și umidității folosind Raspberry Pi: 6 pași (cu imagini)
Video: Cum să interfați senzorii industriali 4-20mA cu Raspberry Pi Pico PLC | PLC Mitsubishi FX1N 2024, Iulie
Anonim
Monitorizarea temperaturii și umidității folosind Raspberry Pi
Monitorizarea temperaturii și umidității folosind Raspberry Pi
Monitorizarea temperaturii și umidității folosind Raspberry Pi
Monitorizarea temperaturii și umidității folosind Raspberry Pi

Vine vara, iar cei fără aer condiționat ar trebui să fie pregătiți să controleze manual atmosfera din interior. În această postare descriu modul modern de măsurare a celor mai importanți parametri pentru confortul uman: temperatura și umiditatea. Aceste date colectate sunt trimise în cloud și procesate acolo.

Folosesc o placă Raspberry Pi 1 și senzorul DHT22. Puteți face același lucru pe orice computer care are Internet, GPIO și Python. Senzorul DHT11 mai ieftin funcționează bine.

Pasul 1: Pregătirea hardware-ului

Pregătirea hardware-ului
Pregătirea hardware-ului
Pregătirea hardware-ului
Pregătirea hardware-ului

Să începem de la bun început, deoarece nu am folosit Raspberry Pi de mult timp.

Noi vom avea nevoie:

  • Placă Raspberry Pi (sau altă platformă orientată spre IoT).
  • Card SD sau microSD (în funcție de platformă).
  • 5V / 1A prin micro-USB.
  • Cablu LAN, care oferă conexiunea la Internet.
  • Afișaj HDMI, afișaj RCA sau port UART (pentru a activa SSH).

Primul pas este descărcarea Raspbian. Am ales versiunea Lite, deoarece voi folosi SSH în loc de afișaj. Lucrurile s-au schimbat de la ultima dată când am făcut-o: acum există un software excelent numit Etcher, care funcționează perfect și are un design uimitor..

După ce s-a finalizat arderea imaginii, am introdus cardul SD în Pi, am conectat cablurile LAN și de alimentare și, după un timp, routerul meu a înregistrat noul dispozitiv.

Pasul 2: Activarea SSH

Activarea SSH
Activarea SSH
Activarea SSH
Activarea SSH
Activarea SSH
Activarea SSH

SSH este dezactivat în mod implicit. Pot folosi fie convertorul UART-USB, fie doar să conectez un afișaj pentru a accesa shell-ul și a activa SSH.

După repornire, sunt în sfârșit. În primul rând, să actualizăm:

sudo apt update && sudo apt upgrade -y

Acum să conectăm acest dispozitiv nou la Cloud.

Pasul 3: Instalarea Cloud4RPi

Instalarea Cloud4RPi
Instalarea Cloud4RPi

Am decis să încerc platforma cloud numită Cloud4RPi, care este concepută pentru IoT.

Conform documentelor, avem nevoie de următoarele pachete pentru a-l rula:

sudo apt instalează git python python-pip -y

Biblioteca client poate fi instalată într-o singură comandă:

sudo pip instalează cloud4rpi

Acum avem nevoie de câteva exemple de cod pentru a ne asigura că funcționează.

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

Am decis să rulez minimal.py, dar nu-mi plac datele false. Din fericire, am observat o modalitate ușoară de a face datele de diagnostic reale în acest exemplu. Adăugați încă un import în secțiunea de importuri:

din importul rpi *

Apoi ștergeți aceste funcții care furnizează date false (rpi.py le definește acum):

def cpu_temp ():

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

Acum avem nevoie de un simbol, care să permită Cloud4RPi să conecteze dispozitivele cu conturile. Pentru a obține unul, creați un cont pe cloud4rpi.io și apăsați butonul Dispozitiv nou de pe această pagină. Înlocuiți șirul _YOUR_DEVICE_TOKEN_ din fișierul minimal.py cu simbolul dispozitivului dvs. și salvați fișierul. Acum suntem pregătiți pentru prima lansare.

python minimal.py

Deschideți pagina dispozitivului și verificați dacă datele sunt acolo.

Acum să trecem la date din lumea reală.

Pasul 4: Conectarea senzorului

Conectarea senzorului
Conectarea senzorului

Noi vom avea nevoie:

  • Senzor de umiditate DHT22 sau DHT11
  • Rezistor de tragere (5-10 KΩ)
  • Fire

Senzorul DHT22 măsoară simultan temperatura și umiditatea. Protocolul de comunicație nu este standardizat, deci nu este nevoie să îl activăm în raspi-config - un simplu pin GPIO este mai mult decât suficient.

Pentru a achiziționa datele, voi folosi marea bibliotecă Adafruit pentru senzorii DHT, dar este posibil să nu funcționeze așa cum este. Odată am găsit o întârziere constantă ciudată în cod, care nu a funcționat pentru hardware-ul meu și, după doi ani, solicitarea mea de pull este încă în așteptare. De asemenea, am schimbat constantele de detectare a plăcii deoarece Raspberry Pi 1 cu BCM2835 a fost surprinzător detectat ca Raspberry Pi 3. Mi-aș dori să fie adevărat … Astfel, vă recomand să folosiți furca mea. Dacă aveți probleme cu acesta, vă rugăm să încercați depozitul original, poate că funcționează pentru cineva, dar nu sunt unul dintre ei.

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

Deoarece biblioteca este scrisă în C, necesită compilare, deci aveți nevoie de pachetele build-essential și python-dev.

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

În timp ce pachetele se instalează, conectați DHT22 așa cum se arată în imagine.

Și testați-l:

cd ~ python -c "import Adafruit_DHT ca d; print d.read_retry (d. DHT22, 4)"

Dacă vedeți ceva de genul (39.20000076293945, 22.600000381469727), ar trebui să știți că aceasta este umiditatea în procente și temperatura în grade Celsius.

Acum, să asamblăm totul împreună!

Pasul 5: Trimiterea citirilor senzorilor în cloud

Trimiterea citirilor senzorilor în cloud
Trimiterea citirilor senzorilor în cloud

Voi folosi minimal.py ca bază și voi adăuga interacțiunea DHT22 în ea.

cd cloud4rpi-raspberrypi-python

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

Întrucât DHT22 returnează atât temperatura, cât și umiditatea într-un singur apel, le stoc la nivel global și le actualizez o singură dată într-o cerere, presupunând că întârzierea dintre ele este mai mare de 10 secunde. Luați în considerare următorul cod, care dobândește datele DHT22:

import Adafruit_DHT

temp, hum = None, None last_update = time.time () - 20 def update_data (): last_update global, 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 get get_h (): update_data () return round (hum, 2) if hum is not Nimeni altcineva Nimic

Introduceți acest cod după importurile existente și editați secțiunea variabile astfel încât să utilizeze noile funcții:

variabile = {

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

Apăsați butonul roșu pentru a începe transferul de date:

python cloud_dht22.py

Apoi puteți verifica pagina dispozitivului.

O puteți lăsa așa cum este, dar prefer să am un serviciu pentru toate. Acest lucru asigură că scriptul rulează întotdeauna. Crearea unui serviciu cu scriptul complet automatizat:

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

Pornirea serviciului:

sudo service cloud4rpi start

Și verificându-l:

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

● cloud4rpi.service - Daemon Cloud4RPi Încărcat: încărcat (/lib/systemd/system/cloud4rpi.service; activat) Activ: activ (rulează) de miercuri 2017-05-17 20:22:48 UTC; Acum 1min PID principal: 560 (python) CGroup: /system.slice/cloud4rpi.service └─560 / usr / bin / python /home/pi/cloud_dht22.py 17 mai 20:22:51 python raspberrypi [560]: Publicarea iot -hub / messages: {'type': 'config', 'ts': '2017-05-17T20 … y'}]} 17 mai 20:22:53 raspberrypi python [560]: Publicarea iot-hub / mesaje: {'type': 'data', 'ts': '2017-05-17T20: 2 … 40'}} 17 mai 20:22:53 raspberrypi python [560]: Publicarea iot-hub / mesaje: {'type': 'sistem', 'ts': '2017-05-17T20 ….4'}}

Dacă totul funcționează conform așteptărilor, putem continua și folosi capacitățile platformei Cloud4RPi pentru a manipula datele.

Pasul 6: diagrame și alarme

Diagramele și alarmele
Diagramele și alarmele
Diagramele și alarmele
Diagramele și alarmele
Diagramele și alarmele
Diagramele și alarmele

În primul rând, să trasăm variabilele pentru a vedea cum se schimbă. Acest lucru se poate face prin adăugarea unui nou panou de control și prin introducerea diagramelor necesare.

Un alt lucru pe care îl putem face aici este setarea unei Alerte. Această caracteristică vă permite să configurați intervalul sigur pentru o variabilă. De îndată ce intervalul este depășit, acesta trimite o notificare prin e-mail. Pe pagina de editare a Panoului de control, puteți trece la Alerte și setați una.

Imediat după aceea, umiditatea din camera mea a început să scadă rapid fără niciun motiv vizibil, iar alarma a urmat în curând.

Puteți folosi Cloud4RPi gratuit cu orice hardware capabil să execute Python. În ceea ce mă privește, acum știu întotdeauna când să pornesc umidificatorul de aer și chiar îl pot conecta la un releu pentru control de la distanță prin Cloud4RPi. Sunt pregătit pentru căldură! Bine ai venit, vara!

Recomandat: