Përmbajtje:
- Hapi 1: BM - Fatura e Materialeve
- Hapi 2: Instalimi i sensorit të temperaturës dhe lagështisë
- Hapi 3: Instalimi i DS18B20 - Sensori i Temperaturës
- Hapi 4: Instalimi i BMP180
- Hapi 5: Matja e motit dhe lartësisë me BMP180
- Hapi 6: HW e plotë
- Hapi 7: Dërgimi i të dhënave në ThingSpeak
- Hapi 8: Dërgimi i të dhënave në distancë në ThingSpeak duke përdorur ESP8266
- Hapi 9: Shënimet përfundimtare
- Hapi 10: Përfundimi
Video: Stacioni i motit IoT Me RPi dhe ESP8266: 10 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:19
Në mësimet e mëparshme, ne kemi luajtur me NodeMCU, sensorë dhe kemi mësuar se si të kapim dhe regjistrojmë të dhëna në platformën ThingSpeak (një Internet of Things (IoT) që ju lejon të mbledhni dhe ruani të dhënat e sensorëve në cloud dhe të zhvilloni aplikacione IoT):
IOT MADE LEASHT: MAPRIMIN E TAT DHNAVE T W MOTIT TEM TOTOTS: TEMPERATURA UV DHE AIR & NGJESIDSI
Me këtë mësim të ri, ne do të mësojmë se si të bëjmë të njëjtën gjë, por në këtë kohë, duke përdorur një Raspberry Pi për të kapur të dhëna nga disa sensorë të ndryshëm dhe gjithashtu duke eksploruar mënyra të ndryshme të komunikimit midis pajisjeve dhe uebit:
Sensorët dhe lloji i komikimit:
- DHT22 (Temperatura dhe Lagështia) ==> Komunikimi dixhital
- BMP180 (Temperatura dhe Presioni) ==> Protokolli I2C
- DS18B20 (Temperatura) ==> Protokolli 1-tela
Diagrami i Bllokut tregon se çfarë do të marrim në fund me këtë projekt:
Hapi 1: BM - Fatura e Materialeve
- Raspberry Pi V3 - 32,00 dollarë amerikanë
- Sensori i temperaturës dhe lagështisë relative DHT22 - 9.95 dollarë
- Rezistenca 4K7 ohm
- Sensor i temperaturës i papërshkueshëm nga uji DS18B20 - 5.95 dollarë
- Rezistenca 4K7 ohm
- BMP180 Sensori Barometrik i Presionit, Temperaturës dhe Lartësisë - 6.99 USD
Hapi 2: Instalimi i sensorit të temperaturës dhe lagështisë
Sensori i parë që do të instalohet do të jetë DHT22 për kapjen e të dhënave të temperaturës së ajrit dhe lagështisë relative. Faqja ADAFRUIT siguron informacion të shkëlqyeshëm në lidhje me ata sensorë. Më poshtë, disa informacione të marra nga atje:
Vështrim i përgjithshëm
Sensorët e temperaturës dhe lagështisë me kosto të ulët DHT janë shumë themelore dhe të ngadalta, por janë të shkëlqyera për hobistët që duan të bëjnë regjistrimin bazë të të dhënave. Sensorët DHT janë të përbërë nga dy pjesë, një sensor kapacitiv i lagështisë dhe një termistor. Ekziston gjithashtu një çip shumë themelor brenda që bën një konvertim analog në dixhital dhe nxjerr një sinjal dixhital me temperaturën dhe lagështinë. Sinjali dixhital është mjaft i lehtë për tu lexuar duke përdorur çdo mikrokontrollues.
DHT22 Karakteristikat kryesore:
- Çmim i ulët
- Fuqia 3 deri në 5V dhe I/O
- Përdorimi maksimal aktual 2.5mA gjatë konvertimit (gjatë kërkimit të të dhënave)
- I mirë për leximet e lagështisë 0-100% me saktësi 2-5%
- I mirë për leximet e temperaturës -40 deri në 125 ° C accuracy saktësi ± 0.5 ° C
- Shkalla e mostrimit jo më shumë se 0.5 Hz (një herë në 2 sekonda)
- Madhësia e trupit 15.1mm x 25mm x 7.7mm
- 4 kunja me një distancë prej 0.1"
Pasi zakonisht do të përdorni sensorin në distanca më të vogla se 20m, një rezistencë 4K7 ohm duhet të lidhet midis kunjave të të dhënave dhe VCC. Pina e të dhënave dalëse DHT22 do të lidhet me Raspberry GPIO 16. Kontrolloni diagramin e mësipërm elektrik, duke lidhur sensorin me kunjat RPi si më poshtë:
- Pin 1 - Vcc ==> 3.3V
- Pin 2 - Të dhënat ==> GPIO 16
- Pin 3 - Nuk lidhet
- Pin 4 - Gnd ==> Gnd
Mos harroni të instaloni rezistencën 4K7 ohm midis kunjave Vcc dhe Data
Pasi të jetë lidhur sensori, ne gjithashtu duhet të instalojmë bibliotekën e tij në RPi -në tonë.
Instalimi i Bibliotekës DHT:
Në Mjedrën tuaj, duke filluar nga /në shtëpi, shkoni te /Dokumentet
cd Dokumente
Krijoni një drejtori për të instaluar bibliotekën dhe shkoni atje:
mkdir DHT22_Sensor
cd DHT22_Sensor
Në shfletuesin tuaj, shkoni te Adafruit GitHub:
github.com/adafruit/Adafruit_Python_DHT
Shkarkoni bibliotekën duke klikuar në lidhjen zip të shkarkimit në të djathtë dhe zbërtheni arkivin në dosjen tuaj Raspberry Pi të krijuar kohët e fundit. Pastaj shkoni te drejtoria e bibliotekës (nën -dosja që krijohet automatikisht kur e hapni skedarin), dhe ekzekutoni komandën:
sudo python3 setup.py install
Hap një program testimi (DHT22_test.py) nga GITHUBI im
importoni Adafruit_DHT
DHT22Sensor = Adafruit_DHT. DHT22 DHTpin = 16 lagështi, temperaturë = Adafruit_DHT.read_retry (DHT22Sensor, DHTpin) nëse lagështia nuk është Asnjë dhe temperatura nuk është Asnjë: print ('Temp = {0: 0.1f}*C Lagështia = {1: 0.1 f}%'. format (temperaturë, lagështi)) tjetër: print (' Leximi i leximit dështoi. Provo përsëri! ')
Ekzekutoni programin me komandën:
python3 DHT22_test.py
Ekrani i printimit Terminal më poshtë tregon rezultatin.
Hapi 3: Instalimi i DS18B20 - Sensori i Temperaturës
Përmbledhje e sensorit:
Ne do të përdorim në këtë tutorial një version të papërshkueshëm nga uji të sensorit DS18B20. Veryshtë shumë e dobishme për temperaturën e largët në kushte të lagështa, për shembull në një tokë të lagësht. Sensori është i izoluar dhe mund të marrë matje deri në 125oC (Adafrut nuk rekomandon përdorimin e tij mbi 100oC për shkak të xhaketës së tij PVC kabllore).
DS18B20 është një sensor dixhital që e bën të mirë të përdoret edhe në distanca të gjata! Këta sensorë dixhitalë të temperaturës me 1 tela janë mjaft të saktë (± 0.5 ° C në pjesën më të madhe të diapazonit) dhe mund të japin deri në 12 bit saktësi nga konvertuesi dixhital në analog në bord. Ata punojnë shkëlqyeshëm me NodeMCU duke përdorur një kunj të vetëm dixhital, dhe madje mund të lidhni shumë prej tyre në të njëjtën pin, secila ka një ID unike 64-bit të djegur në fabrikë për t'i dalluar ato.
Sensori funksionon nga 3.0 në 5.0V, që do të thotë se mund të fuqizohet drejtpërdrejt nga 3.3V i siguruar nga një prej kunjave të mjedrës (1 ose 17).
Sensori ka 3 tela:
- E zezë: GND
- E kuqe: KQV
- E verdhë: Të dhëna me 1 tela
Këtu, mund të gjeni të dhënat e plota: Fleta e të dhënave DS18B20
Instalimi i sensorit:
Ndiqni diagramin e mësipërm dhe bëni lidhjet:
- Vcc ==> 3.3V
- Gnd ==> Gnd
- Të dhëna ==> GPIO 4 (parazgjedhje për bibliotekën)
Instalimi i Bibliotekës Python:
Tjetra, le të instalojmë bibliotekën Python që do të trajtojë sensorin:
sudo pip3 instaloni w1thermsensor
Para se të ekzekutoni skriptin për të testuar sensorin, kontrolloni nëse ndërfaqja "1-Wire" është e aktivizuar në RPi-në tuaj (shihni ekranin e printimit më sipër)
Mos harroni të rindizni RPi -në tuaj, pasi të keni ndryshuar konfigurimin e tij
Testimi i sensorit:
Për testimin e sensorit mund të përdoret një shkrim i thjeshtë python:
koha e importit
nga w1thermsensor import W1ThermSensor ds18b20Sensor = W1ThermSensor () ndërsa True: temperature = ds18b20Sensor.get_temperature () print ("Temperatura është % s celsius" % temperaturë) koha.gjumë (1)
Hapi 4: Instalimi i BMP180
Përmbledhje e sensorit:
BMP180 është pasardhësi i BMP085, një gjeneratë e re e sensorëve të presionit dixhital me precizion të lartë për aplikimet e konsumatorit. Elektronika jashtëzakonisht e ulët, e tensionit të ulët të BMP180 është optimizuar për përdorim në telefonat celularë, PDA, pajisjet e navigimit GPS dhe pajisjet e jashtme. Me një zhurmë të ulët në lartësi prej vetëm 0.25m në kohë të shpejtë konvertimi, BMP180 ofron performancë superiore. Ndërfaqja I2C lejon integrimin e lehtë të sistemit me një mikrokontrollues. BMP180 bazohet në teknologjinë piezo-rezistente për qëndrueshmërinë EMC, saktësinë e lartë dhe linearitetin, si dhe stabilitetin afatgjatë.
Fleta e të dhënave të plota BMP mund të gjendet këtu: BMP180 - Sensori i Presionit Dixhital
Instalimi i sensorit: Ndiqni diagramin e mësipërm dhe bëni lidhjet:
- Vin ==> 3.3V
- GND ==> GND
- SCL ==> GPIO 3
- SDA ==> GPIO 2
Aktivizimi i ndërfaqes I2C
Shkoni te Konfigurimi RPi dhe konfirmoni që ndërfaqja I2C është e aktivizuar. Nëse jo, aktivizojeni dhe rinisni RPi.
Duke përdorur BMP180
Nëse gjithçka është instaluar në rregull dhe gjithçka është lidhur në rregull, tani jeni gati të ndizni Pi -in tuaj dhe të filloni të shihni atë që BMP180 po ju thotë për botën përreth jush.
Gjëja e parë që duhet të bëni është të kontrolloni nëse Pi e sheh BMP180 tuaj. Provoni sa vijon në një dritare terminale:
sudo i2cdetect -y 1
Nëse komanda funksiononte, duhet të shihni diçka të ngjashme me ekranin e printimit të Terminalit të mësipërm, duke treguar se BMP180 është në kanalin '77'.
Instalimi i Bibliotekës BMP180:
Krijoni një drejtori për të instaluar bibliotekën:
mkdir BMP180_Sensorcd BMP180_Sensor
Në shfletuesin tuaj, shkoni te Adafruit GITHub:
github.com/adafruit/Adafruit_Python_BMP
Shkarkoni bibliotekën duke klikuar në lidhjen zip të shkarkimit në të djathtë dhe zbërtheni arkivin në dosjen tuaj të krijuar Raspberry Pi. Pastaj shkoni te nën -dosja e krijuar dhe ekzekutoni komandën e mëposhtme në drejtorinë e bibliotekës:
sudo python3 setup.py install
Hapni Python IDE tuaj dhe krijoni një program testimi dhe emërtojeni atë, për shembull BMP180Test.py
importoni Adafruit_BMP. BMP085 si BMP085sensor = BMP085. BMP085 () print ('Temp = {0: 0.2f} *C'.format (sensor.read_temperature ())) print (' Presioni = {0: 0.2f} Pa ') format (sensor.read_pressure ())) print ('Lartësia = {0: 0.2f} m'.format (sensor.read_altitude ())] print (' Presioni i nivelit = {0: 0.2f} Pa'.format (sensor.reshtoj_sealevel_presion ()))
Ekzekutoni programin e testimit:
python3 BMP180Test.py
Ekrani i printimit të mësipërm i Terminalit tregon rezultatin.
Vini re se ai presion paraqitet në Pa (Pascals). Shihni hapin tjetër për të kuptuar më mirë këtë njësi.
Hapi 5: Matja e motit dhe lartësisë me BMP180
Le të marrim një kohë për të kuptuar pak më shumë për atë që do të marrim, me leximet e BMP. Ju mund ta kaloni këtë pjesë të mësimit ose të ktheheni më vonë.
Nëse doni të dini më shumë rreth leximeve të sensorit, ju lutemi shkoni te ky tutorial i mrekullueshëm:
BMP180 u krijua për të matur me saktësi presionin atmosferik. Presioni atmosferik ndryshon si nga moti ashtu edhe nga lartësia.
Çfarë është Presioni Atmosferik?
Përkufizimi i presionit atmosferik është një forcë që ajri rreth jush po ushtron mbi gjithçka. Pesha e gazrave në atmosferë krijon presion atmosferik. Një njësi e zakonshme e presionit është "paund për inç katror" ose psi. Ne do të përdorim këtu shënimin ndërkombëtar, që është njutoni për metër katror, të cilat quhen paskal (Pa).
Nëse merrni kolonë ajri të gjerë 1 cm do të peshonte rreth 1 kg
Kjo peshë, duke shtypur në gjurmën e asaj kolone, krijon presionin atmosferik që ne mund të matim me sensorë si BMP180. Për shkak se ajo kolonë e gjerë cm e ajrit peshon rreth 1Kg, rrjedh se presioni mesatar i nivelit të detit është rreth 101325 paskal, ose më mirë, 1013.25 hPa (1 hPa njihet edhe si milibar - mbar). Kjo do të bjerë rreth 4% për çdo 300 metra që ngjiteni. Sa më i lartë të jeni, aq më pak presion do të shihni, sepse kolona në majë të atmosferës është shumë më e shkurtër dhe për këtë arsye peshon më pak. Kjo është e dobishme të dini, sepse duke matur presionin dhe duke bërë matematikë, mund të përcaktoni lartësinë tuaj.
Presioni i ajrit në 3, 810 metra është vetëm gjysma e atij në nivelin e detit.
BMP180 nxjerr presion absolut në paskal (Pa). Një paskal është një sasi shumë e vogël presioni, afërsisht sasia që një fletë letre do të ushtrojë duke u mbështetur në një tryezë. Më shpesh do të shihni matje në hektopaskalë (1 hPa = 100 Pa). Biblioteka e përdorur këtu siguron dalje të vlerave të pikave lundruese në hPa, e cila gjithashtu ndodh të jetë e barabartë me një milibar (mbar).
Këtu janë disa shndërrime në njësitë e tjera të presionit:
- 1 hPa = 100 Pa = 1 mbar = 0.001 bar
- 1 hPa = 0.75006168 Torr
- 1 hPa = 0.01450377 psi (paund për inç katror)
- 1 hPa = 0.02953337 inHg (inç merkuri)
- 1 hpa = 0.00098692 atm (atmosfera standarde)
Efektet e temperaturës
Për shkak se temperatura ndikon në densitetin e një gazi, dhe dendësia ndikon në masën e një gazi, dhe masa ndikon në presionin (whww), presioni atmosferik do të ndryshojë në mënyrë dramatike me temperaturën. Pilotët e dinë këtë si "lartësia e dendësisë", gjë që e bën më të lehtë ngritjen në një ditë të ftohtë sesa një ditë të nxehtë, sepse ajri është më i dendur dhe ka një efekt më të madh aerodinamik. Për të kompensuar temperaturën, BMP180 përfshin një sensor mjaft të mirë të temperaturës, si dhe një sensor presioni.
Për të kryer një lexim presioni, së pari merrni një lexim të temperaturës, pastaj kombinoni atë me një lexim të presionit të papërpunuar për të dalë me një matje përfundimtare të presionit të kompensuar nga temperatura. (Biblioteka i bën të gjitha këto shumë të lehta.)
Matja e Presionit Absolut
Nëse aplikacioni juaj kërkon matjen e presionit absolut, gjithçka që duhet të bëni është të merrni një lexim të temperaturës, pastaj të bëni një lexim presioni (shikoni skicën shembull për detaje). Leximi përfundimtar i presionit do të jetë në hPa = mbar. Nëse dëshironi, mund ta konvertoni këtë në një njësi të ndryshme duke përdorur faktorët e mësipërm të konvertimit.
Vini re se presioni absolut i atmosferës do të ndryshojë si me lartësinë tuaj ashtu edhe me modelet aktuale të motit, të dyja këto janë gjëra të dobishme për t'u matur.
Vëzhgimet e motit
Presioni atmosferik në çdo vend të caktuar në tokë (ose kudo me një atmosferë) nuk është konstant. Ndërveprimi kompleks midis rrotullimit të tokës, pjerrësisë së boshtit dhe shumë faktorëve të tjerë rezultojnë në lëvizjen e zonave me presion më të lartë dhe më të ulët, të cilat nga ana tjetër shkaktojnë ndryshime të motit që shohim çdo ditë. Duke parë ndryshimet në presion, mund të parashikoni ndryshime afatshkurtra të motit. Për shembull, rënia e presionit zakonisht nënkupton mot të lagësht ose një stuhi po afrohet (një sistem me presion të ulët po hyn brenda). Rritja e presionit zakonisht do të thotë që moti i qartë po afrohet (një sistem me presion të lartë po lëviz). Por mbani mend se presioni atmosferik gjithashtu ndryshon me lartësinë. Presioni absolut në shtëpinë time, Lo Barnechea në Kili (lartësia 950m) do të jetë gjithmonë më i ulët se presioni absolut në San Francisko për shembull (më pak se 2 metra, pothuajse niveli i detit). Nëse stacionet e motit sapo raportuan presionin e tyre absolut, do të ishte e vështirë të krahasoheshin drejtpërdrejt matjet e presionit nga një vend në tjetrin (dhe parashikimet e motit në shkallë të gjerë varen nga matjet nga sa më shumë stacione të jetë e mundur).
Për të zgjidhur këtë problem, stacionet e motit heqin gjithmonë efektet e lartësisë nga leximet e tyre të presionit të raportuar duke shtuar matematikisht presionin ekuivalent fiks për të bërë të duket sikur leximi është marrë në nivelin e detit. Kur e bëni këtë, një lexim më i lartë në San Francisko sesa Lo Barnechea do të jetë gjithmonë për shkak të modeleve të motit, dhe jo për shkak të lartësisë.
Për ta bërë këtë, ekziston një funksion në bibliotekë i quajtur niveli i detit (P, A). Kjo merr presionin absolut (P) në hPa, dhe lartësinë aktuale të stacionit (A) në metra, dhe heq efektet e lartësisë nga presioni. Mund të përdorni daljen e këtij funksioni për të krahasuar drejtpërdrejt leximet tuaja të motit me stacionet e tjera në të gjithë botën.
Përcaktimi i Lartësisë
Meqenëse presioni ndryshon me lartësinë, mund të përdorni një sensor presioni për të matur lartësinë (me disa paralajmërime). Presioni mesatar i atmosferës në nivelin e detit është 1013.25 hPa (ose mbar). Kjo zbret në zero ndërsa ngjiteni drejt vakumit të hapësirës. Për shkak se kurba e kësaj rënieje është kuptuar mirë, ju mund të llogaritni ndryshimin e lartësisë midis dy matjeve të presionit (p dhe p0) duke përdorur një ekuacion specifik.
Nëse përdorni presionin e nivelit të detit (1013.25 hPa) si presion bazë (p0), dalja e ekuacionit do të jetë lartësia juaj aktuale mbi nivelin e detit. Ekziston një funksion në bibliotekë i quajtur lartësi (P, P0) që ju lejon të merrni "lartësinë e llogaritur".
Shpjegimi i mësipërm është nxjerrë nga BMP 180 Sparkfun tutorial.
Hapi 6: HW e plotë
Hapi 7: Dërgimi i të dhënave në ThingSpeak
Në këtë pikë, ne mësuam se si të përgatisim RPi për të kapur të dhëna nga të tre sensorët, duke i shtypur ato në terminal. Tani, është koha për të parë se si t'i dërgoni ato të dhëna në platformën IoT, ThingSpeak.
Le të fillojmë!
Së pari, duhet të keni një llogari në ThinkSpeak.com
Ndiqni udhëzimet për të krijuar një kanal dhe mbani shënim ID -në tuaj të kanalit dhe shkruani çelësin API
Shkarkoni Python Script nga GitHub im: localData ToTS_v1_EXT.py
Le të komentojmë pjesët më të rëndësishme të kodit:
Së pari, le të importojmë bibliotekën ThingSpeak, të përcaktojmë klientin WiFi dhe të përcaktojmë kredencialet tuaja lokale të Router -it dhe Thinkspeak:
importoni fjalët
Ka disa mënyra për të komunikuar me ThingSpeak, mënyra më e thjeshtë do të ishte përdorimi i bibliotekës së klientit për API -në thingspeak.com të zhvilluar nga Mikolaj Chwaliz dhe Keith Ellis.
Biblioteka mund të shkarkohet nga https://github.com/mchwalisz/thingspeak ose të jetë duke përdorur PIP në terminal:
sudo pip3 install thingspeak
Tjetra, brenda skenarit, përditësoni kredencialet e kanalit ThingSpeak
chId = 9999999 # Hyni me ID -në e kanalit tuaj
tsKey = 'HYR ME KANALET TUAJA SHKRUAJ' tsUrl = 'https://api.thingspeak.com/update' ts = thingspeak. Kanali (chId, tsUrl, tsKey)
Tani, le të fillojmë 3 sensorët:
# DS18B20 Biblioteka 1-tela
nga w1thermsensor importi W1ThermSensor ds18b20Sensor = W1ThermSensor () # parazgjedhje GPIO 4 është përdorur nga biblioteka # DHT22 Biblioteka importit Adafruit_DHT DHT22Sensor = Adafruit_DHT. DHT22 DHTpin = 16 # BMP180 bibliotekës importit Adafruit_BMP. BMP085 si BMP085 bmp180Sensor = BMP085. BMP085 () Ju duhet të përcaktoni lartësinë e vërtetë ku ndodhet Stacioni juaj i Motit, duke përditësuar ndryshoren globale "altReal". Në rastin tim, Stacioni im ndodhet në 950m mbi nivelin e detit
altReal global
altReal = 950
Pasi të futemi me lartësinë reale të stacionit si hyrje, ne mund të marrim presionin absolut, presionin e nivelit të detit, temperaturën dhe lartësinë duke përdorur funksionin bmp180GetData (lartësia):
def bmp180GetData (lartësia):
temp = bmp180Sensor.read_temperature () pres = bmp180Sensor.read_pressure () alt=bmp180Sensor.read_altitude () presSeaLevel = pres/pow (1.0 - lartësi/44330.0, 5.255) temp = rrumbullak (temp, 1) pres = rrumbullak (pres/100, 2) # presion absolut në hPa (ose mbar) alt=rrumbullak (alt) presSeaLevel = raund (presSeaLevel/100, 2) # presion absolut në hPa (ose mbar) temp i kthimit, pres, alt, presSeaLevel
Funksioni getLocalData (), do të kthejë të gjitha të dhënat lokale që kapen nga stacioni ynë:
def getLocalData ():
koha globaleString globale humLab temp globaleExt globale tempLab globale presSL globale altLab presA globale # Merrni kohë për të lexuar tani = datetime.datetime.now () timeString = tani.strftime ("%Y-%m-%d%H:%M") # Lexo Temperaturën e Jashtme (1 metër distancë) tempExt = rrumbullak (ds18b20Sensor.get_temperature (), 1) tempLab, presAbs, altLab, presSL = bmp180GetData (altReal) humDHT, tempDHT = Adafruit_DHT.read_retry dhe tempDHT nuk është Asnjë: humLab = raund (humDHT
Pasi të keni kapur të gjitha të dhënat nga funksionet e mësipërme, duhet t'i dërgoni ato në ThingSpeak. Ju do ta bëni atë duke përdorur funksionin sendDataTs ():
def sendDataTs ():
të dhëna = {"field1": tempLab, "field2": tempExt, "field3": humLab, "field4": presSL, "field5": altLab} ts.pdritshme (të dhëna) print ("[INFO] Të dhënat e dërguara për 5 fusha: ", tempLab, tempExt, humLab, presSL, altLab)
Me të dhënat e kanalit tuaj të përditësuar, ruani skriptin dhe ekzekutojeni atë në terminalin tuaj:
sudo Python3 localData_ToTs_v1_EXT.py
Rreth protokolleve të komunikimit
Vini re se duke përdorur "bibliotekën e gjërave", "biblioteka e kërkesave" importohet, domethënë një bibliotekë HTTP e Licensuar Apache2, e shkruar në Python. Dokumentacioni zyrtar i Kërkesës për Instalimin mund të gjendet këtu:
docs.python-requests.org/en/latest/user/install/
Nëse është e nevojshme, para se të ekzekutoni skriptin tuaj, mund të verifikoni nëse biblioteka e kërkesave është e instaluar:
kërkesat e instalimit të sudo pip3
Opsionale ju mund të përdorni MTTQ si një metodë për të dërguar të dhëna në ThingSpeak. MQTT është i ndryshëm nga HTTP, një herë isshtë krijuar posaçërisht për të qenë i lehtë dhe i destinuar për pajisjet e ngulitura me RAM dhe performancë të ulët të CPU. Gjithashtu, në shumicën e rasteve, MQTT përdor më pak bandwidth.
Referojuni këtij udhëzuesi: Përditësoni një kanal ThingSpeak duke përdorur MQTT në një Raspberry Pi për më shumë detaje.
Hapi 8: Dërgimi i të dhënave në distancë në ThingSpeak duke përdorur ESP8266
Për këtë hap, ne do të përdorim të njëjtën HW që u shpjegua në mësimin muy:
IOT MADE LEASHT: MAPRIMIN E TAT DHNAVE T W MOTIT TEM TOTOTS: TEMPERATURA UV DHE AIR & NGJESIDSI
Kodi që ne do të përdorim këtu, është në thelb i njëjti i përdorur në atë udhëzues. Le të komentojmë pjesët më të rëndësishme të kodit:
Së pari, le të thërrasim bibliotekën ESP8266, të përcaktojmë klientin WiFi dhe të përcaktojmë kredencialet tuaja lokale të Router -it dhe Thinkspeak:
/ * NodeMCU ESP12-E */
#përfshi klientin WiFiClient; const char* MY_SSID = "HYR ME SSDID TUAJ"; const char* MY_PWD = "HYR ME FJALN TUAJ"; /* Thinkspeak*/ const char* TS_SERVER = "api.thingspeak.com"; String TS_API_KEY = "HYRJE ME ÇELEYSIN TUAJ T SHKRUAR";
Së dyti, le të përfshijmë një bibliotekë shumë të rëndësishme për projektet IoT: SimpleTimer.h:
/ * KOHA *
#përfshi kohëmatësin SimpleTimer;
Së treti, gjatë konfigurimit (), ne do të fillojmë komunikimin serik, do të thërrasim funksionin connectWiFi () dhe do të përcaktojmë kohëmatësit. Vini re se linja e kodit: timer.setInterval (60000L, sendDataTS); do të thërrasë funksionin sendDataTS () çdo 60 sekonda, në mënyrë që të ngarkojë të dhëna në kanalin ThinkSpeak.
void setup ()
{… Serial.fillo (115200); vonesa (10); … ConnectWifi (); timer.setInterval (60000L, sendDataTS); …}
Së fundi, por jo më pak e rëndësishme, gjatë lakut (), komanda e vetme e nevojshme është të filloni kohëmatësin dhe kjo është ajo!
lak void ()
{… Timer.run (); // Nis SimpleTimer}
Më poshtë, mund të shihni dy funksionet e rëndësishme të përdorura për të trajtuar komunikimin Thinkspeak:
Lidhja ESP12-E me rrjetin tuaj WiFi:
/***************************************************
*Lidhja e WiFi ******************************************* ***/ void connectWifi () {Serial.print ("Lidhja me"+*MY_SSID); WiFi.filloj (MY_SSID, MY_PWD); ndërsa (WiFi.status ()! = WL_CONNECTED) {vonesë (1000); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi i lidhur"); Serial.println (""); }
ESP12-E duke dërguar të dhëna në ThinkSpeak:
***************************************************
*Dërgimi i të dhënave në 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 /përditëso HTTP /1.1 / n"); client.print ("Pritësi: api.thingspeak.com / n"); client.print ("Lidhja: mbyll / n"); client.print ("X-THINGSPEAKAPIKEY:" + TS_API_KEY + "\ n"); client.print ("Lloji i përmbajtjes: aplikacioni/x-www-forma-urlencoded / n"); client.print ("Përmbajtja-Gjatësia:"); klient.print (postStr.length ()); client.print ("\ n / n"); klient.print (postStr); vonesa (1000); } dërguar ++; client.stop (); }
Kodi i plotë mund të gjendet në GitHub tim: NodeMCU_UV_DHT_Sensor_OLED_TS_EXT
Pasi të keni ngarkuar kodin në NodeMCU tuaj. Le të lidhim një bateri të jashtme dhe të bëjmë disa matje nën diell. E vendos Stacionin në distancë në çati dhe filloj të kap të dhëna në ThingSpeak.com siç tregohet në fotot e mësipërme.
Hapi 9: Shënimet përfundimtare
Qëllimi kryesor i këtij mësimi ishte të tregonte se si ta lidhni Raspberry Pi me ThingSpeak. Kjo është e shkëlqyeshme për të kapur të dhëna dhe për t'i regjistruar ato në një platformë IoT.
Duke përdorur rastin, ne gjithashtu dërguam të dhëna në atë kanal specifik, duke i kapur ato nga një stacion i largët duke përdorur një ESP8266. Kjo qasje është në rregull, por jo më e mira. Për shkak se ne kemi një operacion "asinkron", ndonjëherë, të dy, RPi dhe ESP8266 përpiqen të regjistrojnë në të njëjtën kohë (ose me një interval të vogël) atë që kundërshtohet nga ThingSpeak. Ideali do të kishte që ESP8266 të dërgonte të dhëna në vend te Raspberry Pi dhe ky i fundit të ishte përgjegjës për të trajtuar të gjitha të dhënat. Duke bërë këtë, "Stacioni kryesor" (Raspberry Pi), mund të bëjë 3 gjëra:
- Regjistroni të gjitha të dhënat në një bazë të dhënash lokale
- Paraqitni të gjitha të dhënat në një Uebfaqe lokale (duke përdorur Flask siç tregohet në foton e mësipërme)
- Dërgimi i të gjitha të dhënave në ThingSpeak në të njëjtën kohë.
Në një tutorial të ardhshëm, ne do t'i eksplorojmë ato mundësi.
Hapi 10: Përfundimi
Si gjithmonë, shpresoj se ky projekt mund të ndihmojë të tjerët të gjejnë rrugën e tyre në botën emocionuese të elektronikës!
Për detaje dhe kodin përfundimtar, ju lutemi vizitoni depozitimin tim GitHub: RPi-NodeMCU-Weather-Station
Për më shumë projekte, ju lutemi vizitoni blogun tim: MJRoBot.org
Qëndroni të sintonizuar! Udhëzimi tjetër ne do të dërgojmë të dhëna nga një stacion moti i largët në një qendror, bazuar në një server në internet Raspberry Pi:
Saludos nga jugu i botës!
Shihemi në udhëzimin tim të ardhshëm!
Faleminderit, Marcelo
Recommended:
Stacioni i motit NaTaLia: Stacioni i motit Arduino me energji diellore Bëhet në rrugën e duhur: 8 hapa (me fotografi)
Stacioni i motit NaTaLia: Stacioni i motit me energji diellore Arduino Bëhet në rrugën e duhur: Pas 1 viti funksionimi të suksesshëm në 2 vende të ndryshme, unë po ndaj planet e mia të projektit të stacionit të motit me energji diellore dhe po shpjegoj se si evoluoi në një sistem i cili me të vërtetë mund të mbijetojë për një kohë të gjatë periudha nga energjia diellore. Nëse ndiqni
Stacioni i motit DIY & Stacioni i sensorit WiFi: 7 hapa (me fotografi)
DIY Weather Station & WiFi Sensor Station: Në këtë projekt do t'ju tregoj se si të krijoni një stacion moti së bashku me një stacion sensor WiFi. Stacioni i sensorit mat të dhënat e temperaturës dhe lagështisë lokale dhe i dërgon ato, përmes WiFi, në stacionin e motit. Stacioni i motit më pas shfaq t
Raspberry PI Regjistrimi i temperaturës dhe lagështisë, Stacioni i motit në re, Wifi dhe Statistikat e lëvizshme: 6 hapa
Regjistrimi i temperaturës dhe lagështisë së Raspberry PI, Stacioni i motit në re, Wifi dhe Statistikat e lëvizshme: Me pajisjen Raspberry PI ju mund të regjistroni të dhënat e temperaturës dhe lagështisë jashtë, në dhomë, serë, laborator, dhomë ftohjeje ose në ndonjë vend tjetër plotësisht falas. Këtë shembull do ta përdorim për të regjistruar temperaturën dhe lagështinë. Pajisja do të lidhet me internetin v
Stacioni i motit RPi dhe Ora dixhitale: 4 hapa (me fotografi)
Stacioni i motit RPi dhe Ora Dixhitale: Ky është një projekt i shpejtë dhe i lehtë për tu bërë, dhe një ekran i bukur për tu shfaqur. Tregon kohën, gjendjen e motit dhe temperaturën. Dhe nëse ju pëlqen ajo që shihni, më ndiqni në Instagram dhe Twitter (@Anders644PI) për të vazhduar me atë që bëj. C
Stacioni i motit Acurite 5 në 1 duke përdorur një Raspberry Pi dhe Weewx (Stacionet e tjera të motit janë të pajtueshme): 5 hapa (me fotografi)
Stacioni i motit Acurite 5 në 1 Duke përdorur një Raspberry Pi dhe Weewx (Stacionet e tjera të motit janë të pajtueshme): Kur kisha blerë stacionin e motit Acurite 5 në 1 doja të isha në gjendje të kontrolloja motin në shtëpinë time ndërsa isha larg. Kur mbërrita në shtëpi dhe e vendosa, kuptova se ose duhej ta kisha ekranin të lidhur me një kompjuter ose të blija shpërndarësin e tyre të zgjuar,