Vlhkost, teplota a tlak jsou tři základní parametry pro stavbu jakékoli meteorologické stanice a pro měření podmínek prostředí. Dříve jsme pomocí Arduina postavili mini meteorologickou stanici a tentokrát rozšiřujeme meteorologickou stanici o Raspberry Pi. Tento projekt založený na IoT si klade za cíl ukázat aktuální parametry vlhkosti, teploty a tlaku na LCD i na internetovém serveru pomocí Raspberry Pi, což z něj dělá meteorologickou stanici Raspberry Pi. Toto nastavení můžete nainstalovat kdekoli a můžete sledovat povětrnostní podmínky daného místa odkudkoli na světě přes internet, zobrazí nejen aktuální data, ale také minulé hodnoty ve formě grafů.
Použili jsme snímač vlhkosti a teploty DHT11 pro snímání teploty a modul snímače tlaku BM180 pro měření barometrického tlaku. Tato Celsiova stupnice Teploměr a procentní stupnice Vlhkoměr zobrazuje okolní teplotu a vlhkost prostřednictvím LCD displeje a barometrický tlak se zobrazuje v milibarech nebo hPa (hektopascal). Všechna tato data jsou odesílána na server ThingSpeak pro živé sledování z jakéhokoli místa na světě přes internet. Zkontrolujte ukázkové video a program v Pythonu uvedený na konci tohoto kurzu.
Nastavení Working and ThingSpeak:
Tento projekt založený na IoT má čtyři sekce. Nejprve snímač DHT11 snímá údaje o vlhkosti a teplotě a snímač BM180 měří atmosférický tlak. Za druhé Raspberry Pi čte výstup modulu snímače DHT11 pomocí protokolu s jedním vodičem a výstup snímače tlaku BM180 pomocí protokolu I2C a extrahuje hodnoty obou snímačů na vhodné číslo v procentech (vlhkost), stupnici Celsia (teplota), hectoPascal nebo milibar (tlak). Za třetí, tyto hodnoty jsou odesílány na server ThingSpeak pomocí vestavěné Wi-Fi Raspberry Pi 3. A nakonec ThingSpeak analyzuje data a zobrazuje je ve formě grafu. K místnímu zobrazení těchto hodnot se také používá LCD.
ThingSpeak poskytuje velmi dobrý nástroj pro projekty založené na IoT. Používáním webových stránek ThingSpeak můžeme sledovat naše data a ovládat náš systém přes internet pomocí kanálů a webových stránek poskytovaných společností ThingSpeak. ThingSpeak „Sbírá“ data ze senzorů, „Analyzuje a vizualizuje“ data a „Činí“ spuštěním reakce. Dříve jsme podrobně vysvětlili odesílání dat do ThingSpeak, můžete se tam podívat. Zde stručně vysvětlujeme použití ThingSpeak pro tuto meteorologickou stanici Raspberry Pi.
Nejprve musíte vytvořit účet na webu ThingSpeak a vytvořit na něm nový kanál. V novém kanálu musíte definovat některá pole pro data, která chcete monitorovat, podobně jako v tomto projektu vytvoříme tři pole pro údaje o vlhkosti, teplotě a tlaku.
Nyní klikněte na kartu „Klíče API“ a uložte klíče API pro zápis a čtení, zde používáme pouze klíč pro zápis. Tento klíč musíte zkopírovat do proměnné „key“ v kódu.
Poté klikněte na „Import / Export dat“ a zkopírujte adresu URL požadavku Update Channel GET, což je:
api.thingspeak.com/update?api_key=30BCDSRQ52AOI3UA&field1=0
Nyní potřebujeme tuto „adresu URL požadavku na zdroj“ v našem kódu Pythonu, abychom otevřeli „api.thingspeak.com“ a poté odeslali data pomocí tohoto požadavku na zdroj jako řetězec dotazu. A Před odesláním dat musí uživatel v tomto dotazu zadat údaje o teplotě, vlhkosti a tlaku Řetězec pomocí proměnných v programu, zkontrolujte v kódu na konci tohoto článku.
URL = 'https://api.thingspeak.com/update?api_key=%s'% klíč finalURL = URL + "& pole1 =% s & pole2 =% s"% (humi, teplota) + "& pole3 =% s"% (tlak)
Práce DHT11 je založena na jednovodičové sériové komunikaci pro načítání dat z DHT11. Zde jsme použili knihovnu AdaFruit DHT11 pro propojení DHT11 s Raspberry Pi. Raspberry Pi zde shromažďuje údaje o vlhkosti a teplotě z DHT11 a atmosférického tlaku ze snímače BMP180 a poté je odesílá na 16x2 LCD a server ThingSpeak. ThingSpeak zobrazuje Data ve formě grafu níže:
Zde se můžete dozvědět více o senzoru DHT11 a jeho propojení s Arduino.
Kruhový diagram:
Konfigurace Raspberry Pi a program Python:
Pro program používáme jazyk Python. Před kódováním musí uživatel nakonfigurovat Raspberry Pi. Můžete si prohlédnout naše předchozí výukové programy Začínáme s Raspberry Pi a Instalace a konfigurace Raspbian Jessie OS v Pi.
Nejprve musíme nainstalovat soubory knihovny senzorů DHT snímače Adafruit Python, abychom mohli tento projekt spustit na Raspberry Pi. K tomu musíme dodržet dané příkazy:
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
Poté musí uživatel povolit Raspberry Pi I2C přechodem do RPi Software Configuration Too:
sudo raspi-config
Poté přejděte do části „Pokročilé možnosti“, vyberte možnost „I2C“ a „Povolit“.
Programová část tohoto projektu hraje velmi důležitou roli při provádění všech operací. Nejprve zahrneme všechny požadované knihovny, inicializujeme proměnné a definujeme piny pro LCD a DHT11.
import sys import RPi.GPIO jako GPIO import os import Adafruit_DHT import urllib2 import smbus čas importu z ctypes import c_short #Registrace Adresa regCall = 0xAA……………..
Ve funkci def main (): se níže uvedený kód používá k odesílání dat na server a jejich zobrazení na LCD, nepřetržitě ve smyčce while .
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) tisk finalURL s = urllib2.urlopen (finalURL); tisk humi + "" + teplota + "" + tlak s.close () time.sleep (10)
U LCD se funkce def lcd_init () používá k inicializaci LCD ve čtyřbitovém režimu, funkce def lcdcmd (ch) se používá k odesílání příkazu na LCD, funkce def lcddata (ch) se používá k odesílání dat na LCD a def lcdstring (Str ) funkce slouží k odeslání datového řetězce na LCD. Všechny tyto funkce můžete zkontrolovat v níže uvedeném kódu.
Vzhledem k def def readDHT () funkce se používá pro čtení senzoru DHT11:
def readDHT (): humi, temp = Adafruit_DHT.read_retry (Adafruit_DHT.DHT11, DHTpin) return (str (int (humi)), str (int (temp)))
Funkce def readBmp180 se používá ke čtení tlaku ze snímače BM180 . Čidlo BM180 může také dávat teplotu, ale zde jsme jej použili pouze pro výpočet tlaku.
def readBmp180 (addr = deviceAdd): value = bus.read_i2c_block_data (addr, regCall, 22) # Číst kalibrační data # Převést data bajtů na hodnoty slov AC1 = převést1 (hodnota, 0) AC2 = převést1 (hodnota, 2) AC3 = převést1 (hodnota, 4) AC4 = convert2 (hodnota, 6)……………………..
Toto je základní meteorologická stanice Raspberry Pi, kterou můžete dále rozšířit o měření různých parametrů souvisejících s počasím, jako je rychlost větru, teplota půdy, osvětlení (lux), srážky, kvalita vzduchu atd.