Vlhkosť, teplota a tlak sú tri základné parametre pre stavbu ľubovoľnej meteorologickej stanice a pre meranie podmienok prostredia. Predtým sme postavili mini meteorologickú stanicu pomocou Arduina a tentokrát rozširujeme meteorologickú stanicu o Raspberry Pi. Tento projekt založený na IoT si kladie za cieľ ukázať súčasné parametre vlhkosti, teploty a tlaku na LCD ako aj na internetovom serveri pomocou Raspberry Pi, čo z nej robí meteorologickú stanicu Raspberry Pi. Toto nastavenie môžete nainštalovať kdekoľvek a môžete sledovať poveternostné podmienky daného miesta kdekoľvek na svete cez internet. Zobrazia sa nielen aktuálne údaje, ale aj minulé hodnoty vo forme grafov.
Na snímanie teploty sme použili snímač vlhkosti a teploty DHT11 a modul snímača tlaku BM180 na meranie barometrického tlaku. Tento Celziový teplomer a percentuálna stupnica Vlhkomer zobrazuje okolitú teplotu a vlhkosť pomocou LCD displeja a barometrický tlak sa zobrazuje v milibaroch alebo hPa (hektopascaloch). Všetky tieto údaje sú odosielané na server ThingSpeak na živé sledovanie z ktoréhokoľvek miesta na svete prostredníctvom internetu. Skontrolujte demonštračné video a program Python uvedený na konci tohto tutoriálu.
Working and ThingSpeak Setup:
Tento projekt založený na IoT má štyri časti. Najprv snímač DHT11 sníma údaje o vlhkosti a teplote a snímač BM180 meria atmosférický tlak. Po druhé, Raspberry Pi číta výstup modulu snímača DHT11 pomocou protokolu s jedným vodičom a výstup snímača tlaku BM180 pomocou protokolu I2C a extrahuje hodnoty oboch snímačov do vhodného počtu v percentách (vlhkosť), stupnici Celzia (teplota), hectoPascal alebo milibar (tlak). Po tretie, tieto hodnoty sa odosielajú na server ThingSpeak pomocou zabudovaného pripojenia Wi-Fi Raspberry Pi 3. A nakoniec ThingSpeak analyzuje údaje a zobrazuje ich vo forme grafu. Na miestne zobrazenie týchto hodnôt sa používa aj LCD.
ThingSpeak poskytuje veľmi dobrý nástroj pre projekty založené na IoT. Používaním webových stránok ThingSpeak môžeme monitorovať naše údaje a ovládať náš systém cez internet pomocou kanálov a webových stránok poskytovaných spoločnosťou ThingSpeak. ThingSpeak „zbiera“ údaje zo senzorov, „analyzuje a vizualizuje“ údaje a „koná“ spustením reakcie. O odosielaní údajov do služby ThingSpeak sme už predtým podrobne hovorili, môžete si ich tam skontrolovať. Tu v krátkosti vysvetľujeme použitie funkcie ThingSpeak pre túto meteorologickú stanicu Raspberry Pi.
Najskôr je potrebné vytvoriť účet na webovej stránke ThingSpeak a vytvoriť na nej nový kanál. V novom kanáli musíte definovať niektoré polia pre údaje, ktoré chcete monitorovať, podobne ako v tomto projekte vytvoríme tri polia pre údaje o vlhkosti, teplote a tlaku.
Teraz kliknite na kartu „Kľúče API“ a uložte kľúče API Write a Read, tu používame iba kľúč Write. Musíte tento kľúč skopírovať do premennej „key“ v kóde.
Potom kliknite na možnosť „Import / export údajov“ a skopírujte adresu URL žiadosti o aktualizáciu informačného kanála, ktorá je:
api.thingspeak.com/update?api_key=30BCDSRQ52AOI3UA&field1=0
Teraz v našom kóde Python potrebujeme túto adresu URL „Feed Get Request“, aby sme otvorili web „api.thingspeak.com“ a potom odoslali údaje pomocou tejto požiadavky na zdroj ako reťazec dotazu. Pred odoslaním údajov musí používateľ do tohto dotazu zadať údaje o teplote, vlhkosti a tlaku. Reťazec používajúci premenné v programe nájdete v kóde na konci tohto článku.
URL = 'https://api.thingspeak.com/update?api_key=%s'% key finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (tlak)
Práca DHT11 je založená na jednovodičovej sériovej komunikácii na načítanie údajov z DHT11. Tu sme použili knižnicu AdaFruit DHT11 na prepojenie DHT11 s Raspberry Pi. Raspberry Pi tu zhromažďuje údaje o vlhkosti a teplote z DHT11 a atmosférického tlaku zo snímača BMP180 a potom ich odosiela na 16x2 LCD a server ThingSpeak. ThingSpeak zobrazuje údaje vo forme grafu, ako je uvedené nižšie:
Viac informácií o snímači DHT11 a jeho prepojení s rozhraním Arduino sa dozviete tu.
Schéma zapojenia:
Konfigurácia Raspberry Pi a program Python:
Pre program používame jazyk Python. Pred programovaním musí používateľ nakonfigurovať Raspberry Pi. Môžete si pozrieť naše predchádzajúce výukové programy Začíname s Raspberry Pi a Inštalácia a konfigurácia Raspbian Jessie OS v Pi.
Najskôr je potrebné nainštalovať súbory knižnice senzorov Adafruit Python DHT, aby sme mohli spustiť tento projekt na Raspberry Pi. Aby sme to dosiahli, musíme postupovať podľa zadaných príkazov:
sudo apt-get install git-core sudo apt-get update git clone 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
Potom musí používateľ povoliť Raspberry Pi I2C prechodom do RPi Software Configuration Too:
sudo raspi-config
Potom choďte na „Rozšírené možnosti“, vyberte „I2C“ a „Povoliť“.
Programová časť tohto projektu hrá veľmi dôležitú úlohu pri vykonávaní všetkých operácií. Najskôr zahrnieme všetky požadované knižnice, inicializujeme premenné a definujeme piny pre LCD a DHT11.
import sys import RPi.GPIO ako GPIO import os import Adafruit_DHT import urllib2 import smbus čas importu z ctypes import c_short #Registrácia Adresa regCall = 0xAA……………..
V def hlavnej) (: funkcií, pod kód sa používa pre odosielanie dát na server a zobraziť ju na displeji, priebežne kým slučke.
def main (): print 'System Ready…' URL = 'https://api.thingspeak.com/update?api_key=%s'% key print "Wait…." while True: (humi, temp) = readDHT () (tlak) = readBmp180 () lcdcmd (0x01) lcdstring ("Humi # Teplota # P (hPa)") lcdstring (humi + '%' + "% sC% s"% (teplota, tlak)) finalURL = URL + "& pole1 =% s & pole2 =% s"% (humi, teplota) + "& pole3 =% s"% (tlak) print finalURL s = urllib2.urlopen (finalURL); tlač humi + "" + teplota + "" + tlak s.close () time.sleep (10)
Pre LCD, def LCD_Init () funkcia slúži k inicializácii LCD v štyroch bitovom režime, def lcdcmd (ch) funkcia sa používa pre posielanie príkazu k LCD, def lcddata (ch) funkcia sa používa pre odosielanie dát na LCD a def lcdstring (Str ) slúži na odoslanie dátového reťazca na LCD. Všetky tieto funkcie môžete skontrolovať v dodatočnom kóde.
Daná funkcia def readDHT () sa používa na čítanie snímača DHT11:
def readDHT (): humi, temp = Adafruit_DHT.read_retry (Adafruit_DHT.DHT11, DHTpin) return (str (int (humi)), str (int (temp)))
Funkcia def readBmp180 sa používa na čítanie tlaku zo snímača BM180. Snímač BM180 môže tiež dávať teplotu, ale tu sme ho použili iba na výpočet tlaku.
def readBmp180 (addr = deviceAdd): hodnota = bus.read_i2c_block_data (addr, regCall, 22) # načítanie kalibračných údajov # prevádzanie údajov bajtov na hodnoty slov AC1 = prevádzať1 (hodnota, 0) AC2 = prevádzať1 (hodnota, 2) AC3 = prevádzať1 (hodnota, 4) AC4 = convert2 (hodnota, 6)……………………..
Toto je základná meteorologická stanica Raspberry Pi, ktorú môžete ďalej rozšíriť a merať rôzne parametre súvisiace s počasím, ako je rýchlosť vetra, teplota pôdy, intenzita osvetlenia (lux), zrážky, kvalita ovzdušia atď.