Obsah:

Meteorologická stanice IoT s RPi a ESP8266: 10 kroků
Meteorologická stanice IoT s RPi a ESP8266: 10 kroků

Video: Meteorologická stanice IoT s RPi a ESP8266: 10 kroků

Video: Meteorologická stanice IoT s RPi a ESP8266: 10 kroků
Video: Arduino projects weather 🌡️ station temperature humidity 2024, Listopad
Anonim
Meteorologická stanice IoT s RPi a ESP8266
Meteorologická stanice IoT s RPi a ESP8266

V předchozích tutoriálech jsme si hráli s NodeMCU, senzory a učili jsme se, jak zachytávat a protokolovat data na ThingSpeak (platforma pro internet věcí (IoT), která vám umožňuje sbírat a ukládat data senzorů v cloudu a vyvíjet aplikace IoT):

IOT MADE EASY: CAPTURING REMOTE WEATHER DATA: UV and AIR TEMPERATURE & VLUMIDITY

V tomto novém tutoriálu se naučíme, jak postupovat stejně, ale tentokrát pomocí Raspberry Pi zachytit data z několika různých senzorů a také prozkoumat různé způsoby komunikace mezi zařízeními a webem:

Senzory a typ kominikace:

  • DHT22 (teplota a vlhkost) ==> Digitální komunikace
  • BMP180 (teplota a tlak) ==> protokol I2C
  • DS18B20 (teplota) ==> 1vodičový protokol

Blokový diagram ukazuje, co na konci tohoto projektu získáme:

obraz
obraz

Krok 1: BoM - kusovník

  1. Raspberry Pi V3 - 32,00 USD
  2. Snímač teploty a relativní vlhkosti DHT22 - 9,95 USD
  3. Rezistor 4K7 ohm
  4. Vodotěsný teplotní senzor DS18B20 - 5,95 USD
  5. Rezistor 4K7 ohm
  6. BMP180 Barometrický snímač tlaku, teploty a nadmořské výšky - 6,99 USD

Krok 2: Instalace snímače teploty a vlhkosti

Instalace snímače teploty a vlhkosti
Instalace snímače teploty a vlhkosti

Prvním nainstalovaným senzorem bude DHT22 pro snímání údajů o teplotě vzduchu a relativní vlhkosti. Stránka ADAFRUIT poskytuje skvělé informace o těchto senzorech. Níže, některé informace získané odtud:

Přehled

Levné snímače teploty a vlhkosti DHT jsou velmi základní a pomalé, ale jsou skvělé pro fandy, kteří chtějí provádět základní protokolování dat. Senzory DHT jsou vyrobeny ze dvou částí, kapacitního senzoru vlhkosti a termistoru. Uvnitř je také velmi základní čip, který provádí nějakou analogovou a digitální konverzi a chrlí digitální signál s teplotou a vlhkostí. Digitální signál je poměrně snadno čitelný pomocí jakéhokoli mikrokontroléru.

DHT22 Hlavní charakteristiky:

  • Nízké náklady
  • Napájení 3 až 5 V a I/O
  • Maximální spotřeba proudu 2,5 mA během převodu (při požadavku na data)
  • Dobré pro měření vlhkosti 0-100% s přesností 2-5%
  • Dobré pro měření teploty -40 až 125 ° C s přesností ± 0,5 ° C
  • Ne více než 0,5 Hz vzorkovací frekvence (jednou za 2 sekundy)
  • Velikost těla 15,1 mm x 25 mm x 7,7 mm
  • 4 piny s roztečí 0,1"

Jakmile obvykle použijete snímač na vzdálenosti menší než 20 m, měl by být mezi piny Data a VCC připojen odpor 4K7 ohmů. Výstupní datový pin DHT22 bude připojen k Raspberry GPIO 16. Zkontrolujte výše uvedené elektrické schéma a připojte snímač k pinům RPi, jak je uvedeno níže:

  1. Pin 1 - Vcc ==> 3,3V
  2. Pin 2 - Data ==> GPIO 16
  3. Pin 3 - Nepřipojit
  4. Pin 4 - Gnd ==> Gnd

Nezapomeňte nainstalovat odpor 4K7 ohmů mezi Vcc a datové piny

Jakmile je senzor připojen, musíme také nainstalovat jeho knihovnu na náš RPi.

Instalace knihovny DHT:

Na malině od /domů přejděte do /Documents

cd dokumenty

Vytvořte adresář pro instalaci knihovny a přesuňte se tam:

mkdir DHT22_Sensor

cd DHT22_Sensor

V prohlížeči přejděte na Adafruit GitHub:

github.com/adafruit/Adafruit_Python_DHT

Stáhněte si knihovnu kliknutím na odkaz zip ke stažení vpravo a rozbalte archiv ve své nedávno vytvořené složce Raspberry Pi. Poté přejděte do adresáře knihovny (podsložky, která se automaticky vytvoří po rozbalení souboru) a spusťte příkaz:

sudo python3 setup.py install

Otevřete testovací program (DHT22_test.py) z mého GITHUBu

import Adafruit_DHT

DHT22Sensor = Adafruit_DHT. DHT22 DHTpin = 16 vlhkost, teplota = Adafruit_DHT.read_retry (DHT22Sensor, DHTpin) pokud vlhkost není Žádná a teplota není Žádná: tisk ('Teplota = {0: 0,1f}*C Vlhkost = {1: 0,1 f}%'. formát (teplota, vlhkost)) else: print (' Nepodařilo se načíst. Zkuste to znovu! ')

Spusťte program příkazem:

python3 DHT22_test.py

Níže uvedená obrazovka Terminálu tisk zobrazuje výsledek.

obraz
obraz

Krok 3: Instalace DS18B20 - teplotního senzoru

Instalace DS18B20 - teplotního senzoru
Instalace DS18B20 - teplotního senzoru
Instalace DS18B20 - teplotního senzoru
Instalace DS18B20 - teplotního senzoru

Přehled senzoru:

V tomto tutoriálu použijeme vodotěsnou verzi senzoru DS18B20. Je velmi užitečný pro vzdálenou teplotu ve vlhkých podmínkách, například na vlhké půdě. Senzor je izolovaný a může provádět měření až do 125 ° C (Adafrut nedoporučuje používat jej přes 100 ° C kvůli kabelovému plášti z PVC).

DS18B20 je digitální senzor, díky kterému je dobré jej používat i na velké vzdálenosti! Tyto 1vodičové digitální snímače teploty jsou poměrně přesné (± 0,5 ° C ve velké části rozsahu) a z integrovaného převodníku digitálního signálu na analogový mohou poskytnout přesnost až 12 bitů. Fungují skvěle s NodeMCU pomocí jediného digitálního pinu a dokonce můžete připojit více ke stejnému pinu, každý z nich má v továrně vypálené jedinečné 64bitové ID, které je odlišuje.

Senzor pracuje od 3,0 do 5,0 V, což znamená, že může být napájen přímo z 3,3 V poskytovaného jedním z pinů Raspberry (1 nebo 17).

Senzor má 3 vodiče:

  • Černá: GND
  • Červená: VCC
  • Žlutá: 1vodičová data

Zde najdete úplná data: DS18B20 Datasheet

Instalace senzoru:

Postupujte podle výše uvedeného schématu a proveďte připojení:

  • Vcc ==> 3,3 V.
  • Gnd ==> Gnd
  • Data ==> GPIO 4 (výchozí pro knihovnu)

Instalace knihovny Python:

Dále nainstalujme knihovnu Python, která bude zpracovávat senzor:

sudo pip3 nainstalujte w1thermsensor

Před spuštěním skriptu k otestování senzoru zkontrolujte, zda je ve vašem RPi povoleno rozhraní „1-Wire“(viz výše tisková obrazovka)

Po změně konfigurace nezapomeňte restartovat RPi

Testování senzoru:

Pro testování senzoru lze použít jednoduchý python skript:

čas importu

z w1thermsensor import W1ThermSensor ds18b20Sensor = W1ThermSensor () while True: teplota = ds18b20Sensor.get_temperature () tisk ("Teplota je % s celsius" % teplota) time.sleep (1)

Krok 4: Instalace BMP180

Instalace BMP180
Instalace BMP180
Instalace BMP180
Instalace BMP180
Instalace BMP180
Instalace BMP180

Přehled senzoru:

BMP180 je nástupcem BMP085, nové generace vysoce přesných digitálních snímačů tlaku pro spotřebitelské aplikace. Elektronika BMP180 s extrémně nízkým výkonem a nízkým napětím je optimalizována pro použití v mobilních telefonech, PDA, navigačních zařízeních GPS a venkovním vybavení. Díky nízké výšce hluku pouhých 0,25 m při rychlém převodu nabízí BMP180 vynikající výkon. Rozhraní I2C umožňuje snadnou integraci systému s mikrokontrolérem. BMP180 je založen na piezo-odporové technologii pro odolnost EMC, vysokou přesnost a linearitu a dlouhodobou stabilitu.

Kompletní datový list BMP naleznete zde: BMP180 - digitální tlakový senzor

Instalace senzoru: Postupujte podle výše uvedeného schématu a proveďte připojení:

  • Vin ==> 3,3V
  • GND ==> GND
  • SCL ==> GPIO 3
  • SDA ==> GPIO 2

Povolení rozhraní I2C

Přejděte na Konfigurace RPi a potvrďte, že je povoleno rozhraní I2C. Pokud ne, povolte jej a restartujte RPi.

Pomocí BMP180

Pokud bylo vše nainstalováno v pořádku a vše bylo připojeno v pořádku, jste nyní připraveni zapnout Pi a začít vidět, co vám BMP180 říká o světě kolem vás.

První věcí, kterou musíte udělat, je zkontrolovat, zda Pi vidí váš BMP180. V okně terminálu zkuste následující:

sudo i2cdetect -y 1

Pokud příkaz fungoval, měli byste vidět něco podobného na výše uvedené obrazovce Terminal Printscreen, která ukazuje, že BMP180 je na kanálu '77'.

Instalace knihovny BMP180:

Vytvořte adresář pro instalaci knihovny:

mkdir BMP180_Sensorcd BMP180_Sensor

Ve svém prohlížeči přejděte na Adafruit GITHub:

github.com/adafruit/Adafruit_Python_BMP

Stáhněte si knihovnu kliknutím na odkaz Stáhnout zip vpravo a rozbalte archiv ve složce vytvořené Raspberry Pi. Poté přejděte do vytvořené podsložky a spusťte následující příkaz v adresáři knihovny:

sudo python3 setup.py install

Otevřete své IDE Pythonu a vytvořte testovací program a pojmenujte jej, například BMP180Test.py

importujte Adafruit_BMP. BMP085 jako BMP085sensor = BMP085. BMP085 () tisk ('Teplota = {0: 0,2f} *C'.format (sensor.read_temperature ())) tisk (' Tlak = {0: 0,2f} Pa '. format (sensor.read_pressure ())) print ('Altitude = {0: 0,2f} m'.format (sensor.read_altitude ())) print (' Sealevel Pressure = {0: 0,2f} Pa'.format (senzor.read_sealevel_pressure ()))

Proveďte testovací program:

python3 BMP180Test.py

Výše uvedená obrazovka Terminálu zobrazuje výsledek.

Všimněte si, že tento tlak je uveden v Pa (Pascalech). Viz další krok k lepšímu porozumění této jednotce.

Krok 5: Měření počasí a nadmořské výšky pomocí BMP180

Měření počasí a nadmořské výšky pomocí BMP180
Měření počasí a nadmořské výšky pomocí BMP180

Udělejme si čas, abychom trochu více porozuměli tomu, co dostaneme, s hodnotami BMP. Tuto část výukového programu můžete přeskočit nebo se vrátit později.

Pokud se chcete dozvědět více o čteních ze senzorů, přejděte na tento skvělý návod:

BMP180 byl navržen tak, aby přesně měřil atmosférický tlak. Atmosférický tlak se mění podle počasí i nadmořské výšky.

Co je atmosférický tlak?

Definice atmosférického tlaku je síla, kterou vzduch kolem vás působí na všechno. Hmotnost plynů v atmosféře vytváří atmosférický tlak. Běžnou jednotkou tlaku jsou „libry na čtvereční palec“nebo psi. Zde použijeme mezinárodní notaci, tj. Newtony na metr čtvereční, které se nazývají pascaly (Pa).

Pokud byste vzali 1 cm široký sloupec vzduchu, vážil by asi 1 kg

Tato hmotnost, která tlačí dolů na stopu tohoto sloupce, vytváří atmosférický tlak, který můžeme měřit pomocí senzorů, jako je BMP180. Protože tento cm široký sloupec vzduchu váží asi 1 kg, vyplývá z toho, že průměrný tlak hladiny moře je asi 101325 pascalů, nebo lépe 1013,25 hPa (1 hPa je také známý jako milibar - mbar). To klesne asi o 4% na každých 300 metrů, které vystoupáte. Čím výše se dostanete, tím menší tlak uvidíte, protože sloupec na vrchol atmosféry je mnohem kratší, a proto váží méně. To je užitečné vědět, protože měřením tlaku a matematikou můžete určit svou nadmořskou výšku.

Tlak vzduchu ve výšce 3 810 metrů je jen poloviční oproti tlaku na hladině moře.

BMP180 vydává absolutní tlak v pascalech (Pa). Jeden pascal je velmi malé množství tlaku, přibližně množství, které list papíru vynaloží na stůl. Častěji uvidíte měření v hektopascalech (1 hPa = 100 Pa). Zde použitá knihovna poskytuje výstupy s plovoucí desetinnou čárkou v hPa, což se také rovná jednomu milibaru (mbar).

Zde jsou některé převody na jiné tlakové jednotky:

  • 1 hPa = 100 Pa = 1 mbar = 0,001 bar
  • 1 hPa = 0,75006168 Torr
  • 1 hPa = 0,01450377 psi (libry na čtvereční palec)
  • 1 hPa = 0,02953337 inHg (palce rtuti)
  • 1 hpa = 0,00098692 atm (standardní atmosféra)

Teplotní efekty

Protože teplota ovlivňuje hustotu plynu a hustota ovlivňuje hmotnost plynu a hmotnost ovlivňuje tlak (hůře), atmosférický tlak se s teplotou dramaticky změní. Piloti to znají jako „hustou nadmořskou výšku“, která usnadňuje vzlet v chladném dni než v horkém, protože vzduch je hustší a má větší aerodynamický účinek. Pro kompenzaci teploty obsahuje BMP180 poměrně dobrý snímač teploty a také snímač tlaku.

Chcete-li provést odečet tlaku, nejprve odečtěte teplotu a poté ji spojte se čtením surového tlaku, abyste získali konečné měření tlaku s kompenzací teploty. (Knihovna to všechno velmi usnadňuje.)

Měření absolutního tlaku

Pokud vaše aplikace vyžaduje měření absolutního tlaku, stačí získat hodnotu teploty a poté provést odečet tlaku (podrobnosti viz příklad náčrtu). Konečná hodnota tlaku bude v hPa = mbar. Pokud si přejete, můžete to převést na jinou jednotku pomocí výše uvedených konverzních faktorů.

Všimněte si toho, že absolutní tlak atmosféry se bude lišit jak s vaší nadmořskou výškou, tak s aktuálními povětrnostními podmínkami, obojí je užitečné měřit.

Pozorování počasí

Atmosférický tlak v žádném daném místě na Zemi (nebo kdekoli s atmosférou) není konstantní. Složitá interakce mezi rotací Země, naklápěním osy a mnoha dalšími faktory vede k pohybu oblastí s vyšším a nižším tlakem, což zase způsobuje změny počasí, které vidíme každý den. Sledováním změn tlaku můžete předvídat krátkodobé změny počasí. Například pokles tlaku obvykle znamená vlhké počasí nebo se blíží bouře (vnáší se nízkotlaký systém). Rostoucí tlak obvykle znamená, že se blíží jasné počasí (prochází jím vysokotlaký systém). Pamatujte však, že atmosférický tlak se také mění s nadmořskou výškou. Absolutní tlak v mém domě, Lo Barnechea v Chile (nadmořská výška 950 m), bude vždy nižší než například absolutní tlak v San Francisku (méně než 2 metry, téměř hladina moře). Pokud by meteorologické stanice hlásily pouze svůj absolutní tlak, bylo by obtížné přímo porovnávat měření tlaku z jednoho místa na druhé (a rozsáhlé předpovědi počasí závisí na měření z co největšího počtu stanic).

Chcete -li tento problém vyřešit, meteorologické stanice vždy odstraní vlivy nadmořské výšky ze svých naměřených hodnot tlaku matematickým přidáním ekvivalentního fixního tlaku, aby to vypadalo, jako kdyby byla hodnota měřena na hladině moře. Když to uděláte, vyšší čtení v San Francisku než Lo Barnechea bude vždy kvůli počasí, a ne kvůli nadmořské výšce.

K tomu je v knihovně funkce s názvem mořská hladina (P, A). To vezme absolutní tlak (P) v hPa a aktuální nadmořskou výšku stanice (A) v metrech a odstraní efekty nadmořské výšky z tlaku. Výstup této funkce můžete použít k přímému porovnání údajů o počasí s jinými stanicemi po celém světě.

Určení nadmořské výšky

Protože se tlak mění s nadmořskou výškou, můžete k měření nadmořské výšky použít tlakový senzor (s několika upozorněními). Průměrný tlak atmosféry na hladině moře je 1013,25 hPa (nebo mbar). Když stoupáte směrem k vakuu vesmíru, klesá na nulu. Protože křivka tohoto poklesu je dobře srozumitelná, můžete vypočítat výškový rozdíl mezi dvěma měřeními tlaku (p a p0) pomocí konkrétní rovnice.

Pokud jako základní tlak (p0) použijete tlak mořské hladiny (1013,25 hPa), výstupem z rovnice bude vaše aktuální nadmořská výška. V knihovně je funkce nazvaná nadmořská výška (P, P0), která vám umožní získat „vypočítanou nadmořskou výšku“.

Výše uvedené vysvětlení bylo získáno z výukového programu BMP 180 Sparkfun.

Krok 6: Kompletní HW

Kompletní HW
Kompletní HW

Krok 7: Odeslání dat do ThingSpeak

Odesílání dat do ThingSpeak
Odesílání dat do ThingSpeak

V tomto okamžiku jsme se naučili, jak připravit RPi na sběr dat ze všech 3 senzorů a jejich tisk na terminál. Nyní je načase zjistit, jak tato data odeslat na platformu IoT, ThingSpeak.

Pojďme začít!

Nejprve musíte mít účet na ThinkSpeak.com

Podle pokynů vytvořte kanál a poznamenejte si své ID kanálu a klíč API pro zápis

Stáhněte si skript Python z mého GitHub: localData ToTS_v1_EXT.py

Pojďme si okomentovat nejdůležitější části kódu:

Nejprve importujeme knihovnu ThingSpeak, definujeme klienta WiFi a definujeme místní pověření routeru a Thinkspeak:

import thingspeak

Existuje několik způsobů komunikace s ThingSpeak, nejjednodušším způsobem by bylo použití klientské knihovny pro API thingspeak.com vyvinuté Mikolajem Chwalizem a Keithem Ellisem.

Knihovnu lze stáhnout z https://github.com/mchwalisz/thingspeak nebo pomocí PIP na terminálu:

sudo pip3 install thingspeak

Dále ve skriptu aktualizujte pověření kanálu ThingSpeak

chId = 9999999 # Zadejte pomocí svého ID kanálu

tsKey = 'ZADEJTE SVŮM KANÁLEM ZÁPIS KEY' tsUrl = 'https://api.thingspeak.com/update' ts = thingspeak. Channel (chId, tsUrl, tsKey)

Nyní inicializujeme 3 senzory:

# DS18B20 1-Wire knihovna

z w1thermsensor import W1ThermSensor ds18b20Sensor = W1ThermSensor () # Ve výchozím nastavení používá knihovna GPIO 4 # DHT22 import knihovny Adafruit_DHT DHT22Sensor = Adafruit_DHT. DHT22 DHTpin = 16 # import knihovny BMP180 BMP05S080 Měli byste definovat skutečnou nadmořskou výšku, kde se vaše meteorologická stanice nachází, a aktualizovat globální proměnnou „altReal“. V mém případě se moje stanice nachází v 950 m nad mořem

globální altReal

altReal = 950

Jakmile zadáte jako vstup skutečnou nadmořskou výšku stanice, můžeme získat absolutní tlak, tlak hladiny moře, teplotu a nadmořskou výšku pomocí funkce bmp180GetData (nadmořská výška):

def bmp180GetData (nadmořská výška):

temp = bmp180Sensor.read_temperature () pres = bmp180Sensor.read_pressure () alt=bmp180Sensor.read_altitude () presSeaLevel = pres/pow (1,0 - nadmořská výška/44330,0, 5,255) temp = kolo (temp, 1) pres = kulaté (pres/100, 2) # absolutní tlak v hPa (nebo mbar) alt=kulatý (alt) presSeaLevel = kulatý (presSeaLevel/100, 2) # absolutní tlak v hPa (nebo mbar) teplota zpátečky, pres, alt, presSeaLevel

Funkce getLocalData () vrátí všechna místní data zachycená naší stanicí:

def getLocalData ():

global timeString global humLab global tempExt global tempLab global presSL global altLab global presAbs # Získejte čas na čtení nyní = datetime.datetime.now () timeString = now.strftime ("%Y-%m-%d%H%H:%M") # Přečíst venkovní teplotu (vzdálenost 1 metr) tempExt = kolo (ds18b20Sensor.get_temperature (), 1) tempLab, presAbs, altLab, presSL = bmp180GetData (altReal) humDHT, tempDHT = Adafruit_DHT.read_retry (DHT22Sensor, DHTpin if if a tempDHT není None: humLab = round (humDHT

Jakmile máte všechna data zachycená výše uvedenými funkcemi, musíte je odeslat do ThingSpeak. Provedete to pomocí funkce sendDataTs ():

def sendDataTs ():

data = {"field1": tempLab, "field2": tempExt, "field3": humLab, "field4": presSL, "field5": altLab} ts.update (data) print ("[INFO] Data sent for 5 fields: ", tempLab, tempExt, humLab, presSL, altLab)

Po aktualizaci dat kanálu uložte skript a spusťte jej na svém terminálu:

sudo Python3 localData_ToTs_v1_EXT.py

O komunikačních protokolech

Všimněte si, že pomocí „thingspeak knihovny“se importuje „knihovna požadavků“, tj. Licencovaná knihovna HTTP Apache2, napsaná v Pythonu. Oficiální dokumentaci k žádosti o instalaci najdete zde:

docs.python-requests.org/en/latest/user/install/

V případě potřeby si před spuštěním skriptu můžete ověřit, zda je nainstalována knihovna požadavků:

sudo pip3 požadavky na instalaci

Volitelně můžete použít MTTQ jako metodu pro odesílání dat do ThingSpeak. MQTT se liší od HTTP, jakmile je speciálně navržen tak, aby byl lehký a určený pro vestavěná zařízení s nízkým výkonem RAM a CPU. Také ve většině případů používá MQTT menší šířku pásma.

Další podrobnosti najdete v tomto kurzu: Aktualizujte kanál ThingSpeak pomocí MQTT na Raspberry Pi.

Krok 8: Odesílání vzdálených dat do ThingSpeak pomocí ESP8266

Odesílání vzdálených dat do ThingSpeak pomocí ESP8266
Odesílání vzdálených dat do ThingSpeak pomocí ESP8266
Odesílání vzdálených dat do ThingSpeak pomocí ESP8266
Odesílání vzdálených dat do ThingSpeak pomocí ESP8266

Pro tento krok použijeme stejný HW, který byl vysvětlen v tutoriálu muy:

IOT MADE EASY: CAPTURING REMOTE WEATHER DATA: UV and AIR TEMPERATURE & VLUMIDITY

Kód, který zde použijeme, je v zásadě stejný jako v tomto tutoriálu. Pojďme si okomentovat nejdůležitější části kódu:

Nejprve zavoláme knihovnu ESP8266, definujeme klienta WiFi a definujeme místní pověření routeru a Thinkspeaku:

/ * NodeMCU ESP12-E */

#include WiFiClient klient; const char* MY_SSID = "ZADEJTE SVÉ SSDID"; const char* MY_PWD = "ZADEJTE SVÉ HESLO"; /* Thinkspeak*/ const char* TS_SERVER = "api.thingspeak.com"; Řetězec TS_API_KEY = "ZADEJTE SVÝM ZÁPISOVÝM KLÍČEM";

Za druhé, pojďme zahrnout velmi důležitou knihovnu pro projekty IoT: SimpleTimer.h:

/ * ČASOVAČ */

#include Časovač SimpleTimer;

Za třetí, během instalace () zahájíme sériovou komunikaci, zavoláme funkci connectWiFi () a definujeme časovače. Všimněte si, že řádek kódu: timer.setInterval (60000L, sendDataTS); zavolá funkci sendDataTS () každých 60 sekund, aby nahrál data na kanál ThinkSpeak.

neplatné nastavení ()

{… Serial.begin (115200); zpoždění (10); … ConnectWifi (); timer.setInterval (60000L, sendDataTS); …}

V neposlední řadě je během cyklu () jediným potřebným příkazem spuštění časovače a je to!

prázdná smyčka ()

{… Timer.run (); // Zahájí SimpleTimer}

Níže vidíte dvě důležité funkce používané ke zpracování komunikace Thinkspeak:

Připojení ESP12-E k vaší WiFi síti:

/***************************************************

*Připojení WiFi ************************************************* ***/ void connectWifi () {Serial.print ("Připojování k"+*MY_SSID); WiFi.begin (MY_SSID, MY_PWD); while (WiFi.status ()! = WL_CONNECTED) {zpoždění (1000); Serial.print ("."); } Serial.println (""); Serial.println („WiFi připojeno“); Serial.println (""); }

ESP12-E odesílání dat do ThinkSpeak:

***************************************************

*Odesílání dat na Thinkspeak Channel ******************************************** ******/ void sendDataTS (void) {if (client.connect (TS_SERVER, 80)) {String postStr = TS_API_KEY; postStr += "& field6 ="; postStr += String (temp); postStr += "& field7 ="; postStr += String (brum); postStr += "& field8 ="; postStr += String (dataSensorUV); postStr += "\ r / n / r / n"; client.print ("POST /aktualizace HTTP /1.1 / n"); client.print ("Host: api.thingspeak.com / n"); client.print ("Připojení: zavřít / n"); client.print ("X-THINGSPEAKAPIKEY:" + TS_API_KEY + "\ n"); client.print ("Content-Type: application/x-www-form-urlencoded / n"); client.print ("Délka obsahu:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); zpoždění (1000); } odesláno ++; client.stop (); }

Kompletní kód najdete na mém GitHubu: NodeMCU_UV_DHT_Sensor_OLED_TS_EXT

Jakmile budete mít kód nahraný na váš NodeMCU. Připojte externí baterii a proveďte nějaké měření pod sluncem. Umístil jsem vzdálenou stanici na střechu a začínám zaznamenávat data na ThingSpeak.com, jak je znázorněno na fotografiích výše.

Krok 9: Závěrečné poznámky

Závěrečné poznámky
Závěrečné poznámky

Hlavním účelem tohoto tutoriálu bylo ukázat, jak připojit Raspberry Pi k ThingSpeak. Je skvělé zachytávat data a zaznamenávat je na platformě IoT.

Díky této příležitosti jsme také odeslali data na tento konkrétní kanál a zachytili je ze vzdálené stanice pomocí ESP8266. Tento přístup je v pořádku, ale není nejlepší. Protože máme „asynchronní“operaci, někdy se RPi i ESP8266 pokusí zaznamenat současně (nebo s malým intervalem) to, co vyvrací ThingSpeak. Ideální by bylo, kdyby ESP8266 odesílal data místně na Raspberry Pi a poslední byl zodpovědný za zpracování všech dat. Když to uděláte, „Hlavní nádraží“(Raspberry Pi), dokáže 3 věci:

  • Zaznamenejte všechna data do místní databáze
  • Prezentujte všechna data na místní webové stránce (pomocí baňky, jak je znázorněno na výše uvedené fotografii)
  • Odesílání všech dat do ThingSpeak současně.

V budoucím kurzu tyto možnosti prozkoumáme.

Krok 10: Závěr

Závěr
Závěr

Jako vždy doufám, že tento projekt pomůže ostatním najít cestu do vzrušujícího světa elektroniky!

Podrobnosti a konečný kód najdete na mém depozitáři GitHub: RPi-NodeMCU-Weather-Station

Pro více projektů navštivte můj blog: MJRoBot.org

Zůstaňte naladěni! V dalším tutoriálu odešleme data ze vzdálené meteorologické stanice do centrální, založené na webovém serveru Raspberry Pi:

obraz
obraz

Saludos z jihu světa!

Uvidíme se v mém dalším pokynu!

Děkuji, Marcelo

Doporučuje: