cum se construiește un monitor de temperatură Raspberry Pi

temperatura și umiditatea sunt puncte de date vitale în lumea industrială de astăzi. Monitorizarea datelor de mediu pentru camerele de servere, congelatoarele comerciale și liniile de producție este necesară pentru a menține lucrurile să funcționeze fără probleme. Există o mulțime de soluții acolo variind de la bază la complexe și poate părea copleșitoare pe ceea ce are nevoie de afacerea dvs. și în cazul în care pentru a începe.

vom trece prin modul de construire și utilizare a unui senzor de temperatură Raspberry Pi cu senzori de temperatură diferiți. Acesta este un loc bun pentru a începe, deoarece aceste soluții sunt ieftine, ușor de făcut și vă oferă o bază pentru a construi pentru alte monitorizări de mediu.

un Raspberry Pi este un computer ieftin cu o singură placă care vă va permite să vă conectați la un senzor de temperatură și să transmiteți datele către un software de vizualizare a datelor. Raspberry Pi a început ca un instrument de învățare și au evoluat la un instrument industrial la locul de muncă. Ușurința de utilizare și capacitatea de a codifica cu Python, limbajul de programare cu cea mai rapidă creștere, le-a făcut să meargă la soluție.

veți dori un Raspberry Pi care are WiFi încorporat, care sunt orice model 3, 4 și zero W/WH. Între cele pe care le puteți alege în funcție de prețuri și caracteristici. Zero W / WH este cel mai ieftin, dar dacă aveți nevoie de mai multe funcționalități, puteți alege între 3 și 4. Puteți cumpăra doar un Zero W / WH la un moment dat din cauza limitărilor de către Fundația Raspberry Pi. Indiferent de Pi pe care îl alegeți, asigurați-vă că achiziționați un încărcător, deoarece acesta este modul în care veți alimenta Pi și un card SD cu Raspbian pentru a face instalarea sistemului de operare cât mai ușoară posibil.

există și alte computere de bord care pot funcționa la fel de bine, dar asta este pentru un alt moment și un alt articol.

senzori

există patru senzori pe care îi recomandăm să le folosiți, deoarece sunt ieftine, ușor de conectat și oferă citiri precise; DSB18B20, DHT22, BME280 și Raspberry Pi Sense HAT.

DHT22-acest senzor de temperatură și umiditate are o precizie a temperaturii de + / – 0,5 C și o umiditate cuprinsă între 0 și 100%. Este simplu să sârmă până la Raspberry Pi și nu are nevoie de orice trage rezistențe.

DSB18B20 — acest senzor de temperatură are o ieșire digitală, care funcționează bine cu Raspberry Pi. Are trei fire și necesită o placă de pâine și un rezistor pentru conexiune.

BME280 — acest senzor măsoară temperatura, umiditatea și presiunea barometrică. Poate fi folosit atât în SPI, cât și în I2C.

Sense HAT — aceasta este o adăugare la bord pentru Raspberry Pi care are LED-uri, senzori și un joystick minuscul. Se conectează direct la GPIO pe Raspberry Pi, dar folosind un cablu panglică vă oferă citiri mai precise de temperatură.

Raspberry Pi Setup

dacă aceasta este prima dată când configurați Raspberry Pi, va trebui să instalați sistemul de operare Raspbian și să vă conectați Pi la WiFi. Acest lucru va necesita un monitor și o tastatură pentru a vă conecta la Pi. Odată ce îl aveți în funcțiune și conectat la WiFI, Pi-ul dvs. este gata de plecare.

stare inițială cont

veți avea nevoie de undeva pentru a trimite datele dvs. pentru a păstra un jurnal istoric și pentru a vizualiza fluxul de date în timp real, astfel încât vom folosi starea inițială. Accesați https://iot.app.initialstate.com și creați un cont nou sau conectați-vă la contul dvs. existent.

apoi, trebuie să instalăm modulul Python de stare inițială pe Pi. La un prompt de comandă (nu uitați să SSH în Pi mai întâi), executați următoarea comandă:

$ cd /home/pi/
$ \curl -sSL https://get.initialstate.com/python -o - | sudo bash

după ce introduceți comanda curl în promptul de comandă, veți vedea ceva similar cu următoarea ieșire pe ecran:

când vi se solicită să obțineți automat un exemplu de script, tastați y. Aceasta va crea un script de test pe care îl putem rula pentru a ne asigura că putem transmite date în starea inițială. Următorul prompt vă va întreba unde doriți să salvați fișierul exemplu. Puteți fie să tastați o cale locală personalizată, fie să apăsați enter pentru a accepta locația implicită. În cele din urmă, veți fi întrebat Ce aplicație inițială de stare utilizați. Dacă ați creat recent un cont, selectați opțiunea 2, Introduceți numele de utilizator și parola. După aceea, instalarea va fi completă.

să aruncăm o privire la scriptul exemplu care a fost creat.

$ nano is_example.py

pe linia 15, veți vedea o linie care începe cu streamer = Streamer(bucket_ .... Aceste linii creează o nouă găleată de date numită „exemplu de flux Python” și este asociată contului dvs. Această asociere se întâmplă din cauza parametrului access_key="..." de pe aceeași linie. Această serie lungă de Litere și numere este cheia inițială de acces la contul dvs. de Stat. Dacă accesați contul dvs. de stare inițială în browserul dvs. web, faceți clic pe numele dvs. de utilizator din partea dreaptă sus, apoi accesați „setările mele”, veți găsi aceeași cheie de acces aici sub „chei de acces Streaming”.

stare inițială chei de acces Flux

de fiecare dată când creați un flux de date, acea cheie de acces va direcționa acel flux de date către contul dvs. (deci nu partajați cheia cu nimeni).

rulați scriptul de testare pentru a vă asigura că putem crea un flux de date în contul dvs. inițial de stare. Rulați următoarele:

$ python is_example.py

reveniți la contul dvs. inițial de stare în browserul dvs. web. O nouă găleată de date numită” exemplu de flux Python ” ar fi trebuit să apară în stânga în raftul jurnalului (poate fi necesar să reîmprospătați pagina). Faceți clic pe această găleată și apoi faceți clic pe pictograma valuri pentru a vizualiza datele testului.

stare inițială Python Stream exemplu tablou de bord

dacă utilizați Python 3 puteți instala modulul de stare inițială Streamer puteți instala folosind următoarea comandă:

pip3 install ISStreamer

acum suntem gata pentru a seta senzorul de temperatură cu Pi pentru a transmite temperatura la un tablou de bord.

soluție DHT22

veți avea nevoie de următoarele elemente pentru a construi această soluție:
-senzor de temperatură și umiditate DHT22

DHT22 va avea trei pini-5V, Gnd și date. Ar trebui să existe o etichetă pin pentru putere pe DHT22 (de exemplu, ‘ + ‘ sau ‘5v’). Conectați acest lucru la pinul 2 (pinul din dreapta sus, 5V) Al Pi. Pinul Gnd va fi etichetat ‘ – ‘ sau ‘ Gnd ‘ sau ceva echivalent. Conectați acest lucru la pinul 6 Gnd (doi pini sub pinul 5V) de pe Pi. Pin-ul rămas pe DHT22 este pin-ul de date și va fi etichetat’ out ‘sau’ S ‘sau’data’. Conectați acest lucru la unul dintre pinii GPIO de pe Pi, cum ar fi GPIO4 (pinul 7). Odată ce acest lucru este conectat, porniți Pi-ul.

pentru această soluție va trebui să folosim Python 3 și Biblioteca CircuitPython, deoarece Adafruit a depreciat biblioteca DHT Python.

instalați modulul CircuitPython-DHT Python la un prompt de comandă pentru a face citirea datelor senzorului DHT22 foarte ușoară:

$ pip3 install adafruit-circuitpython-dht
$ sudo apt-get install libgpiod2

cu sistemul nostru de operare instalat împreună cu cele două module Python pentru citirea datelor senzorilor și trimiterea datelor la starea inițială, suntem gata să scriem scriptul Python. Următorul script va crea / adăuga la o găleată de date de stare inițială, citiți datele senzorului DHT22 și trimiteți datele respective la un tablou de bord în timp real. Tot ce trebuie să faceți este să modificați liniile 6-11.

  • Linia 7— această valoare trebuie să fie unică pentru fiecare nod/senzor de temperatură. Acesta ar putea fi numele camerei nodului senzorului, locația fizică, identificatorul unic sau orice altceva. Asigurați-vă că este unic pentru fiecare nod pentru a vă asigura că datele din acest nod merg la propriul flux de date din tabloul de bord.
  • linia 8— Acesta este numele cupei de date. Acest lucru poate fi schimbat în orice moment în UI starea inițială.
  • linia 9— Aceasta este cheia găleată. Trebuie să fie aceeași cheie de cupă pentru fiecare nod pe care doriți să îl afișați în același tablou de bord.
  • linia 10— Aceasta este cheia inițială de acces la contul de stare. Copiați și lipiți această cheie din contul dvs. inițial de stare.
  • linia 11— Acesta este timpul dintre citirea senzorului. Modificați în consecință.
  • linia 12 — puteți specifica unități metrice sau imperiale pe linia 11.

după ce ați setat liniile 7-12 în scriptul Python pe Pi, salvați și ieșiți din editorul de text. Rulați scriptul cu următoarea comandă:

$ python3 tempsensor.py
Iată un exemplu de utilizare a senzorului DHT22 cu Raspberry Pi

acum veți avea date care trimit la un tablou de bord inițial. Accesați secțiunea finală a acestui articol pentru detalii despre cum să vă personalizați tabloul de bord.

DSB18B20 soluție

veți avea nevoie de următoarele elemente pentru a construi această soluție:
– DSB18B20 senzor de temperatură
– 10k rezistor
– Breadboard
– 40-Pin Breakout bord + cablu panglică
– Fire

cablul panglică se conectează la pinii GPIO de pe Pi. DS18B20 are trei fire. Firul roșu se conectează la 3,3 V. firul albastru/negru se conectează la masă. Firul galben se conectează la un rezistor pull-up/pin 4. Odată ce acest lucru este conectat, porniți Pi-ul.

cea mai recentă versiune de Raspbian (kernel 3.18) necesită o adăugare la /boot/config.fișier txt pentru Pi pentru a comunica cu DS18B20. Rulați următoarele pentru a edita acest fișier:

$ sudo nano /boot/config.txt

dacă următoarea linie nu este deja în acest fișier (dacă este, este probabil în partea de jos a fișierului), adăugați-l și salvați fișierul.

dtoverlay=w1-gpio,gpiopin=4

reporniți Pi-ul pentru ca modificările să aibă efect.

$ sudo reboot

pentru a porni interfața de citire a senzorului de temperatură, trebuie să rulăm două comenzi. Accesați un prompt de comandă de pe Pi sau SSH în Pi. Tastați următoarele comenzi:

$ sudo modprobe w1-gpio$ sudo modprobe w1-therm

ieșirea senzorului de temperatură este acum scrisă într-un fișier de pe Pi. Pentru a găsi acel fișier:

$ cd /sys/bus/w1/devices

în acest director, va exista un subdirector care începe cu „28-„. Ceea ce vine după „28-” este numărul de serie al senzorului. cd în acel director. În interiorul acestui director, un fișier numit w1_slave conține ieșirea senzorului. Utilizați nano pentru a vizualiza conținutul fișierului. După ce ați intrat în fișier, acesta va arăta cam așa:

a2 01 4b 46 7f ff 0e 10 d8 : crc=d8 YESa2 01 4b 46 7f ff 0e 10 d8 t=26125

Numărul după „t=” este numărul pe care îl dorim. Aceasta este temperatura în 1/1000 grade Celsius (în exemplul de mai sus, temperatura este de 26.125 C). Avem nevoie doar de un program simplu care citește acest fișier și analizează acest număr. Vom ajunge la asta într-o secundă.

totul este acum gata pentru a începe transmiterea datelor. Pentru a deschide Editorul de text, tastați următoarele în promptul de comandă:

$ nano temperature.py

copiați și inserați codul de mai jos în editorul de text.

trebuie să puneți cheia de acces inițială de stare pe linia 6 în locul PUT_YOUR_ACCESS_KEY_HERE (copiați cheia de streaming în clipboard din Contul Meu și lipiți-o în codul din nano în terminalul dvs.).

linia 6 va crea o găleată numită” flux de temperatură ” în contul dvs. inițial de stare (presupunând că ați specificat corect cheia de acces pe aceeași linie). Liniile 8 până la 30 ale acestui script pur și simplu interfață cu senzorul DS18B20 pentru a citi temperatura din fișierul w1_slave am discutat mai devreme. Funcția read_temp_raw () de pe linia 15 citește fișierul w1_slave brut. Funcția read_temp () de pe linia 21 analizează temperatura din acel fișier. Linia 34 apelează aceste funcții pentru a obține temperatura curentă. Linia 35 convertește temperatura de la Celsius la Fahrenheit. Liniile 35 și 36 transmite temperatura în contul dvs. inițial de stare. Linia 37 întrerupe scriptul timp de 0,5 secunde, setând cât de des va fi citit și transmis senzorul de temperatură.

Suntem gata pentru a începe de streaming. Rulați următoarea comandă:

$ sudo python temperature.py

reveniți la contul de stare inițial din browserul dvs. web și căutați o nouă găleată de date numită flux de temperatură. Ar trebui să vedeți transmiterea datelor de temperatură în direct. Variați temperatura senzorului ținându-l în mână sau punându-l într-un pahar cu gheață.

acum veți avea date care trimit către un tablou de bord inițial. Accesați secțiunea finală a acestui articol pentru detalii despre cum să vă personalizați tabloul de bord.

soluție BME280

veți avea nevoie de următoarele construi această soluție:
-BME280 presiune, temperatură, & senzor de umiditate

dacă utilizați un BME280 care nu este de la Adafruit, configurarea și codul dvs. vor fi diferite. Puteți găsi un exemplu de utilizare a senzorului BME280 în acest articol despre monitorizarea umidității spațiului de accesare cu crawlere.

acest senzor vine cu știfturi pe care va trebui să le lipiți pe senzor. Vă recomandăm să utilizați un breadboard cu pinii partea lungă în jos în breadboard pentru a face mai ușor de lipit. Odată ce ați terminat acest lucru trebuie să sârmă senzorul la Pi.

conectați știftul VIN de pe senzor la pinul 1 de 3,3 V de pe Pi. Conectați pinul GND de pe senzor pinul de masă 6 de pe Pi. Conectați pinul SCK de pe senzor la pinul SCL 5 de pe Pi. Conectați pinul SDI de pe senzor la pinul SDA 3 de pe Pi.

va trebui să utilizați Python 3 pentru această soluție și să instalați modulul Streamer de stare inițială folosind metoda de instalare pip3. De asemenea, va trebui să instalați câteva biblioteci Adafruit Python.

pip3 install adafruit-blinka
pip3 install pureio
pip3 install spidev
pip3 install adafruit-GPIO
pip3 install adafruit-circuitpython-bme280

pentru a utiliza senzorul trebuie să activăm I2C pe Pi.

sudo raspi-config

aceasta va deschide instrumentul de configurare software Raspberry Pi. Accesați opțiunea 5 opțiuni de interfață. De aici mergeți la I2C. vă va solicita să vă întrebați dacă doriți să activați I2C, selectați Da și terminați. Acum aveți I2C activat pentru a comunica cu senzorul.

putem testa acest lucru rulând următoarele:

sudo i2cdetect -y 1

acest lucru va verifica dacă Pi-ul dvs. vede senzorul. În modul în care este conectat, ar trebui să arate senzorul la adresa 77. Dacă nu detectează senzorul, reporniți Pi, reactivați opțiunea de interfață I2C pe Pi, și încercați din nou.

odată ce senzorul este detectat, este timpul pentru a rula codul nostru principal, care va trimite date la starea inițială. A creat un fișier numit bme280sensor.py cu comanda nano. Copiați și inserați codul din gist în editorul de text. Va trebui să faceți modificări la liniile 12-19.

  • linia 12 — această valoare trebuie să fie unică pentru fiecare nod/senzor de temperatură. Acesta ar putea fi numele camerei nodului senzorului, locația fizică, identificatorul unic sau orice altceva. Asigurați-vă că este unic pentru fiecare nod pentru a vă asigura că datele din acest nod merg la propriul flux de date din tabloul de bord.
  • linia 13 — acesta este numele cupei de date. Acest lucru poate fi schimbat în orice moment în UI starea inițială.
  • linia 14 — Aceasta este cheia găleată. Trebuie să fie aceeași cheie de cupă pentru fiecare nod pe care doriți să îl afișați în același tablou de bord.
  • linia 15 — Aceasta este cheia inițială de acces la contul de stare. Copiați și lipiți această cheie din contul dvs. inițial de stare.
  • linia 17 — aceasta este presiunea locației dvs. (hPa) la nivelul mării. Puteți găsi aceste informații pe majoritatea site-urilor METEO.
  • linia 18 — Acesta este timpul dintre citirea senzorului. Modificați în consecință.
  • linia 19 — aici puteți specifica unități metrice sau imperiale.

după ce ați setat liniile 12-19 în scriptul Python pe Pi, salvați și ieșiți din editorul de text. Rulați scriptul cu următoarea comandă:

$ python3 bme280sensor.py

acum veți avea date care trimit la un tablou de bord inițial. Accesați secțiunea finală a acestui articol pentru detalii despre cum să vă personalizați tabloul de bord.

Sense Hat Solution

veți avea nevoie de următoarele elemente pentru a construi această soluție:
-Raspberry Pi Sense HAT
-6″ 40-pini IDE tată la mamă cablu prelungitor (opțional pentru precizia temperaturii)

primul pas în utilizarea Sense HAT este să-l instalați fizic pe Pi. Cu Pi alimentat în jos, atașat pălăria așa cum se arată mai jos.

Sense hat conexiune la Raspberry Pi

dacă decideți să utilizați soluția așa cum se arată mai sus, este posibil să observați că citirile de temperatură ale Sense HAT vor fi puțin ridicate — asta pentru că sunt. Vinovatul este căldura generată de procesorul Pi care încălzește aerul din jurul Sense HAT atunci când stă deasupra Pi. Pentru a face senzorul de temperatură util, trebuie fie să îndepărtăm pălăria de Pi, fie să încercăm să calibrăm citirea senzorului de temperatură. O soluție bună pentru a îndepărta senzorul de Pi este un cablu care permite palaria Sense legăna departe de Pi. Un 6″, 40-pini IDE masculin la feminin cablu prelungitor va face truc.

Raspberry Pi într-o carcasă cu cablu prelungitor care se conectează la Sense HAT

odată ce decideți cele două opțiuni, porniți Pi-ul. Trebuie să instalăm biblioteca Python pentru a facilita citirea valorilor senzorului din Sense HAT. În primul rând, va trebui să vă asigurați că totul este actualizat în versiunea dvs. de Raspbian:

$ sudo apt-get update

apoi, instalați biblioteca Sense Hat Python:

$ sudo apt-get install sense-hat

reporniți Pi-ul. Suntem gata pentru a testa pălăria sens citind datele senzorului de la ea și trimiterea acestor date la starea inițială.

creați un fișier numit sensehat și deschideți-l în editorul de text introducând follwoing în promptul de comandă:

$ nano sensehat.py

copiați și inserați codul de mai jos în editorul de text.

observați pe prima linie că importăm biblioteca SenseHat în script. Înainte de a rula acest script, avem nevoie pentru a seta parametrii noștri de utilizator.

în mod specific, trebuie să setați cheia ACCESS_KEY la cheia de acces a contului de stare inițială. Puteți schimba BUCKET_NAME și SENSOR_LOCATION_NAME la locația reală senzor. Salvați și ieșiți din editorul de text.

la un prompt de comandă de pe Pi, executați scriptul:

$ sudo python sensehat.py

acum veți avea date care trimit la un tablou de bord inițial. Accesați secțiunea finală a acestui articol pentru detalii despre cum să vă personalizați tabloul de bord.

Personalizați Tabloul de bord inițial de stare

cu senzorul de temperatură Raspberry Pi construit, puteți merge acum la contul dvs. inițial de stare și să vă uitați la datele dvs. Puteți face clic dreapta pe o țiglă pentru a schimba tipul de diagramă și faceți clic pe Editare dale pentru a redimensiona și pentru a muta gresie dvs. în jurul. Aș recomanda utilizarea termostatului ecartament pentru temperatură și nivelul lichidului ecartament pentru umiditate. Puteți crea grafice de linie atât pentru temperatură, cât și pentru umiditate, pentru a vedea modificările în timp. De asemenea, puteți adăuga o imagine de fundal în tabloul de bord.

puteți seta alerte de declanșare, astfel încât să puteți primi un SMS sau un e-mail dacă temperatura scade sub sau depășește un anumit prag. Accesați cupa de date și faceți clic pe Setări. De acolo accesați fila declanșatoare. Introduceți cheia de flux pe care doriți să o monitorizați, operatorul pe care doriți să îl utilizați și valoarea pragului. Faceți clic pe semnul plus pentru a adăuga declanșatorul. Apoi, veți introduce e-mailul sau numărul de telefon pentru a primi alerta și faceți clic pe semnul plus. După ce ați setat toate declanșatoarele, faceți clic pe butonul Terminat din partea de jos.

stare inițială temperatura tablou de bord

acum că ați creat un senzor de temperatură Raspberry Pi folosind un senzor și un Raspberry Pi, puteți începe să vă gândiți la ce alte date de mediu puteți monitoriza în continuare.

Lasă un răspuns

Adresa ta de email nu va fi publicată.

Previous post maestru grădinar: copacii Cassia sunt ușor de cultivat
Next post Învățarea adaptivă