Cuprins:
- Pasul 1: Pregătirea hardware-ului
- Pasul 2: Activarea SSH
- Pasul 3: Instalarea Cloud4RPi
- Pasul 4: Conectarea senzorului
- Pasul 5: Trimiterea citirilor senzorilor în cloud
- Pasul 6: diagrame și alarme
Video: Monitorizarea temperaturii și umidității folosind Raspberry Pi: 6 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
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
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
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
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
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
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
Î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:
Monitorizarea temperaturii și umidității folosind NODE MCU ȘI BLYNK: 5 pași
Monitorizarea temperaturii și a umidității folosind NODE MCU ȘI BLYNK: Băieți băieți
Monitorizarea temperaturii și a umidității folosind ESP-01 și DHT și Cloud AskSensors: 8 pași
Monitorizarea temperaturii și umidității folosind ESP-01 & DHT și Cloud AskSensors: În acest instructiv vom învăța cum să monitorizăm măsurătorile de temperatură și umiditate folosind placa IOT-MCU / ESP-01-DHT11 și platforma IoT AskSensors .Aleg modulul IOT-MCU ESP-01-DHT11 pentru această aplicație deoarece
Monitorizarea temperaturii și umidității folosind Blynk: 6 pași
Monitorizarea temperaturii și umidității folosind Blynk: În acest tutorial vom monitoriza temperatura și umiditatea utilizând DHT11 și vom trimite datele în cloud folosind componentele Blynk necesare pentru acest tutorial: Senzor de temperatură și umiditate Arduino UnoDHT11 ESP8266-01 Modul WiFi
Monitorizarea temperaturii și umidității folosind SHT25 și Arduino Nano: 5 pași
Monitorizarea temperaturii și umidității folosind SHT25 și Arduino Nano: Am lucrat recent la diverse proiecte care necesită monitorizarea temperaturii și umidității și apoi ne-am dat seama că acești doi parametri joacă de fapt un rol esențial în a avea o estimare a eficienței de lucru a unui sistem. Atât la industria
Monitorizarea temperaturii și umidității folosind SHT25 și Raspberry Pi: 5 pași
Monitorizarea temperaturii și umidității folosind SHT25 și Raspberry Pi: Am lucrat recent la diferite proiecte care necesită monitorizarea temperaturii și umidității și apoi ne-am dat seama că acești doi parametri joacă de fapt un rol esențial în a avea o estimare a eficienței de lucru a unui sistem. Atât la industria