Sadržaj:
- Korak 1: BoM - Bill of Materials
- Korak 2: Ugradnja senzora temperature i vlažnosti
- Korak 3: Instaliranje DS18B20 - osjetnika temperature
- Korak 4: Instaliranje BMP180
- Korak 5: Mjerenje vremena i nadmorske visine pomoću BMP180
- Korak 6: Potpuni HW
- Korak 7: Slanje podataka na ThingSpeak
- Korak 8: Slanje udaljenih podataka na ThingSpeak pomoću ESP8266
- Korak 9: Završne napomene
- Korak 10: Zaključak
Video: IoT meteorološka stanica s RPi i ESP8266: 10 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:35
U prethodnim smo se vodičima igrali s NodeMCU -om, senzorima i učili kako hvatati i bilježiti podatke na ThingSpeak -u (Internet stvari) (IoT) platformi koja vam omogućuje prikupljanje i pohranjivanje podataka senzora u oblaku i razvoj IoT aplikacija):
IOT UČINJENO LAKO: HVATANJE DALJINSKIH VREMENSKIH PODATAKA: UV I ZRAK TEMPERATURA I VLAŽNOST
S ovim novim vodičem naučit ćemo kako to učiniti, ali ovaj put, koristeći Raspberry Pi za hvatanje podataka s nekoliko različitih senzora, te također istražujući različite načine komunikacije između uređaja i weba:
Senzori i vrsta komunikacije:
- DHT22 (temperatura i vlažnost) ==> Digitalna komunikacija
- BMP180 (temperatura i tlak) ==> I2C protokol
- DS18B20 (temperatura) ==> 1-žični protokol
Blok dijagram pokazuje što ćemo na kraju dobiti s ovim projektom:
Korak 1: BoM - Bill of Materials
- Raspberry Pi V3 - 32,00 US $
- Senzor temperature i relativne vlažnosti DHT22 - 9,95 USD
- Otpornik 4K7 ohma
- DS18B20 Vodonepropusni osjetnik temperature - 5,95 USD
- Otpornik 4K7 ohma
- BMP180 Barometrijski osjetnik tlaka, temperature i nadmorske visine - 6,99 USD
Korak 2: Ugradnja senzora temperature i vlažnosti
Prvi senzor koji će se instalirati bit će DHT22 za snimanje podataka o temperaturi zraka i relativnoj vlažnosti. Stranica ADAFRUIT pruža sjajne informacije o tim senzorima. Ispod su neke informacije preuzete odatle:
Pregled
Jeftini senzori temperature i vlažnosti DHT-a vrlo su jednostavni i spori, ali su izvrsni za ljubitelje koji žele zapisivati neke osnovne podatke. DHT senzori izrađeni su od dva dijela, kapacitivnog senzora vlažnosti i termistora. Unutra se nalazi i vrlo osnovni čip koji radi neku analogno -digitalnu konverziju i izbacuje digitalni signal s temperaturom i vlagom. Digitalni signal prilično je lako čitati pomoću bilo kojeg mikrokontrolera.
DHT22 Glavne karakteristike:
- Niska cijena
- 3 do 5V napajanja i I/O
- 2,5 mA max trenutna potrošnja tijekom pretvorbe (dok se traže podaci)
- Dobro za očitanje vlažnosti od 0-100% s točnošću od 2-5%
- Dobro za točnost očitanja temperature od -40 do 125 ° C ± 0,5 ° C
- Ne više od 0,5 Hz brzina uzorkovanja (jednom u 2 sekunde)
- Dimenzije tijela 15,1 mm x 25 mm x 7,7 mm
- 4 igle s razmakom od 0,1"
Nakon što ćete obično koristiti senzor na udaljenostima manjim od 20 m, otpornik od 4K7 ohma trebao bi biti spojen između pinova Data i VCC. Izlazni podatkovni pin DHT22 bit će spojen na Raspberry GPIO 16. Provjerite gornji električni dijagram, povezujući senzor s RPi pinovima kao što je dolje:
- Pin 1 - Vcc ==> 3.3V
- Pin 2 - Podaci ==> GPIO 16
- Pin 3 - Nije povezano
- Pin 4 - Gnd ==> Gnd
Ne zaboravite instalirati 4K7 ohmski otpornik između Vcc i Data pinova
Nakon što je senzor spojen, moramo instalirati i njegovu biblioteku na naš RPi.
Instaliranje DHT knjižnice:
Na vašem Raspberryju, počevši od /home, idite na /Documents
cd dokumenti
Izradite direktorij za instaliranje knjižnice i pomaknite se tamo:
mkdir DHT22_Senzor
cd DHT22_Senzor
U svom pregledniku idite na Adafruit GitHub:
github.com/adafruit/Adafruit_Python_DHT
Preuzmite biblioteku klikom na zip vezu za preuzimanje s desne strane i raspakirajte arhivu u nedavno stvorenoj mapi Raspberry Pi. Zatim idite u direktorij biblioteke (podmapa koja se automatski stvara kada raspakirate datoteku) i izvršite naredbu:
sudo python3 setup.py install
Otvorite testni program (DHT22_test.py) s mog GITHUB -a
uvoz Adafruit_DHT
DHT22Senzor = Adafruit_DHT. DHT22 DHTpin = 16 vlažnost, temperatura = Adafruit_DHT.čitaj_ponovo (DHT22Sensor, DHTpin) ako vlažnost nije Nema i temperatura nije Ništa: print ('Temp = {0: 0.1f}*C Vlažnost = {1: 0.1 f}%'. format (temperatura, vlažnost)) else: print (' Čitanje nije uspjelo. Pokušajte ponovo! ')
Izvedite program naredbom:
python3 DHT22_test.py
Na donjem ekranu ispisa terminala prikazan je rezultat.
Korak 3: Instaliranje DS18B20 - osjetnika temperature
Pregled senzora:
U ovom ćemo vodiču koristiti vodonepropusnu verziju senzora DS18B20. Vrlo je korisno za udaljenu temperaturu u vlažnim uvjetima, na primjer na vlažnom tlu. Senzor je izoliran i može mjeriti do 125 ° C (Adafrut ne preporučuje uporabu na više od 100 ° C zbog PVC omotača od kabela).
DS18B20 je digitalni senzor što ga čini dobrim za uporabu čak i na velikim udaljenostima! Ovi 1-žični digitalni osjetnici temperature prilično su precizni (± 0,5 ° C u velikom dijelu raspona) i mogu dati do 12 bita preciznosti s ugrađenog digitalno-analognog pretvarača. Odlično rade s NodeMCU-om pomoću jednog digitalnog pina, a čak možete povezati i više njih na isti pin, svaki ima tvornički ugrađen jedinstveni 64-bitni ID koji ih razlikuje.
Senzor radi od 3,0 do 5,0 V, što znači da se može napajati izravno s 3,3 V koje osigurava jedan od iglica za maline (1 ili 17).
Senzor ima 3 žice:
- Crna: GND
- Crveno: VCC
- Žuta: 1-žični podaci
Ovdje možete pronaći potpune podatke: Tehnički list DS18B20
Ugradnja senzora:
Slijedite gornji dijagram i uspostavite veze:
- Vcc ==> 3.3V
- Gnd ==> Gnd
- Podaci ==> GPIO 4 (zadano za knjižnicu)
Instaliranje Python knjižnice:
Zatim instalirajmo knjižnicu Python koja će rukovati senzorom:
sudo pip3 instalirajte w1thermsensor
Prije pokretanja skripte za testiranje senzora provjerite je li sučelje "1-Wire" omogućeno u vašem RPi (pogledajte gornji zaslon za ispis)
Ne zaboravite ponovno pokrenuti RPi, nakon promjene njegove konfiguracije
Testiranje senzora:
Za testiranje senzora može se koristiti jednostavna python skripta:
vrijeme uvoza
iz uvoza w1thermsensor W1ThermSensor ds18b20Sensor = W1ThermSensor () dok je True: temperatura = ds18b20Sensor.get_temperature () ispis ("Temperatura je % s celzijusa" % temperatura) time.sleep (1)
Korak 4: Instaliranje BMP180
Pregled senzora:
BMP180 je nasljednik BMP085, nove generacije visokopreciznih digitalnih senzora tlaka za potrošačke aplikacije. Elektronika niskog napona ultra male snage BMP180 optimizirana je za upotrebu u mobilnim telefonima, PDA uređajima, GPS navigacijskim uređajima i vanjskoj opremi. Uz nisku buku od samo 0,25 m pri brzom vremenu pretvorbe, BMP180 nudi vrhunske performanse. Sučelje I2C omogućuje jednostavnu integraciju sustava s mikrokontrolerom. BMP180 temelji se na piezootpornoj tehnologiji za EMC robusnost, visoku točnost i linearnost, kao i dugoročnu stabilnost.
Cjeloviti BMP podatkovni list možete pronaći ovdje: BMP180 - Digitalni senzor tlaka
Ugradnja senzora: Slijedite gornji dijagram i spojite:
- Vin ==> 3,3 V.
- GND ==> GND
- SCL ==> GPIO 3
- SDA ==> GPIO 2
Omogućavanje I2C sučelja
Idite na RPi Configuration i potvrdite da je I2C sučelje omogućeno. Ako nije, omogućite ga i ponovno pokrenite RPi.
Pomoću BMP180
Ako je sve dobro instalirano i sve je dobro povezano, sada ste spremni uključiti svoj Pi i početi vidjeti što vam BMP180 govori o svijetu oko vas.
Prvo što trebate učiniti je provjeriti vidi li Pi vaš BMP180. Pokušajte sljedeće u prozoru terminala:
sudo i2cdetect -y 1
Ako je naredba uspjela, trebali biste vidjeti nešto slično na gornjem ekranu ispisa terminala, koji pokazuje da je BMP180 na kanalu '77'.
Instaliranje knjižnice BMP180:
Izradite direktorij za instaliranje knjižnice:
mkdir BMP180_Sensorcd BMP180_Senzor
U svom pregledniku idite na Adafruit GITHub:
github.com/adafruit/Adafruit_Python_BMP
Preuzmite biblioteku klikom na zip vezu za preuzimanje s desne strane i raspakirajte arhivu u mapi stvorenoj za Raspberry Pi. Zatim idite na stvorenu podmapu i izvršite sljedeću naredbu u direktoriju biblioteke:
sudo python3 setup.py install
Otvorite svoj Python IDE i stvorite testni program i dajte mu ime, na primjer BMP180Test.py
uvesti Adafruit_BMP. BMP085 kao BMP085sensor = BMP085. BMP085 () print ('Temp = {0: 0.2f} *C'.format (sensor.read_temperature ())) print (' Pressure = {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.čitaj_pritisak_prodaje ()))
Izvršite testni program:
python3 BMP180Test.py
Gornji zaslon ispisa terminala prikazuje rezultat.
Imajte na umu da je taj tlak predstavljen u Pa (Paskali). Pogledajte sljedeći korak kako biste bolje razumjeli ovu jedinicu.
Korak 5: Mjerenje vremena i nadmorske visine pomoću BMP180
Odvojimo malo vremena da shvatimo nešto više o tome što ćemo dobiti s očitanjima BMP -a. Ovaj dio vodiča možete preskočiti ili se kasnije vratiti.
Ako želite saznati više o očitanjima senzora, posjetite ovaj sjajni vodič:
BMP180 je dizajniran za točno mjerenje atmosferskog tlaka. Atmosferski tlak varira ovisno o vremenu i nadmorskoj visini.
Što je atmosferski tlak?
Definicija atmosferskog tlaka je sila koju zrak oko vas vrši na sve. Težina plinova u atmosferi stvara atmosferski tlak. Uobičajena jedinica pritiska je "funti po kvadratnom inču" ili psi. Ovdje ćemo upotrijebiti međunarodni zapis, to jest newtona po četvornom metru, koji se nazivaju paskali (Pa).
Ako uzmete 1 cm širok stup zraka, težio bi oko 1 kg
Ova težina, pritiskom na otisak tog stupa, stvara atmosferski tlak koji možemo mjeriti senzorima poput BMP180. Budući da taj stub zraka širine cm teži oko 1 kg, proizlazi da je prosječni tlak na razini mora oko 101325 paskala, ili bolje, 1013,25 hPa (1 hPa poznat je i kao milibar - mbar). To će pasti za oko 4% na svakih 300 metara koliko se uspnete. Što se više penjete, to ćete vidjeti manji pritisak, jer je stup do vrha atmosfere toliko kraći i stoga ima manju težinu. Ovo je korisno znati jer mjerenjem tlaka i matematikom možete odrediti svoju visinu.
Zračni tlak na 3 810 metara samo je polovica od tlaka na razini mora.
BMP180 daje apsolutni tlak u paskalima (Pa). Jedan paskal je vrlo mala količina pritiska, otprilike količina koju će list papira pritisnuti naslonjen na stol. Češće ćete vidjeti mjerenja u hektopaskalima (1 hPa = 100 Pa). Knjižnica koja se ovdje koristi daje izlazne vrijednosti s pomičnim zarezom u hPa, što je također jednako jednom milibaru (mbar).
Evo nekih pretvorbi u druge jedinice tlaka:
- 1 hPa = 100 Pa = 1 mbar = 0,001 bar
- 1 hPa = 0,75006168 Torr
- 1 hPa = 0,01450377 psi (funti po kvadratnom inču)
- 1 hPa = 0,02953337 inHg (inči žive)
- 1 hpa = 0,00098692 atm (standardne atmosfere)
Učinci temperature
Budući da temperatura utječe na gustoću plina, a gustoća utječe na masu plina, a masa utječe na tlak (vau), atmosferski tlak će se dramatično promijeniti s temperaturom. Piloti to znaju kao "visinu gustoće", što olakšava polijetanje po hladnom danu od vrućeg jer je zrak gušći i ima veći aerodinamički učinak. Kako bi kompenzirao temperaturu, BMP180 uključuje prilično dobar temperaturni osjetnik kao i osjetnik tlaka.
Da biste izvršili očitanje tlaka, najprije mjerite temperaturu, zatim je kombinirajte sa sirovim očitanjem tlaka kako biste došli do konačnog mjerenja tlaka kompenziranog temperaturom. (Knjižnica sve ovo čini vrlo jednostavnim.)
Mjerenje apsolutnog tlaka
Ako vaša aplikacija zahtijeva mjerenje apsolutnog tlaka, sve što trebate učiniti je dobiti očitanje temperature, a zatim izvršiti očitanje tlaka (za detalje pogledajte primjer skice). Konačno očitanje tlaka bit će u hPa = mbar. Ako želite, ovo možete pretvoriti u drugu jedinicu pomoću gore navedenih faktora konverzije.
Imajte na umu da će apsolutni tlak atmosfere varirati s visinom i trenutnim vremenskim obrascima, što je korisno za mjerenje.
Promatranje vremena
Atmosferski tlak na bilo kojem mjestu na zemlji (ili bilo gdje s atmosferom) nije konstantan. Složena interakcija između Zemljine vrtnje, nagiba osi i mnogih drugih čimbenika rezultira pomicanjem područja većeg i nižeg tlaka, što opet uzrokuje varijacije u vremenu koje vidimo svaki dan. Prateći promjene tlaka, možete predvidjeti kratkotrajne promjene vremena. Na primjer, pad tlaka obično znači vlažno vrijeme ili se približava oluja (sustav niskog tlaka se useljava). Porast tlaka obično znači da se bliži vedro vrijeme (prolazi sustav visokog tlaka). Ali zapamtite da atmosferski tlak također varira s nadmorskom visinom. Apsolutni tlak u mojoj kući, Lo Barnechea u Čileu (nadmorska visina 950 m) uvijek će biti niži od apsolutnog tlaka u San Franciscu, na primjer (manje od 2 metra, gotovo razina mora). Kad bi meteorološke postaje samo prijavile svoj apsolutni tlak, bilo bi teško izravno usporediti mjerenje tlaka s jednog mjesta na drugo (a velika vremenska predviđanja ovise o mjerenjima sa što je moguće više stanica).
Kako bi riješile ovaj problem, meteorološke postaje uvijek uklanjaju učinke visine s prijavljenih očitanja tlaka matematičkim dodavanjem ekvivalentnog fiksnog tlaka kako bi izgledalo kao da je očitanje snimljeno na razini mora. Kad to učinite, veće čitanje u San Franciscu od Lo Barnechee uvijek će biti zbog vremenskih obrazaca, a ne zbog nadmorske visine.
Da biste to učinili, u knjižnici postoji funkcija koja se naziva razina mora (P, A). Time se uzima apsolutni tlak (P) u hPa, i trenutna nadmorska visina postaje (A) u metrima, a utjecaji nadmorske visine uklanjaju se iz tlaka. Izlaz ove funkcije možete upotrijebiti za izravno uspoređivanje očitanja vremena s drugim postajama širom svijeta.
Određivanje nadmorske visine
Budući da tlak varira s nadmorskom visinom, možete koristiti senzor tlaka za mjerenje nadmorske visine (uz nekoliko upozorenja). Prosječni tlak atmosfere na razini mora iznosi 1013,25 hPa (ili mbar). Ovo pada na nulu dok se penjete prema vakuumu svemira. Budući da je krivulja ovog pada dobro razumljiva, možete izračunati visinsku razliku između dva mjerenja tlaka (p i p0) pomoću posebne jednadžbe.
Ako kao osnovni tlak koristite pritisak na razini mora (1013,25 hPa), izlaz jednadžbe bit će vaša trenutna nadmorska visina. U biblioteci postoji funkcija koja se naziva visina (P, P0) koja vam omogućuje da dobijete "izračunatu visinu".
Gornje objašnjenje izvučeno je iz vodiča BMP 180 Sparkfun.
Korak 6: Potpuni HW
Korak 7: Slanje podataka na ThingSpeak
U ovom smo trenutku naučili kako pripremiti RPi za hvatanje podataka sa sva 3 senzora, ispisujući ih na terminalu. Sada je vrijeme da vidimo kako poslati te podatke na IoT platformu, ThingSpeak.
Započnimo!
Prvo morate imati račun na ThinkSpeak.com
Slijedite upute za stvaranje kanala i zabilježite svoj ID kanala i API API ključ
Preuzmite Python Script sa mog GitHub -a: localData ToTS_v1_EXT.py
Komentirajmo najvažnije dijelove koda:
Prvo, uvezimo knjižnicu ThingSpeak, definirajmo WiFi klijenta i definirajmo lokalne vjerodajnice za usmjerivač i Thinkspeak:
import thingspeak
Postoji nekoliko načina za komunikaciju s ThingSpeakom, a najjednostavniji način bi bio korištenje klijentske knjižnice za API Thingspeak.com koji su razvili Mikolaj Chwaliz i Keith Ellis.
Knjižnica se može preuzeti s https://github.com/mchwalisz/thingspeak ili koristiti PIP na terminalu:
sudo pip3 instalirati thingspeak
Zatim unutar skripte ažurirajte vjerodajnice kanala ThingSpeak
chId = 9999999 # Unesite sa svojim ID -om kanala
tsKey = 'UNOSITE KLJUČ ZA PISANJE KANALA' tsUrl = 'https://api.thingspeak.com/update' ts = thingspeak. Channel (chId, tsUrl, tsKey)
Sada, inicijaliziramo 3 senzora:
# DS18B20 1-Wire knjižnica
s w1thermsensor unesite W1ThermSensor ds18b20Sensor = W1ThermSensor () # Prema zadanim postavkama biblioteku koristi GPIO 4 # DHT22 Uvoz knjižnice Adafruit_DHT DHT22Sensor = Adafruit_DHT. DHT22 DHTpin = 16 # BMP180 knjižnica uvoz Adafruit_BMP8BP8 Trebali biste definirati stvarnu nadmorsku visinu na kojoj se nalazi vaša meteorološka stanica, ažurirajući globalnu varijablu "altReal". U mom slučaju, moja stanica se nalazi na 950m iznad razine mora
globalni altReal
altReal = 950
Kada jednom unesete stvarnu nadmorsku visinu stanice, možemo dobiti apsolutni tlak, tlak na razini mora, temperaturu i nadmorsku visinu pomoću funkcije bmp180GetData (nadmorska visina):
def bmp180GetData (nadmorska visina):
temp = bmp180Sensor.read_temperature () pres = bmp180Sensor.read_pressure () alt=bmp180Sensor.read_altitude () presSeaLevel = pres/pow (1.0 - nadmorska visina/44330.0, 5.255) temp = okrugla (temp, 1) pres = okrugla (pres/100, 2) # apsolutni tlak u hPa (ili mbar) alt=okrugli (alt) presSeaLevel = okrugli (presSeaLevel/100, 2) # apsolutni tlak u hPa (ili mbar) povratna temp., Pres, alt, presSeaLevel
Funkcija getLocalData () vratit će sve lokalne podatke koje naša stanica uhvati:
def getLocalData ():
global timeString global humLab global tempExt global tempLab global presSL global altLab global presAbs # Get time of read now = datetime.datetime.now () timeString = now.strftime ("%Y-%m-%d%H:%M") # Pročitajte vanjsku temperaturu (udaljenost od 1 metra) tempExt = okrugli (ds18b20Sensor.get_temperature (), 1) tempLab, presAbs, altLab, presSL = bmp180GetData (altReal) humDHT, tempDHT = Adafruit_DHT.read_retry (DHT nije ni DHT) i tempDHT nije Ništa: humLab = okruglo (humDHT
Nakon što sve gore navedene funkcije uhvate sve podatke, morate ih poslati u ThingSpeak. To ćete učiniti pomoću funkcije sendDataTs ():
def sendDataTs ():
data = {"field1": tempLab, "field2": tempExt, "field3": humLab, "field4": presSL, "field5": altLab} ts.update (data) print ("[INFO] Podaci poslani za 5 polja: ", tempLab, tempExt, humLab, presSL, altLab)
S ažuriranjem podataka o kanalu spremite skriptu i izvedite je na svom terminalu:
sudo Python3 localData_ToTs_v1_EXT.py
O komunikacijskim protokolima
Imajte na umu da se pomoću "thingspeak knjižnice" uvozi "knjižnica zahtjeva", to jest licencirana HTTP knjižnica Apache2, napisana na Pythonu. Službenu dokumentaciju o zahtjevu za instalaciju možete pronaći ovdje:
docs.python-requests.org/en/latest/user/install/
Ako je potrebno, prije pokretanja skripte možete provjeriti je li biblioteka zahtjeva instalirana:
sudo pip3 zahtjevi za instalaciju
Po želji možete koristiti MTTQ kao metodu za slanje podataka u ThingSpeak. MQTT se nekad razlikuje od HTTP -a. Posebno je dizajniran da bude lagan i namijenjen za ugrađene uređaje s niskim performansama RAM -a i CPU -a. Također, u većini slučajeva MQTT koristi manju propusnost.
Za više pojedinosti pogledajte ovaj vodič: Ažurirajte ThingSpeak kanal pomoću MQTT -a na Raspberry Pi -ju.
Korak 8: Slanje udaljenih podataka na ThingSpeak pomoću ESP8266
Za ovaj korak koristit ćemo isti HW koji je objašnjen u muy tutorialu:
IOT UČINJENO LAKO: HVATANJE DALJINSKIH VREMENSKIH PODATAKA: UV I ZRAK TEMPERATURA I VLAŽNOST
Kôd koji ćemo ovdje koristiti u osnovi je isti koji se koristi u tom vodiču. Komentirajmo najvažnije dijelove koda:
Prvo, nazovimo biblioteku ESP8266, definirajmo WiFi klijenta i definirajmo lokalne vjerodajnice za usmjerivač i Thinkspeak:
/ * NodeMCU ESP12-E */
#include WiFiClient klijent; const char* MY_SSID = "ULAZITE SA SVOJIM SSDID -om"; const char* MY_PWD = "ULAZITE SA SVOJOM LOZINKOM"; /* Thinkspeak*/ const char* TS_SERVER = "api.thingspeak.com"; String TS_API_KEY = "ENTER SA VAŠIM KLJUČEM ZA PISANJE";
Drugo, uključimo vrlo važnu knjižnicu za IoT projekte: SimpleTimer.h:
/ * TIMER */
#include SimpleTimer mjerač vremena;
Treće, tijekom setup (), pokrenut ćemo serijsku komunikaciju, pozvati funkciju connectWiFi () i definirati mjerače vremena. Imajte na umu da redak koda: timer.setInterval (60000L, sendDataTS); će pozvati funkciju sendDataTS () svakih 60 sekundi, kako bi prenijeli podatke na ThinkSpeak kanal.
void setup ()
{… Serial.begin (115200); kašnjenje (10); … ConnectWifi (); timer.setInterval (60000L, sendDataTS); …}
Na kraju, ali ne najmanje važno, tijekom loop (), jedina naredba potrebna je pokretanje timera i to je to!
void loop ()
{… Timer.run (); // Pokreće SimpleTimer}
U nastavku možete vidjeti dvije važne funkcije koje se koriste za upravljanje komunikacijom Thinkspeak:
ESP12-E veza s vašom WiFi mrežom:
/***************************************************
*Povezivanje WiFi *********************************************** ***/ void connectWifi () {Serial.print ("Spajanje na"+*MY_SSID); WiFi.počni (MY_SSID, MY_PWD); while (WiFi.status ()! = WL_CONNECTED) {odgoda (1000); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi povezan"); Serial.println (""); }
ESP12-E šalje podatke u ThinkSpeak:
***************************************************
*Slanje podataka na kanal Thinkspeak ****************************************** ******/ void sendDataTS (void) {if (client.connect (TS_SERVER, 80)) {String postStr = TS_API_KEY; postStr += "& polje6 ="; postStr += String (temp); postStr += "& polje7 ="; postStr += String (pjevušenje); postStr += "& polje8 ="; postStr += String (dataSensorUV); postStr += "\ r / n / r / n"; client.print ("POST /ažuriraj HTTP /1.1 / n"); client.print ("Domaćin: api.thingspeak.com / n"); client.print ("Veza: zatvori / n"); client.print ("X-THINGSPEAKAPIKEY:" + TS_API_KEY + "\ n"); client.print ("Content-Type: application/x-www-form-urlencoded / n"); client.print ("Content-Length:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); kašnjenje (1000); } poslano ++; client.stop (); }
Cjelokupni kod možete pronaći na mom GitHubu: NodeMCU_UV_DHT_Sensor_OLED_TS_EXT
Nakon što kôd učitate na svoj NodeMCU. Spojimo vanjsku bateriju i napravimo neka mjerenja pod suncem. Stavio sam Remote Station na krov i počeo snimati podatke na ThingSpeak.com kao što je prikazano na gornjim fotografijama.
Korak 9: Završne napomene
Glavna svrha ovog vodiča bila je pokazati kako spojiti Raspberry Pi na ThingSpeak. Ovo je izvrsno za hvatanje podataka i njihovo bilježenje na IoT platformi.
Koristeći priliku, poslali smo i podatke na taj određeni kanal, snimajući ih s udaljene postaje pomoću ESP8266. Ovaj pristup je u redu, ali nije najbolji. Budući da imamo "asinkronu" operaciju, ponekad i RPi i ESP8266 pokušavaju prijaviti u isto vrijeme (ili s malim intervalom) ono što ThingSpeak opovrgava. Idealno bi bilo kada bi ESP8266 slao podatke lokalno na Raspberry Pi, a zadnji bi bio odgovoran za rukovanje svim podacima. Na taj način "Glavni kolodvor" (Raspberry Pi) mogao bi učiniti 3 stvari:
- Zapišite sve podatke u lokalnu bazu podataka
- Prezentirajte sve podatke na lokalnoj web stranici (koristeći Flask kao što je prikazano na gornjoj fotografiji)
- Slanje svih podataka u ThingSpeak u isto vrijeme.
U budućem vodiču istražit ćemo te mogućnosti.
Korak 10: Zaključak
Kao i uvijek, nadam se da će ovaj projekt pomoći drugima da pronađu svoj put u uzbudljivi svijet elektronike!
Za detalje i konačni kôd posjetite moje skladište GitHub: RPi-NodeMCU-Weather-Station
Za više projekata posjetite moj blog: MJRoBot.org
Ostanite uz nas! Sljedeći vodič ćemo poslati podatke s udaljene meteorološke postaje na središnju, na temelju Raspberry Pi web poslužitelja:
Saludos s juga svijeta!
Vidimo se u mom sljedećem uputstvu!
Hvala vam, Marcelo
Preporučeni:
NaTaLia meteorološka stanica: Arduino solarna meteorološka postaja učinila je pravi put: 8 koraka (sa slikama)
Vremenska postaja NaTaLia: Arduino meteorološka stanica na solarni pogon učinila je to na pravi način: Nakon godinu dana uspješnog rada na 2 različite lokacije, dijelim svoje planove projekta meteoroloških stanica na solarni pogon i objašnjavam kako se razvila u sustav koji zaista može opstati dugo vremena razdoblja iz solarne energije. Ako pratite
Meteorološka stanica zasnovana na IoT ESP8266: 6 koraka
Meteorološka stanica zasnovana na IoT ESP8266: Želite li izgraditi projekt meteorološke postaje bez ikakvog senzora i dobivati informacije o vremenu iz cijelog svijeta? Korištenje OpenWeatherMap -a postaje pravi zadatak
DIY meteorološka stanica i senzorska stanica WiFi: 7 koraka (sa slikama)
DIY meteorološka stanica i WiFi senzorska stanica: U ovom projektu ću vam pokazati kako stvoriti meteorološku stanicu zajedno sa stanicom sa WiFi senzorom. Senzorska stanica mjeri lokalne podatke o temperaturi i vlažnosti i šalje ih putem WiFi -a meteorološkoj postaji. Meteorološka stanica tada prikazuje t
RPi meteorološka stanica i digitalni sat: 4 koraka (sa slikama)
Meteorološka stanica RPi i digitalni sat: Ovo je brz i jednostavan projekt za izradu i lijep zaslon za prikazivanje. Prikazuje vrijeme, vremenske uvjete i temperaturu. A ako vam se sviđa ono što vidite, slijedite me na Instagramu i Twitteru (@Anders644PI) kako biste bili u toku s onim što radim
RPi meteorološka stanica s responzivnom web stranicom: 5 koraka
RPi Weatherstation With Responsive Website: Za školski projekt morali smo napraviti IoT uređaj sa web lokacijom za vizualizaciju prikupljenih informacija na lijep način. Odlučio sam napraviti vremensku stanicu koju pokreće Raspberry Pi 3 s Flaskom za responzivno web mjesto, MySQL (MariaDB) za moje podatke