Përmbajtje:

Sistemi i monitorimit të motit të shpërndarë inteligjent të IoT duke përdorur NodeMCU: 11 hapa
Sistemi i monitorimit të motit të shpërndarë inteligjent të IoT duke përdorur NodeMCU: 11 hapa

Video: Sistemi i monitorimit të motit të shpërndarë inteligjent të IoT duke përdorur NodeMCU: 11 hapa

Video: Sistemi i monitorimit të motit të shpërndarë inteligjent të IoT duke përdorur NodeMCU: 11 hapa
Video: Napoleonic Wars 1809 - 14: Downfall 2024, Korrik
Anonim
Sistemi i monitorimit të motit të shpërndarë inteligjent të IoT duke përdorur NodeMCU
Sistemi i monitorimit të motit të shpërndarë inteligjent të IoT duke përdorur NodeMCU

Ju të gjithë mund të jeni në dijeni të stacionit tradicional të motit; por a keni menduar ndonjëherë se si funksionon në të vërtetë? Meqenëse stacioni tradicional i motit është i kushtueshëm dhe i rëndë, dendësia e këtyre stacioneve për njësi sipërfaqe është shumë më pak, gjë që kontribuon në pasaktësinë e të dhënave. Unë do t'ju shpjegoj se si: Supozoni se një stacion ndodhet në mes të një qyteti dhe është stacioni i vetëm që ndodhet në rreze 'x' metër, mund të anohet lehtë nëse ndonjë agjent shkaktues i ndotjes është i pranishëm në afërsi i stacionit që tregon të gjithë zonën e rrezes 'x' metër si të ndotur pasi ai stacion i vetëm është përgjegjës për të përcaktuar të dhënat e motit në të gjithë zonën.

Për të kapërcyer këtë problem, dendësia e moduleve duhet të rritet e cila është e mundur vetëm nëse modulet janë më të lirë dhe marrin një gjurmë më të vogël se ajo ekzistuese.

Kjo është arsyeja pse zgjidhja ime e propozuar është zgjidhja perfekte për këtë problem, kushton më pak se 10 dollarë dhe gjithashtu qëndron lehtësisht në pëllëmbën time.

Si punon…

Janë 3 pjesë kryesore të këtij projekti.

Ana e pajisjes:

Pajisja është një modul IoT i treguar në foto që dërgon të dhënat e motit në server çdo interval 'x' të kohës. Të dhënat përfshijnë të dhënat aktuale të motit, vendndodhjen gjeografike të modulit; dmth koordinatat e tij, adresa e tij MAC; për të identifikuar në mënyrë unike pajisjen, versionin e firmuerit në të cilin po funksionon aktualisht. Ana e pajisjes përfshin N-module të shpërndara në të gjithë zonën duke kontribuar në mënyrë aktive të dhëna në server.

Nga ana e serverit:

Siç sugjeron edhe emri, është serveri i centralizuar që merret me disa operacione si marrja e të dhënave nga modulet dhe ruajtja e tyre në bazën e të dhënave, azhurnimi i modulit me firmuerin më të fundit nëse po funksionon në një version më të vjetër, duke dërguar të dhënat e motit në klient sipas kërkesës.

Klienti/Ana e Përdoruesit:

Usershtë përdoruesi përfundimtar që kërkon të dhënat e motit nga serveri. Klienti dërgon vendndodhjen aktuale dhe bazuar në vendndodhjen, serveri llogarit distancën midis klientit dhe të gjitha moduleve dhe i dërgon klientit të dhënat e motit të modulit më të afërt të cilat konsiderohen të sakta.

Furnizimet

  • NodeMCU (ESP8266-12E)
  • DHT11 (Sensori i lagështisë dhe temperaturës)
  • BMP180 (Sensori i presionit dhe temperaturës)
  • MQ-135 (Sensori i indeksit të cilësisë së ajrit)
  • Kabllo USB (për të ngarkuar programin)
  • Furnizimi me energji 5 volt
  • Kondensatorët (Opsionale: të vendosen paralelisht me linjën elektrike)
  • Arduino IDE (Për të korrigjuar dhe ngarkuar programin)
  • Aplikimi POSTMAN (opsional: për të korrigjuar API)
  • Një faqe në internet (për të pritur serverin PHP dhe MySQL)

Hapi 1: Bashkoni të gjithë përbërësit dhe ngarkoni programin në NodeMCU

Saldoni të gjithë përbërësit dhe ngarkoni programin në NodeMCU
Saldoni të gjithë përbërësit dhe ngarkoni programin në NodeMCU
Bashkoni të gjithë përbërësit dhe ngarkoni programin në NodeMCU
Bashkoni të gjithë përbërësit dhe ngarkoni programin në NodeMCU

Ngjitini të gjithë përbërësit në NodeMCU siç tregohet në diagramin e qarkut në një tabelë perf. Gjithashtu, lidhni një kondensator paralelisht me linjat e energjisë pasi fuqia rritet gjatë transmetimit dhe marrjes aktive të të dhënave.

Pasi të ketë përfunduar puna e bashkimit, ngarkoni kodin e dhënë në skedarin "code.c".

Shënim: Mos harroni të zëvendësoni letrat kredenciale me kredencialet tuaja. Gjithashtu vendosni skedarin me emrin "html_file.h" brenda dosjes së skicës arduino. Të gjithë skedarët e titujve të përdorur në këtë projekt mund t'i gjeni këtu

Karakteristikat e kodit:

Pika e Qasjes: Meqenëse është e vështirë të programosh çdo modul me kredencialet në prodhimin masiv, moduli pret një faqe në uebin e tij të parë për të pranuar kredencialet e WiFi me të cilat modulet duhet të lidhen dhe ruhen në EEPROM për përdorim të mëvonshëm.

Pasi të jenë konfiguruar kredencialet, NodeMCU kontrollon EEPROM për kredencialet dhe lidhet me kredencialet WiFi të pranishme në EEPROM.

Pas lidhjes me sukses në WiFi, NodeMCU fillon të ngarkojë të dhënat në server çdo interval 'x' të kohës, të dhënat përfshijnë të dhënat e motit, adresën MAC të modulit, versionin e firmuerit, vendndodhjen gjeografike të pajisjes.

Përditësimi OTA: Moduli gjithashtu kontrollon përditësimin e ri të firmware çdo ditë në një kohë të caktuar të specifikuar në kod. Ky funksion është i dobishëm pasi nuk është e mundur që asnjë prodhues të vazhdojë dhe të ndryshojë programin e një moduli individual në rast se ka ndonjë ndryshim që duhet bërë.

Kohëmatësi Watchdog: Atlast duhet të ketë një mënyrë për të rimarrë veten pa ndonjë ndërhyrje njerëzore nëse bllokohet ose rrëzohet. Kjo mund të arrihet duke përdorur kohëmatësin Watchdog. Mënyra se si funksionon kjo është: Ekziston një nën-rutinë Interrupt që funksionon çdo sekondë. ISR rrit numëruesin çdo herë që ekzekuton dhe kontrollon nëse numëruesi ka arritur numrin maksimal. Pasi numëruesi të arrijë vlerën maksimale, moduli rivendoset duke supozuar se është rrëzuar. Në funksionimin normal, numëruesi gjithmonë rivendoset para se të arrijë numrin maksimal.

Hapi 2: Konfigurimi i SQL Server

Konfigurimi i SQL Server
Konfigurimi i SQL Server

Konfigurimi i SQL Server është gjithashtu shumë i thjeshtë. Thjesht krijoni një bazë të dhënash në serverin SQL dhe Importoni cilësimin duke importuar skedarin e quajtur "database_structure.txt". Ju mund ta gjeni skedarin në këtë hap. Meqenëse udhëzimi nuk lejon të ngarkoni skedarë ".sql", unë e riemërtova skedarin në ".txt".

Shënim: Riemërtoni skedarin nga ".txt" në ".sql".

Hapi 3: Konfigurimi i serverit të skedarëve

Konfigurimi i serverit është me të vërtetë i lehtë nëse zotëroni një faqe në internet dhe ajo është pritur në internet. Unë nuk do të kaloj nëpër të gjithë procedurën e krijimit të një faqe në internet dhe pritjes së saj pasi është përtej fushëveprimit të këtij mësimi. Por mund ta mbani në kompjuterin tuaj si localhost për të provuar funksionimin e skedarëve.

Meqenëse Instructable nuk lejon të ngarkoni skedarë PHP, unë i kam riemërtuar skedarët në ".txt".

Shënim: Ju lutemi riemërtoni zgjerimin e skedarëve në ".php". Gjithashtu mos harroni të ndryshoni kredencialet e skedarit "config.php".

Thjesht ngarkoni skedarët në server dhe jeni mirë të shkoni.

Unë do t'ju jap informacion të shkurtër në lidhje me skedarët PHP.

db_config.php:

Në këtë skedar, të gjitha kredencialet e kërkuara për t'u lidhur me serverin SQL ruhen.

db_connect:

Në këtë skedar klasa e nevojshme për lidhjen e bazës së të dhënave është e pranishme.

insert.php:

NodeMCU e quan këtë skedar PHP për ngarkimin e të dhënave në server duke përdorur metodën GET. Ky skedar është gjithashtu përgjegjës për të ruajtur të njëjtat të dhëna në serverin SQL.

retrieve.php:

Përdoruesi/Klienti e quan këtë PHP duke përdorur metodën GET. Serveri llogarit distancën midis përdoruesit dhe të gjitha moduleve. Pastaj të dhënat e modulit më të afërt dërgohen si përgjigje për klientin në formatin JSON/XML sipas preferencës së klientit.

update.php:

Ky skedar PHP thirret nga moduli çdo ditë në një kohë të caktuar për të kontrolluar nëse moduli po ekzekuton versionin e fundit të firmware -it. Thjesht vendosni skedarin më të fundit ".bin" në serverin e skedarëve dhe specifikoni drejtorinë e skedarit në ndryshoren e skedarit.

Nëse këto shumë skedarë duken të frikshëm në fillim, unë kam përfshirë dokumentacionin e përdoruesit në hapin tjetër.

Hapi 4: Dokumentacioni i Përdoruesit

Dokumentacioni i Përdoruesit
Dokumentacioni i Përdoruesit
Dokumentacioni i Përdoruesit
Dokumentacioni i Përdoruesit

Prezantimi:

API i motit siguron një ndërfaqe të thjeshtë për të kërkuar të dhënat e motit për vendet në sipërfaqen e tokës. Ju kërkoni informacionin e motit për një çift gjeografie/gjatësi të caktuar me formatin e daljes të specifikuar. API kthen temperaturën, lagështinë, presionin dhe indeksin e cilësisë së ajrit që është regjistruar për herë të fundit nga moduli më i afërt nga vendi i kërkuar.

Perpara se te fillosh:

Ky dokument ka për qëllim zhvilluesit e uebfaqeve dhe celularëve që duan të përfshijnë informacione mbi motin në një aplikacion që është duke u zhvilluar. Ai prezanton përdorimin duke përdorur API dhe materialin referues mbi parametrat në dispozicion.

Kërkesat për të dhënat e motit:

Kërkesat për API të motit janë ndërtuar si një varg URL. API kthen të dhënat e motit për një pikë në tokë, të specifikuara nga një palë gjerësi/gjatësi. Vini re se saktësia e të dhënave të motit është drejtpërdrejt proporcionale me densitetin e moduleve të vendosura në një zonë.

Një kërkesë për API të motit merr formën e mëposhtme:

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

Aty ku formati i daljes (formati) mund të jetë një nga vlerat e mëposhtme:

  • JSON (rekomandohet), tregon daljen në JavaScript Object Notation (JSON); ose
  • XML, tregon daljen në XML, të mbështjellë brenda nyjës.

Parametrat e Kërkesës:

Siç është standarde në të gjitha URL -të, parametrat ndahen duke përdorur karakterin ampersand (&). Lista e parametrave dhe vlerat e tyre të mundshme shënohen më poshtë.

Parametrat e kërkuar:

  • lat: Përfaqëson një gjerësi gjeografike të një lokacioni për të kërkuar. (p.sh. lat = 19.56875)
  • lon: Përfaqëson një gjatësi gjeografike të një vendi për të kërkuar. (p.sh. lon = 72.97568)

Parametrat opsionalë:

format: Specifikon formatin e daljes së përgjigjes të të dhënave të motit. Mund të jetë ose JSON ose XML. Parazgjedhja është JSON. (p.sh. format = json ose format = xml)

Përgjigjet e motit:

Për çdo kërkesë të vlefshme, shërbimi i zonës kohore do të kthejë një përgjigje në formatin e treguar në URL -në e kërkesës. Çdo përgjigje do të përmbajë elementët e mëposhtëm:

  • suksesi: një vlerë që tregon statusin e përgjigjes.

    • 0: Negativ; tregon se kërkesa ishte keqformuar.
    • 1: Afirmativ; tregon se kërkesa ishte e suksesshme.
  • mesazh: një varg që tregon arsyen e keqformimit të kërkesës. Në dispozicion vetëm kur statusi është negativ.
  • të dhëna: një grup me parametra të shumtë të motit.

    • temp: të dhënat e temperaturës.
    • hum: të dhënat e pranisë së lagështisë.
    • pres: të dhënat e presionit absolut.
    • aqi: indeksi aktual i cilësisë së ajrit.

Shembujt e përgjigjes së të dy formateve mund të shihen në imazhe.

Hapi 5: Konfigurimi i modulit

Konfigurimi i modulit
Konfigurimi i modulit
Konfigurimi i modulit
Konfigurimi i modulit

Krijohet një pikë aksesi dhe një faqe interneti mbahet në një adresë IP (e parazgjedhur: 192.168.4.1) për të marrë kredencialet nga menaxheri/përdoruesi i pajisjes në nisjen e parë ose nëse moduli nuk i gjen kredencialet e ruajtura tashmë në EEPROM.

Përdoruesi duhet të futë SSID dhe fjalëkalimin me të cilin përdoruesi dëshiron që moduli të lidhet. Gjerësia gjeografike dhe gjerësia mbushen automatikisht nëse i lejoni shfletuesit qasjen në vendndodhjen.

Pasi të futen të gjitha detajet, klikoni në butonin "Dërgo", dhe pastaj të gjitha letrat kredenciale shkruhen në EEPROM të modulit.

Ky hap është shumë vendimtar pasi që gjatë prodhimit masiv të moduleve, nuk është e mundur të programohen të gjitha modulet me të dhënat e sakta të vendndodhjes dhe kredencialet WiFi. Gjithashtu, nuk është e këshillueshme që të kodoheni kredencialet në program pasi që nëse na duhet të zhvendosim modulin në ndonjë vend tjetër ose duam të ndryshojmë kredencialet WiFi, do të na duhet të riprogramojmë modulin. Për të shmangur këtë sherr, funksioni i konfigurimit fillestar zbatohet.

Hapi 6: Tani është koha për të kontribuar të dhënat në re

Tani është koha për të kontribuar të dhënat në re
Tani është koha për të kontribuar të dhënat në re
Tani është koha për të kontribuar të dhënat në re
Tani është koha për të kontribuar të dhënat në re

Pasi të kenë përfunduar të gjithë hapat e mëparshëm, tani është koha për të lejuar që moduli të ngarkojë të dhënat në server. Fillon të ngarkohet automatikisht pasi të keni ruajtur kredencialet.

Thërret "insert.php" si një thirrje API me kalimin e të gjithë parametrave për t'u dërguar në metodën GET.

Pjesa e kodit më poshtë tregon se si përpunohen parametrat.

nëse (isset ($ _ GET ['temp']) && isset ($ _ GET ['hum']) && isset ($ _ GET ['pres']) && isset ($ _ GET ['aqi']) && isset ($ _ GET ['mac']) && isset ($ _ GET ['lat']) && isset ($ _ GET ['lon']))) 2. {3. // programi kryesor 4.}

Ashtu si të gjitha modulet fillojnë ngarkimin e të dhënave.

Shënim: Ulni frekuencën e ngarkimit në kod nëse mendoni se serveri po mbingarkohet.

Hapi 7: Përditësimi mbi ajrin (OTA)

Përditësimi mbi ajrin (OTA)
Përditësimi mbi ajrin (OTA)

Pasi moduli të jetë vendosur dhe fillon të ngarkojë të dhënat, ai kontrollon përditësimet e firmware -it çdo ditë në një kohë të caktuar të përmendur në program. Nëse gjen ndonjë, shkarkon dhe ndez skedarin binar në të. Dhe nëse jo, funksionimi normal i ngarkimit të të dhënave vazhdon.

Për të kontrolluar për një azhurnim të ri, moduli thërret "update.php" duke dërguar adresën MAC në kokën e kërkesës. Serveri pastaj kontrollon nëse ajo adresë specifike MAC ka ndonjë përditësim të ri, nëse po, atëherë ai dërgon skedarin binar të firmware -it më të fundit në përgjigje.

Gjithashtu kontrollon për të gjithë titujt e nevojshëm të kërkuar për vërtetimin bazë të modulit.

Hapi 8: Si mund të ketë qasje te të dhënat përdoruesi/klienti…

Si mund të ketë qasje te të dhënat përdoruesi/klienti…
Si mund të ketë qasje te të dhënat përdoruesi/klienti…
Si Përdoruesi/Klienti mund të kenë qasje në të dhënat…
Si Përdoruesi/Klienti mund të kenë qasje në të dhënat…
Si Përdoruesi/Klienti mund të kenë qasje në të dhënat…
Si Përdoruesi/Klienti mund të kenë qasje në të dhënat…

Prettyshtë mjaft e drejtpërdrejtë për të hyrë në të dhënat nga serveri. Thjesht duke thirrur "retrieve.php", ne do të marrim të dhënat e motit në përgjigje në formatin JSON. Pas kësaj, është vetëm një çështje e analizimit të të dhënave JSON për të hyrë në elementet individuale. E ngjashme është me përgjigjen XML. Përdoruesi gjithmonë mund të specifikojë formatin e preferuar të përgjigjes në të cilën përdoruesi është i rehatshëm për të punuar. Nëse përdoruesi nuk specifikon formatin, formati i paracaktuar është JSON.

Një kërkesë mostër bëhet duke përdorur mjetin POSTMAN për të kontrolluar funksionimin e API.

Një shembull i analizimit të përgjigjes JSON në javascript është treguar në fragmentin e kodit më poshtë.

var url = "https://example.com/retrieve.php?lat=19.044848&lon=72.8464373";; funksioni httpGet (theUrl) {var xmlHttp = XMLHttpRequest i ri (); xmlHttp.open ("GET", theUrl, false); // false për kërkesën sinkronike xmlHttp.send (null); kthehu xmlHttp.responseText; } var myVar = httpGet (url); var obj = JSON.parse (myVar); document.getElementById ("aqi"). innerHTML = obj.data [0].aqi; document.getElementById ("temperatura"). innerHTML = Math.round (obj.data [0].temp) + "° C"; document.getElementById ("temp"). innerHTML = Math.round (obj.data [0].temp) + "° C"; document.getElementById ("lagështia"). innerHTML = Math.round (obj.data [0].hum) + "%"; document.getElementById ("presion"). innerHTML = Math.round (obj.data [0].pres) + "mb";

Kodi burimor i faqes HTML shembull që analizon përgjigjen JSON është i disponueshëm në fund të këtij hapi.

Shënim: Ndryshoni shtesën e skedarit në ".html".

Hapi 9: Kufizimet e këtij projekti

  • Projekti përdor GET për të dërguar të dhënat; edhe pse nuk merret me të dhëna të ndjeshme, të dhënat mund të manipulohen lehtësisht pasi nuk ka asnjë mekanizëm për të kontrolluar vërtetësinë e burimit përveç kontrollimit të titujve, të cilat mund të modifikohen lehtë dhe madje edhe një pajisje normale mund të mashtrohet të duket si një modul moti.
  • Meqenëse moduli mbështetet dhe varet vetëm nga pika e tjera e hyrjes (WIFI) për të dërguar të dhënat që në shumicën e rasteve do të ishin të organizatave të tjera. Nëse pika e hyrjes është në funksion për ndonjë arsye, moduli nuk do të jetë në gjendje të dërgojë të dhëna.
  • Edhe pse projekti është ndërtuar për të rritur saktësinë e sistemit ekzistues, sensori i disponueshëm në treg është më pak i saktë se sa pritej, gjë që rezulton në dështimin e qëllimit të tij kryesor.
  • Ndërsa planifikova projektin, planifikova të përfshija një mënyrë në të cilën serveri mesatarizon vlerën e të dhënave bazuar në vendndodhjen për korrigjimin e gabimit. Por me zbatimin e kësaj veçorie, kuptova se i duheshin disa API të palëve të treta për të përkthyer koordinatat në rajonet gjeografike.

Hapi 10: Përmirësime të mëtejshme që mund t'i bëhen këtij projekti

  • Saktësia e modulit mund të përmirësohet më tej duke i përshtatur posaçërisht sensorët për qëllimin specifik në vend që të përdorni modulin gjenerik që është i disponueshëm në treg.
  • Moduli mund të modifikohet për të punuar edhe më shumë në mënyrë të pavarur duke përdorur një çip të veçantë që komunikon pa tel me Cell-tower për të dërguar të dhëna duke përmirësuar kështu tolerancën ndaj gabimeve.
  • Paneli diellor dhe sistemi i baterisë mund të përdoren në lidhje me mënyrën e gjumit të thellë të ESP, duke përmirësuar kështu efikasitetin e energjisë dhe duke e bërë atë më të pavarur nga një furnizim me energji të jashtme.
  • POST mund të përdoret për të dërguar të dhëna me ndonjë mekanizëm vërtetimi si përdorimi i kodeve ciklike për çdo transmetim të të dhënave.
  • Në vend të NodeMCU, i cili është një tabelë prototipimi, ne mund të përdorim një mikrokontrollues të personalizuar në prodhimin masiv i cili jo vetëm që ul koston, por gjithashtu përdor më së miri burimet e sistemit.
  • Në lidhje me API -në e gjeolokimit të Google dhe lidhjen me ndonjë WIFI të hapur të disponueshme, moduli mund të funksionojë edhe pa e konfiguruar atë; gati për të transmetuar të dhëna nga fabrika pa ndonjë konfigurim të nevojshëm.

Hapi 11: Disa fjalë për auditorin

Disa fjalë për auditorin
Disa fjalë për auditorin

Hej djema, e kuptoj që ky nuk është një mësimdhënie miqësore për fillestarët pasi nuk kam përmendur çdo detaj të vetëm që duhet të mbulohet. Dhe gjithashtu ky projekt është vërtet i madh për t'u mbuluar në një Udhëzues. Megjithatë, unë u përpoqa më të mirën për të mbuluar çdo aspekt të rëndësishëm të projektit. Unë gjithashtu e di se një video që shfaq punën e projektit do të kishte qenë vërtet e mrekullueshme, por meqenëse ky është udhëzimi im i parë dhe të jem i sinqertë, ky është publikimi im i parë i diçkaje të ngjashme me këtë, isha mjaft nervoze të isha para një kamera.

Nëse keni nevojë për ndonjë ndihmë për të bërë këtë projekt ose diçka të ngjashme me këtë, thjesht më kontaktoni në [email protected] ose mund të lini një koment si gjithmonë. Do të përpiqem t'ju ndihmoj djemtë në maksimumin e aftësisë sime.

Faleminderit!!

Recommended: