A páratartalom, a hőmérséklet és a nyomás három alapvető paraméter bármely meteorológiai állomás felépítéséhez és a környezeti feltételek méréséhez. Korábban építettünk egy mini meteorológiai állomást Arduino segítségével, és ezúttal a Raspberry Pi-vel bővítjük az időjárás-állomást. Ennek az IoT-alapú projektnek az a célja, hogy az aktuális páratartalom, hőmérséklet és nyomás paramétereket megjelenítse az LCD-n, valamint az internetes szerveren a Raspberry Pi segítségével, ami Raspberry Pi meteorológiai állomássá teszi. Ezt a beállítást bárhová telepítheti, és az interneten keresztül a világ bármely pontjáról figyelheti az adott hely időjárási viszonyait, nemcsak az aktuális adatokat, hanem a múltbeli értékeket is megjelenítheti grafikonok formájában.
A hőmérséklet érzékeléséhez a DHT11 Páratartalom és hőmérséklet érzékelőt, a légnyomás méréséhez a BM180 Nyomásérzékelő modult használtuk. Ez a Celsius-skála Hőmérő és százalékos skála Páratartalom-mérő LCD-kijelzőn jeleníti meg a környezeti hőmérsékletet és páratartalmat, és a barometrikus nyomás millibárban vagy hPa-ban (hektopascalban) jelenik meg. Ezeket az adatokat az interneten keresztül elküldik a ThingSpeak szerverre élő megfigyelés céljából a világ bármely pontjáról. Ellenőrizze a bemutató végén található bemutató videó és Python programot.
Munka és a ThingSpeak beállítása:
Ennek az IoT-alapú projektnek négy szakasza van. Először a DHT11 érzékelő érzékeli a páratartalom és hőmérséklet adatait, a BM180 érzékelő pedig a légköri nyomást. Másodsorban a Raspberry Pi leolvassa a DHT11 érzékelő modul kimenetét egyvezetékes protokoll és a BM180 nyomásérzékelő kimenetének felhasználásával az I2C protokoll használatával, és mindkét érzékelő értékét megfelelő számra vonja ki százalékban (páratartalom), Celsius-skála (hőmérséklet), hektoPascal vagy millibár (nyomás). Harmadszor: ezeket az értékeket a Raspberry Pi 3 beépített Wi-Fi-jének használatával küldjük el a ThingSpeak szerverre. És végül a ThingSpeak elemzi az adatokat, és grafikon formájában mutatja meg. Az értékek helyi megjelenítésére LCD-t is használnak.
A ThingSpeak nagyon jó eszközt nyújt az IoT-alapú projektekhez. A ThingSpeak weboldal használatával figyelemmel kísérhetjük adatainkat és az interneten keresztül ellenőrizhetjük rendszerünket, a ThingSpeak által biztosított csatornák és weboldalak segítségével. A ThingSpeak 'összegyűjti' az adatokat az érzékelőkből, 'elemzi és vizualizálja' az adatokat és 'cselekményeket' egy reakció kiváltásával. Korábban már részletesen kifejtettük az adatok ThingSpeak részére történő elküldését, ott ellenőrizheti. Itt röviden elmagyarázzuk a ThingSpeak használatát ehhez a Raspberry Pi időjárás állomáshoz.
Először létre kell hoznia egy fiókot a ThingSpeak webhelyen, és létre kell hoznia egy „Új csatornát”. Az új csatornában meg kell határoznia néhány mezőt a megfigyelni kívánt adatokhoz, például ebben a projektben három mezőt hozunk létre a Páratartalom, Hőmérséklet és Nyomás adatokhoz.
Most kattintson az "API kulcsok" fülre, és mentse az API írása és olvasása kulcsokat, itt csak az Írási kulcsot használjuk. Ezt a kulcsot át kell másolnia a kód 'kulcs' változójába.
Ezután kattintson az "Adatok importálása / exportálása" elemre, és másolja a Csatornacsatorna frissítése GET kérés URL-t, amely a következő:
api.thingspeak.com/update?api_key=30BCDSRQ52AOI3UA&field1=0
Most erre a 'Feed Get Request URL' -re van szükségünk a Python-kódunkban az „api.thingspeak.com” megnyitásához, majd az adatok küldéséhez a Feed Request segítségével lekérdezési karakterláncként. És mielőtt az adatokat elküldené, a felhasználónak meg kell adnia a hőmérséklet, a páratartalom és a nyomás adatait ebben a lekérdezésben. A karakterlánc a változók használatával a programban ellenőrizze a cikk végén található kódot.
URL = 'https://api.thingspeak.com/update?api_key=%s'% key finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (nyomás)
A DHT11 működése egy vezetékes soros kommunikáción alapul, az adatok lekérésére a DHT11-től. Itt az AdaFruit DHT11 könyvtárat használtuk a DHT11 és a Raspberry Pi összekapcsolására. A Raspberry Pi itt összegyűjti a DHT11 nedvességtartalmának és hőmérsékletének adatait, a BMP180 érzékelőből származó légköri nyomást, majd elküldi a 16x2 LCD és a ThingSpeak szervernek. A ThingSpeak az adatokat grafikon formájában jeleníti meg az alábbiak szerint:
Itt többet megtudhat a DHT11 érzékelőről és az Arduinóval való összekapcsolásáról.
Kördiagramm:
Raspberry Pi konfiguráció és Python program:
Itt Python nyelvet használunk a Programhoz. Kódolás előtt a felhasználónak konfigurálnia kell a Raspberry Pi programot. Megtekintheti a Raspberry Pi használatának megkezdéséhez, valamint a Raspbian Jessie OS telepítéséhez és konfigurálásához szükséges korábbi oktatóanyagainkat.
Először is telepítenünk kell az Adafruit Python DHT Sensor Library fájlokat, hogy futtassuk a projektet a Raspberry Pi-n. Ehhez a megadott parancsokat kell követnünk:
sudo apt-get install git-core sudo apt-get update git klón https://github.com/adafruit/Adafruit_Python_DHT.git cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py install
Ezt követően a felhasználónak engedélyeznie kell a Raspberry Pi I2C programot az RPi szoftverkonfigurációval is:
sudo raspi-config
Ezután lépjen az "Előzetes beállítások" lehetőségre, válassza az "I2C" és az "Engedélyezés" lehetőséget.
A projekt programozási része nagyon fontos szerepet játszik az összes művelet végrehajtásában. Először az összes szükséges könyvtárat belefoglaljuk, megadjuk a változókat és meghatározzuk az LCD és a DHT11 csapokat.
import sys import RPi.GPIO, mint GPIO import os import Adafruit_DHT import urllib2 import smbus import time from ctypes import c_short #Register Address regCall = 0xAA……………..
A def main (): function alatt az alábbi kódot használjuk az adatok kiszolgálóra történő elküldéséhez és az LCD-n keresztüli megjelenítéséhez, folyamatosan ciklus közben .
def main (): print 'System Ready…' URL = 'https://api.thingspeak.com/update?api_key=%s'% key print "Wait…." while True: (humi, temp) = readDHT () (nyomás) = readBmp180 () lcdcmd (0x01) lcdstring ("Humi # Temp # P (hPa)") lcdstring (humi + '%' + "% sC% s"% (hőmérséklet, nyomás)) finalURL = URL + "& mező1 =% s & mező2 =% s"% (humi, temp) + "& mező3 =% s"% (nyomás) nyomtatás véglegesURL s = urllib2.urlopen (finalURL); nyomtatás humi + "" + temp + "" + nyomás s.close () time.sleep (10)
LCD-nél a def lcd_init () funkcióval inicializálható az LCD négy bites módban, a def lcdcmd (ch) funkcióval parancsot küldhetünk az LCD-re, a def lcddata (ch) funkciót használjuk az adatok küldésére az LCD-re és def lcdstring (Str ) függvény segítségével adatsorokat küldhetünk az LCD-re. Ezeket a funkciókat az utólag megadott kódban ellenőrizheti.
Adott def readDHT () függvényt használunk a DHT11 érzékelő leolvasásához:
def readDHT (): humi, temp = Adafruit_DHT.read_retry (Adafruit_DHT.DHT11, DHTpin) return (str (int (humi)), str (int (temp)))
def readBmp180 funkció a BM180 érzékelő nyomásának leolvasására szolgál. A BM180 érzékelő hőmérsékletet is adhat, de itt csak a nyomás kiszámításához használtuk.
def readBmp180 (addr = deviceAdd): érték = busz.read_i2c_block_data (addr, regCall, 22) # Kalibrációs adatok olvasása # Bájtadatok konvertálása szóértékekké AC1 = konvertálás1 (érték, 0) AC2 = konvertálás1 (érték, 2) AC3 = konvertálás1 (érték, 4) AC4 = konvertálás2 (érték, 6)……………………..
Tehát ez az alapvető Raspberry Pi meteorológiai állomás, tovább bővítheti az időjárással kapcsolatos különböző paraméterek mérésére, mint például a szél sebessége, a talaj hőmérséklete, a megvilágítás (lux), az eső, a levegő minősége stb.