Inhoudsopgave:

Temperatuur- en vochtigheidsbewaking met Raspberry Pi - Ajarnpa
Temperatuur- en vochtigheidsbewaking met Raspberry Pi - Ajarnpa

Video: Temperatuur- en vochtigheidsbewaking met Raspberry Pi - Ajarnpa

Video: Temperatuur- en vochtigheidsbewaking met Raspberry Pi - Ajarnpa
Video: Arduino project - Weerstation met luchtvochtigheid, actuele temperatuur en min / max temperatuur. 2024, Juli-
Anonim
Temperatuur- en vochtigheidsbewaking met Raspberry Pi
Temperatuur- en vochtigheidsbewaking met Raspberry Pi
Temperatuur- en vochtigheidsbewaking met Raspberry Pi
Temperatuur- en vochtigheidsbewaking met Raspberry Pi

De zomer komt eraan en mensen zonder airconditioning moeten erop voorbereid zijn om de atmosfeer binnenshuis handmatig te regelen. In deze post beschrijf ik de moderne manier om de belangrijkste parameters voor menselijk comfort te meten: temperatuur en vochtigheid. Deze verzamelde data wordt naar de cloud gestuurd en daar verwerkt.

Ik gebruik een Raspberry Pi 1-kaart en de DHT22-sensor. U kunt hetzelfde doen op elke computer met internet, GPIO en Python. De goedkopere DHT11-sensor werkt ook prima.

Stap 1: Hardware voorbereiden

Hardware voorbereiden
Hardware voorbereiden
Hardware voorbereiden
Hardware voorbereiden

Laten we bij het begin beginnen, want ik heb mijn Raspberry Pi al heel lang niet meer gebruikt.

Wij hebben nodig:

  • Raspberry Pi-bord (of ander IoT-georiënteerd platform).
  • SD- of microSD-kaart (afhankelijk van het platform).
  • 5V/1A via micro-USB.
  • LAN-kabel, die zorgt voor de internetverbinding.
  • HDMI-scherm, RCA-scherm of UART-poort (om SSH in te schakelen).

De allereerste stap is het downloaden van Raspbian. Ik heb de Lite-versie gekozen, omdat ik SSH ga gebruiken in plaats van display. Er zijn dingen veranderd sinds de laatste keer dat ik het deed: nu is er een geweldige brandsoftware genaamd Etcher, die perfect werkt en een verbluffend ontwerp heeft.

Nadat het branden van de afbeelding was voltooid, heb ik de SD-kaart in mijn Pi gestoken, de LAN- en stroomkabels aangesloten en na een tijdje registreerde mijn router het nieuwe apparaat.

Stap 2: SSH. inschakelen

SSH inschakelen
SSH inschakelen
SSH inschakelen
SSH inschakelen
SSH inschakelen
SSH inschakelen

SSH is standaard uitgeschakeld. Ik kan een UART-USB-converter gebruiken of gewoon een display aansluiten om toegang te krijgen tot de shell en SSH in te schakelen.

Na het opnieuw opstarten ben ik eindelijk binnen. Allereerst, laten we updaten:

sudo apt update && sudo apt upgrade -y

Laten we dit nieuwe apparaat nu verbinden met de cloud.

Stap 3: Cloud4RPi installeren

Cloud4RPi installeren
Cloud4RPi installeren

Ik besloot het cloudplatform Cloud4RPi te proberen, dat is ontworpen voor IoT.

Volgens de documenten hebben we de volgende pakketten nodig om het te laten werken:

sudo apt install git python python-pip -y

De clientbibliotheek kan in één opdracht worden geïnstalleerd:

sudo pip installeer cloud4rpi

Nu hebben we wat voorbeeldcode nodig om ervoor te zorgen dat het werkt.

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

Ik besloot minimal.py uit te voeren, maar ik hou niet van de nepgegevens. Gelukkig zag ik een gemakkelijke manier om de diagnostische gegevens in dit voorbeeld echt te maken. Voeg nog een import toe aan de importsectie:

van rpi import *

Verwijder vervolgens deze functies die nepgegevens leveren (de rpi.py definieert ze nu):

def cpu_temp():

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

Nu hebben we een token nodig, waarmee Cloud4RPi de apparaten aan de accounts kan koppelen. Om er een te krijgen, maakt u een account aan op cloud4rpi.io en klikt u op de knop Nieuw apparaat op deze pagina. Vervang de tekenreeks _YOUR_DEVICE_TOKEN_ in het bestand minimal.py door de token van uw apparaat en sla het bestand op. Nu zijn we klaar voor de eerste lancering.

python minimal.py

Open de apparaatpagina en controleer of de gegevens aanwezig zijn.

Laten we nu overgaan op gegevens uit de echte wereld.

Stap 4: De sensor aansluiten

De sensor aansluiten
De sensor aansluiten

Wij hebben nodig:

  • DHT22 of DHT11 vochtigheidssensor
  • Optrekweerstand (5-10 KΩ)
  • Draden

De DHT22-sensor meet tegelijkertijd temperatuur en vochtigheid. Het communicatieprotocol is niet gestandaardiseerd, dus we hoeven het niet in raspi-config in te schakelen - een simpele GPIO-pin is meer dan genoeg.

Om de gegevens te verkrijgen, zal ik de geweldige bibliotheek van Adafruit voor DHT-sensoren gebruiken, maar het kan zijn dat het niet werkt zoals het is. Ik heb ooit een vreemde constante vertraging in de code gevonden, die niet werkte voor mijn hardware, en na twee jaar is mijn pull-verzoek nog steeds in behandeling. Ik heb ook de detectieconstanten van het bord gewijzigd omdat mijn Raspberry Pi 1 met BCM2835 verrassend genoeg werd gedetecteerd als Raspberry Pi 3. Ik wou dat het waar was … Daarom raad ik aan om mijn vork te gebruiken. Als je er problemen mee hebt, probeer dan de originele repository, misschien werkt het voor iemand, maar ik ben niet een van hen.

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

Omdat de bibliotheek in C is geschreven, moet deze worden gecompileerd, dus je hebt de build-essentiële en python-dev-pakketten nodig.

sudo apt install build-essentiële python-dev -ysudo python setup.py install

Terwijl de pakketten worden geïnstalleerd, sluit u de DHT22 aan zoals weergegeven in de afbeelding.

En test het:

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

Als je iets ziet als (39.20000076293945, 22.600000381469727), moet je weten dat dit de vochtigheid in procenten en de temperatuur in Celsius is.

Laten we nu alles samenvoegen!

Stap 5: Sensormetingen naar de cloud verzenden

Sensormetingen naar de cloud verzenden
Sensormetingen naar de cloud verzenden

Ik gebruik de minimal.py als basis en voeg de DHT22-interactie eraan toe.

cd cloud4rpi-raspberrypi-python

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

Omdat DHT22 zowel de temperatuur als de vochtigheid in een enkele oproep retourneert, sla ik ze wereldwijd op en update ik ze slechts één keer in een verzoek, ervan uitgaande dat de vertraging tussen beide meer dan 10 seconden is. Overweeg de volgende code, die de DHT22-gegevens verwerft:

importeer Adafruit_DHT

temp, hum = Geen, Geen last_update = time.time() - 20 def update_data(): global 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) als temp niet is Geen anders Geen def get_h(): update_data() return round(hum, 2) als brom niet is Geen anders Geen

Voeg deze code in na de bestaande import en bewerk de variabelensectie zodat deze de nieuwe functies gebruikt:

variabelen = {

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

Druk op de rode knop om de gegevensoverdracht te starten:

python cloud_dht22.py

Dan kunt u de apparaatpagina bekijken.

Je kunt het laten zoals het is, maar ik heb liever een service voor alles. Dit zorgt ervoor dat het script altijd actief is. Een service maken met het volledig geautomatiseerde script:

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

De dienst starten:

sudo-service cloud4rpi start

En het controleren:

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

● cloud4rpi.service - Cloud4RPi-daemon Geladen: geladen (/lib/systemd/system/cloud4rpi.service; ingeschakeld) Actief: actief (actief) sinds wo 2017-05-17 20:22:48 UTC; 1min geleden Belangrijkste PID: 560 (python) CGroup: /system.slice/cloud4rpi.service └─560 /usr/bin/python /home/pi/cloud_dht22.py 17 mei 20:22:51 raspberrypi python [560]: iot publiceren -hub/messages: {'type': 'config', 'ts': '2017-05-17T20…y'}]} 17 mei 20:22:53 raspberrypi python[560]: iot-hub/messages publiceren: {'type': 'data', 'ts': '2017-05-17T20:2…40'}} 17 mei 20:22:53 raspberrypi python[560]: iot-hub/berichten publiceren: {'type': 'systeem', 'ts': '2017-05-17T20….4'}}

Als alles werkt zoals verwacht, kunnen we doorgaan en de mogelijkheden van het Cloud4RPi-platform gebruiken om met de gegevens te manipuleren.

Stap 6: grafieken en alarmen

Grafieken en alarmen
Grafieken en alarmen
Grafieken en alarmen
Grafieken en alarmen
Grafieken en alarmen
Grafieken en alarmen

Laten we eerst de variabelen plotten om te zien hoe ze veranderen. Dit kan door een nieuw Control Panel toe te voegen en de benodigde grafieken erin te plaatsen.

Een ander ding dat we hier kunnen doen, is een waarschuwing instellen. Met deze functie kunt u het veilige bereik voor een variabele configureren. Zodra het bereik wordt overschreden, stuurt het een e-mailmelding. Op de bewerkingspagina van het Configuratiescherm kunt u overschakelen naar Waarschuwingen en er een instellen.

Meteen daarna begon de luchtvochtigheid in mijn kamer snel te dalen zonder merkbare reden, en al snel volgde het alarm.

Je kunt Cloud4RPi gratis gebruiken met alle hardware die Python kan uitvoeren. Wat mij betreft, ik weet nu altijd wanneer ik de luchtbevochtiger moet inschakelen en ik kan hem zelfs aansluiten op een relais voor afstandsbediening via Cloud4RPi. Ik ben voorbereid op de hitte! Welkom zomer!

Aanbevolen: