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, Studeni
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 ručno kontrolirati atmosferu u zatvorenom prostoru. U ovom postu opisujem suvremeni 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čunalu koje ima internet, GPIO i Python. Jeftiniji DHT11 senzor također dobro radi.

Korak 1: Priprema hardvera

Priprema hardvera
Priprema hardvera
Priprema hardvera
Priprema hardvera

Krenimo od samog početka, budući da svoj Raspberry Pi nisam koristio dosta dugo.

Mi ćemo trebati:

  • 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 zaslon, RCA zaslon ili UART priključak (za omogućavanje SSH -a).

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

Nakon što je snimanje slike dovršeno, umetnuo sam SD karticu u svoj Pi, priključio LAN i kablove za napajanje, a nakon nekog vremena moj je usmjerivač 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, napokon ulazim. 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

Knjižnica klijenta može se instalirati u jednu naredbu:

sudo pip instalirajte cloud4rpi

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

git klon https://github.com/cloud4rpi/cloud4rpi-raspberrypi-python && cd cloud4rpi-raspberrypi-python git klon 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 uvoza:

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 omogućuje Cloud4RPi 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 minimum.py

Otvorite stranicu uređaja i provjerite postoje li podaci.

Prijeđimo sada na podatke iz stvarnog svijeta.

Korak 4: Spajanje senzora

Spajanje senzora
Spajanje senzora

Mi ćemo trebati:

  • Senzor vlažnosti DHT22 ili DHT11
  • Povučni otpornik (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 Adafruitovu izvrsnu biblioteku za DHT senzore, ali možda neće raditi kako jest. Jednom sam pronašao čudno konstantno kašnjenje u kodu, koje nije radilo za moj hardver, a nakon dvije godine moj zahtjev za povlačenjem još je u tijeku. Promijenio sam i konstante otkrivanja ploče jer je moja Raspberry Pi 1 s BCM2835 iznenađujuće otkrivena kao Raspberry Pi 3. Volio bih da je to istina … Stoga preporučujem korištenje vilice. Ako imate problema s tim, pokušajte s originalnim spremištem, možda nekome radi, ali ja nisam jedan od njih.

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

Kako je knjižnica napisana na C-u, zahtijeva kompilaciju, pa su vam potrebni build-essential i python-dev paketi.

sudo apt install build-essential 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, skupimo sve zajedno!

Korak 5: Slanje očitanja senzora u oblak

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

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

cd cloud4rpi-raspberrypi-python

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

Kako DHT22 vraća i 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 is not 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 crveni gumb 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. Time se osigurava da je skripta uvijek aktivna. Stvaranje 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 provjerite:

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 min 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. svibnja 20:22:53 raspberrypi python [560]: Objavljivanje iot-hub/poruka: {'type': 'data', 'ts': '2017-05-17T20: 2… 40'}} 17. svibnja 20:22:53 raspberrypipi 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 platforme Cloud4RPi 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, nacrtajmo varijable kako bismo vidjeli kako se mijenjaju. To se može učiniti dodavanjem nove upravljačke 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 e -poštom. Na stranici za uređivanje upravljačke ploče možete se prebaciti na Upozorenja i postaviti jedno.

Odmah nakon toga vlaga u mojoj sobi počela se brzo smanjivati bez ikakvog vidljivog razloga, a uskoro je uslijedio i alarm.

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

Preporučeni: