Orodha ya maudhui:

Kituo cha hali ya hewa cha IoT kilicho na RPi na ESP8266: Hatua 10
Kituo cha hali ya hewa cha IoT kilicho na RPi na ESP8266: Hatua 10

Video: Kituo cha hali ya hewa cha IoT kilicho na RPi na ESP8266: Hatua 10

Video: Kituo cha hali ya hewa cha IoT kilicho na RPi na ESP8266: Hatua 10
Video: DEMU ALIWA NYUMA HADI KINYESI CHATOKA (ANGALIA VIDEO HADI MWISHO) 2024, Julai
Anonim
Kituo cha hali ya hewa cha IoT kilicho na RPi na ESP8266
Kituo cha hali ya hewa cha IoT kilicho na RPi na ESP8266

Kwenye mafunzo ya hapo awali, tumekuwa tukicheza na NodeMCU, sensorer na kujifunza jinsi ya kunasa na kuweka data kwenye ThingSpeak (jukwaa la Mtandao la Vitu (IoT) ambalo hukuruhusu kukusanya na kuhifadhi data ya sensorer katika wingu na kukuza programu za IoT):

IOT IMEFANYWA KWA URAHISI: KUTEKA DATA YA HALI YA HALI YA HEWA: UVI JUU YA JOTO NA HEWA

Na mafunzo haya mapya, tutajifunza jinsi ya kufanya vivyo hivyo lakini kwa wakati huu, kwa kutumia Raspberry Pi kukamata data kutoka kwa sensorer kadhaa tofauti na pia kutafuta njia tofauti za kuwasiliana kati ya vifaa na wavuti:

Aina ya Sensorer na Cominication:

  • DHT22 (Joto na Unyevu) ==> Mawasiliano ya dijiti
  • BMP180 (Joto na Shinikizo) ==> Itifaki ya I2C
  • DS18B20 (Joto) ==> Itifaki 1 ya Waya

Mchoro wa Block unaonyesha kile tutapata mwisho na mradi huu:

Picha
Picha

Hatua ya 1: BoM - Muswada wa Vifaa

  1. Raspberry Pi V3 - US $ 32.00
  2. Joto la DHT22 na Sensorer ya Unyevu wa Jamaa - USD 9.95
  3. Resistor 4K7 ohm
  4. Sensor ya Joto lisilo na maji la DS18B20 - USD 5.95
  5. Resistor 4K7 ohm
  6. Shinikizo la Barometric BMP180, Joto na Sensor ya urefu - USD 6.99

Hatua ya 2: Kufunga Sensorer ya Joto na Unyevu

Kufunga Sensorer ya Joto na Unyevu
Kufunga Sensorer ya Joto na Unyevu

Sensorer ya kwanza kusanikishwa itakuwa DHT22 ya kukamata joto la hewa na data ya unyevu. Tovuti ya ADAFRUIT hutoa habari nzuri juu ya sensorer hizo. Bellow, habari zingine zinapatikana kutoka hapo:

Maelezo ya jumla

Gharama ya DHT ya joto la chini na sensorer ya unyevu ni ya msingi sana na polepole lakini ni nzuri kwa wanaovutia ambao wanataka kufanya ukataji wa data msingi. Sensorer za DHT zimeundwa kwa sehemu mbili, sensorer ya unyevu wa unyevu, na kipima joto. Pia kuna chip msingi sana ndani ambayo hufanya analog fulani kwa ubadilishaji wa dijiti na hutema ishara ya dijiti na joto na unyevu. Ishara ya dijiti ni rahisi kusoma kwa kutumia microcontroller yoyote.

Tabia kuu za DHT22:

  • Gharama nafuu
  • 3 hadi 5V nguvu na I / O
  • Matumizi ya sasa ya kiwango cha juu cha 2.5mA wakati wa ubadilishaji (wakati unaomba data)
  • Nzuri kwa usomaji wa unyevu wa 0-100% na usahihi wa 2-5%
  • Nzuri kwa -40 hadi 125 ° C usomaji wa joto ± 0.5 ° C usahihi
  • Hakuna zaidi ya kiwango cha sampuli 0.5 Hz (mara moja kila sekunde 2)
  • Ukubwa wa mwili 15.1mm x 25mm x 7.7mm
  • Pini 4 zilizo na nafasi 0.1"

Mara moja kawaida utatumia sensa kwa umbali chini ya 20m, kontena la 4K7 ohm inapaswa kushikamana kati ya pini za Takwimu na VCC. Pini ya data ya pato la DHT22 itaunganishwa na Raspberry GPIO 16. Angalia mchoro wa umeme hapo juu, unganisha sensa na pini za RPi kama ilivyo hapo chini:

  1. Bandika 1 - Vcc ==> 3.3V
  2. Bandika 2 - Takwimu ==> GPIO 16
  3. Bandika 3 - Sio Unganisha
  4. Bandika 4 - Gnd ==> Gnd

Usisahau Kusanikisha kipingao cha 4K7 ohm kati ya pini za Vcc na Takwimu

Wakati sensor imeunganishwa, lazima pia tuweke maktaba yake kwenye RPi yetu.

Kusanikisha Maktaba ya DHT:

Kwenye Raspberry yako, kuanzia / nyumbani, nenda kwa / Nyaraka

Hati za cd

Unda saraka ya kusanikisha maktaba na uhamie huko:

mkdir DHT22_Sensor

cd DHT22_Sensor

Kwenye kivinjari chako, nenda kwa Adafruit GitHub:

github.com/adafruit/Adafruit_Python_DHT

Pakua maktaba kwa kubofya kiunga cha zip ya kupakua kulia na ufungue kumbukumbu kwenye folda yako ya Raspberry Pi iliyoundwa hivi karibuni. Kisha nenda kwenye saraka ya maktaba (folda ndogo ambayo imeundwa kiotomatiki wakati ulifungua faili), na utekeleze amri:

sudo python3 setup.py kufunga

Fungua programu ya majaribio (DHT22_test.py) kutoka kwa GITHUB yangu

kuagiza Adafruit_DHT

DHT22Sensor = Adafruit_DHT. DHT22 DHTpin = 16 unyevu, joto = Adafruit_DHT.read_retry (DHT22Sensor, DHTpin) ikiwa unyevu sio na hakuna joto hakuna: chapa f}% '. fomati (joto, unyevu)) kingine: chapisha (' Imeshindwa kupata usomaji. Jaribu tena! ')

Tekeleza mpango huo kwa amri:

chatu3 DHT22_test.py

Skrini ya kuchapisha ya Kituo cha chini inaonyesha matokeo.

Picha
Picha

Hatua ya 3: Kuweka DS18B20 - Sensor ya Joto

Kufunga DS18B20 - Sensor ya Joto
Kufunga DS18B20 - Sensor ya Joto
Kufunga DS18B20 - Sensor ya Joto
Kufunga DS18B20 - Sensor ya Joto

Muhtasari wa Sensorer:

Tutatumia katika mafunzo haya toleo lisilozuiliwa na maji la sensor ya DS18B20. Ni muhimu sana kwa joto la mbali katika hali ya mvua, kwa mfano kwenye mchanga wenye unyevu. Sensor imetengwa na inaweza kuchukua vipimo hadi 125oC (Adafrut haipendekezi kuitumia zaidi ya 100oC kwa sababu ya koti yake ya PVC ya kebo).

DS18B20 ni sensa ya dijiti ambayo inafanya kuwa nzuri kutumia hata kwa umbali mrefu! Sensorer hizi za joto la dijiti 1-waya ni sawa (± 0.5 ° C juu ya anuwai nyingi) na zinaweza kutoa hadi bits 12 za usahihi kutoka kwa kibadilishaji cha dijiti-hadi-analog. Wanafanya kazi vizuri na NodeMCU kwa kutumia pini moja ya dijiti, na unaweza hata kuunganisha nyingi kwa pini moja, kila mmoja ana kitambulisho cha kipekee cha 64-bit kilichochomwa kwenye kiwanda ili kuzitofautisha.

Sensor inafanya kazi kutoka 3.0 hadi 5.0V, inamaanisha nini inaweza kuwezeshwa moja kwa moja kutoka kwa 3.3V inayotolewa na moja ya pini za Raspberry (1 au 17).

Sensor ina waya 3:

  • Nyeusi: GND
  • Nyekundu: VCC
  • Njano: 1-Waya Data

Hapa, unaweza kupata data kamili: Datasheet ya DS18B20

Ufungaji wa Sensorer:

Fuata mchoro hapo juu na ufanye unganisho:

  • Vcc ==> 3.3V
  • Gnd ==> Gnd
  • Takwimu ==> GPIO 4 (chaguo-msingi kwa maktaba)

Kuweka Maktaba ya Python:

Ifuatayo, wacha tuweke maktaba ya Python ambayo itashughulikia sensorer:

sudo pip3 kufunga w1thermsensor

Kabla ya kutumia hati ya kujaribu sensorer, angalia ikiwa kiolesura cha "1-Wire" kimewezeshwa katika RPi yako (angalia hapo juu skrini ya kuchapisha)

Usisahau kuanzisha tena RPi yako, baada ya kubadilisha usanidi wake

Kujaribu sensa:

Kwa kupima sensa hati rahisi ya chatu inaweza kutumika:

muda wa kuagiza

kutoka kwa w1thermsensor kuagiza W1ThermSensor ds18b20Sensor = W1ThermSensor () wakati Kweli: joto = ds18b20Sensor.get_temperature () chapisha ("Joto ni% s celsius"% joto) wakati. kulala (1)

Hatua ya 4: Kusanikisha faili ya BMP180

Kufunga BMP180
Kufunga BMP180
Kufunga BMP180
Kufunga BMP180
Kufunga BMP180
Kufunga BMP180

Muhtasari wa Sensorer:

BMP180 ndiye mrithi wa BMP085, kizazi kipya cha sensorer za shinikizo za dijiti za usahihi wa matumizi ya watumiaji. Nguvu ya chini-chini, umeme wa chini wa umeme wa BMP180 umeboreshwa kwa matumizi katika simu za rununu, PDAs, vifaa vya urambazaji vya GPS na vifaa vya nje. Kwa kelele ya chini ya urefu wa 0.25m tu kwa wakati wa uongofu wa haraka, BMP180 inatoa utendaji bora. Muunganisho wa I2C unaruhusu ujumuishaji wa mfumo rahisi na mdhibiti mdogo. BMP180 inategemea teknolojia ya kukinga piezo kwa uimara wa EMC, usahihi wa hali ya juu, na usawa pamoja na utulivu wa muda mrefu.

Jedwali kamili la BMP linaweza kupatikana hapa: BMP180 - Sensor ya Shinikizo la Dijiti

Ufungaji wa Sensorer: Fuata mchoro hapo juu na uunganishe:

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

Kuwezesha I2C Interface

Nenda kwenye Usanidi wa RPi na uthibitishe kuwa kiolesura cha I2C kimewezeshwa. Ikiwa sio hivyo, iwezeshe na uanze tena RPi.

Kutumia BMP180

Ikiwa kila kitu kimewekwa sawa, na kila kitu kimeunganishwa sawa, sasa uko tayari kuwasha Pi yako na uanze kuona kile BMP180 inakuambia juu ya ulimwengu unaokuzunguka.

Jambo la kwanza kufanya ni kuangalia ikiwa Pi anaona BMP180 yako. Jaribu yafuatayo kwenye dirisha la terminal:

Sura i2cdetect -y 1

Ikiwa amri ilifanya kazi, unapaswa kuona kitu sawa na Skrini ya juu ya Kituo cha hapo juu, ikionyesha kuwa BMP180 iko kwenye kituo cha '77'.

Kusakinisha Maktaba ya BMP180:

Unda saraka ya kusanikisha maktaba:

mkdir BMP180_Sensorcd BMP180_Sensor

Kwenye kivinjari chako, nenda kwa Adafruit GITHub:

github.com/adafruit/Adafruit_Python_BMP

Pakua maktaba kwa kubofya kiungo cha zip cha kupakua kulia na unzip kumbukumbu kwenye folda yako iliyoundwa ya Raspberry Pi. Kisha nenda kwenye folda ndogo iliyoundwa na kutekeleza amri ifuatayo kwenye saraka ya maktaba:

sudo python3 setup.py kufunga

Fungua IDE yako ya Python na unda programu ya majaribio na uipe jina, kwa mfano BMP180Test.py

kuagiza Adafruit_BMP. BMP085 kama BMP085sensor = BMP085. BMP085 () chapa ('Temp = {0: 0.2f} * C'. fomati (sensor.read_pressure ())) chapa ('Altitude = {0: 0.2f} m'.format (sensor.read_altitude ())) chapa (' Sealevel Pressure = {0: 0.2f} Pa'.format (sensor. soma_sealevel_pressure ()))

Tekeleza mpango wa jaribio:

python3 BMP180Test.py

Skrini ya kuchapisha ya Kituo cha hapo juu inaonyesha matokeo.

Kumbuka kuwa shinikizo hilo linawasilishwa kwa Pa (Pascals). Tazama hatua inayofuata ili uelewe vizuri kuhusu kitengo hiki.

Hatua ya 5: Kupima hali ya hewa na urefu na BMP180

Kupima hali ya hewa na urefu na BMP180
Kupima hali ya hewa na urefu na BMP180

Wacha tuchukue wakati kuelewa kidogo zaidi juu ya kile tutapata, na masomo ya BMP. Unaweza kuruka sehemu hii ya mafunzo, au kurudi baadaye.

Ikiwa unataka kujua zaidi juu ya usomaji wa Sensor, tafadhali nenda kwenye mafunzo haya mazuri: https://learn.sparkfun.com/tutorials/bmp180-barome …….

BMP180 iliundwa kupima kwa usahihi shinikizo la anga. Shinikizo la anga linatofautiana na hali ya hewa na urefu.

Shinikizo la Anga ni nini?

Ufafanuzi wa shinikizo la anga ni nguvu ambayo hewa inayokuzunguka inafanya kila kitu. Uzito wa gesi zinazoanguka angani huunda shinikizo la anga. Sehemu ya kawaida ya shinikizo ni "paundi kwa kila inchi ya mraba" au psi. Tutatumia hapa nukuu ya kimataifa, hiyo ni newtons kwa kila mita ya mraba, ambayo huitwa pascals (Pa).

Ikiwa unachukua safu 1 ya upana wa sentimita 1 ingekuwa na uzito wa kilo 1

Uzito huu, kubonyeza chini kwenye nyayo za safu hiyo, huunda shinikizo la anga ambalo tunaweza kupima na sensorer kama BMP180. Kwa sababu safu hiyo ya upana wa cm ina uzani wa 1Kg, inafuata kuwa shinikizo la kiwango cha bahari ni karibu pasaka 101325, au bora, 1013.25 hPa (1 hPa pia inajulikana kama milibar - mbar). Hii itashuka karibu 4% kwa kila mita 300 unayopanda. Kadiri unavyozidi kuongezeka, shinikizo kidogo utaona, kwa sababu safu hadi juu ya anga ni fupi sana na kwa hivyo ina uzani mdogo. Hii ni muhimu kujua, kwa sababu kwa kupima shinikizo na kufanya hesabu kadhaa, unaweza kuamua urefu wako.

Shinikizo la hewa katika mita 3, 810 ni nusu tu ya ile kwenye usawa wa bahari.

BMP180 hutoa shinikizo kabisa katika pascals (Pa). Pascal moja ni shinikizo ndogo sana, takriban kiasi ambacho karatasi itakaa juu ya meza. Mara nyingi utaona vipimo katika hectopascals (1 hPa = 100 Pa). Maktaba iliyotumiwa hapa hutoa matokeo ya viwango vya kuelea katika hPa, ambayo pia hufanyika kwa milibar sawa (mbar).

Hapa kuna mabadiliko kwenye vitengo vingine vya shinikizo:

  • 1 hPa = 100 Pa = 1 mbar = 0.001 bar
  • 1 hPa = 0.75006168 Torr
  • 1 hPa = 0.01450377 psi (paundi kwa inchi ya mraba)
  • 1 hPa = 0.02953337 inHg (inchi za zebaki)
  • 1 hpa = 0.00098692 atm (anga za kawaida)

Athari za Joto

Kwa sababu joto huathiri wiani wa gesi, na wiani huathiri wingi wa gesi, na misa huathiri shinikizo (whew), shinikizo la anga litabadilika sana na joto. Marubani wanajua hii kama "urefu wa wiani", ambayo inafanya iwe rahisi kuchukua siku ya baridi kuliko ya moto kwa sababu hewa ni denser na ina athari kubwa zaidi ya anga. Ili kulipa fidia kwa joto, BMP180 inajumuisha sensorer nzuri ya joto na vile vile sensor ya shinikizo.

Ili kufanya usomaji wa shinikizo, kwanza chukua usomaji wa joto, kisha unganisha hiyo na usomaji wa shinikizo ghafi ili upate kipimo cha mwisho cha shinikizo linalolipwa na joto. (Maktaba hufanya yote haya iwe rahisi sana.)

Kupima Shinikizo Kabisa

Ikiwa programu yako inahitaji kupima shinikizo kamili, unachohitaji kufanya ni kusoma usomaji wa joto, kisha fanya usomaji wa shinikizo (angalia mchoro wa mfano kwa maelezo zaidi). Usomaji wa mwisho wa shinikizo utakuwa katika hPa = mbar. Ikiwa unataka, unaweza kubadilisha hii kuwa kitengo tofauti ukitumia mambo ya uongofu hapo juu.

Kumbuka kuwa shinikizo kamili ya anga litatofautiana na urefu wako wote na hali ya hali ya hewa ya sasa, ambayo yote ni vitu muhimu kupima.

Uchunguzi wa hali ya hewa

Shinikizo la anga katika eneo lolote hapa duniani (au mahali popote na anga) sio mara kwa mara. Mwingiliano mgumu kati ya mzunguko wa dunia, mwinuko wa mhimili, na sababu zingine nyingi husababisha kusonga kwa maeneo ya shinikizo la juu na la chini, ambayo husababisha tofauti za hali ya hewa tunayoona kila siku. Kwa kutazama mabadiliko katika shinikizo, unaweza kutabiri mabadiliko ya hali ya hewa ya muda mfupi. Kwa mfano, kushuka kwa shinikizo kawaida inamaanisha hali ya hewa ya mvua au dhoruba inakaribia (mfumo wa shinikizo la chini unaingia). Kuongezeka kwa shinikizo kawaida inamaanisha kuwa hali ya hewa wazi inakaribia (mfumo wa shinikizo kubwa unapita). Lakini kumbuka kuwa shinikizo la anga pia hutofautiana na urefu. Shinikizo kamili katika nyumba yangu, Lo Barnechea huko Chile (urefu wa 950m) litakuwa chini kila wakati kuliko shinikizo kamili huko San Francisco kwa mfano (chini ya mita 2, karibu usawa wa bahari). Ikiwa vituo vya hali ya hewa viliripoti tu shinikizo lao kabisa, itakuwa ngumu kulinganisha moja kwa moja vipimo vya shinikizo kutoka eneo moja hadi lingine (na utabiri mkubwa wa hali ya hewa unategemea vipimo kutoka vituo vingi iwezekanavyo).

Ili kutatua shida hii, vituo vya hali ya hewa kila wakati huondoa athari za mwinuko kutoka kwa usomaji wao wa shinikizo uliyoripotiwa kwa kuongeza hesabu shinikizo sawa la kuifanya ionekane kama usomaji ulichukuliwa kwenye usawa wa bahari. Unapofanya hivyo, kusoma zaidi huko San Francisco kuliko Lo Barnechea daima itakuwa kwa sababu ya mifumo ya hali ya hewa, na sio kwa sababu ya urefu.

Ili kufanya hivyo, kuna kazi kwenye maktaba inayoitwa usawa wa bahari (P, A). Hii inachukua shinikizo kamili (P) katika hPa, na urefu wa sasa wa kituo (A) katika mita, na huondoa athari za urefu kutoka kwa shinikizo. Unaweza kutumia pato la kazi hii kulinganisha moja kwa moja usomaji wako wa hali ya hewa na vituo vingine ulimwenguni.

Kuamua Urefu

Kwa kuwa shinikizo linatofautiana na urefu, unaweza kutumia sensorer ya shinikizo kupima urefu (na vidokezo vichache). Shinikizo la wastani la anga katika kiwango cha bahari ni 1013.25 hPa (au mbar). Hii inashuka hadi sifuri unapopanda kuelekea kwenye utupu wa nafasi. Kwa sababu curve ya kuacha hii inaeleweka vizuri, unaweza kuhesabu tofauti ya mwinuko kati ya vipimo viwili vya shinikizo (p na p0) kwa kutumia equation maalum.

Ikiwa unatumia shinikizo la usawa wa bahari (1013.25 hPa) kama shinikizo la msingi (p0), pato la equation itakuwa urefu wako wa sasa juu ya usawa wa bahari. Kuna kazi katika maktaba inayoitwa urefu (P, P0) ambayo inakuwezesha kupata "urefu uliohesabiwa".

Maelezo hapo juu yalitolewa kutoka kwa mafunzo ya BMP 180 Sparkfun.

Hatua ya 6: HW kamili

Kamili HW
Kamili HW

Hatua ya 7: Kutuma Takwimu kwa ThingSpeak

Kutuma Takwimu kwa ThingSpeak
Kutuma Takwimu kwa ThingSpeak

Kwa wakati huu, tulijifunza jinsi ya kuandaa RPi kukamata data kutoka kwa sensorer zote 3, kuzichapisha kwenye terminal. Sasa, ni wakati wa kuona jinsi ya kutuma data hizo kwenye jukwaa la IoT, ThingSpeak.

Wacha tuanze!

Kwanza, lazima uwe na akaunti kwenye ThinkSpeak.com

Fuata maagizo ya kuunda Kituo na uzingatie Kitambulisho chako na Andika Kitufe cha API

Pakua Hati ya Python kutoka GitHub yangu: localData ToTS_v1_EXT.py

Wacha tupe maoni nambari muhimu zaidi ya nambari:

Kwanza, wacha tuingize maktaba ya ThingSpeak, tufafanue mteja wa WiFi na tufafanue sifa zako za Router na Thinkspeak:

kuagiza mazungumzo

Kuna njia kadhaa za kuwasiliana na ThingSpeak, njia rahisi itakuwa kutumia maktaba ya mteja kwa API ya thingspeak.com iliyoundwa na Mikolaj Chwaliz na Keith Ellis.

Maktaba inaweza kupakuliwa kutoka https://github.com/mchwalisz/thingspeak au kutumia PIP kwenye terminal:

Sudo pip3 weka mambo ya kusema

Ifuatayo, ndani ya hati, sasisha sifa za kituo cha ThingSpeak

chId = 9999999 # Ingiza na Id yako ya Idhaa

tsKey = 'Ingia na kituo chako uandike kifunguo' tsUrl = 'https://api.thingspeak.com/update' ts = thingspeak. Channel (chId, tsUrl, tsKey)

Sasa, wacha tuanzishe sensorer 3:

# DS18B20 1-waya maktaba

kutoka kwa w1thermsensor kuagiza W1ThermSensor ds18b20Sensor = W1ThermSensor () # Kwa chaguo-msingi GPIO 4 inatumiwa na maktaba # DHT22 kuingiza Maktaba Adafruit_DHT DHT22Sensor = Adafruit_DHT. DHT22 DHTpin = 16 # BMP180 maktaba kuagiza Adafruit_B00MP1MPMPMP1MPMPMP1MPMPMP1MPMPMP1MP1MP1MP1MP1MP1MP1MP1MP1MP1MP4. Unapaswa kufafanua urefu halisi ambapo Kituo chako cha Hali ya Hewa kiko, kusasisha kutofautisha kwa Ulimwenguni "altReal". Kwa upande wangu, Kituo changu kiko 950m juu ya usawa wa bahari

kimataifa altReal

altReal = 950

Mara tu ingiza na urefu halisi wa kituo kama pembejeo, tunaweza kupata shinikizo kamili, shinikizo la usawa wa bahari, joto, na urefu kwa kutumia kazi bmp180GetData (urefu):

def bmp180GetData (urefu):

temp = bmp180Sensor.read_temperature () pres = bmp180Sensor.read_pressure () alt=bmp180Sensor.read_altitude () presSeaLevel = pres / pow (1.0 - urefu / 44330.0, 5.255) temp = pande zote (temp, 1) pres = round (pres / 100), 2) # shinikizo kabisa katika hPa (au mbar) alt=round (alt) presSeaLevel = round (presSeaLevel / 100, 2) # shinikizo kabisa katika hPa (au mbar) kurudi temp, pres, alt, presSeaLevel

Kazi getLocalData (), itarudisha data zote za ndani ambazo zimekamatwa na kituo chetu:

def getLocalData ():

wakati wa kimataifaKamba ya humLab ya kimataifa tempExt templab ya kimataifa presSL global altLab global presAbs # Pata wakati wa kusoma sasa = datetime.datetime.now () timeString = now.strftime ("% Y-% m-% d% H:% M") # Read Nje ya joto (mita 1 mbali) tempExt = raundi (ds18b20Sensor.get_temperature (), 1) tempLab, presAbs, altLab, presSL = bmp180GetData (altReal) humDHT, tempDHT = Adafruit_DHT.read_retry (DHT22Sensor, DHTpin) kama humDHT si Hakuna na tempDHT sio: humLab = pande zote (humDHT

Mara tu unapokuwa na data yote iliyonaswa na kazi zilizo hapo juu, lazima uzitume kwa ThingSpeak. Utaifanya kwa kutumia kazi sendDataTs ():

def sendDataTs ():

data = {"field1": tempLab, "field2": tempExt, "field3": humLab, "field4": presSL, "field5": altLab} ts.update (data) chapisha ("[INFO] Takwimu zilizotumwa kwa sehemu 5: ", tempLab, tempExt, humLab, presSL, altLab)

Na data ya kituo chako imesasishwa, hifadhi hati na uitekeleze kwenye kituo chako:

Sudo Python3 mitaaData_ToTs_v1_EXT.py

Kuhusu itifaki za Mawasiliano

Kumbuka kuwa kutumia "maktaba ya kusema", "maktaba ya maombi" inaingizwa, hiyo ni maktaba ya Apache2 yenye Leseni ya HTTP, iliyoandikwa katika Python. Hati rasmi ya Ufungaji wa Ombi inaweza kupatikana hapa:

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

Ikiwa ni lazima, kabla ya kutumia hati yako, unaweza kuthibitisha ikiwa maktaba ya maombi imewekwa:

maombi ya kufunga pip3

Kwa hiari unaweza kutumia MTTQ kama njia ya kutuma data kwa ThingSpeak. MQTT ni tofauti na HTTP, mara moja imeundwa kuwa nyepesi na imekusudiwa vifaa vilivyopachikwa na utendaji wa chini wa RAM na CPU. Pia, katika hali nyingi, MQTT hutumia kipimo data kidogo.

Rejea mafunzo haya: Sasisha Kituo cha ThingSpeak ukitumia MQTT kwenye Raspberry Pi kwa maelezo zaidi.

Hatua ya 8: Kutuma Takwimu za Kijijini kwa ThingSpeak Kutumia ESP8266

Kutuma Takwimu za Mbali kwa ThingSpeak Kutumia ESP8266
Kutuma Takwimu za Mbali kwa ThingSpeak Kutumia ESP8266
Kutuma Takwimu za Mbali kwa ThingSpeak Kutumia ESP8266
Kutuma Takwimu za Mbali kwa ThingSpeak Kutumia ESP8266

Kwa hatua hii, tutatumia HW ile ile ambayo ilielezewa katika mafunzo ya muy:

IOT IMEFANYWA KWA URAHISI: KUTEKA DATA YA HALI YA HALI YA HEWA: UVI JUU YA JOTO NA HEWA

Nambari ambayo tutatumia hapa, kimsingi ni ile ile inayotumika kwenye mafunzo hayo. Wacha tupe maoni nambari muhimu zaidi ya nambari:

Kwanza, wacha tuite maktaba ya ESP8266, tufafanue mteja wa WiFi na tufafanue sifa zako za Router na Thinkspeak:

/ * NodeMCU ESP12-E * /

#jumuisha mteja wa Wateja wa WiFi; const char * MY_SSID = "Ingia na SSDID YAKO"; const char * MY_PWD = "Ingia na nenosiri lako"; / * Thinkspeak * / const char * TS_SERVER = "api.thingspeak.com"; Kamba TS_API_KEY = "INGIA KIWANGO CHAKO CHA KUANDIKA";

Pili, wacha tujumuishe maktaba muhimu sana kwa miradi ya IoT: SimpleTimer.h:

/ * KIPIMA * /

# pamoja na Timer Timer timer;

Tatu, wakati wa usanidi (), tutaanzisha mawasiliano ya serial, piga kazi connectWiFi () na tufafanue vipima muda. Kumbuka kuwa mstari wa nambari: timer.setInterval (60000L, sendDataTS); itaita kazi sendDataTS () kila sekunde 60, ili kupakia data kwenye kituo cha ThinkSpeak.

kuanzisha batili ()

{… Serial.begin (115200); kuchelewesha (10); … UnganishaWifi (); timer.setInterval (60000L, sendDataTS); …}

Mwishowe lakini sio uchache, wakati wa kitanzi (), amri pekee inahitajika ni kuanzisha kipima muda na ndivyo ilivyo!

kitanzi batili ()

{… Timer.run (); // Huanzisha SimpleTimer}

Chini, unaweza kuona kazi mbili muhimu zinazotumika kushughulikia mawasiliano ya Thinkspeak:

Uunganisho wa ESP12-E na mtandao wako wa WiFi:

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

* Kuunganisha WiFi *************************************************** *** / void connectWifi () {Serial.print ("Kuunganisha kwa" + * MY_SSID); WiFi.anza (MY_SSID, MY_PWD); wakati (WiFi.status ()! = WL_CONNECTED) {kuchelewesha (1000); Printa ya serial ("."); } Serial.println (""); Serial.println ("WiFi Imeunganishwa"); Serial.println (""); }

ESP12-E kutuma data kwa ThinkSpeak:

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

* Kutuma Takwimu kwenye Kituo cha Thinkspeak *********************************************** ****** / void sendDataTS (batili) {if (client.connect (TS_SERVER, 80)) {String postStr = TS_API_KEY; postStr + = "& uwanja6 ="; postStr + = Kamba (temp); postStr + = "& uwanja7 ="; postStr + = Kamba (hum); postStr + = "& uwanja8 ="; postStr + = Kamba (dataSensorUV); postStr + = "\ r / n / r / n"; alama ya mteja ("POST / sasisha HTTP / 1.1 / n"); mteja.print ("Mwenyeji: api.thingspeak.com / n"); alama ya mteja ("Uunganisho: funga / n"); alama ya mteja ("X-THINGSPEAKAPIKEY:" + TS_API_KEY + "\ n"); mteja.print ("Aina ya Maudhui: matumizi / x-www-form-urlencoded / n"); alama ya mteja ("Urefu wa Yaliyomo:"); alama ya mteja (postStr.length ()); alama ya mteja ("\ n / n"); alama ya mteja (postStr); kuchelewesha (1000); } imetumwa ++; mteja.acha (); }

Nambari kamili inaweza kupatikana kwenye GitHub yangu: NodeMCU_UV_DHT_Sensor_OLED_TS_EXT

Mara baada ya kuwa na nambari iliyopakiwa kwenye NodeMCU yako. Wacha tuunganishe betri ya nje na tufanye kipimo chini ya jua. Ninaweka Kituo cha Remote juu ya paa na kuanza kunasa data kwenye ThingSpeak.com kama inavyoonekana kwenye picha hapo juu.

Hatua ya 9: Vidokezo vya Mwisho

Vidokezo vya Mwisho
Vidokezo vya Mwisho

Kusudi kuu la mafunzo haya ilikuwa kuonyesha jinsi ya kuunganisha Raspberry Pi na ThingSpeak. Hii ni nzuri kukamata data na kuiweka kwenye jukwaa la IoT.

Kutumia fursa hiyo pia tulituma data kwenye kituo hicho maalum, tukinasa kutoka kituo cha mbali kutumia ESP8266. Njia hii ni sawa, lakini sio bora zaidi. Kwa sababu tuna operesheni ya "asynchronous", wakati mwingine, RPi na ESP8266 hujaribu kuingia kwa wakati mmoja (au kwa muda mfupi) kile kinachokanushwa na ThingSpeak. Bora ingekuwa na ESP8266 inayotuma data ndani ya Raspberry Pi na ya mwisho kuwajibika kushughulikia data zote. Kufanya hivyo, "Kituo Kikuu" (Raspberry Pi), inaweza kufanya vitu 3:

  • Ingiza data zote kwenye hifadhidata ya ndani
  • Wasilisha data zote kwenye Wavuti ya Wavuti (ukitumia Flask kama inavyoonekana kwenye picha hapo juu)
  • Kutuma data zote kwa ThingSpeak kwa wakati mmoja.

Kwenye mafunzo ya baadaye, tutachunguza chaguzi hizo.

Hatua ya 10: Hitimisho

Hitimisho
Hitimisho

Kama kawaida, natumahi mradi huu unaweza kusaidia wengine kupata njia yao katika ulimwengu wa kusisimua wa umeme!

Kwa maelezo na nambari ya mwisho, tafadhali tembelea Hifadhi yangu ya GitHub: RPi-NodeMCU-Kituo cha Hali ya Hewa

Kwa miradi zaidi, tafadhali tembelea blogi yangu: MJRoBot.org

Endelea kufuatilia! Mafunzo yafuatayo tutatuma data kutoka kituo cha hali ya hewa ya mbali hadi katikati, kwa msingi wa seva ya Wavuti ya Raspberry Pi:

Picha
Picha

Saludos kutoka kusini mwa ulimwengu!

Tukutane kwenye mafunzo yangu yafuatayo!

Asante, Marcelo

Ilipendekeza: