Sisällysluettelo:
- Vaihe 1: BoM - materiaaliluettelo
- Vaihe 2: Lämpötila- ja kosteusanturin asennus
- Vaihe 3: Asenna DS18B20 - lämpötila -anturi
- Vaihe 4: BMP180: n asennus
- Vaihe 5: Sään ja korkeuden mittaaminen BMP180: n avulla
- Vaihe 6: Täydellinen HW
- Vaihe 7: Tietojen lähettäminen ThingSpeakiin
- Vaihe 8: Etädatan lähettäminen ThingSpeakiin ESP8266: n avulla
- Vaihe 9: Viimeiset huomautukset
- Vaihe 10: Johtopäätös
Video: IoT -sääasema RPi: llä ja ESP8266: 10 askelta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Aiemmissa opetusohjelmissa olemme leikkineet NodeMCU: n, antureiden kanssa ja oppineet keräämään ja kirjaamaan tietoja ThingSpeakilla (esineiden internet (IoT) -alusta, jonka avulla voit kerätä ja tallentaa anturitietoja pilveen ja kehittää IoT -sovelluksia):
IOT MADE HELPPO: KAUKOSÄÄN TIETOJEN VALVONTA: UV- JA ILMALÄMPÖTILA & KOSTEUS
Tämän uuden opetusohjelman avulla opimme tekemään saman, mutta tällä kertaa käyttämällä Raspberry Pi -laitetta tietojen keräämiseen useista eri antureista ja tutkimalla myös erilaisia tapoja kommunikoida laitteiden ja verkon välillä:
Anturit ja Cominication -tyyppi:
- DHT22 (lämpötila ja kosteus) ==> Digitaalinen viestintä
- BMP180 (lämpötila ja paine) ==> I2C -protokolla
- DS18B20 (lämpötila) ==> 1-johtiminen protokolla
Lohkokaavio näyttää, mitä saamme tämän projektin lopussa:
Vaihe 1: BoM - materiaaliluettelo
- Raspberry Pi V3 - 32,00 dollaria
- DHT22 lämpötila- ja suhteellisen kosteuden anturi - 9,95 USD
- Vastus 4K7 ohmia
- Vedenpitävä lämpötila -anturi DS18B20 - 5,95 USD
- Vastus 4K7 ohmia
- BMP180 Barometrinen paine-, lämpötila- ja korkeusanturi - 6,99 USD
Vaihe 2: Lämpötila- ja kosteusanturin asennus
Ensimmäinen asennettava anturi on DHT22 ilman lämpötilan ja suhteellisen kosteuden mittaamiseen. ADAFRUIT -sivusto tarjoaa paljon tietoa näistä antureista. Alla, joitakin tietoja on haettu sieltä:
Yleiskatsaus
Edulliset DHT-lämpötila- ja kosteusanturit ovat hyvin yksinkertaisia ja hitaita, mutta ne ovat loistavia harrastajille, jotka haluavat tehdä perustietoja. DHT -anturit koostuvat kahdesta osasta, kapasitiivisesta kosteusanturista ja termistorista. Sisällä on myös hyvin yksinkertainen siru, joka tekee jonkin verran analogista digitaalista muunnosta ja sylkee digitaalisen signaalin lämpötilan ja kosteuden kanssa. Digitaalinen signaali on melko helppo lukea millä tahansa mikro -ohjaimella.
DHT22 Tärkeimmät ominaisuudet:
- Halpa
- 3-5 V: n virta ja I/O
- Enintään 2,5 mA nykyinen käyttö muuntamisen aikana (tietoja pyydettäessä)
- Sopii 0-100% kosteuslukemiin 2-5% tarkkuudella
- Sopii -40 -125 ° C: n lämpötilalukemille ± 0,5 ° C: n tarkkuudella
- Näytteenottotaajuus enintään 0,5 Hz (2 sekunnin välein)
- Rungon koko 15,1 mm x 25 mm x 7,7 mm
- 4 nastaa 0,1 "välein
Kun tavallisesti käytät anturia alle 20 metrin etäisyyksillä, 4K7 ohmin vastus on kytkettävä Data- ja VCC -nastojen väliin. DHT22 -lähtötietotappi liitetään Raspberry GPIO 16 -laitteeseen. Tarkista yllä oleva sähkökaavio liittämällä anturi RPi -nastoihin seuraavasti:
- Nasta 1 - Vcc ==> 3.3V
- Nasta 2 - Data ==> GPIO 16
- Nasta 3 - Ei yhteyttä
- Nasta 4 - Gnd ==> Gnd
Älä unohda asentaa 4K7 ohmin vastusta Vcc- ja Data -nastojen väliin
Kun anturi on kytketty, meidän on myös asennettava sen kirjasto RPi -laitteeseemme.
DHT -kirjaston asentaminen:
Siirry Raspberry -laitteessasi /home -sivulta alkaen kohtaan /Documents
cd -asiakirjat
Luo hakemisto kirjaston asentamista varten ja siirry sinne:
mkdir DHT22_Sensor
cd DHT22_anturi
Siirry selaimellasi Adafruit GitHubiin:
github.com/adafruit/Adafruit_Python_DHT
Lataa kirjasto napsauttamalla lataus zip -linkkiä oikealla ja pura arkisto Raspberry Pi -kansiosta. Siirry sitten kirjaston hakemistoon (alikansio, joka luodaan automaattisesti, kun puret tiedoston) ja suorita komento:
sudo python3 setup.py install
Avaa testiohjelma (DHT22_test.py) GITHUB -laitteestani
Tuo Adafruit_DHT
DHT22Sensor = Adafruit_DHT. DHT22 DHTpin = 16 kosteus, lämpötila = Adafruit_DHT.read_retry (DHT22Sensor, DHTpin), jos kosteus ei ole Ei mitään ja lämpötila ei ole mitään: tulosta ('Temp = {0: 0,1f}*C Kosteus = {1: 0,1 f}%'. muoto (lämpötila, kosteus)) else: print (' Lukeminen epäonnistui. Yritä uudelleen! ')
Suorita ohjelma komennolla:
python3 DHT22_test.py
Alla oleva terminaalin tulostusnäyttö näyttää tuloksen.
Vaihe 3: Asenna DS18B20 - lämpötila -anturi
Anturin yleiskatsaus:
Käytämme tässä opetusohjelmassa vedenpitävää versiota DS18B20 -anturista. Se on erittäin hyödyllinen kauko -lämpötiloissa märissä olosuhteissa, esimerkiksi kosteassa maaperässä. Anturi on eristetty ja voi mitata 125 oC asti (Adafrut ei suosittele sen käyttöä yli 100 oC: n kaapeli -PVC -vaipan vuoksi).
DS18B20 on digitaalinen anturi, joka tekee siitä hyväksi käyttää pitkiäkin matkoja! Nämä 1-johtiminen digitaalinen lämpötila-anturi on melko tarkka (± 0,5 ° C suurella alueella) ja voi antaa jopa 12 bitin tarkkuuden sisäisestä digitaali-analogimuuntimesta. Ne toimivat loistavasti NodeMCU: n kanssa yhdellä digitaalisella nastalla, ja voit jopa liittää useita saman nastaan, jokaisella on ainutlaatuinen 64-bittinen tunnus, joka on poltettu tehtaalla niiden erottamiseksi.
Anturi toimii 3,0 - 5,0 V, mikä tarkoittaa, että sitä voidaan käyttää suoraan 3,3 V: n jännitteellä, joka on saatavana yhdestä Vadelma -nastasta (1 tai 17).
Anturissa on 3 johtoa:
- Musta: GND
- Punainen: VCC
- Keltainen: 1-johtiminen data
Täältä löydät kaikki tiedot: DS18B20 tuotetiedot
Anturin asennus:
Noudata yllä olevaa kaaviota ja tee liitännät:
- Vcc ==> 3.3V
- Gnd ==> Gnd
- Data ==> GPIO 4 (oletus kirjasto)
Python -kirjaston asentaminen:
Asennetaan seuraavaksi Python -kirjasto, joka käsittelee anturia:
sudo pip3 asenna w1thermsensor
Ennen kuin suoritat komentosarjan testataksesi anturia, tarkista, onko 1-johtiminen liitäntä käytössä RPi-laitteessasi (katso yllä oleva tulostusnäyttö)
Muista käynnistää RPi uudelleen sen muuttuessa
Anturin testaus:
Anturin testaamiseen voidaan käyttää yksinkertaista python -komentosarjaa:
tuonnin aika
w1thermsensor -tuonnista W1ThermSensor ds18b20Sensor = W1ThermSensor () kun taas True: lämpötila = ds18b20Sensor.get_temperature () print ("Lämpötila on % s celsius" % lämpötila) time.sleep (1)
Vaihe 4: BMP180: n asennus
Anturin yleiskatsaus:
BMP180 on BMP085: n seuraaja, uuden sukupolven erittäin tarkat digitaaliset paineanturit kuluttajasovelluksiin. BMP180: n erittäin pienitehoinen pienjänniteelektroniikka on optimoitu käytettäväksi matkapuhelimissa, kämmentietokoneissa, GPS-navigointilaitteissa ja ulkoilulaitteissa. BMP180 tarjoaa erinomaisen suorituskyvyn matalalla korkeudella, vain 0,25 m kohinaa nopealla muuntamisajalla. I2C -käyttöliittymä mahdollistaa helpon järjestelmän integroinnin mikro -ohjaimen kanssa. BMP180 perustuu pietsoresistiiviseen tekniikkaan, joka takaa EMC-kestävyyden, suuren tarkkuuden ja lineaarisuuden sekä pitkän aikavälin vakauden.
Koko BMP -tietolomake löytyy täältä: BMP180 - Digitaalinen paineanturi
Anturin asennus: Noudata yllä olevaa kaaviota ja tee liitännät:
- Vin ==> 3.3V
- GND ==> GND
- SCL ==> GPIO 3
- SDA ==> GPIO 2
Otetaan käyttöön I2C -käyttöliittymä
Siirry kohtaan RPi Configuration ja vahvista, että I2C -liitäntä on käytössä. Jos ei, ota se käyttöön ja käynnistä RPi uudelleen.
BMP180: n käyttö
Jos kaikki on asennettu oikein ja kaikki on kytketty oikein, olet nyt valmis käynnistämään Pi -laitteen ja näkemään, mitä BMP180 kertoo sinulle ympäröivästä maailmasta.
Ensimmäinen asia on tarkistaa, näkeekö Pi BMP180: si. Kokeile seuraavaa pääteikkunassa:
sudo i2cdetect -y 1
Jos komento toimi, sinun pitäisi nähdä jotain vastaavaa edellä olevasta päätelaitteen tulostusnäytöstä, joka osoittaa, että BMP180 on kanavalla 77.
BMP180 -kirjaston asentaminen:
Luo hakemisto kirjaston asentamiseksi:
mkdir BMP180_Sensorcd BMP180_Sensor
Siirry selaimellasi Adafruit GITHubiin:
github.com/adafruit/Adafruit_Python_BMP
Lataa kirjasto napsauttamalla lataus zip -linkkiä oikealla ja pura arkisto Raspberry Pi -luodusta kansiosta. Siirry sitten luotuun alikansioon ja suorita seuraava komento kirjaston hakemistossa:
sudo python3 setup.py install
Avaa Python IDE ja luo testiohjelma ja nimeä se, esimerkiksi BMP180Test.py
Tuo Adafruit_BMP. BMP085 muodossa BMP085sensor = BMP085. format (sensor.read_pressure ())) print ('Altitude = {0: 0.2f} m'.format (sensor.read_altitude ())) print (' Sealevel Pressure = {0: 0.2f} Pa'.format (anturi.read_sealevel_pressure ()))
Suorita testiohjelma:
python3 BMP180Test.py
Yllä oleva terminaalin tulostusnäyttö näyttää tuloksen.
Huomaa, että paine esitetään Pa (Pascals). Katso seuraava vaihe ymmärtääksesi paremmin tätä laitetta.
Vaihe 5: Sään ja korkeuden mittaaminen BMP180: n avulla
Otetaan hetki aikaa ymmärtää hieman enemmän siitä, mitä saamme BMP -lukemien avulla. Voit ohittaa tämän osan opetusohjelmasta tai palata myöhemmin.
Jos haluat tietää enemmän anturin lukemista, siirry tähän hienoon opetusohjelmaan:
BMP180 on suunniteltu mittaamaan tarkasti ilmakehän paine. Ilmanpaine vaihtelee sekä sään että korkeuden mukaan.
Mikä on ilmakehän paine?
Ilmanpaineen määritelmä on voima, jonka ympärilläsi oleva ilma vaikuttaa kaikkeen. Kaasujen paino ilmakehässä luo ilmanpaineen. Yleinen paineyksikkö on "kiloa neliötuumaa" tai psi. Käytämme tässä kansainvälistä merkintää, joka on newtoneja neliömetriä kohti, joita kutsutaan pascaleiksi (Pa).
Jos ottaisit 1 cm leveän ilmakolonnin, se painaisi noin 1 kg
Tämä paino, joka painaa kyseisen sarakkeen jalanjälkeä, luo ilmakehän paineen, jonka voimme mitata BMP180: n kaltaisilla antureilla. Koska tuumaa cm leveä ilmakehä painaa noin 1 kg, tästä seuraa, että keskimääräinen merenpinnan paine on noin 101325 pascaalia tai parempi, 1013,25 hPa (1 hPa tunnetaan myös nimellä milibar - mbar). Tämä laskee noin 4% jokaista 300 metriä kohti. Mitä korkeammalle nouset, sitä vähemmän paineita näet, koska ilmakehän yläreunan sarake on paljon lyhyempi ja painaa siksi vähemmän. Tämä on hyödyllistä tietää, koska mittaamalla paineen ja laskemalla voit määrittää korkeutesi.
Ilmanpaine 3 810 metrissä on vain puolet merenpinnan paineesta.
BMP180 antaa absoluuttisen paineen paskalina (Pa). Yksi pascal on hyvin pieni paine, suunnilleen se määrä, jonka paperiarkki levittää pöydälle. Näet useammin hektopascalia (1 hPa = 100 Pa). Tässä käytetty kirjasto antaa ulos liukulukuarvoja hPa: ssa, joka myös sattuu olemaan yhtä millibaaria (mbar).
Tässä muutamia muunnoksia muihin paineyksiköihin:
- 1 hPa = 100 Pa = 1 mbar = 0,001 bar
- 1 hPa = 0.75006168 Torr
- 1 hPa = 0,01450377 psi (kiloa neliötuumaa kohti)
- 1 hPa = 0,02953337 inHg (tuumaa elohopeaa)
- 1 hpa = 0,00098692 atm (vakioilmakehä)
Lämpötilan vaikutukset
Koska lämpötila vaikuttaa kaasun tiheyteen ja tiheys vaikuttaa kaasun massaan ja massa vaikuttaa paineeseen (Whew), ilmanpaine muuttuu dramaattisesti lämpötilan myötä. Lentäjät tuntevat tämän "tiheyskorkeutena", mikä helpottaa nousua kylmänä päivänä kuin kuumana, koska ilma on tiheämpää ja sillä on suurempi aerodynaaminen vaikutus. Lämpötilan kompensoimiseksi BMP180 sisältää melko hyvän lämpötila -anturin sekä paineanturin.
Voit suorittaa paineen lukemisen ensin mittaamalla lämpötilan ja yhdistämällä sen sitten raakapaineen lukemaan, jotta saat lopullisen lämpötilakompensoidun paineenmittauksen. (Kirjasto tekee tästä kaikesta erittäin helppoa.)
Absoluuttisen paineen mittaaminen
Jos sovelluksesi vaatii absoluuttisen paineen mittaamista, sinun tarvitsee vain saada lämpötilalukema ja suorittaa sitten paineen lukeminen (katso lisätietoja esimerkkiluonnoksesta). Lopullinen paineen lukema on hPa = mbar. Halutessasi voit muuntaa tämän eri yksiköksi käyttämällä yllä olevia muuntokertoimia.
Huomaa, että ilmakehän absoluuttinen paine vaihtelee sekä korkeutesi että nykyisten sääolojen mukaan, jotka molemmat ovat hyödyllisiä mitattavia asioita.
Säähavainnot
Ilmanpaine missään maan päällä (tai missä tahansa ilmakehässä) ei ole vakio. Monimutkainen vuorovaikutus maan spinin, akselin kallistuksen ja monien muiden tekijöiden välillä johtaa liikkuviin alueisiin, joissa on korkeampi ja matalampi paine, mikä puolestaan aiheuttaa vaihteluja säässä, jota näemme päivittäin. Paineen muutoksia seuraamalla voit ennustaa lyhyen aikavälin säämuutoksia. Esimerkiksi paineen laskeminen tarkoittaa yleensä märkää säätä tai myrskyä (lähestyy matalapainejärjestelmää). Paineen nousu tarkoittaa yleensä selkeän sään lähestymistä (korkeapainejärjestelmä liikkuu läpi). Muista kuitenkin, että ilmanpaine vaihtelee myös korkeuden mukaan. Absoluuttinen paine talossani, Lo Barnecheassa Chilessä (korkeus 950 m) on aina alhaisempi kuin esimerkiksi San Franciscon absoluuttinen paine (alle 2 metriä, melkein merenpinta). Jos sääasemat ilmoittivat juuri absoluuttisen paineensa, paineen mittauksia paikasta toiseen olisi vaikea verrata suoraan (ja laajamittaiset sääennusteet riippuvat mahdollisimman monen aseman mittauksista).
Tämän ongelman ratkaisemiseksi sääasemat poistavat aina korkeuden vaikutukset ilmoitetuista painelukemistaan lisäämällä matemaattisesti vastaavan kiinteän paineen, jotta se näyttäisi siltä, että lukema otettaisiin merenpinnasta. Kun teet tämän, San Franciscossa korkeampi lukema kuin Lo Barnecheassa on aina sääolojen eikä korkeuden vuoksi.
Tätä varten kirjastossa on toiminto nimeltä merenpinta (P, A). Tämä mittaa absoluuttisen paineen (P) hPa: ssa ja aseman nykyisen korkeuden (A) metreinä ja poistaa korkeuden vaikutukset paineesta. Tämän toiminnon tuloksen avulla voit verrata säälukemiasi suoraan muihin asemiin ympäri maailmaa.
Korkeuden määrittäminen
Koska paine vaihtelee korkeuden mukaan, voit mitata korkeuden paineanturilla (muutamia varoituksia lukuun ottamatta). Ilmakehän keskimääräinen paine merenpinnalla on 1013,25 hPa (tai mbar). Tämä putoaa nollaan, kun nouset kohti avaruuden tyhjiötä. Koska tämän pudotuksen käyrä on hyvin ymmärretty, voit laskea korkeuseron kahden painemittauksen (p ja p0) välillä käyttämällä tiettyä yhtälöä.
Jos käytät peruspaineena (p0) merenpinnan painetta (1013,25 hPa), yhtälön tulos on nykyinen korkeutesi merenpinnan yläpuolella. Kirjastossa on toiminto nimeltä korkeus (P, P0), jonka avulla saat "lasketun korkeuden".
Yllä oleva selitys otettiin BMP 180 Sparkfun -opetusohjelmasta.
Vaihe 6: Täydellinen HW
Vaihe 7: Tietojen lähettäminen ThingSpeakiin
Tässä vaiheessa opimme valmistamaan RPi: n tallentamaan tiedot kaikista kolmesta anturista ja tulostamaan ne päätelaitteelle. Nyt on aika nähdä, kuinka lähettää nämä tiedot IoT -alustalle, ThingSpeakille.
Aloitetaanpa!
Ensinnäkin sinulla on oltava tili ThinkSpeak.com -sivustolla
Luo kanava noudattamalla ohjeita ja merkitse muistiin kanavatunnuksesi ja Write API -avaimesi
Lataa Python -skripti GitHubista: localData ToTS_v1_EXT.py
Kommentoidaan koodin tärkeimmät osat:
Tuodaan ensin ThingSpeak -kirjasto, määritetään WiFi -asiakas ja määritetään paikalliset reitittimen ja Thinkspeakin kirjautumistiedot:
tuoda asioita puhumaan
On olemassa useita tapoja kommunikoida ThingSpeakin kanssa, yksinkertaisin tapa olisi käyttää Mikolaj Chwalizin ja Keith Ellisin kehittämää thingspeak.com -sovellusliittymän asiakaskirjastoa.
Kirjasto voidaan ladata osoitteesta https://github.com/mchwalisz/thingspeak tai käyttää PIP: tä päätteessä:
sudo pip3 asenna thingspeak
Päivitä sitten komentosarjan sisällä ThingSpeak -kanavan tunnistetiedot
chId = 9999999 # Anna kanavatunnuksesi
tsKey = 'ENTER WAN CHANNEL WRITE KEY' tsUrl = 'https://api.thingspeak.com/update' ts = thingspeak. Channel (chId, tsUrl, tsKey)
Alustetaan nyt kolme anturia:
# DS18B20 1-johtiminen kirjasto
w1thermsensor tuonti W1ThermSensor ds18b20Sensor = W1ThermSensor () # Kirjasto käyttää oletuksena GPIO 4: tä Määritä sääaseman todellinen korkeus päivittämällä globaali muuttuja "altReal". Minun tapauksessani asemani sijaitsee 950 m merenpinnan yläpuolella
maailmanlaajuinen altReal
altReal = 950
Kun olet syöttänyt aseman todellisen korkeuden tulona, voimme saada absoluuttisen paineen, merenpinnan paineen, lämpötilan ja korkeuden käyttämällä toimintoa bmp180GetData (korkeus):
def bmp180GetData (korkeus):
temp = bmp180Sensor.read_temperature () pres = bmp180Sensor.read_pressure () alt=bmp180Sensor.read_altitude () presSeaLevel = pres/pow (1.0 - korkeus/44330.0, 5.255) temp = pyöreä (temp, 1) pres = round (pres/100, 2) # absoluuttinen paine hPa (tai mbar) alt=pyöreä (alt) presSeaLevel = pyöreä (presSeaLevel/100, 2) # absoluuttinen paine hPa (tai mbar) paluulämpötila, pres, alt, presSeaLevel
Funktio getLocalData () palauttaa kaikki asemamme tallentamat paikalliset tiedot:
def getLocalData ():
global timeString global humLab global tempExt global tempLab global presSL global altLab global presAbs # Hanki lukemisaika nyt = datetime.datetime.now () timeString = now.strftime ("%Y-%m-%d%H:%M") # Luku Ulkolämpötila (1 metrin etäisyys) ja tempDHT ei ole Ei mitään: humLab = pyöreä (humDHT
Kun olet tallentanut kaikki yllä olevien toimintojen tallentamat tiedot, sinun on lähetettävä ne ThingSpeakiin. Voit tehdä sen käyttämällä sendDataTs () -toimintoa:
def sendDataTs ():
data = {"field1": tempLab, "field2": tempExt, "field3": humLab, "field4": presSL, "field5": altLab} ts.update (data) print ("[INFO] 5 kentän tiedot lähetetty: ", tempLab, tempExt, humLab, presSL, altLab)
Kun kanavatiedot on päivitetty, tallenna komentosarja ja suorita se päätteessäsi:
sudo Python3 localData_ToTs_v1_EXT.py
Tietoja viestintäprotokollista
Huomaa, että "thingspeak -kirjastoa" käytettäessä "pyyntökirjasto" tuodaan eli Apache2 -lisensoitu HTTP -kirjasto, joka on kirjoitettu Pythonilla. Virallinen Request Installation -asiakirja löytyy täältä:
docs.python-requests.org/en/latest/user/install/
Tarvittaessa voit tarkistaa ennen komentosarjan suorittamista, onko pyyntökirjasto asennettu:
sudo pip3 -asennuspyynnöt
Vaihtoehtoisesti voit käyttää MTTQ -menetelmää tietojen lähettämiseen ThingSpeakiin. MQTT on erilainen kuin HTTP, kun se on suunniteltu kevyeksi ja tarkoitettu sulautetuille laitteille, joilla on alhainen RAM- ja suorittimen suorituskyky. Lisäksi useimmissa tapauksissa MQTT käyttää vähemmän kaistanleveyttä.
Katso tämä opetusohjelma: Päivitä ThingSpeak -kanava käyttämällä Raspberry Pi: n MQTT: tä saadaksesi lisätietoja.
Vaihe 8: Etädatan lähettäminen ThingSpeakiin ESP8266: n avulla
Tässä vaiheessa käytämme samaa HW: tä, joka selitettiin muy -opetusohjelmassa:
IOT MADE HELPPO: KAUKOSÄÄN TIETOJEN VALVONTA: UV- JA ILMALÄMPÖTILA & KOSTEUS
Tässä käyttämämme koodi on pohjimmiltaan sama kuin siinä opetusohjelmassa. Kommentoidaan koodin tärkeimmät osat:
Soitetaan ensin ESP8266 -kirjastoon, määritetään WiFi -asiakas ja määritetään paikalliset reitittimen ja Thinkspeakin kirjautumistiedot:
/ * SolmuMCU ESP12-E */
#Sisällytä WiFiClient -asiakas; const char* MY_SSID = "ANNA SSDID -TIEDOSI"; const char* MY_PWD = "ANNA SALASANASI"; /* Thinkspeak*/ const char* TS_SERVER = "api.thingspeak.com"; String TS_API_KEY = "KIRJOITA KIRJOITETTU AVAIN";
Toiseksi, sisällytetään erittäin tärkeä kirjasto IoT -projekteille: SimpleTimer.h:
/ * AJASTIN */
#sisältää SimpleTimer -ajastimen;
Kolmanneksi, asennuksen () aikana aloitamme sarjaliikenteen, kutsumme toiminnon connectWiFi () ja määritämme ajastimet. Huomaa, että koodirivi: timer.setInterval (60000L, sendDataTS); kutsuu funktiota sendDataTS () 60 sekunnin välein ladatakseen tietoja ThinkSpeak -kanavalle.
mitätön asennus ()
{… Sarja.alku (115200); viive (10); … ConnectWifi (); timer.setInterval (60000L, sendDataTS); …}
Lopuksi, mutta ei vähäisimpänä, silmukan () aikana ainoa tarvittava komento on käynnistää ajastin ja se on siinä!
tyhjä silmukka ()
{… Timer.run (); // Käynnistää SimpleTimer}
Alla näet kaksi tärkeää toimintoa, joita käytetään Thinkspeak -viestinnän käsittelyyn:
ESP12-E-yhteys WiFi-verkkoon:
/***************************************************
*WiFi -yhteyden muodostaminen *********************************************** ***/ void connectWifi () {Serial.print ("Yhdistäminen"+*MY_SSID); WiFi.begin (MY_SSID, MY_PWD); while (WiFi.status ()! = WL_CONNECTED) {delay (1000); Serial.print ("."); } Sarja.println (""); Serial.println ("WiFi -yhteys"); Serial.println (""); }
ESP12-E lähettää tietoja ThinkSpeakiin:
***************************************************
*Tietojen lähettäminen Thinkspeak -kanavalle ******************************************** ******/ void sendDataTS (void) {if (client.connect (TS_SERVER, 80)) {String postStr = TS_API_KEY; postStr += "& field6 ="; postStr += Merkkijono (lämpötila); postStr += "& field7 ="; postStr += Jono (hum); postStr += "& field8 ="; postStr += Jono (dataSensorUV); postStr += "\ r / n / r / n"; client.print ("POST /päivitä HTTP /1.1 / n"); client.print ("Isäntä: api.thingspeak.com / n"); client.print ("Yhteys: sulje / 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); viive (1000); } lähetetty ++; client.stop (); }
Koko koodi löytyy GitHubistani: NodeMCU_UV_DHT_Sensor_OLED_TS_EXT
Kun olet ladannut koodin NodeMCU -laitteeseesi. Kytketään ulkoinen akku ja tehdään mittauksia auringon alla. Laitan etäaseman katolle ja aloitan tietojen tallentamisen ThingSpeak.com -sivustolla yllä olevien kuvien mukaisesti.
Vaihe 9: Viimeiset huomautukset
Tämän opetusohjelman päätarkoitus oli näyttää, miten Raspberry Pi liitetään ThingSpeakiin. Tämä on hienoa kaapata tietoja ja kirjata ne IoT -alustalle.
Käytimme tilaisuutta hyväksemme myös lähettämällä tietoja kyseiselle kanavalle ja kaappaamalla ne etäasemalta ESP8266: n avulla. Tämä lähestymistapa on OK, mutta ei paras. Koska meillä on "asynkroninen" toiminto, joskus sekä RPi että ESP8266 yrittävät kirjata samaan aikaan (tai pienellä aikavälillä) sen, mitä ThingSpeak kumoaa. Ihannetapauksessa ESP8266 lähettää tiedot paikallisesti Raspberry Pi: lle ja viimeinen vastaa kaikkien tietojen käsittelystä. Tällöin pääasema (Raspberry Pi) voisi tehdä kolme asiaa:
- Kirjaa kaikki tiedot paikalliseen tietokantaan
- Esitä kaikki tiedot paikallisella verkkosivulla (käyttämällä pulloa yllä olevan kuvan mukaisesti)
- Kaikki tiedot lähetetään ThingSpeakiin samaan aikaan.
Tulevassa opetusohjelmassa tutkimme näitä vaihtoehtoja.
Vaihe 10: Johtopäätös
Kuten aina, toivon, että tämä projekti voi auttaa muita löytämään tiensä elektroniikan jännittävään maailmaan!
Lisätietoja ja lopullisen koodin löydät GitHub-varastostani: RPi-NodeMCU-Weather-Station
Lisää projekteja löydät blogistani: MJRoBot.org
Pysy kanavalla! Seuraava opetusohjelma lähetämme tietoja etäsääasemalta keskusasemalle Raspberry Pi -verkkopalvelimen perusteella:
Terveisiä etelästä maailmasta!
Nähdään seuraavassa ohjeessani!
Kiitos, Marcelo
Suositeltava:
Bluetooth RC -auto STM32F103C: llä ja L293D: llä - Edullinen: 5 vaihetta
Bluetooth RC -auto STM32F103C: llä ja L293D: llä - Edullista: Tein Bluetooth Arduino -auton, kuten tässä kuvattu, Ardumotive_com. Ongelmani olivat akut ja niiden paino sekä kustannukset. Sittemmin matkapuhelimien halvoista virtapankkeista on tullut erittäin edullisia. Kaikki mitä tarvitsen
Alexa Ääniohjattu Raspberry Pi Drone IoT: llä ja AWS: llä: 6 vaihetta (kuvilla)
Alexa Ääniohjattu Raspberry Pi Drone IoT: llä ja AWS: llä: Hei! Nimeni on Armaan. Olen 13-vuotias Massachusettsin poika. Tämä opetusohjelma näyttää, kuten voit päätellä otsikosta, kuinka rakentaa Raspberry Pi Drone. Tämä prototyyppi osoittaa, kuinka dronit kehittyvät ja kuinka suuri rooli niillä voi olla
Sisäkasvien kastelu NodeMCU: lla, paikallisella Blynk -palvelimella ja Blynk Apk: lla, säädettävä asetuspiste: 3 vaihetta
Sisäkasvien kastelu NodeMCU: lla, paikallisella Blynk -palvelimella ja Blynk Apk: llä, säädettävä asetuspiste: Olen rakentanut tämän projektin, koska sisäkasvieni on oltava terveitä, vaikka olen lomalla pitkään ja pidän ajatuksesta hallita tai ainakin seurata kaikkia mahdollisia asioita, joita kotona tapahtuu Internetin kautta
Neopixel Ws2812 Rainbow LED-hehku M5stick-C: llä - Sateenkaaren ajaminen Neopixel Ws2812: llä M5stack M5stick C: n avulla Arduino IDE: 5 askelta
Neopixel Ws2812 Rainbow LED-hehku M5stick-C: llä | Sateenkaaren ajaminen Neopixel Ws2812: llä M5stack M5stick C: n käyttäminen Arduino IDE: n avulla: Hei kaverit, tässä ohjeessa opimme käyttämään neopixel ws2812 LED-valoja tai led-nauhaa tai led-matriisia tai led-rengasta m5stack m5stick-C -kehityskortilla Arduino IDE: n kanssa ja teemme sateenkaarikuvio sen kanssa
Älypuhelintelakka USB: llä ja HDMI: llä: 6 vaihetta
Älypuhelintelakka USB: llä ja HDMI: llä: Tämä on opas rakentaa älypuhelintelakka, jossa on neljä USB -tuloa, HDMI -lähtö ja USB C -läpivienti lataamista varten. monenlaisiin USB -laitteisiin, kuten näppäimistöihin, hiiriin