Orodha ya maudhui:

Mfumo wa Ufuatiliaji wa Hali ya Hewa wa IoT uliotumiwa kwa Smart Kutumia NodeMCU: Hatua 11
Mfumo wa Ufuatiliaji wa Hali ya Hewa wa IoT uliotumiwa kwa Smart Kutumia NodeMCU: Hatua 11

Video: Mfumo wa Ufuatiliaji wa Hali ya Hewa wa IoT uliotumiwa kwa Smart Kutumia NodeMCU: Hatua 11

Video: Mfumo wa Ufuatiliaji wa Hali ya Hewa wa IoT uliotumiwa kwa Smart Kutumia NodeMCU: Hatua 11
Video: Odoo - Nilikaa siku moja na mwanzilishi wa UNICORN yenye thamani ya €3.5B! 2024, Julai
Anonim
Mfumo wa Ufuatiliaji wa Hali ya Hewa wa IoT uliotumiwa kwa Smart Kutumia NodeMCU
Mfumo wa Ufuatiliaji wa Hali ya Hewa wa IoT uliotumiwa kwa Smart Kutumia NodeMCU

Nyote mnaweza kujua kituo cha hali ya hewa ya jadi; lakini umewahi kujiuliza inafanya kazi kweli? Kwa kuwa kituo cha hali ya hewa ya jadi ni ya gharama kubwa na kubwa, wiani wa vituo hivi kwa kila eneo la kitengo ni kidogo sana ambayo inachangia usahihi wa data. Nitakuelezea jinsi: Tuseme kituo iko katikati ya jiji na ndio kituo pekee ambacho kiko katika eneo la 'x' mita, inaweza kupendelea kwa urahisi ikiwa wakala yeyote anayesababisha uchafuzi yuko karibu na eneo hilo. ya kituo kinachoonyesha eneo lote la eneo la 'x' kama lililochafuliwa kwa kuwa kituo hicho kimoja kinawajibika kuamua data ya hali ya hewa ya eneo lote.

Ili kushinda shida hii, wiani wa moduli lazima uongezwe ambayo inawezekana tu ikiwa moduli ni za bei rahisi na inachukua alama ndogo kuliko ile iliyopo.

Hii ndio sababu suluhisho langu linalopendekezwa ni suluhisho bora kwa shida hii, inagharimu chini ya $ 10 na pia inakaa kwa urahisi kwenye kiganja changu.

Inavyofanya kazi…

Kuna sehemu kuu 3 za mradi huu.

Upande wa kifaa:

Kifaa ni moduli ya IoT iliyoonyeshwa kwenye picha inayotuma data ya hali ya hewa kwa seva kila muda wa 'x'. Takwimu zinajumuisha data halisi ya hali ya hewa, eneo la moduli; yaani kuratibu zake, anwani yake ya MAC; kutambua kipekee kifaa, toleo la firmware ambalo linaendelea sasa. Upande wa kifaa unajumuisha moduli za N zilizosambazwa katika eneo hilo kuchangia data kwa seva.

Upande wa seva:

Kama jina linavyopendekeza, ni seva kuu ambayo hushughulikia shughuli kadhaa kama kupokea data kutoka kwa moduli na kuihifadhi kwenye hifadhidata, kusasisha moduli na firmware ya hivi karibuni ikiwa inaendesha toleo la zamani, ikipeleka data ya hali ya hewa kwa mteja kwa ombi.

Mteja / Mtumiaji upande:

Ni mtumiaji wa mwisho ambaye huomba data ya hali ya hewa kutoka kwa seva. Mteja hutuma eneo la sasa na kulingana na eneo, seva huhesabu umbali kati ya mteja na moduli zote na hutuma data ya hali ya hewa ya moduli ya karibu kwa mteja ambayo inachukuliwa kuwa sahihi.

Vifaa

  • NodeMCU (ESP8266-12E)
  • DHT11 (Unyevu na sensa ya joto)
  • BMP180 (sensorer ya Shinikizo na Joto)
  • MQ-135 (sensa ya faharisi ya ubora wa hewa)
  • Kebo ya USB (kupakia programu)
  • Ugavi wa volt 5
  • Capacitors (Hiari: kuwekwa sawa na laini ya umeme)
  • Arduino IDE (Kutatua na kupakia programu)
  • Programu ya POSTMAN (hiari: Kutatua API)
  • Tovuti (kuwa mwenyeji wa seva ya PHP na MySQL)

Hatua ya 1: Solder Vipengele vyote na Pakia Programu hiyo kwa NodeMCU

Solder Vipengele vyote na Pakia Programu hiyo kwa NodeMCU
Solder Vipengele vyote na Pakia Programu hiyo kwa NodeMCU
Solder Vipengele vyote na Pakia Programu hiyo kwa NodeMCU
Solder Vipengele vyote na Pakia Programu hiyo kwa NodeMCU

Weka vifaa vyote kwa NodeMCU kama inavyoonyeshwa kwenye mchoro wa mzunguko kwenye bodi ya manukato. Pia, suuza capacitor sambamba na laini za umeme tangu kuongezeka kwa nguvu wakati wa kusambaza na kupokea data kikamilifu.

Mara kazi ya kuuza ikamalizwa, pakia nambari iliyotolewa kwenye faili "code.c".

Kumbuka: Usisahau kuchukua nafasi ya kitambulisho na sifa zako mwenyewe. Pia weka faili inayoitwa "html_file.h" ndani ya folda ya mchoro wa arduino. Faili zote za kichwa zinazotumiwa katika mradi huu zinaweza kupatikana hapa

Makala ya nambari:

Sehemu ya Ufikiaji: Kwa kuwa ni ngumu kupanga kila moduli na sifa katika utengenezaji wa habari, moduli huandaa ukurasa wa wavuti kwenye buti yake ya kwanza kukubali hati za WiFi ambazo moduli zinapaswa kuungana na kuhifadhi katika EEPROM kwa matumizi ya baadaye.

Mara tu vitambulisho vimesanidiwa, NodeMCU inachunguza EEPROM kwa vitambulisho na inaunganisha na vitambulisho vya WiFi vilivyopo kwenye EEPROM.

Baada ya kufanikiwa kuunganisha kwa WiFi, NodeMCU huanza kupakia data kwenye seva kila muda wa 'x', data ni pamoja na data ya hali ya hewa, anwani ya MAC ya moduli, toleo la firmware, eneo la kijiografia cha kifaa.

Sasisho la OTA: Moduli pia inakagua sasisho jipya la firmware kila siku kwa wakati maalum uliowekwa kwenye nambari. Kipengele hiki ni muhimu kwani haiwezekani kwa mtengenezaji yeyote kuendelea na kubadilisha mpango wa moduli ya kibinafsi ikiwa kutakuwa na mabadiliko yoyote ya kufanywa.

Wakati wa Kuangalia: Atlast lazima kuwe na njia ya kujiokoa bila uingiliaji wowote wa kibinadamu ikiwa itakwama au shambulio. Hii inaweza kupatikana kwa kutumia kipima muda cha Waangalizi. Njia ambayo hii inafanya kazi ni: Kuna utaratibu mdogo wa kukatiza ambao huendesha kila sekunde. ISR huongeza kaunta kila wakati inafanya na kukagua ikiwa kaunta imefikia hesabu kubwa. Mara tu kaunta inapofikia thamani ya juu, moduli inajiweka upya ikidhani imeanguka. Kwenye operesheni ya kawaida, kaunta hurejeshwa kila wakati kabla ya kufikia hesabu kubwa.

Hatua ya 2: Kusanidi Seva ya SQL

Kusanidi Seva ya SQL
Kusanidi Seva ya SQL

Usanidi wa SQL Server pia ni rahisi sana. Unda tu hifadhidata katika seva ya SQL na Ingiza mipangilio kwa kuagiza faili inayoitwa "database_structure.txt". Unaweza kupata faili katika hatua hii. Kwa kuwa inayoweza kufundishwa hairuhusu kupakia faili za ".sql", nimebadilisha jina la faili kuwa ".txt".

Kumbuka: Badilisha jina la faili kutoka ".txt" hadi ".sql".

Hatua ya 3: Kusanidi Seva ya Faili

Kusanidi seva ni rahisi sana ikiwa unamiliki wavuti na inakaribishwa mkondoni. Sitapitia utaratibu mzima wa kuanzisha wavuti na kuikaribisha kwa kuwa iko nje ya upeo wa mafunzo haya. Lakini unaweza kuikaribisha kwenye pc yako mwenyewe kama localhost kujaribu kufanya kazi kwa faili.

Kwa kuwa anayefundishwa hairuhusu kupakia faili za PHP, nimebadilisha faili kuwa ".txt".

Kumbuka: Tafadhali badilisha jina la ugani wa faili kuwa ".php". Pia usisahau kubadilisha hati za faili ya "config.php".

Pakia faili kwenye seva na uko vizuri kwenda.

Nitakupa maelezo mafupi juu ya faili za PHP.

db_config.php:

Katika faili hii, sifa zote zinazohitajika kuungana na seva ya SQL zimehifadhiwa.

db_connect:

Katika faili hii darasa linalohitajika kwa unganisho la hifadhidata lipo.

kuingiza.php:

NodeMCU inaita faili hii ya PHP kwa kupakia data kwenye seva kwa kutumia njia ya GET. Faili hii pia inawajibika kuhifadhi data sawa kwa seva ya SQL.

pata.php:

Mtumiaji / Mteja huita PHP hii kwa kutumia njia ya GET. Seva huhesabu umbali kati ya mtumiaji na moduli zote. Kisha data ya moduli iliyo karibu zaidi hutumwa kama jibu kwa mteja katika muundo wa JSON / XML kama inavyopendelewa na mteja.

sasisho.php:

Faili hii ya PHP inaitwa na moduli kila siku kwa wakati maalum ili kuangalia ikiwa moduli inaendesha toleo la hivi karibuni la firmware. Weka tu faili ya ".bin" ya hivi karibuni kwenye seva ya faili na taja saraka ya faili katika ubadilishaji wa faili.

Ikiwa faili hizi nyingi zinaonekana kutisha mwanzoni, nimejumuisha nyaraka za mtumiaji katika hatua inayofuata.

Hatua ya 4: Nyaraka za Mtumiaji

Nyaraka za Mtumiaji
Nyaraka za Mtumiaji
Nyaraka za Mtumiaji
Nyaraka za Mtumiaji

Utangulizi:

API ya Hali ya Hewa hutoa kiolesura rahisi kuomba data ya hali ya hewa kwa maeneo kwenye uso wa dunia. Unaomba habari ya hali ya hewa kwa jozi maalum ya latitudo / longitudo na fomati ya pato iliyoainishwa. API inarudisha fahirisi ya joto, unyevu, shinikizo, na kiwango cha hali ya hewa ambayo ilirekodiwa mwisho na moduli ya karibu kutoka eneo lililoombwa.

Kabla ya kuanza:

Hati hii imekusudiwa waendelezaji wa wavuti na wa rununu ambao wanataka kujumuisha habari za hali ya hewa juu ya programu inayotengenezwa. Inaleta matumizi kwa kutumia API na nyenzo za rejeleo kwenye vigezo vinavyopatikana.

Maombi ya Takwimu za Hali ya Hewa:

Maombi ya API ya hali ya hewa yanajengwa kama kamba ya URL. API inarudisha data ya hali ya hewa kwa uhakika duniani, iliyoainishwa na jozi ya latitudo / longitudo. Kumbuka kuwa usahihi wa data ya hali ya hewa ni sawa sawa na wiani wa moduli zilizowekwa kwenye eneo.

Ombi la hali ya hewa ya API huchukua fomu ifuatayo:

example.com/retrieve.php?lat=25.96446&lon=53.9443&format=json

Ambapo fomati ya pato (fomati) inaweza kuwa moja ya maadili yafuatayo:

  • JSON (ilipendekezwa), inaonyesha pato katika Notation ya Object JavaScript (JSON); au
  • XML, inaonyesha pato katika XML, imefungwa ndani ya node.

Omba Vigezo:

Kama ilivyo katika URL zote, vigezo vimetenganishwa kwa kutumia herufi ya ampersand (&). Orodha ya vigezo na maadili yao yanaelezewa hapo chini.

Vigezo vinavyohitajika:

  • lat: Inawakilisha latitudo ya eneo kutafuta. (k.m lat = 19.56875)
  • lon: Inawakilisha longitudo ya eneo ili kutafuta. (kwa mfano lon = 72.97568)

Vigezo vya hiari:

fomati: Inabainisha fomati ya majibu ya data ya hali ya hewa. Inaweza kuwa JSON au XML. Chaguo-msingi ni JSON. (k. fomati = json au fomati = xml)

Majibu ya Hali ya Hewa:

Kwa kila ombi halali, huduma ya ukanda wa saa itarudisha majibu katika muundo ulioonyeshwa ndani ya URL ya ombi. Kila jibu litakuwa na vitu vifuatavyo:

  • mafanikio: Thamani inayoonyesha hali ya majibu.

    • 0: Hasi; inaonyesha kuwa ombi hilo lilikuwa na hitilafu.
    • 1: Kuthibitisha; inaonyesha kuwa ombi hilo lilifanikiwa.
  • ujumbe: kamba inayoonyesha sababu ya ubaya wa ombi. Inapatikana tu wakati hali ni hasi.
  • data: safu na vigezo vingi vya hali ya hewa.

    • temp: data ya joto.
    • hum: data ya uwepo wa unyevu.
    • pres: data ya shinikizo kabisa.
    • aqi: faharisi ya ubora wa sasa wa Hewa.

Majibu ya mifano ya muundo wote yanaweza kuonekana kwenye picha.

Hatua ya 5: Usanidi wa Moduli

Usanidi wa Moduli
Usanidi wa Moduli
Usanidi wa Moduli
Usanidi wa Moduli

Anwani ya Ufikiaji imeundwa na ukurasa wa wavuti umeshikiliwa kwenye anwani ya IP (Chaguomsingi: 192.168.4.1) kupokea hati kutoka kwa msimamizi wa kifaa / mtumiaji kwenye buti ya kwanza kabisa au ikiwa moduli haipatikani hati zilizohifadhiwa tayari kwenye EEPROM.

Mtumiaji anahitaji kuingiza SSID na nywila ambayo mtumiaji anataka moduli kuungana. Latitudo na longitudo hujazwa kiotomatiki ukiruhusu kivinjari kufikia eneo.

Mara tu maelezo yote yameingizwa, bonyeza kitufe cha "TUMA", na kisha vitambulisho vyote vimeandikwa kwenye EEPROM ya moduli.

Hatua hii ni muhimu sana kwani wakati wa kutengeneza moduli nyingi, haiwezekani kupanga moduli zote na data yake halisi ya eneo na sifa za WiFi. Pia, haipendekezi kuweka alama za hati ngumu kwenye programu kwani ikiwa tunahitaji kuhamisha moduli kwenda mahali pengine au tunataka kubadilisha hati za WiFi, Tutahitaji kupanga tena moduli. Ili kuzuia shida hii, kazi ya usanidi wa awali inatekelezwa.

Hatua ya 6: Sasa ni wakati wake wa kuchangia Takwimu kwenye Wingu

Sasa Ni Wakati Wake Kuchangia Takwimu kwenye Wingu
Sasa Ni Wakati Wake Kuchangia Takwimu kwenye Wingu
Sasa Ni Wakati Wake Kuchangia Takwimu kwenye Wingu
Sasa Ni Wakati Wake Kuchangia Takwimu kwenye Wingu

Baada ya hatua zote za awali kukamilika, sasa ni wakati wa kuruhusu moduli kupakia data kwenye seva. Inaanza kupakia kiotomatiki mara tu umehifadhi vitambulisho.

Inaita "insert.php" kama simu ya API na kupitisha vigezo vyote vya kutuma kwa njia ya GET.

Kijisehemu cha chini cha nambari kinaonyesha jinsi vigezo vinashughulikiwa.

ikiwa (isset ($ _ GET ['temp']) && isset ($ _ GET ['hum']) && isset ($ _ GET ['pres']) && isset ($ _ GET ['aqi']) && isset ($ _ GET ['mac']) && isset ($ _ GET ['lat']) && isset ($ _ GET ['lon'])) 2. {3. // mpango kuu 4.}

Kama hivyo moduli zote zinaanza kupakia data.

Kumbuka: Punguza masafa ya kupakia kwenye nambari ikiwa unahisi seva inazidiwa zaidi.

Hatua ya 7: Juu ya Sasisho la Hewa (OTA)

Juu ya Sasisho la Hewa (OTA)
Juu ya Sasisho la Hewa (OTA)

Baada ya moduli kusanidiwa na kuanza kupakia data, inakagua visasisho vya firmware kila siku kwa wakati maalum uliotajwa katika programu. Ikiwa inapata yoyote, inapakua na kuangaza faili ya binary ndani yake. Na ikiwa haifanyi, operesheni ya kawaida ya kupakia data inaendelea.

Ili kuangalia sasisho jipya, moduli hiyo inaita "sasisho.php" kwa kutuma anwani ya MAC kwenye kichwa cha ombi lake. Seva kisha huangalia ikiwa anwani maalum ya MAC ina sasisho jipya, ikiwa ndio, basi hutuma faili ya binary ya firmware ya hivi karibuni kujibu.

Inakagua vichwa vyote muhimu vinavyohitajika kwa uthibitishaji wa msingi wa moduli.

Hatua ya 8: Jinsi Mtumiaji / Mteja Anavyoweza Kupata Takwimu…

Jinsi Mtumiaji / Mteja Anavyoweza Kupata Takwimu…
Jinsi Mtumiaji / Mteja Anavyoweza Kupata Takwimu…
Jinsi Mtumiaji / Mteja Anavyoweza Kupata Takwimu…
Jinsi Mtumiaji / Mteja Anavyoweza Kupata Takwimu…
Jinsi Mtumiaji / Mteja Anavyoweza Kupata Takwimu…
Jinsi Mtumiaji / Mteja Anavyoweza Kupata Takwimu…

Ni sawa moja kwa moja kupata data kutoka kwa seva. Kwa kupiga tu "retrieve.php", tutapata data ya hali ya hewa kama jibu katika muundo wa JSON. Baada ya hapo, ni suala tu la kuchanganua data ya JSON kupata vitu vya kibinafsi. Sawa ni pamoja na majibu ya XML. Mtumiaji anaweza kutaja fomati ya jibu inayopendelewa ambayo mtumiaji yuko vizuri kufanya kazi nayo. Ikiwa mtumiaji haelezei fomati, muundo chaguomsingi ni JSON.

Ombi la sampuli hufanywa kwa kutumia zana ya POSTMAN kukagua utendaji wa API.

Mfano wa kuchanganua majibu ya JSON kwenye javascript imeonyeshwa kwenye kijisehemu cha nambari hapa chini.

var url = "https://example.com/retrieve.php?lat=19.044848&lon=72.8464373"; xmlHttp.open ("GET", theUrl, uwongo); // uwongo kwa ombi la synchronous xmlHttp.send (null); kurudi xmlHttp.responseText; } var myVar = httpPata (url); var obj = JSON.parse (myVar); hati.getElementById ("aqi"). HTML ya ndani = obj.data [0].aqi; hati.getElementById ("joto"). HTMLHTML ya ndani = Math.round (obj.data [0].temp) + "° C"; hati.getElementById ("temp"). HTML ya ndani = Math.round (obj.data [0].temp) + "° C"; hati.getElementById ("unyevu"). HTMLHTML ya ndani = Math.round (obj.data [0].hum) + "%"; hati.getElementById ("shinikizo"). HTMLHTML ya ndani = Math.round (obj.data [0].pres) + "mb";

Nambari ya chanzo ya ukurasa wa HTML wa mfano ambao unachukua jibu la JSON unapatikana mwishoni mwa hatua hii.

Kumbuka: Badilisha ugani wa faili kuwa ".html".

Hatua ya 9: Upungufu wa Mradi huu

  • Mradi hutumia GET kutuma data; ingawa haishughulikii na data nyeti, data inaweza kudanganywa kwa urahisi kwani haina utaratibu wowote wa kuangalia ukweli wa chanzo mbali na kuangalia vichwa, ambavyo vinaweza kubadilishwa kwa urahisi na hata kifaa cha kawaida kinaweza kuharibiwa. kuonekana kama moduli ya hali ya hewa.
  • Kwa kuwa moduli hiyo inategemea na inategemea sehemu nyingine ya ufikiaji (WIFI) kutuma data ambayo kwa hali nyingi itakuwa ya mashirika mengine. Ikiwa wakati wote wa kufikia iko chini kwa huduma kwa sababu fulani, moduli haitaweza kutuma data.
  • Ingawa mradi umejengwa ili kuongeza usahihi wa mfumo uliopo, sensa inayopatikana kwenye soko sio sahihi kuliko inavyotarajiwa ambayo matokeo yake husababisha kutofaulu kusudi lake kuu.
  • Wakati nilipanga mradi huo, nilipanga kujumuisha hali ambayo seva inakadiri thamani ya data kulingana na eneo la marekebisho ya makosa. Lakini baada ya kutekeleza huduma hii, niligundua kuwa inahitajika APIs za mtu wa tatu kutafsiri kuratibu kwa mikoa ya kijiografia.

Hatua ya 10: Maboresho zaidi ambayo yanaweza kufanywa kwa Mradi huu

  • Usahihi wa moduli unaweza kuboreshwa zaidi kwa kutengeneza sensorer kwa kusudi maalum badala ya kutumia moduli ya generic ambayo inapatikana sokoni.
  • Moduli inaweza kubadilishwa ili ifanye kazi zaidi kwa kujitegemea kwa kutumia chip maalum ambayo inawasiliana bila waya na minara ya seli kutuma data na hivyo kuboresha uvumilivu wa makosa.
  • Jopo la jua na mfumo wa betri zinaweza kutumika kwa kushirikiana na hali ya usingizi mzito wa ESP na hivyo kuboresha ufanisi wa nguvu na kuifanya iwe huru zaidi kutoka kwa usambazaji wa umeme wa nje.
  • POST inaweza kutumika kutuma data na njia fulani ya uthibitishaji kama kutumia nambari za mzunguko kwa kila usafirishaji wa data.
  • Badala ya NodeMCU, ambayo ni bodi ya prototyping, tunaweza kutumia mdhibiti mdogo katika utengenezaji wa habari ambayo sio tu inapunguza gharama lakini pia hutumia matumizi bora ya rasilimali za mfumo.
  • Kwa kushirikiana na API ya jiografia ya Google na kuunganisha kwa WIFI yoyote wazi inayopatikana, moduli inaweza kufanya kazi bila hata kuisanidi; tayari kusambaza data nje ya kiwanda bila usanidi wowote unahitajika.

Hatua ya 11: Maneno machache kwa hadhira

Maneno Machache kwa Hadhira
Maneno Machache kwa Hadhira

Jamani, ninagundua kuwa hii sio mafunzo ya urafiki wa mwanzo kabisa kwani sijataja kila undani ambao unahitaji kufunikwa. Na pia mradi huu ni mkubwa sana kufunikwa kwa Agizo. Bado, nilijaribu kadiri niwezavyo kufunika kila jambo muhimu la mradi huo. Ninajua pia kuwa video inayoonyesha kufanya kazi kwa mradi ingekuwa nzuri sana lakini kwa kuwa hii ndio ya kwanza kufundishwa na kuwa mkweli, hii ndio chapisho langu la kwanza la kitu chochote kama hiki, nilikuwa na wasiwasi sana kuwa mbele ya kamera.

Ikiwa nyinyi mnahitaji msaada wowote katika kufanya mradi huu au kitu chochote kama hiki, nifikie tu kwa [email protected] au unaweza kuacha maoni kama kawaida. Nitajaribu kukusaidia jamani kwa uwezo wangu wote.

Asante!!

Ilipendekeza: