Innholdsfortegnelse:
- Trinn 1: BoM - materialliste
- Trinn 2: Installere temperatur- og fuktighetssensoren
- Trinn 3: Installere DS18B20 - Temperatursensor
- Trinn 4: Installere BMP180
- Trinn 5: Måling av vær og høyde med BMP180
- Trinn 6: Komplett HW
- Trinn 7: Sende data til ThingSpeak
- Trinn 8: Sende eksterne data til ThingSpeak ved hjelp av ESP8266
- Trinn 9: Sluttnotater
- Trinn 10: Konklusjon
Video: IoT værstasjon med RPi og ESP8266: 10 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
På tidligere opplæringsprogrammer har vi lekt med NodeMCU, sensorer og lært hvordan vi kan fange og logge data på ThingSpeak (en Internet of Things (IoT) -plattform som lar deg samle og lagre sensordata i skyen og utvikle IoT -applikasjoner):
IOT GJORT ENKELT: FANGTE FJERNVÆRDATA: UV- OG Lufttemperatur og fuktighet
Med denne nye opplæringen vil vi lære å gjøre det samme, men på denne tiden, ved hjelp av en Raspberry Pi for å fange data fra flere forskjellige sensorer og også utforske forskjellige måter å kommunisere mellom enheter og internett:
Sensorer og kominiseringstype:
- DHT22 (Temperatur og fuktighet) ==> Digital kommunikasjon
- BMP180 (Temperatur og trykk) ==> I2C -protokoll
- DS18B20 (temperatur) ==> 1-tråds protokoll
Blokkediagrammet viser hva vi får til slutt med dette prosjektet:
Trinn 1: BoM - materialliste
- Raspberry Pi V3 - 32,00 dollar
- DHT22 temperatur- og relativ fuktighetssensor - USD 9,95
- Motstand 4K7 ohm
- DS18B20 vanntett temperatursensor - USD 5,95
- Motstand 4K7 ohm
- BMP180 barometrisk trykk, temperatur og høydesensor - USD 6,99
Trinn 2: Installere temperatur- og fuktighetssensoren
Den første sensoren som skal installeres, er DHT22 for registrering av lufttemperatur og relativ luftfuktighet. ADAFRUIT -nettstedet gir god informasjon om disse sensorene. Her er litt informasjon hentet derfra:
Oversikt
De billige DHT-temperatur- og fuktighetssensorene er veldig grunnleggende og sakte, men er ypperlige for hobbyfolk som ønsker å gjøre noen grunnleggende datalogging. DHT -sensorene er laget av to deler, en kapasitiv fuktighetssensor og en termistor. Det er også en veldig grunnleggende chip inne som gjør noen analog til digital konvertering og spytter ut et digitalt signal med temperatur og fuktighet. Det digitale signalet er ganske enkelt å lese ved hjelp av en hvilken som helst mikrokontroller.
DHT22 Hovedegenskaper:
- Lav kostnad
- 3 til 5V strøm og I/O
- 2,5 mA maksimal bruk under konvertering (mens du ber om data)
- Bra for 0-100% fuktighetsavlesninger med 2-5% nøyaktighet
- Bra for -40 til 125 ° C temperaturavlesninger ± 0,5 ° C nøyaktighet
- Ikke mer enn 0,5 Hz samplingsfrekvens (en gang hvert 2. sekund)
- Kroppsstørrelse 15,1 mm x 25 mm x 7,7 mm
- 4 pinner med 0,1 "mellomrom
Når du vanligvis bruker sensoren på avstander mindre enn 20m, bør en 4K7 ohm motstand kobles mellom data- og VCC -pinner. DHT22 -utgangsdatapinnen vil bli koblet til Raspberry GPIO 16. Kontroller det elektriske diagrammet ovenfor, og koble sensoren til RPi -pinner som nedenfor:
- Pin 1 - Vcc ==> 3.3V
- Pin 2 - Data ==> GPIO 16
- Pin 3 - Ikke koble til
- Pin 4 - Gnd ==> Gnd
Ikke glem å installere 4K7 ohm motstanden mellom Vcc og Data pins
Når sensoren er koblet til, må vi også installere biblioteket på vår RPi.
Installere DHT -bibliotek:
På bringebæret ditt, start på /hjem, gå til /Documents
cd Dokumenter
Lag en katalog for å installere biblioteket og gå til det:
mkdir DHT22_Sensor
cd DHT22_Sensor
Gå til Adafruit GitHub i nettleseren din:
github.com/adafruit/Adafruit_Python_DHT
Last ned biblioteket ved å klikke på nedlasting zip -lenken til høyre og pakke ut arkivet på din Raspberry Pi nylig opprettede mappe. Gå deretter til bibliotekets bibliotek (undermappe som opprettes automatisk når du pakker ut filen), og utfør kommandoen:
sudo python3 setup.py installere
Åpne et testprogram (DHT22_test.py) fra min GITHUB
importer Adafruit_DHT
DHT22Sensor = Adafruit_DHT. DHT22 DHTpin = 16 fuktighet, temperatur = Adafruit_DHT.read_retry (DHT22Sensor, DHTpin) hvis fuktigheten ikke er Ingen og temperaturen ikke er Ingen: print ('Temp = {0: 0.1f}*C Fuktighet = {1: 0.1 f}%'. format (temperatur, fuktighet)) else: print (' Kunne ikke lese. Prøv igjen! ')
Utfør programmet med kommandoen:
python3 DHT22_test.py
Resultatet vises under Terminal -utskriftsskjermen.
Trinn 3: Installere DS18B20 - Temperatursensor
Sensoroversikt:
Vi vil i denne opplæringen bruke en vanntett versjon av DS18B20 -sensoren. Det er veldig nyttig for fjerntemperatur i våte forhold, for eksempel på fuktig jord. Sensoren er isolert og kan ta målinger til 125oC (Adafrut anbefaler ikke å bruke den over 100oC på grunn av kabel -PVC -kappen).
DS18B20 er en digital sensor som gjør det godt å bruke selv over lange avstander! Disse 1-leders digitale temperatursensorene er ganske presise (± 0,5 ° C over store deler av området) og kan gi opptil 12 bits presisjon fra den innebygde digital-til-analoge omformeren. De fungerer bra med NodeMCU ved hjelp av en enkelt digital pin, og du kan til og med koble flere til samme pin, hver har en unik 64-biters ID brent inn på fabrikken for å skille dem fra hverandre.
Sensoren fungerer fra 3,0 til 5,0V, det vil si at den kan drives direkte fra 3,3V fra en av bringebærpinnene (1 eller 17).
Sensoren har 3 ledninger:
- Svart: GND
- Rød: VCC
- Gul: 1-tråds data
Her finner du alle dataene: DS18B20 Dataark
Sensorinstallasjon:
Følg diagrammet ovenfor og gjør tilkoblingene:
- Vcc ==> 3,3V
- Gnd ==> Gnd
- Data ==> GPIO 4 (standard for bibliotek)
Installere Python -biblioteket:
La oss deretter installere Python -biblioteket som skal håndtere sensoren:
sudo pip3 installer w1thermsensor
Før du kjører skriptet for å teste sensoren, må du kontrollere om "1-Wire" -grensesnittet er aktivert i RPi-en (se utskriftsskjermen ovenfor)
Ikke glem å starte RPi -en på nytt etter at du har endret konfigurasjonen
Testing av sensoren:
For å teste sensoren kan et enkelt python -script brukes:
importtid
fra w1thermsensor import W1ThermSensor ds18b20Sensor = W1ThermSensor () mens True: temperatur = ds18b20Sensor.get_temperature () print ("Temperaturen er % s celsius" % temperatur) time.sleep (1)
Trinn 4: Installere BMP180
Sensoroversikt:
BMP180 er etterfølgeren til BMP085, en ny generasjon digitale presisjonssensorer med høy presisjon for forbrukerapplikasjoner. Ultralav, lavspenningselektronikk til BMP180 er optimalisert for bruk i mobiltelefoner, PDAer, GPS-navigasjonsenheter og utendørs utstyr. Med en lav støy på bare 0,25 m ved rask konverteringstid, tilbyr BMP180 overlegen ytelse. I2C -grensesnittet gir enkel systemintegrasjon med en mikrokontroller. BMP180 er basert på piezo-resistiv teknologi for EMC-robusthet, høy nøyaktighet og linearitet samt langsiktig stabilitet.
Hele BMP -databladet finner du her: BMP180 - Digital trykksensor
Sensorinstallasjon: Følg diagrammet ovenfor og gjør tilkoblingene:
- Vin ==> 3,3V
- GND ==> GND
- SCL ==> GPIO 3
- SDA ==> GPIO 2
Aktiverer I2C -grensesnitt
Gå til RPi Configuration og bekreft at I2C -grensesnittet er aktivert. Hvis ikke, aktiver den og start RPi på nytt.
Bruker BMP180
Hvis alt er installert ok, og alt har vært tilkoblet ok, er du nå klar til å slå på Pi og begynne å se hva BMP180 forteller deg om verden rundt deg.
Det første du må gjøre er å sjekke om Pi ser BMP180. Prøv følgende i et terminalvindu:
sudo i2cdetect -y 1
Hvis kommandoen fungerte, bør du se noe lignende på Terminal Printscreen ovenfor, som viser at BMP180 er på kanal '77'.
Installere BMP180 -biblioteket:
Opprett en katalog for å installere biblioteket:
mkdir BMP180_Sensorcd BMP180_Sensor
Gå til Adafruit GITHub i nettleseren din:
github.com/adafruit/Adafruit_Python_BMP
Last ned biblioteket ved å klikke på nedlasting zip -lenken til høyre og pakke ut arkivet på din Raspberry Pi opprettet mappe. Gå deretter til undermappen som er opprettet og utfør følgende kommando i bibliotekets katalog:
sudo python3 setup.py installere
Åpne Python IDE og opprett et testprogram og navngi det, for eksempel BMP180Test.py
import Adafruit_BMP. BMP085 som 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.read_sealevel_pressure ()))
Utfør testprogrammet:
python3 BMP180Test.py
Ovenstående Terminal -utskriftsskjerm viser resultatet.
Vær oppmerksom på at trykket er presentert i Pa (Pascals). Se neste trinn for å få en bedre forståelse av denne enheten.
Trinn 5: Måling av vær og høyde med BMP180
La oss ta oss tid til å forstå litt mer om hva vi får med BMP -avlesningene. Du kan hoppe over denne delen av opplæringen, eller gå tilbake senere.
Hvis du vil vite mer om sensoravlesninger, kan du gå til denne flotte opplæringen:
BMP180 ble designet for å måle atmosfærisk trykk nøyaktig. Atmosfærisk trykk varierer med både vær og høyde.
Hva er atmosfærisk trykk?
Definisjonen av atmosfæretrykk er en kraft som luften rundt deg utøver på alt. Vekten av gassene i atmosfæren skaper atmosfærisk trykk. En vanlig trykkenhet er "pounds per square inch" eller psi. Vi vil her bruke den internasjonale notasjonen, det vil si newton per kvadratmeter, som kalles pascal (Pa).
Hvis du tok 1 cm bred luftsøyle ville veie ca 1 kg
Denne vekten, som trykker ned på fotavtrykket til den kolonnen, skaper det atmosfæriske trykket som vi kan måle med sensorer som BMP180. Fordi den cm brede luftsøylen veier omtrent 1 kg, følger det at gjennomsnittlig havtrykk er omtrent 101325 pascal, eller bedre, 1013,25 hPa (1 hPa er også kjent som milibar - mbar). Dette vil falle omtrent 4% for hver 300 meter du stiger. Jo høyere du kommer, desto mindre trykk vil du se, fordi kolonnen til toppen av atmosfæren er så mye kortere og veier derfor mindre. Dette er nyttig å vite, for ved å måle trykket og gjøre litt matte kan du bestemme høyden din.
Lufttrykket på 3, 810 meter er bare halvparten av det på havnivå.
BMP180 gir absolutt trykk i pascal (Pa). En pascal er en veldig liten mengde trykk, omtrent mengden et ark papir vil utøve hviler på et bord. Du vil oftere se målinger i hektopascal (1 hPa = 100 Pa). Biblioteket som brukes her gir utganger flytende punktverdier i hPa, som også tilfeldigvis er lik en millibar (mbar).
Her er noen konverteringer til andre trykkenheter:
- 1 hPa = 100 Pa = 1 mbar = 0,001 bar
- 1 hPa = 0,75006168 Torr
- 1 hPa = 0,01450377 psi (pund per kvadrattomme)
- 1 hPa = 0,02953337 inHg (tommer kvikksølv)
- 1 hpa = 0.00098692 atm (standard atmosfærer)
Temperatureffekter
Fordi temperaturen påvirker tettheten til en gass, og tettheten påvirker massen til en gass, og massen påvirker trykket (whew), vil atmosfæretrykket endre seg dramatisk med temperaturen. Piloter kjenner dette som "tetthetshøyde", noe som gjør det lettere å ta av på en kald dag enn en varm fordi luften er tettere og har en større aerodynamisk effekt. For å kompensere for temperaturen inkluderer BMP180 en ganske god temperatursensor samt en trykksensor.
For å utføre en trykkavlesning, må du først ta en temperaturavlesning, deretter kombinere den med en rå trykkavlesning for å komme frem til en endelig temperaturkompensert trykkmåling. (Biblioteket gjør alt dette veldig enkelt.)
Måling av absolutt trykk
Hvis applikasjonen din krever måling av absolutt trykk, er det bare å få en temperaturavlesning og deretter utføre en trykkavlesning (se eksempelskissen for detaljer). Den siste trykkavlesningen vil være i hPa = mbar. Hvis du ønsker det, kan du konvertere dette til en annen enhet ved å bruke konverteringsfaktorene ovenfor.
Vær oppmerksom på at det absolutte trykket i atmosfæren vil variere med både høyden din og gjeldende værmønstre, som begge er nyttige ting å måle.
Værobservasjoner
Atmosfærisk trykk på et gitt sted på jorden (eller hvor som helst med en atmosfære) er ikke konstant. Det komplekse samspillet mellom jordens spinn, aksehelling og mange andre faktorer resulterer i bevegelige områder med høyere og lavere trykk, noe som igjen forårsaker variasjoner i været vi ser hver dag. Ved å se etter endringer i trykket, kan du forutsi kortsiktige endringer i været. For eksempel betyr fallende trykk vanligvis vått vær eller en storm nærmer seg (et lavtrykkssystem beveger seg inn). Stigende trykk betyr vanligvis at klart vær nærmer seg (et høytrykkssystem beveger seg gjennom). Men husk at atmosfæretrykk også varierer med høyden. Det absolutte trykket i huset mitt, Lo Barnechea i Chile (høyde 950m) vil alltid være lavere enn det absolutte trykket i San Francisco for eksempel (mindre enn 2 meter, nesten havnivå). Hvis værstasjoner nettopp rapporterte sitt absolutte trykk, ville det være vanskelig å direkte sammenligne trykkmålinger fra et sted til et annet (og store værmeldinger avhenger av målinger fra så mange stasjoner som mulig).
For å løse dette problemet, fjerner værstasjoner alltid effektene av høyde fra de rapporterte trykkavlesningene ved å matematisk legge til det tilsvarende faste trykket for å få det til å se ut som om avlesningen ble tatt på havnivå. Når du gjør dette, vil en høyere avlesning i San Francisco enn Lo Barnechea alltid være på grunn av værmønstre, og ikke på grunn av høyde.
For å gjøre dette er det en funksjon i biblioteket som kalles havnivå (P, A). Dette tar det absolutte trykket (P) i hPa, og stasjonens nåværende høyde (A) i meter, og fjerner effektene av høyden fra trykket. Du kan bruke denne funksjonen til å sammenligne væravlesningene dine direkte med andre stasjoner rundt om i verden.
Bestemme høyde
Siden trykket varierer med høyden, kan du bruke en trykksensor til å måle høyde (med noen få forbehold). Det gjennomsnittlige trykket i atmosfæren ved havnivå er 1013,25 hPa (eller mbar). Dette faller til null når du klatrer mot plassens vakuum. Fordi kurven for dette frafallet er godt forstått, kan du beregne høydeforskjellen mellom to trykkmålinger (p og p0) ved å bruke en spesifikk ligning.
Hvis du bruker havnivåstrykk (1013,25 hPa) som grunnlinjetrykk (p0), vil utgangen fra ligningen være din nåværende høyde over havet. Det er en funksjon i biblioteket kalt høyde (P, P0) som lar deg få den "beregnede høyden".
Forklaringen ovenfor ble hentet fra BMP 180 Sparkfun -opplæringen.
Trinn 6: Komplett HW
Trinn 7: Sende data til ThingSpeak
På dette tidspunktet lærte vi hvordan vi skal forberede RPi for å fange data fra alle 3 sensorene, skrive dem ut på terminalen. Nå er det på tide å se hvordan du sender disse dataene til en IoT -plattform, ThingSpeak.
La oss begynne!
Først må du ha en konto på ThinkSpeak.com
Følg instruksjonene for å opprette en kanal, og noter deg kanal -ID -en og skrive API -nøkkelen
Last ned Python -skriptet fra GitHub: localData ToTS_v1_EXT.py
La oss kommentere koden viktigste delene:
La oss først importere ThingSpeak -biblioteket, definere WiFi -klienten og definere din lokale ruter og Thinkspeak -legitimasjon:
importer ting
Det er flere måter å kommunisere med ThingSpeak på. Den enkleste måten er å bruke klientbiblioteket til thingspeak.com API utviklet av Mikolaj Chwaliz og Keith Ellis.
Biblioteket kan lastes ned fra https://github.com/mchwalisz/thingspeak eller brukes PIP på terminal:
sudo pip3 installer thingspeak
Neste, inne i skriptet, oppdater ThingSpeak -kanalens legitimasjon
chId = 9999999 # Gå inn med kanal -ID -en din
tsKey = 'ENTER WITH THE CHANNEL WRITE KEY' tsUrl = 'https://api.thingspeak.com/update' ts = thingspeak. Channel (chId, tsUrl, tsKey)
La oss nå initialisere de 3 sensorene:
# DS18B20 1-tråds bibliotek
fra w1thermsensor import W1ThermSensor ds18b20Sensor = W1ThermSensor () # Som standard brukes GPIO 4 av biblioteket # DHT22 Bibliotekimport Adafruit_DHT DHT22Sensor = Adafruit_DHT. DHT22 DHTpin = 16 # BMP180 bibliotek import Adafruit_BMP1P85. P85 Du bør definere den virkelige høyden der værstasjonen din ligger, og oppdatere den globale variabelen "altReal". I mitt tilfelle ligger stasjonen min 950 meter over havet
global altReal
altReal = 950
Når du har kommet inn med stasjonens virkelige høyde som inngang, kan vi oppnå absolutt trykk, havnivåstrykk, temperatur og høyde ved hjelp av funksjonen bmp180GetData (høyde):
def bmp180GetData (høyde):
temp = bmp180Sensor.read_temperature () pres = bmp180Sensor.read_pressure () alt=bmp180Sensor.read_altitude () presSeaLevel = pres/pow (1.0 - altitude/44330.0, 5.255) temp = round (temp, 1) pres = round (pres/100), 2) # absolutt trykk i hPa (eller mbar) alt=rund (alt) presSeaLevel = rund (presSeaLevel/100, 2) # absolutt trykk i hPa (eller mbar) returtemp, pres, alt, presSeaLevel
Funksjonen getLocalData (), vil returnere alle lokale data som fanges opp av stasjonen vår:
def getLocalData ():
global timeString global humLab global tempExt global tempLab global presSL global altLab global presAbs # Få tid til å lese nå = datetime.datetime.now () timeString = now.strftime ("%Y-%m-%d%H:%M") # Les utetemperatur (1 meters avstand) tempExt = round (ds18b20Sensor.get_temperature (), 1) tempLab, presAbs, altLab, presSL = bmp180GetData (altReal) humDHT, tempDHT = Adafruit_DHT.read_retry (DHT22Sensor NoneDHT) og tempDHT er ikke Ingen: humLab = rund (humDHT
Når alle dataene er fanget opp av funksjonene ovenfor, må du sende dem til ThingSpeak. Du vil gjøre det ved å bruke funksjonen sendDataTs ():
def sendDataTs ():
data = {"field1": tempLab, "field2": tempExt, "field3": humLab, "field4": presSL, "field5": altLab} ts.update (data) print ("[INFO] Data sendt for 5 felt: ", tempLab, tempExt, humLab, presSL, altLab)
Med kanaldataene dine oppdatert, lagre skriptet og kjør det på terminalen din:
sudo Python3 localData_ToTs_v1_EXT.py
Om kommunikasjonsprotokoller
Vær oppmerksom på at ved bruk av "thingspeak -biblioteket" importeres "forespørselsbiblioteket", det vil si et Apache2 -lisensiert HTTP -bibliotek, skrevet i Python. Den offisielle forespørselsinstallasjonsdokumentasjonen finner du her:
docs.python-requests.org/en/latest/user/install/
Om nødvendig, før du kjører skriptet, kan du bekrefte om forespørselsbiblioteket er installert:
sudo pip3 installasjonsforespørsler
Alternativt kan du bruke MTTQ som en metode for å sende data til ThingSpeak. MQTT er forskjellig fra HTTP, en gang Den er spesielt designet for å være lett og beregnet for innebygde enheter med lav RAM og CPU -ytelse. I de fleste tilfeller bruker MQTT også mindre båndbredde.
Se denne opplæringen: Oppdater en ThingSpeak -kanal ved hjelp av MQTT på en Raspberry Pi for mer informasjon.
Trinn 8: Sende eksterne data til ThingSpeak ved hjelp av ESP8266
For dette trinnet bruker vi den samme HW som ble forklart i muy tutorial:
IOT GJORT ENKELT: FANGTE FJERNVÆRDATA: UV- OG Lufttemperatur og fuktighet
Koden som vi skal bruke her, er i utgangspunktet den samme som ble brukt på opplæringen. La oss kommentere koden viktigste delene:
La oss først ringe ESP8266 -biblioteket, definere WiFi -klienten og definere din lokale ruter og Thinkspeak -legitimasjon:
/ * NodeMCU ESP12-E */
#inkludere WiFiClient -klient; const char* MY_SSID = "ENTER MED DIN SSDID"; const char* MY_PWD = "ENTER MED DITT PASSORD"; /* Thinkspeak*/ const char* TS_SERVER = "api.thingspeak.com"; String TS_API_KEY = "ENTER WITH THE WRITE NØKKEL";
For det andre, la oss inkludere et veldig viktig bibliotek for IoT -prosjekter: SimpleTimer.h:
/ * TIMER */
#inkludere SimpleTimer timer;
For det tredje, under oppsett (), vil vi starte seriell kommunikasjon, ringe funksjonen connectWiFi () og definere tidtakerne. Vær oppmerksom på at kodelinjen: timer.setInterval (60000L, sendDataTS); ringer funksjonen sendDataTS () hvert 60. sekund for å laste opp data til ThinkSpeak -kanalen.
ugyldig oppsett ()
{… Serial.begin (115200); forsinkelse (10); … connectWifi (); timer.setInterval (60000L, sendDataTS); …}
Til slutt, men ikke minst, under loop (), er den eneste kommandoen som trengs å starte timeren og det er det!
hulrom ()
{… Timer.run (); // Starter SimpleTimer}
Nedenfor kan du se de to viktige funksjonene som brukes til å håndtere Thinkspeak -kommunikasjon:
ESP12-E-tilkobling med ditt WiFi-nettverk:
/***************************************************
*Koble til WiFi ********************************************** ***/ void connectWifi () {Serial.print ("Koble til"+*MY_SSID); WiFi.begynner (MY_SSID, MY_PWD); mens (WiFi.status ()! = WL_CONNECTED) {forsinkelse (1000); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi tilkoblet"); Serial.println (""); }
ESP12-E som sender data til ThinkSpeak:
***************************************************
*Sender data til 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 (hum); postStr += "& field8 ="; postStr += String (dataSensorUV); postStr += "\ r / n / r / n"; client.print ("POST /oppdater HTTP /1.1 / n"); client.print ("Vert: api.thingspeak.com / n"); client.print ("Tilkobling: lukk / n"); client.print ("X-THINGSPEAKAPIKEY:" + TS_API_KEY + "\ n"); client.print ("Innholdstype: application/x-www-form-urlencoded / n"); client.print ("Content-Length:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); forsinkelse (1000); } sendt ++; client.stop (); }
Den komplette koden finnes på min GitHub: NodeMCU_UV_DHT_Sensor_OLED_TS_EXT
Når du har lastet opp koden til NodeMCU. La oss koble til et eksternt batteri og gjøre noen målinger under solen. Jeg legger fjernstasjonen på taket og begynner å fange data på ThingSpeak.com som vist på bildene ovenfor.
Trinn 9: Sluttnotater
Hovedformålet med denne opplæringen var å vise hvordan du kobler Raspberry Pi til ThingSpeak. Dette er flott å fange data og logge dem på en IoT -plattform.
Ved å bruke muligheten sendte vi også data til den spesifikke kanalen og hentet dem fra en ekstern stasjon ved hjelp av en ESP8266. Denne tilnærmingen er OK, men ikke den beste. Fordi vi har en "asynkron" operasjon, prøver noen ganger både RPi og ESP8266 å logge samtidig (eller med et lite intervall) det som tilbakevises av ThingSpeak. Det ideelle ville være at ESP8266 sender data lokalt til Raspberry Pi, og den siste er ansvarlig for å håndtere alle data. Hvis du gjør det, kan "hovedstasjonen" (Raspberry Pi) gjøre tre ting:
- Logg alle data på en lokal database
- Presentere alle data på en lokal webside (ved bruk av kolbe som vist på bildet ovenfor)
- Sender alle dataene til ThingSpeak samtidig.
På en fremtidig opplæring vil vi utforske disse alternativene.
Trinn 10: Konklusjon
Som alltid håper jeg at dette prosjektet kan hjelpe andre å finne veien inn i den spennende elektronikkverdenen!
For detaljer og siste kode, vennligst besøk mitt GitHub-depot: RPi-NodeMCU-Weather-Station
For flere prosjekter, vennligst besøk bloggen min: MJRoBot.org
Følg med! Neste opplæring sender vi data fra en ekstern værstasjon til en sentral, basert på en Raspberry Pi Web -server:
Hilsener fra den sørlige verden!
Se deg i min neste instruerbare!
Takk skal du ha, Marcelo
Anbefalt:
IoT værstasjon med VOC -overvåking: 6 trinn
IoT værstasjon med VOC-overvåking: I denne instruksjonsfilen viser jeg hvordan du bygger en værstasjon med Internet-of-Things (IoT) med overvåking av flyktige organiske forbindelser (VOC). For dette prosjektet utviklet jeg et Do-It-Yourself (DIY) -sett. Maskinvare og programvare er åpen kildekode
NaTaLia værstasjon: Arduino solcelledrevet værstasjon gjort den riktige måten: 8 trinn (med bilder)
NaTaLia værstasjon: Arduino solcelledrevet værstasjon gjort på riktig måte: Etter 1 års vellykket drift på 2 forskjellige steder deler jeg mine solcelledrevne værstasjonsprosjektplaner og forklarer hvordan det utviklet seg til et system som virkelig kan overleve over lang tid perioder fra solenergi. Hvis du følger
IoT ESP8266-basert værstasjon: 6 trinn
IoT ESP8266-basert værstasjon: Vil du bygge et værstasjonsprosjekt uten å bruke noen sensor, og få informasjon om vær fra hele verden? Ved å bruke OpenWeatherMap blir det en skikkelig oppgave
ESP8266 NodeMCU + LM35 + Blynk (IOT Værstasjon/ Digital Temp Sensor): 4 trinn
ESP8266 NodeMCU + LM35 + Blynk (IOT Weather Station/ Digital Temp Sensor): Hei folkens! I denne instruksen skal vi lære å koble LM35 -sensoren til NodeMCU og vise denne temperaturinformasjonen over internett på en smarttelefon med Blynk -applikasjon. (Også i dette prosjektet bruker vi SuperChart -widgeten i Bl
RPi værstasjon og digital klokke: 4 trinn (med bilder)
RPi værstasjon og digital klokke: Dette er et raskt og enkelt prosjekt å lage, og en fin skjerm å vise frem. Den viser både tid, værforhold og temperatur. Og hvis du liker det du ser, følg meg på Instagram og Twitter (@Anders644PI) for å holde tritt med det jeg lager