Innehållsförteckning:

Temperatur- och luftfuktighetsövervakning med Raspberry Pi: 6 steg (med bilder)
Temperatur- och luftfuktighetsövervakning med Raspberry Pi: 6 steg (med bilder)

Video: Temperatur- och luftfuktighetsövervakning med Raspberry Pi: 6 steg (med bilder)

Video: Temperatur- och luftfuktighetsövervakning med Raspberry Pi: 6 steg (med bilder)
Video: Hur man ansluter industriella 4-20mA-sensorer till Raspberry Pi Pico PLC | Mitsubishi FX1N PLC 2024, Juli
Anonim
Temperatur- och luftfuktighetsövervakning med Raspberry Pi
Temperatur- och luftfuktighetsövervakning med Raspberry Pi
Temperatur- och luftfuktighetsövervakning med Raspberry Pi
Temperatur- och luftfuktighetsövervakning med Raspberry Pi

Sommaren kommer, och de utan luftkonditionering bör vara beredda på att styra atmosfären inomhus manuellt. I det här inlägget beskriver jag det moderna sättet att mäta de viktigaste parametrarna för mänsklig komfort: temperatur och luftfuktighet. Denna insamlade data skickas till molnet och behandlas där.

Jag använder ett Raspberry Pi 1 -kort och DHT22 -sensorn. Du kan göra samma sak på alla datorer som har Internet, GPIO och Python. Den billigare DHT11 -sensorn fungerar också bra.

Steg 1: Förbereda hårdvara

Förbereda hårdvara
Förbereda hårdvara
Förbereda hårdvara
Förbereda hårdvara

Låt oss börja från början, eftersom jag inte använde min Raspberry Pi på ganska lång tid.

Vi kommer att behöva:

  • Raspberry Pi-kort (eller annan IoT-orienterad plattform).
  • SD- eller microSD -kort (beroende på plattform).
  • 5V/1A via mikro-USB.
  • LAN -kabel, som ger internetanslutning.
  • HDMI -skärm, RCA -skärm eller UART -port (för att aktivera SSH).

Det allra första steget är att ladda ner Raspbian. Jag har valt Lite -versionen, eftersom jag ska använda SSH istället för display. Saker har förändrats sedan förra gången jag gjorde det: nu finns det en fantastisk brinnande programvara som heter Etcher, som fungerar perfekt och har en fantastisk design.

Efter att bildbränningen var klar satte jag in SD -kortet i min Pi, kopplade in LAN- och strömkablarna, och efter ett tag registrerade min router den nya enheten.

Steg 2: Aktivera SSH

Aktiverar SSH
Aktiverar SSH
Aktiverar SSH
Aktiverar SSH
Aktiverar SSH
Aktiverar SSH

SSH är inaktiverat som standard. Jag kan använda antingen UART-USB-omvandlare eller bara ansluta en bildskärm för att komma åt skalet och aktivera SSH.

Efter omstart är jag äntligen inne. Först och främst, låt oss uppdatera:

sudo apt update && sudo apt upgrade -y

Låt oss nu ansluta den här nya enheten till molnet.

Steg 3: Installera Cloud4RPi

Installera Cloud4RPi
Installera Cloud4RPi

Jag bestämde mig för att prova molnplattformen Cloud4RPi, som är designad för IoT.

Enligt dokumenten behöver vi följande paket för att få det att fungera:

sudo apt installera git python python -pip -y

Klientbiblioteket kan installeras i ett enda kommando:

sudo pip installera cloud4rpi

Nu behöver vi lite exempelkod för att säkerställa att den fungerar.

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 minimal.py && rmdir -re

Jag bestämde mig för att köra minimal.py, men jag gillar inte falska data. Lyckligtvis märkte jag ett enkelt sätt att göra diagnosdata verkliga i det här exemplet. Lägg till ytterligare en import till importavsnittet:

från rpi import *

Radera sedan dessa funktioner som tillhandahåller falska data (rpi.py definierar dem 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 behöver vi en token, som gör att Cloud4RPi kan länka enheterna till kontona. För att få ett, skapa ett konto på cloud4rpi.io och tryck på knappen Ny enhet på den här sidan. Ersätt strängen _YOUR_DEVICE_TOKEN_ i filen minimal.py med enhetens token och spara filen. Nu är vi redo för den första lanseringen.

python minimal.py

Öppna enhetssidan och kontrollera att data finns där.

Låt oss nu gå till verkliga data.

Steg 4: Anslutning av sensorn

Anslutning av sensorn
Anslutning av sensorn

Vi kommer att behöva:

  • DHT22 eller DHT11 fuktsensor
  • Uppdragningsmotstånd (5-10 KΩ)
  • Trådar

Sensorn DHT22 mäter temperatur och luftfuktighet samtidigt. Kommunikationsprotokollet är inte standardiserat, så vi behöver inte aktivera det i raspi -config - en enkel GPIO -pin är mer än tillräckligt.

För att skaffa data använder jag Adafruits fantastiska bibliotek för DHT -sensorer, men det kanske inte fungerar som det är. Jag hittade en gång en konstig konstant fördröjning av koden, som inte fungerade för min hårdvara, och efter två år väntar min dragbegäran fortfarande. Jag har också ändrat kortdetekteringskonstanterna eftersom min Raspberry Pi 1 med BCM2835 överraskande upptäcktes som Raspberry Pi 3. Jag önskar att det var sant … Därför rekommenderar jag att använda min gaffel. Om du upplever några problem med det, prova det ursprungliga förvaret, kanske fungerar det för någon, men jag är inte en av dem.

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

Eftersom biblioteket är skrivet i C kräver det kompilering, så du behöver paketet build-essential och python-dev.

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

Medan paketen installeras ansluter du DHT22 enligt bilden.

Och testa det:

cd ~ python -c "importera Adafruit_DHT som d; skriv ut d.read_retry (d. DHT22, 4)"

Om du ser något liknande (39.20000076293945, 22.600000381469727) bör du veta att detta är luftfuktigheten i procent och temperaturen i Celsius.

Nu ska vi sätta ihop allt!

Steg 5: Skicka sensoravläsningar till molnet

Skicka sensoravläsningar till molnet
Skicka sensoravläsningar till molnet

Jag använder minimal.py som bas och lägger till DHT22 -interaktionen i den.

cd cloud4rpi-raspberrypi-python

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

Eftersom DHT22 returnerar både temperatur och luftfuktighet i ett enda samtal, lagrar jag dem globalt och uppdaterar bara en gång i en begäran, förutsatt att fördröjningen mellan dem är mer än 10 sekunder. Tänk på följande kod som förvärvar DHT22 -data:

importera Adafruit_DHT

temp, hum = None, None 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 () returomgång (temp, 2) om temp inte är Ingen annan Ingen def get_h (): update_data () returomgång (hum, 2) om hum är inte Inga andra Inga

Sätt in den här koden efter den befintliga importen och redigera variabelavsnittet så att den använder de nya funktionerna:

variabler = {

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

Tryck på den röda knappen för att starta dataöverföringen:

python cloud_dht22.py

Sedan kan du kontrollera enhetssidan.

Du kan lämna det som det är, men jag föredrar att ha en tjänst för allt. Detta säkerställer att skriptet alltid körs. Skapa en tjänst med det helautomatiska skriptet:

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

Starta tjänsten:

sudo service cloud4rpi start

Och kolla:

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

● cloud4rpi.service-Cloud4RPi-demon laddad: laddad (/lib/systemd/system/cloud4rpi.service; aktiverad) Aktiv: aktiv (igång) sedan ons 2017-05-17 20:22:48 UTC; 1 min sedan Main PID: 560 (python) CGroup: /system.slice/cloud4rpi.service └─560/usr/bin/python /home/pi/cloud_dht22.pyMay 17 20:22:51 raspberrypi python [560]: Publicerar iot -hub/meddelanden: {'type': 'config', 'ts': '2017-05-17T20… y'}]} 17 maj 20:22:53 raspberrypi python [560]: Publicera iot-hub/meddelanden: {'type': 'data', 'ts': '2017-05-17T20: 2… 40'}} 17 maj 20:22:53 raspberrypi python [560]: Publicera iot-hub/meddelanden: {'type': 'system', 'ts': '2017-05-17T20….4'}}

Om allt fungerar som förväntat kan vi fortsätta och använda Cloud4RPi -plattformens funktioner för att manipulera med data.

Steg 6: Diagram och larm

Diagram och larm
Diagram och larm
Diagram och larm
Diagram och larm
Diagram och larm
Diagram och larm

Först och främst, låt oss plotta variablerna för att se hur de ändras. Detta kan göras genom att lägga till en ny kontrollpanel och lägga in de önskade diagrammen i den.

En annan sak som vi kan göra här är att ställa in en varning. Med den här funktionen kan du konfigurera det säkra intervallet för en variabel. Så snart intervallet är överskridet skickar det ett e -postmeddelande. På redigeringssidan på kontrollpanelen kan du växla till varningar och ställa in en.

Direkt efter det började luftfuktigheten i mitt rum minska snabbt utan någon märkbar anledning, och larmet följde snart.

Du kan använda Cloud4RPi gratis med vilken hårdvara som helst som kan köra Python. Som för mig, nu vet jag alltid när jag ska slå på luftfuktaren, och jag kan till och med ansluta den till ett relä för fjärrkontroll via Cloud4RPi. Jag är beredd på värmen! Välkommen sommar!

Rekommenderad: