Sadržaj:

Nadzor temperature i vlažnosti pomoću Raspberry Pi: 6 koraka (sa slikama)
Nadzor temperature i vlažnosti pomoću Raspberry Pi: 6 koraka (sa slikama)

Video: Nadzor temperature i vlažnosti pomoću Raspberry Pi: 6 koraka (sa slikama)

Video: Nadzor temperature i vlažnosti pomoću Raspberry Pi: 6 koraka (sa slikama)
Video: Часть 5 - Аудиокнига Уолдена Генри Дэвида Торо (глы 12–15) 2024, Decembar
Anonim
Nadzor temperature i vlažnosti pomoću Raspberry Pi
Nadzor temperature i vlažnosti pomoću Raspberry Pi
Nadzor temperature i vlažnosti pomoću Raspberry Pi
Nadzor temperature i vlažnosti pomoću Raspberry Pi

Ljeto dolazi, a oni bez klima uređaja trebali bi biti spremni kontrolirati atmosferu u zatvorenom prostoru ručno. U ovom postu opisujem moderan način mjerenja najvažnijih parametara za ugodu čovjeka: temperature i vlažnosti. Ovi prikupljeni podaci šalju se u oblak i tamo obrađuju.

Koristim ploču Raspberry Pi 1 i senzor DHT22. Isto možete učiniti na bilo kojem računaru koji ima internet, GPIO i Python. Jeftiniji DHT11 senzor također radi dobro.

Korak 1: Priprema hardvera

Priprema hardvera
Priprema hardvera
Priprema hardvera
Priprema hardvera

Počnimo od samog početka, jer nisam koristio svoj Raspberry Pi već duže vrijeme.

Trebat će nam:

  • Raspberry Pi ploča (ili druga platforma orijentirana na IoT).
  • SD ili microSD kartica (ovisno o platformi).
  • 5V/1A putem mikro-USB-a.
  • LAN kabel koji omogućuje internetsku vezu.
  • HDMI ekran, RCA ekran ili UART port (za omogućavanje SSH).

Prvi korak je preuzimanje Raspbiana. Odabrao sam Lite verziju jer ću koristiti SSH umjesto ekrana. Stvari su se promijenile od posljednjeg puta kada sam to učinio: sada postoji odličan softver za snimanje pod nazivom Etcher, koji savršeno radi i ima zadivljujući dizajn.

Nakon što je snimanje slike završeno, umetnuo sam SD karticu u svoj Pi, priključio LAN i kablove za napajanje, a nakon nekog vremena moj usmjerivač je registrirao novi uređaj.

Korak 2: Omogućavanje SSH -a

Omogućavanje SSH -a
Omogućavanje SSH -a
Omogućavanje SSH -a
Omogućavanje SSH -a
Omogućavanje SSH -a
Omogućavanje SSH -a

SSH je prema zadanim postavkama onemogućen. Mogu koristiti ili UART-USB pretvarač ili samo spojiti zaslon za pristup ljusci i omogućiti SSH.

Nakon ponovnog pokretanja, konačno sam ušao. Prvo prvo, ažurirajmo:

sudo apt update && sudo apt upgrade -y

Sada spojimo ovaj novi uređaj na Cloud.

Korak 3: Instaliranje Cloud4RPi

Instaliranje Cloud4RPi
Instaliranje Cloud4RPi

Odlučio sam isprobati cloud platformu pod nazivom Cloud4RPi, koja je dizajnirana za IoT.

Prema dokumentima, za pokretanje su nam potrebni sljedeći paketi:

sudo apt install git python python -pip -y

Klijentska biblioteka može se instalirati u jednoj naredbi:

sudo pip install cloud4rpi

Sada nam je potreban neki uzorak koda kako bismo bili sigurni da radi.

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

Odlučio sam pokrenuti minimal.py, ali ne sviđaju mi se lažni podaci. Srećom, primijetio sam jednostavan način da dijagnostičke podatke učinim stvarnima u ovom primjeru. Dodajte još jedan uvoz u odjeljak o uvozima:

iz rpi uvoza *

Zatim izbrišite ove funkcije koje pružaju lažne podatke (rpi.py ih sada definira):

def cpu_temp ():

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

Sada nam je potreban token koji Cloud4RPi -u omogućava povezivanje uređaja s računima. Da biste ga dobili, stvorite račun na cloud4rpi.io i pritisnite gumb Novi uređaj na ovoj stranici. Zamijenite niz _YOUR_DEVICE_TOKEN_ u datoteci minimal.py s tokenom uređaja i spremite datoteku. Sada smo spremni za prvo lansiranje.

python minimal.py

Otvorite stranicu uređaja i provjerite postoje li podaci.

Pređimo sada na podatke iz stvarnog svijeta.

Korak 4: Spajanje senzora

Priključivanje senzora
Priključivanje senzora

Trebat će nam:

  • Senzor vlažnosti DHT22 ili DHT11
  • Otpornik na izvlačenje (5-10 KΩ)
  • Žice

Senzor DHT22 istovremeno mjeri temperaturu i vlažnost. Komunikacijski protokol nije standardiziran, pa ga ne moramo omogućiti u raspi -config - jednostavan GPIO pin je više nego dovoljan.

Za prikupljanje podataka koristit ću odličnu Adafruit biblioteku za DHT senzore, ali možda neće funkcionirati kako jest. Jednom sam našao čudno konstantno kašnjenje u kodu, koje nije radilo na mom hardveru, a nakon dvije godine moj zahtjev za povlačenjem još uvijek je na čekanju. Takođe sam promenio konstante detekcije ploče jer je moj Raspberry Pi 1 sa BCM2835 iznenađujuće otkriven kao Raspberry Pi 3. Voleo bih da je to tačno … Stoga preporučujem da koristim viljušku. Ako imate bilo kakvih problema s tim, pokušajte s originalnim spremištem, možda nekome radi, ali ja nisam jedan od njih.

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

Kako je biblioteka napisana na C-u, zahtijeva kompajliranje, pa su vam potrebni build-essential i python-dev paketi.

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

Dok se paketi instaliraju, povežite DHT22 kao što je prikazano na slici.

I isprobajte:

cd ~ python -c "uvoz Adafruit_DHT kao d; ispis d.read_retry (d. DHT22, 4)"

Ako vidite nešto poput (39.20000076293945, 22.600000381469727), trebali biste znati da je to vlažnost u postocima i temperatura u Celzijusima.

A sada, sastavimo sve zajedno!

Korak 5: Slanje očitanja senzora u oblak

Slanje očitanja senzora u oblak
Slanje očitanja senzora u oblak

Koristiću minimal.py kao bazu i u nju ću dodati DHT22 interakciju.

cd cloud4rpi-raspberrypi-python

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

Kako DHT22 vraća temperaturu i vlažnost u jednom pozivu, pohranjujem ih globalno i ažuriram samo jednom u zahtjevu, pod pretpostavkom da je kašnjenje između njih više od 10 sekundi. Uzmite u obzir sljedeći kôd koji prikuplja podatke DHT22:

uvoz Adafruit_DHT

temp, hum = Ništa, Ništa last_update = time.time () - 20 def update_data (): globalno 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 nije None None None def get_h (): update_data () return round (hum, 2) if hum nije Niko drugi nema

Umetnite ovaj kôd nakon postojećeg uvoza i uredite odjeljak varijabli tako da koristi nove funkcije:

varijable = {

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

Pritisnite crveno dugme za početak prijenosa podataka:

python cloud_dht22.py

Zatim možete provjeriti stranicu uređaja.

Možete ostaviti kako jest, ali radije imam uslugu za sve. Ovo osigurava da je skripta uvijek aktivna. Kreiranje usluge s potpuno automatiziranom skriptom:

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

Pokretanje usluge:

sudo servis cloud4rpi start

I proverite:

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

● cloud4rpi.service-demon Cloud4RPi Učitano: učitano (/lib/systemd/system/cloud4rpi.service; omogućeno) Aktivno: aktivno (radi) od srijede 2017-05-17 20:22:48 UTC; Prije 1 minute Glavni PID: 560 (python) CGroup: /system.slice/cloud4rpi.service └─560/usr/bin/python /home/pi/cloud_dht22.py 17. svibnja 20:22:51 raspberrypi python [560]: Objavljivanje iot -hub/messages: {'type': 'config', 'ts': '2017-05-17T20… y'}]} 17. maja 20:22:53 raspberrypi python [560]: Objavljivanje iot-hub/poruka: {'type': 'data', 'ts': '2017-05-17T20: 2… 40'}} 17. maj 20:22:53 raspberrypi python [560]: Objavljivanje iot-hub/poruka: {'type': 'system', 'ts': '2017-05-17T20….4'}}

Ako sve radi kako se očekuje, možemo nastaviti koristiti mogućnosti Cloud4RPi platforme za manipulaciju podacima.

Korak 6: Karte i alarmi

Karte i alarmi
Karte i alarmi
Karte i alarmi
Karte i alarmi
Karte i alarmi
Karte i alarmi

Prije svega, iscrtajmo varijable kako bismo vidjeli kako se mijenjaju. To se može učiniti dodavanjem nove kontrolne ploče i stavljanjem potrebnih grafikona u nju.

Još jedna stvar koju možemo učiniti ovdje je postavljanje upozorenja. Ova vam značajka omogućuje konfiguriranje sigurnog raspona za varijablu. Čim se raspon prekorači, šalje obavijest putem e -pošte. Na stranici za uređivanje kontrolne ploče možete se prebaciti na Upozorenja i postaviti jedno.

Odmah nakon toga, vlažnost u mojoj sobi počela je brzo opadati bez ikakvog vidljivog razloga, a alarm je ubrzo uslijedio.

Cloud4RPi možete besplatno koristiti sa bilo kojim hardverom koji može izvršavati Python. Što se mene tiče, sada uvijek znam kada treba uključiti ovlaživač zraka, a mogu ga čak i spojiti na relej za daljinsko upravljanje putem Cloud4RPi. Spreman sam za vrućine! Dobrodošlo, ljeto!

Preporučuje se: