Obsah:

Meteorologická stanica IoT s RPi a ESP8266: 10 krokov
Meteorologická stanica IoT s RPi a ESP8266: 10 krokov

Video: Meteorologická stanica IoT s RPi a ESP8266: 10 krokov

Video: Meteorologická stanica IoT s RPi a ESP8266: 10 krokov
Video: Weather station,❄️🌫️⛈️🌨️🌨️🌤️#arduino #nodemcu #electronics 2024, December
Anonim
Meteorologická stanica IoT s RPi a ESP8266
Meteorologická stanica IoT s RPi a ESP8266

V predchádzajúcich tutoriáloch sme sa hrali s NodeMCU, senzormi a učili sme sa, ako zachytávať a zaznamenávať údaje na platforme ThingSpeak (internet vecí (IoT), ktorá vám umožňuje zbierať a ukladať údaje senzorov v cloude a vyvíjať aplikácie IoT):

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

V tomto novom návode sa naučíme, ako postupovať rovnako, ale tentokrát pomocou Raspberry Pi na zachytávanie údajov z niekoľkých rôznych senzorov a tiež skúmania rôznych spôsobov komunikácie medzi zariadeniami a webom:

Senzory a typ kominikácie:

  • DHT22 (teplota a vlhkosť) ==> Digitálna komunikácia
  • BMP180 (teplota a tlak) ==> protokol I2C
  • DS18B20 (teplota) ==> 1-vodičový protokol

Blokový diagram ukazuje, čo na konci tohto projektu dosiahneme:

Obrázok
Obrázok

Krok 1: BoM - kusovník

  1. Raspberry Pi V3 - 32,00 USD
  2. Snímač teploty a relatívnej vlhkosti DHT22 - 9,95 USD
  3. Rezistor 4K7 ohm
  4. Vodotesný snímač teploty DS18B20 - 5,95 USD
  5. Rezistor 4K7 ohm
  6. BMP180 barometrický snímač tlaku, teploty a nadmorskej výšky - 6,99 USD

Krok 2: Inštalácia snímača teploty a vlhkosti

Inštalácia snímača teploty a vlhkosti
Inštalácia snímača teploty a vlhkosti

Prvým nainštalovaným snímačom bude DHT22 na zaznamenávanie údajov o teplote vzduchu a relatívnej vlhkosti. Stránka ADAFRUIT poskytuje skvelé informácie o týchto senzoroch. Tu je niekoľko informácií, ktoré ste odtiaľ získali:

Prehľad

Nízkonákladové snímače teploty a vlhkosti DHT sú veľmi základné a pomalé, ale sú skvelé pre fanúšikov, ktorí chcú vykonať nejaké základné zaznamenávanie údajov. Senzory DHT sú vyrobené z dvoch častí, kapacitného senzora vlhkosti a termistora. Vnútri je tiež veľmi základný čip, ktorý vykonáva nejakú analógovo -digitálnu konverziu a chrlí digitálny signál s teplotou a vlhkosťou. Digitálny signál je pomerne dobre čitateľný pomocou akéhokoľvek mikrokontroléra.

DHT22 Hlavné charakteristiky:

  • Nízke náklady
  • Napájanie 3 až 5 V a I/O
  • Maximálne využitie prúdu 2,5 mA počas konverzie (pri vyžiadaní údajov)
  • Dobré pre hodnoty vlhkosti 0-100% s presnosťou 2-5%
  • Dobré pre teploty od -40 do 125 ° C s presnosťou ± 0,5 ° C
  • Vzorkovacia frekvencia nie viac ako 0,5 Hz (raz za 2 sekundy)
  • Veľkosť tela 15,1 mm x 25 mm x 7,7 mm
  • 4 piny s rozstupom 0,1"

Akonáhle zvyčajne budete používať senzor na vzdialenosti menšie ako 20 m, medzi piny Data a VCC by mal byť zapojený odpor 4K7 ohm. Výstupný dátový kolík DHT22 bude pripojený k Raspberry GPIO 16. Skontrolujte vyššie uvedenú schému zapojenia senzora do kolíkov RPi nasledovne:

  1. Pin 1 - Vcc ==> 3,3V
  2. Pin 2 - údaje ==> GPIO 16
  3. Pin 3 - Nepripojiť
  4. Kolík 4 - Gnd ==> Gnd

Nezabudnite nainštalovať odpor 4K7 ohm medzi kolíky Vcc a Data

Akonáhle je senzor pripojený, musíme tiež nainštalovať jeho knižnicu na naše RPi.

Inštalácia knižnice DHT:

Na svojom zariadení Raspberry začnite na /doma, prejdite na /Dokumenty

cd dokumenty

Vytvorte adresár na nainštalovanie knižnice a presuňte sa tam:

mkdir DHT22_Sensor

cd DHT22_Senzor

Vo svojom prehliadači prejdite na Adafruit GitHub:

github.com/adafruit/Adafruit_Python_DHT

Stiahnite si knižnicu kliknutím na odkaz na stiahnutie vpravo a rozbaľte archív vo svojom nedávno vytvorenom priečinku Raspberry Pi. Potom prejdite do adresára knižnice (podpriečinok, ktorý sa automaticky vytvorí po rozbalení súboru) a spustite príkaz:

sudo python3 setup.py install

Otvorte testovací program (DHT22_test.py) z môjho GITHUBU

importovať Adafruit_DHT

DHT22Sensor = Adafruit_DHT. DHT22 DHTpin = 16 vlhkosť, teplota = Adafruit_DHT.read_retry (DHT22Sensor, DHTpin) ak vlhkosť nie je žiadna a teplota nie je žiadna: vytlačte ('Teplota = {0: 0,1f}*C Vlhkosť = {1: 0,1 f}%'. formát (teplota, vlhkosť)) else: print (' Nepodarilo sa načítať. Skúste to znova! ')

Spustite program príkazom:

python3 DHT22_test.py

Výsledok je zobrazený na nasledujúcej obrazovke Terminálu.

Obrázok
Obrázok

Krok 3: Inštalácia DS18B20 - teplotného senzora

Inštalácia DS18B20 - teplotného senzora
Inštalácia DS18B20 - teplotného senzora
Inštalácia DS18B20 - teplotného senzora
Inštalácia DS18B20 - teplotného senzora

Prehľad senzora:

V tomto návode použijeme vodotesnú verziu senzora DS18B20. Je veľmi užitočný pri vzdialených teplotách vo vlhkých podmienkach, napríklad na vlhkej pôde. Senzor je izolovaný a môže vykonávať merania až do 125 ° C (Adafrut ho neodporúča používať pri teplote nad 100 ° C kvôli káblovému plášťu z PVC).

DS18B20 je digitálny snímač, vďaka ktorému je dobré používať ho aj na dlhé vzdialenosti! Tieto 1-vodičové digitálne snímače teploty sú pomerne presné (± 0,5 ° C vo veľkej časti rozsahu) a môžu vstavaným digitálnym analógovým prevodníkom poskytovať presnosť až 12 bitov. Fungujú skvele s NodeMCU pomocou jediného digitálneho pinu a dokonca môžete k jednému pinu pripojiť aj viac, pričom každý z nich má v továrni vypálené jedinečné 64-bitové ID, ktoré ich odlišuje.

Senzor pracuje od 3,0 do 5,0 V, čo znamená, že môže byť napájaný priamo z 3,3 V pomocou jedného z pinov maliny (1 alebo 17).

Senzor má 3 vodiče:

  • Čierna: GND
  • Červená: VCC
  • Žltá: 1-vodičové údaje

Tu nájdete všetky údaje: DS18B20 Datasheet

Inštalácia senzora:

Postupujte podľa vyššie uvedeného diagramu a vytvorte pripojenia:

  • Vcc ==> 3,3 V.
  • Gnd ==> Gnd
  • Údaje ==> GPIO 4 (predvolené pre knižnicu)

Inštalácia knižnice Python:

Ďalej nainštalujme knižnicu Python, ktorá bude pracovať so senzorom:

sudo pip3 nainštalujte w1thermsensor

Pred spustením skriptu na testovanie senzora skontrolujte, či je vo vašom RPi povolené rozhranie „1-Wire“(pozri vyššie uvedenú obrazovku tlače)

Po zmene konfigurácie nezabudnite svoj RPi reštartovať

Testovanie senzora:

Na testovanie senzora je možné použiť jednoduchý python skript:

čas importu

z w1thermsensor import W1ThermSensor ds18b20Sensor = W1ThermSensor () while True: teplota = ds18b20Sensor.get_temperature () print ("Teplota je % s celsius" % teplota) čas.spánok (1)

Krok 4: Inštalácia BMP180

Inštalácia BMP180
Inštalácia BMP180
Inštalácia BMP180
Inštalácia BMP180
Inštalácia BMP180
Inštalácia BMP180

Prehľad senzora:

BMP180 je nástupcom BMP085, novej generácie vysoko presných digitálnych tlakových senzorov pre spotrebiteľské aplikácie. Elektronika BMP180 s extrémne nízkym výkonom a nízkym napätím je optimalizovaná na použitie v mobilných telefónoch, PDA, navigačných prístrojoch GPS a outdoorovom vybavení. Vďaka nízkej nadmorskej výške hluku iba 0,25 m v čase rýchleho prevodu ponúka BMP180 vynikajúci výkon. Rozhranie I2C umožňuje jednoduchú integráciu systému s mikrokontrolérom. BMP180 je založený na piezo-rezistívnej technológii pre odolnosť EMC, vysokú presnosť a linearitu, ako aj dlhodobú stabilitu.

Kompletný list s údajmi o BMP nájdete tu: BMP180 - digitálny snímač tlaku

Inštalácia senzora: Postupujte podľa vyššie uvedeného diagramu a vykonajte pripojenia:

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

Povolenie rozhrania I2C

Prejdite na Konfigurácia RPi a potvrďte, že je povolené rozhranie I2C. Ak nie, povoľte ho a reštartujte RPi.

Použitie BMP180

Ak je všetko nainštalované v poriadku a všetko je v poriadku, teraz ste pripravení zapnúť Pi a začať vidieť, čo vám BMP180 hovorí o svete okolo vás.

Prvá vec, ktorú musíte urobiť, je skontrolovať, či Pi vidí váš BMP180. V okne terminálu vyskúšajte nasledujúce:

sudo i2cdetect -y 1

Ak príkaz fungoval, mali by ste vidieť niečo podobné na vyššie uvedenej obrazovke Terminal Printscreen, ktorá ukazuje, že BMP180 je na kanáli '77'.

Inštalácia knižnice BMP180:

Vytvorte adresár na inštaláciu knižnice:

mkdir BMP180_Sensorcd BMP180_Sensor

Vo svojom prehliadači prejdite na Adafruit GITHub:

github.com/adafruit/Adafruit_Python_BMP

Stiahnite si knižnicu kliknutím na odkaz na stiahnutie vpravo a rozbaľte archív do priečinka vytvoreného v Raspberry Pi. Potom prejdite do vytvoreného podpriečinka a v adresári knižnice vykonajte nasledujúci príkaz:

sudo python3 setup.py install

Otvorte svoje IDE Pythonu a vytvorte testovací program a pomenujte ho, napríklad BMP180Test.py

importujte Adafruit_BMP. BMP085 ako snímač BMP085s = BMP085. BMP085 () tlač ('Teplota = {0: 0,2f} *C'.format (sensor.read_temperature ())) tlač (' 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 (sensor.read_sealevel_pressure ()))

Vykonajte testovací program:

python3 BMP180Test.py

Vyššie uvedená obrazovka Terminálu zobrazuje výsledok.

Všimnite si, že tento tlak je uvedený v Pa (Pascaloch). Pozrite sa na ďalší krok, aby ste lepšie porozumeli tejto jednotke.

Krok 5: Meranie počasia a nadmorskej výšky pomocou BMP180

Meranie počasia a nadmorskej výšky pomocou BMP180
Meranie počasia a nadmorskej výšky pomocou BMP180

Nájdime si čas a trochu viac porozumieme tomu, čo dostaneme, pomocou hodnôt BMP. Túto časť tutoriálu môžete preskočiť alebo sa vrátiť neskôr.

Ak sa chcete dozvedieť viac o hodnotách senzorov, navštívte tento skvelý návod:

BMP180 bol navrhnutý tak, aby presne meral atmosférický tlak. Atmosférický tlak sa líši v závislosti od počasia a nadmorskej výšky.

Čo je atmosférický tlak?

Definícia atmosférického tlaku je sila, ktorou vzduch okolo vás pôsobí na všetko. Hmotnosť plynov v atmosfére vytvára atmosférický tlak. Bežnou jednotkou tlaku sú „libry na štvorcový palec“alebo psi. Použijeme tu medzinárodný zápis, tj newtony na meter štvorcový, ktoré sa nazývajú pascaly (Pa).

Ak by ste zobrali 1 cm široký stĺpec vzduchu, vážil by asi 1 kg

Táto hmotnosť, ktorá tlačí na stopu tohto stĺpca, vytvára atmosférický tlak, ktorý môžeme merať senzormi, ako je BMP180. Pretože tento cm široký stĺpec vzduchu váži asi 1 kg, vyplýva z toho, že priemerný tlak hladiny mora je asi 101325 pascalov, alebo lepšie 1013,25 hPa (1 hPa je tiež známy ako milibar - mbar). To klesne asi o 4% na každých 300 metrov, ktoré vystúpite. Čím vyššie sa dostanete, tým menší tlak uvidíte, pretože stĺpec na vrchole atmosféry je oveľa kratší, a preto váži menej. Je to užitočné vedieť, pretože meraním tlaku a matematikou môžete určiť svoju nadmorskú výšku.

Tlak vzduchu v 3 810 metroch je len polovica tlaku na hladine mora.

BMP180 vydáva absolútny tlak v pascaloch (Pa). Jeden pascal je veľmi malé množstvo tlaku, približne množstvo, ktoré vyvinie list papiera na stôl. Merania častejšie uvidíte v hektopascaloch (1 hPa = 100 Pa). Tu použitá knižnica poskytuje výstupy s pohyblivou rádovou čiarkou v hPa, ktoré sa tiež rovnajú jednému milibaru (mbar).

Tu je niekoľko konverzií na iné tlakové jednotky:

  • 1 hPa = 100 Pa = 1 mbar = 0,001 bar
  • 1 hPa = 0,75006168 Torr
  • 1 hPa = 0,01450377 psi (libry na štvorcový palec)
  • 1 hPa = 0,02953337 inHg (palce ortuti)
  • 1 hpa = 0,00098692 atm (štandardná atmosféra)

Teplotné efekty

Pretože teplota ovplyvňuje hustotu plynu a hustota ovplyvňuje hmotnosť plynu a hmotnosť ovplyvňuje tlak (kolísanie), atmosférický tlak sa s teplotou dramaticky zmení. Piloti to poznajú ako „hustú nadmorskú výšku“, ktorá uľahčuje vzlet v chladnom dni ako v horúcom, pretože vzduch je hustejší a má väčší aerodynamický účinok. Na kompenzáciu teploty obsahuje BMP180 pomerne dobrý snímač teploty, ako aj snímač tlaku.

Na vykonanie odčítania tlaku najskôr odčítajte teplotu a potom skombinujte s odčítaním surového tlaku, aby ste dosiahli konečné meranie tlaku kompenzované teplotou. (Knižnica to všetko veľmi uľahčuje.)

Meranie absolútneho tlaku

Ak vaša aplikácia vyžaduje meranie absolútneho tlaku, stačí získať teplotu a potom vykonať čítanie tlaku (podrobnosti nájdete v príklade náčrtu). Konečné odčítanie tlaku bude v hPa = mbar. Ak chcete, môžete ho previesť na inú jednotku pomocou vyššie uvedených konverzných faktorov.

Všimnite si toho, že absolútny tlak atmosféry sa bude líšiť v závislosti od vašej nadmorskej výšky a aktuálnych predpovedí počasia, pričom obidve sú užitočné veci na meranie.

Pozorovania počasia

Atmosférický tlak na akomkoľvek mieste na Zemi (alebo kdekoľvek s atmosférou) nie je konštantný. Komplexná interakcia medzi rotáciou Zeme, naklonením osi a mnohými ďalšími faktormi má za následok pohyb oblastí s vyšším a nižším tlakom, ktoré zase spôsobujú zmeny počasia, ktoré vidíme každý deň. Sledovaním zmien tlaku môžete predpovedať krátkodobé zmeny počasia. Napríklad pokles tlaku zvyčajne znamená vlhké počasie alebo sa blíži búrka (vchádza sa tam nízkotlakový systém). Stúpajúci tlak zvyčajne znamená, že sa blíži jasné počasie (prechádza ním vysokotlakový systém). Nezabudnite však, že atmosférický tlak sa tiež líši v závislosti od nadmorskej výšky. Absolútny tlak v mojom dome, Lo Barnechea v Čile (nadmorská výška 950 m), bude vždy nižší ako napríklad absolútny tlak v San Franciscu (menej ako 2 metre, takmer hladina mora). Ak by meteorologické stanice uvádzali iba svoj absolútny tlak, bolo by ťažké priamo porovnávať merania tlaku z jedného miesta na druhé (a rozsiahle predpovede počasia závisia od meraní z čo najväčšieho počtu staníc).

Aby sa tento problém vyriešil, meteorologické stanice vždy odstránia efekty nadmorskej výšky zo svojich zaznamenaných hodnôt tlaku matematickým pripočítaním ekvivalentného fixného tlaku, aby to vyzeralo, ako keby sa údaje odčítali na hladine mora. Keď to urobíte, vyššie čítanie v San Franciscu ako Lo Barnechea bude vždy kvôli poveternostným podmienkam, a nie kvôli nadmorskej výške.

Na to slúži v knižnici funkcia s názvom hladina mora (P, A). To vezme absolútny tlak (P) v hPa a aktuálnu nadmorskú výšku stanice (A) v metroch a z tlaku odstráni efekty nadmorskej výšky. Výstup tejto funkcie môžete použiť na priame porovnanie údajov o počasí s inými stanicami na celom svete.

Stanovenie nadmorskej výšky

Pretože sa tlak mení s nadmorskou výškou, na meranie nadmorskej výšky môžete použiť snímač tlaku (s niekoľkými upozorneniami). Priemerný tlak atmosféry na hladine mora je 1013,25 hPa (alebo mbar). To klesá na nulu, keď stúpate k vákuu vesmíru. Pretože krivka tohto poklesu je dobre známa, môžete výškový rozdiel medzi dvoma meraniami tlaku (p a p0) vypočítať pomocou konkrétnej rovnice.

Ak ako základný tlak (p0) použijete tlak morskej hladiny (1013,25 hPa), výstupom z rovnice bude vaša aktuálna nadmorská výška. V knižnici je funkcia s názvom nadmorská výška (P, P0), ktorá vám umožní získať „vypočítanú nadmorskú výšku“.

Vyššie uvedené vysvetlenie bolo získané z tutoriálu BMP 180 Sparkfun.

Krok 6: Kompletný HW

Kompletný HW
Kompletný HW

Krok 7: Odoslanie údajov do ThingSpeak

Odosielanie údajov do ThingSpeak
Odosielanie údajov do ThingSpeak

V tomto mieste sme sa dozvedeli, ako pripraviť RPi na zachytenie údajov zo všetkých 3 senzorov a vytlačiť ich na terminál. Teraz je načase zistiť, ako tieto údaje odoslať na platformu IoT, ThingSpeak.

Poďme začať!

Najprv musíte mať účet na ThinkSpeak.com

Pri vytváraní kanála postupujte podľa týchto pokynov a poznačte si svoje ID kanála a kľúč rozhrania API na zápis

Stiahnite si skript Python z môjho GitHub: localData ToTS_v1_EXT.py

Poďme sa vyjadriť k najdôležitejším častiam kódu:

Najprv importujte knižnicu ThingSpeak, definujte klienta WiFi a definujte svoje poverenia miestneho smerovača a Thinkspeaku:

import thingspeak

Existuje niekoľko spôsobov komunikácie s ThingSpeak, najjednoduchším spôsobom by bolo použitie klientskej knižnice pre rozhranie thingspeak.com API vyvinuté Mikolajom Chwalizom a Keithom Ellisom.

Knižnicu si môžete stiahnuť z https://github.com/mchwalisz/thingspeak alebo použiť PIP na termináli:

sudo pip3 nainštalujte thingspeak

Ďalej v skripte aktualizujte poverenia kanála ThingSpeak

chId = 9999999 # Zadajte číslo kanála

tsKey = 'VSTUP SVOJIM KANÁLOM NAPÍŠTE KĽÚČ' tsUrl = 'https://api.thingspeak.com/update' ts = thingspeak. Channel (chId, tsUrl, tsKey)

Teraz inicializujme 3 senzory:

# 1-Wire knižnica DS18B20

z w1thermsensor import W1ThermSensor ds18b20Sensor = W1ThermSensor () # V knižnici sa predvolene používa GPIO 4 # import DHT22 knižnice Adafruit_DHT DHT22Sensor = Adafruit_DHT. DHT22 DHTpin = 16 # import knižnice BMP180 BMP050S080 Mali by ste definovať skutočnú nadmorskú výšku, kde sa vaša meteorologická stanica nachádza, aktualizovaním globálnej premennej „altReal“. V mojom prípade sa moja stanica nachádza vo výške 950 m n. M

globálny altReal

altReal = 950

Akonáhle vstúpite so skutočnou nadmorskou výškou stanice ako vstupom, môžeme získať absolútny tlak, tlak hladiny mora, teplotu a nadmorskú výšku pomocou funkcie bmp180GetData (nadmorská výška):

def bmp180GetData (nadmorská výška):

temp = bmp180Sensor.read_temperature () pres = bmp180Sensor.read_pressure () alt=bmp180Sensor.read_altitude () presSeaLevel = pres/pow (1,0 - nadmorská výška/44330,0, 5,255) temp = kolo (teplota, 1) prez = kolo (prez/100), 2) # absolútny tlak v hPa (alebo mbar) alt=okrúhly (alt) presSeaLevel = okrúhly (presSeaLevel/100, 2) # absolútny tlak v hPa (alebo mbar) teplota spiatočky, pres, alt, presSeaLevel

Funkcia getLocalData () vráti všetky lokálne údaje zachytené našou stanicou:

def getLocalData ():

global timeString global humLab global tempExt global tempLab global presSL global altLab global presAbs # Get time of reading now = datetime.datetime.now () timeString = now.strftime ("%Y-%m-%d%H%%:" M) # Prečítajte vonkajšiu teplotu (vzdialenosť 1 meter) tempExt = kolo (ds18b20Sensor.get_temperature (), 1) tempLab, presAbs, altLab, presSL = bmp180GetData (altReal) humDHT, tempDHT = Adafruit_DHT.read_retry (DHT22Sensor, DHTpin) if a tempDHT nie je Žiadne: humLab = okrúhle (humDHT

Akonáhle budete mať všetky údaje zachytené vyššie uvedenými funkciami, musíte ich odoslať do ThingSpeak. Vykonáte to pomocou funkcie 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 aktualizácii údajov o kanáli uložte skript a spustite ho na termináli:

sudo Python3 localData_ToTs_v1_EXT.py

O komunikačných protokoloch

Všimnite si toho, že pomocou „knižnice thingspeak“sa importuje „knižnica požiadaviek“, tj. Licencovaná knižnica HTTP Apache2, napísaná v Pythone. Oficiálnu dokumentáciu k žiadosti o inštaláciu nájdete tu:

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

V prípade potreby si pred spustením skriptu môžete overiť, či je nainštalovaná knižnica požiadaviek:

sudo pip3 požiadavky na inštaláciu

Voliteľne môžete použiť MTTQ ako spôsob odosielania údajov do ThingSpeak. MQTT sa líši od protokolu HTTP, akonáhle je špeciálne navrhnutý tak, aby bol ľahký a určený pre vstavané zariadenia s nízkym výkonom pamäte RAM a procesora. MQTT vo väčšine prípadov tiež používa menšiu šírku pásma.

Ďalšie podrobnosti nájdete v tomto návode: Aktualizujte kanál ThingSpeak pomocou MQTT na Raspberry Pi.

Krok 8: Odosielanie vzdialených údajov do ThingSpeak pomocou ESP8266

Odosielanie vzdialených údajov do ThingSpeak pomocou ESP8266
Odosielanie vzdialených údajov do ThingSpeak pomocou ESP8266
Odosielanie vzdialených údajov do ThingSpeak pomocou ESP8266
Odosielanie vzdialených údajov do ThingSpeak pomocou ESP8266

Na tento krok použijeme rovnaký HW, ktorý bol vysvetlený v príručke muy:

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

Kód, ktorý tu použijeme, je v zásade rovnaký ako kód použitý v tomto návode. Poďme sa vyjadriť k najdôležitejším častiam kódu:

Najprv zavoláme knižnicu ESP8266, definujeme klienta WiFi a definujeme miestne poverenia smerovača a Thinkspeaku:

/ * NodeMCU ESP12-E */

#include WiFiClient klient; const char* MY_SSID = "ZADAŤ SVOJIM SSDID"; const char* MY_PWD = "ZADAJTE HESLO"; /* Thinkspeak*/ const char* TS_SERVER = "api.thingspeak.com"; Reťazec TS_API_KEY = "ZADAJTE SVOJIM ZÁPISNÝM KLÍČOM";

Za druhé, zahrňme veľmi dôležitú knižnicu pre projekty IoT: SimpleTimer.h:

/ * ČASOVAČ */

#include Časovač SimpleTimer;

Po tretie, počas nastavenia () spustíme sériovú komunikáciu, zavoláme funkciu connectWiFi () a definujeme časovače. Všimnite si toho, že riadok kódu: timer.setInterval (60000L, sendDataTS); bude volať funkciu sendDataTS () každých 60 sekúnd, aby sa nahrali údaje na kanál ThinkSpeak.

neplatné nastavenie ()

{… Serial.begin (115200); oneskorenie (10); … ConnectWifi (); timer.setInterval (60 000 L, sendDataTS); …}

V neposlednom rade počas cyklu () je jediným potrebným príkazom spustenie časovača a je to!

prázdna slučka ()

{… Timer.run (); // Spustí SimpleTimer}

Nasledujú dve dôležité funkcie používané na zvládnutie komunikácie Thinkspeak:

Pripojenie ESP12-E k vašej WiFi sieti:

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

*Pripojenie WiFi ********************************************************* ***/ void connectWifi () {Serial.print ("Pripojenie k"+*MY_SSID); WiFi.begin (MY_SSID, MY_PWD); while (WiFi.status ()! = WL_CONNECTED) {oneskorenie (1000); Serial.print ("."); } Serial.println (""); Serial.println („WiFi pripojené“); Serial.println (""); }

ESP12-E odosielanie údajov do ThinkSpeak:

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

*Odosielanie údajov 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 /aktualizácia HTTP /1.1 / n"); client.print ("Hostiteľ: api.thingspeak.com / n"); client.print ("Pripojenie: zavrieť / n"); client.print ("X-THINGSPEAKAPIKEY:" + TS_API_KEY + "\ n"); client.print ("Typ obsahu: aplikácia/x-www-form-urlencoded / n"); client.print („Dĺžka obsahu:“); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); oneskorenie (1000); } odoslané ++; client.stop (); }

Kompletný kód nájdete na mojom GitHub: NodeMCU_UV_DHT_Sensor_OLED_TS_EXT

Akonáhle budete mať kód nahraný na váš NodeMCU. Pripojme externú batériu a urobme meranie pod slnkom. Položil som vzdialenú stanicu na strechu a začínam zbierať údaje na ThingSpeak.com, ako je to znázornené na vyššie uvedených fotografiách.

Krok 9: Záverečné poznámky

Záverečné poznámky
Záverečné poznámky

Hlavným účelom tohto tutoriálu bolo ukázať, ako pripojiť Raspberry Pi k ThingSpeak. Je skvelé zachytávať údaje a zaznamenávať ich na platforme IoT.

Pri tejto príležitosti sme tiež odoslali údaje na tento konkrétny kanál a zachytili sme ich zo vzdialenej stanice pomocou ESP8266. Tento prístup je v poriadku, ale nie je najlepší. Pretože máme „asynchrónnu“operáciu, niekedy sa RPi aj ESP8266 pokúšajú súčasne (alebo s malým intervalom) zaznamenať, čo je vyvrátené ThingSpeak. Ideálne by bolo, keby ESP8266 odosielal údaje lokálne na Raspberry Pi a posledný by bol zodpovedný za spracovanie všetkých údajov. Pritom by „Hlavná stanica“(Raspberry Pi) mohla robiť 3 veci:

  • Zaznamenajte všetky údaje do lokálnej databázy
  • Prezentujte všetky údaje na miestnej webovej stránke (pomocou banky, ako je znázornené na vyššie uvedenej fotografii)
  • Odosielanie všetkých údajov do ThingSpeak súčasne.

V budúcom návode tieto možnosti preskúmame.

Krok 10: Záver

Záver
Záver

Ako vždy, dúfam, že tento projekt pomôže iným nájsť si cestu do vzrušujúceho sveta elektroniky!

Podrobnosti a konečný kód nájdete v mojom depozitári GitHub: meteorologická stanica RPi-NodeMCU

Viac projektov nájdete na mojom blogu: MJRoBot.org

Zostaňte naladení! V nasledujúcom návode odošleme údaje zo vzdialenej meteorologickej stanice do centrálnej, založenej na webovom serveri Raspberry Pi:

Obrázok
Obrázok

Saludos z juhu sveta!

Uvidíme sa pri mojom ďalšom pokyne!

Ďakujem, Marcelo

Odporúča: