
Tartalomjegyzék:
- Kellékek
- 1. lépés: Forrasztja fel az összes összetevőt, és töltse fel a programot a NodeMCU -ra
- 2. lépés: Az SQL Server konfigurálása
- 3. lépés: A fájlkiszolgáló konfigurálása
- 4. lépés: Felhasználói dokumentáció
- 5. lépés: A modul beállítása
- 6. lépés: Most itt az ideje, hogy adatokat adjon a felhőhöz
- 7. lépés: Air -over (OTA) frissítés
- 8. lépés: Hogyan férhet hozzá a felhasználó/ügyfél az adatokhoz…
- 9. lépés: A projekt korlátai
- 10. lépés: A projekt további fejlesztései
- 11. lépés: Néhány szó a közönség számára
2025 Szerző: John Day | [email protected]. Utoljára módosítva: 2025-01-23 14:47

Mindannyian ismerik a hagyományos időjárás -állomást; de elgondolkodtál már azon, hogyan is működik valójában? Mivel a hagyományos meteorológiai állomás költséges és terjedelmes, ezeknek az állomásoknak a területegységre jutó sűrűsége nagyon alacsony, ami hozzájárul az adatok pontatlanságához. Elmagyarázom, hogyan: Tegyük fel, hogy egy állomás a város közepén található, és ez az egyetlen állomás, amely x méteres sugarú körben található, és könnyen elfogult lehet, ha szennyezést okozó anyag van a közelben az állomás teljes "x" méter sugarú területét szennyezettnek mutatva, mivel az egyetlen állomás felelős az egész terület időjárási adatainak meghatározásáért.
Ennek a problémának a kiküszöbölése érdekében meg kell növelni a modulok sűrűségét, ami csak akkor lehetséges, ha a modulok olcsóbbak és kisebb helyet foglalnak el, mint a meglévő.
Ez az oka annak, hogy a javasolt megoldásom tökéletes megoldás erre a problémára, kevesebb, mint 10 dollárba kerül, és könnyen a tenyeremen is nyugszik.
Hogyan működik…
Ennek a projektnek 3 fő része van.
Eszköz oldal:
Az Eszköz a képen látható IoT modul, amely minden x időközönként elküldi az időjárási adatokat a szervernek. Az adatok tartalmazzák a tényleges időjárási adatokat, a modul földrajzi elhelyezkedését; azaz koordinátái, MAC -címe; az eszköz egyedi azonosításához, az éppen futó firmware verzióhoz. Az eszközoldalon N-modulok találhatók, amelyek el vannak osztva a területen, és aktívan járulnak hozzá a szerverhez.
Szerver oldal:
Ahogy a neve is sugallja, a központosított szerver több műveletet is kezel, például az adatok fogadását a modulokból és tárolását az adatbázisban, a modul frissítését a legújabb firmware -rel, ha régebbi verzión fut, és elküldi az időjárási adatokat a ügyfél kérésre.
Ügyfél/felhasználó oldal:
Ez a végfelhasználó, aki kéri az időjárási adatokat a szerverről. Az ügyfél elküldi az aktuális helyet, és a hely alapján a szerver kiszámítja a kliens és az összes modul közötti távolságot, és elküldi a legközelebbi modul időjárási adatait az ügyfélnek, amelyet pontosnak tekint.
Kellékek
- NodeMCU (ESP8266-12E)
- DHT11 (páratartalom és hőmérséklet érzékelő)
- BMP180 (nyomás- és hőmérsékletérzékelő)
- MQ-135 (levegőminőség-index-érzékelő)
- USB kábel (a program feltöltéséhez)
- 5 voltos tápegység
- Kondenzátorok (opcionális: az elektromos vezetékkel párhuzamosan kell elhelyezni)
- Arduino IDE (To hibakeresés és töltsd fel a program)
- POSTMAN alkalmazás (választható: a hibakeresés a API)
- Weboldal (a PHP és a MySQL szerver tárolására)
1. lépés: Forrasztja fel az összes összetevőt, és töltse fel a programot a NodeMCU -ra


Forrasztja az összes alkatrészt a NodeMCU -hoz, ahogyan azt egy áramköri rajz mutatja egy perf kártyán. Ezenkívül forrasztjon egy kondenzátort az elektromos vezetékekkel párhuzamosan, mivel a teljesítmény megugrik az aktív adatátvitel és -fogadás során.
A forrasztási munka befejezése után töltse fel a "code.c" fájlban megadott kódot.
Megjegyzés: Ne felejtse el kicserélni a hitelesítő adatokat saját hitelesítő adataival. Helyezze a "html_file.h" nevű fájlt az arduino vázlatmappájába is. A projektben használt fejlécfájlok itt találhatók
A kód jellemzői:
Hozzáférési pont: Mivel a tömeges gyártásban nehéz minden modult beprogramozni a hitelesítő adatokkal, a modul az első indításkor egy weboldalt tárol, amely elfogadja a WiFi hitelesítő adatait, amelyekhez a moduloknak csatlakozniuk kell, és tárolja az EEPROM -ban későbbi használatra.
A hitelesítő adatok konfigurálása után a NodeMCU ellenőrzi az EEPROM hitelesítő adatait, és csatlakozik az EEPROM -ban található WiFi hitelesítő adatokhoz.
Miután sikeresen csatlakozott a WiFi -hez, a NodeMCU minden x -intervallumban megkezdi az adatok feltöltését a szerverre, az adatok az időjárási adatokat, a modul MAC -címét, a firmware verzióját, az eszköz földrajzi helyét tartalmazzák.
OTA frissítés: A modul minden nap ellenőrzi az új firmware frissítést a kódban meghatározott időpontban. Ez a funkció hasznos, mivel egyetlen gyártó sem tudja folytatni és módosítani az egyes modulok programját, ha változtatásokat kell végrehajtani.
Watchdog Timer: Az Atlastnak módot kell találnia arra, hogy emberi beavatkozás nélkül helyreálljon, ha elakad vagy összeomlik. Ezt a Watchdog időzítő használatával érheti el. Ez így működik: Van egy megszakítási alrutin, amely minden másodpercben fut. Az ISR minden alkalommal növeli a számlálót, amikor végrehajtja, és ellenőrzi, hogy elérte -e a számláló a maximális számot. Amint a számláló eléri a maximális értéket, a modul visszaáll, feltéve, hogy összeomlott. Normál működés esetén a számláló mindig nullázódik, mielőtt eléri a maximális számot.
2. lépés: Az SQL Server konfigurálása

Az SQL Server beállítása is nagyon egyszerű. Csak hozzon létre egy adatbázist az SQL kiszolgálón, és importálja a beállítást az "database_structure.txt" nevű fájl importálásával. Ebben a lépésben megtalálhatja a fájlt. Mivel az utasítás nem teszi lehetővé a.sql fájlok feltöltését, átneveztem a fájlt ".txt" -re.
Megjegyzés: Nevezze át a fájlt ".txt" -ről ".sql" -re.
3. lépés: A fájlkiszolgáló konfigurálása
A szerver konfigurálása nagyon egyszerű, ha saját webhelye van, és az interneten található. Nem fogom végigvenni a webhely létrehozásának és tárolásának teljes folyamatát, mivel ez nem tartozik az oktatóanyag keretei közé. De a saját számítógépén is házigazdaként helyi szerverként próbálhatja ki a fájlok működését.
Mivel az Instructable nem teszi lehetővé a PHP fájlok feltöltését, átneveztem a fájlokat ".txt" -re.
Megjegyzés: Kérjük, nevezze át a fájlok kiterjesztését ".php" -ra. Ne felejtse el megváltoztatni a "config.php" fájl hitelesítő adatait.
Csak töltse fel a fájlokat a szerverre, és te jó menni.
Röviden tájékoztatok a PHP fájlokról.
db_config.php:
Ebben a fájlban az SQL szerverhez való csatlakozáshoz szükséges összes hitelesítő adat tárolódik.
db_connect:
Ebben a fájlban az adatbázis -kapcsolathoz szükséges osztály található.
insert.php:
A NodeMCU ezt a PHP -fájlt hívja az adatok GET metódussal történő feltöltéséhez a szerverre. Ez a fájl is felelős, hogy tárolja ugyanazokat az adatokat az SQL szerver.
retrieve.php:
A Felhasználó / Ügyfél kéri ezt a PHP a GET metódus segítségével. A szerver kiszámítja a felhasználó és az összes modul közötti távolságot. Ezután a legközelebbi modul adatait válaszként elküldi az ügyfélnek JSON/XML formátumban, az ügyfél által preferált módon.
update.php:
Ezt a PHP -fájlt a modul minden nap meghívja egy adott időpontban annak ellenőrzésére, hogy a modul a firmware legújabb verzióját futtatja -e. Csak helyezze a legújabb ".bin" fájlt a fájlszerverbe, és adja meg a fájl könyvtárát a fájl változójában.
Ha ez a sok fájl elsőre ijesztőnek tűnik, a következő lépésben a felhasználói dokumentációt is belefoglaltam.
4. lépés: Felhasználói dokumentáció


Bevezetés:
Az Időjárás API egyszerű felületet biztosít az időjárási adatok lekéréséhez a föld felszínén. Az időjárási információkat egy meghatározott szélességi/hosszúsági párhoz kéri a megadott kimeneti formátummal. Az API visszaadja azt a hőmérséklet-, páratartalom-, nyomás- és levegőminőségi indexet, amelyet a legközelebbi modul utoljára rögzített a kért helyről.
Mielőtt elkezded:
Ez a dokumentum azoknak a webhely- és mobilfejlesztőknek szól, akik időjárási információkat szeretnének beépíteni egy fejlesztés alatt álló alkalmazásba. Bemutatja a használatot az API és a referenciaanyag segítségével a rendelkezésre álló paramétereken.
Időjárási adatok kérései:
Az időjárási API -kérelmek URL -karakterláncként készülnek. Az API egy földi pont időjárási adatait adja vissza, amelyet egy szélességi/hosszúsági páros határoz meg. Vegye figyelembe, hogy az időjárási adatok pontossága egyenesen arányos a területen elhelyezett modulok sűrűségével.
A Weather API kérés a következő formát öltheti:
example.com/retrieve.php?lat=25.96446&lon=53.9443&format=json
Amennyiben kiadási méret (méret) lehetnek a következő értékeket:
- JSON (ajánlott), a JavaScript Object Notation (JSON) kimenetét jelzi; vagy
- XML, a kimenetet jelzi XML -ben, a csomóponton belül.
Kérési paraméterek:
Mint minden URL -ben, a paramétereket az ampersand (&) karakterrel kell elválasztani. Az alábbiakban felsoroljuk a paraméterek listáját és lehetséges értékeiket.
Szükséges paraméterek:
- lat: A keresett hely szélességi fokának ábrázolása. (pl. lat = 19,56875)
- lon: A keresendő hely hosszúságának ábrázolása. (pl. lon = 72.97568)
Választható paraméterek:
formátum: Meghatározza a válasz kimeneti formátumot az időjárási adatokat. Ez lehet JSON vagy XML. Az alapértelmezett JSON. (pl. formátum = json vagy formátum = xml)
Időjárási válaszok:
Az időzónaszolgáltatás minden érvényes kérésre választ ad a kérés URL -jében megadott formátumban. Minden válasz a következő elemeket tartalmazza:
-
siker: a válasz állapotát jelző érték.
- 0: negatív; azt jelzi, hogy a kérést rosszul formázták.
- 1: Megerősítő; azt jelzi, hogy a kérés sikeres volt.
- üzenet: egy karakterlánc, amely jelzi a kérelem hibás működésének okát. Csak akkor áll rendelkezésre, ha az állapot negatív.
-
adatok: tömb több időjárási paraméterrel.
- temp: a hőmérsékleti adatok.
- hum: a nedvesség jelenlétére vonatkozó adatok.
- pres: az abszolút nyomás adatok.
- aqi: a jelenlegi levegőminőségi index.
Mindkét formátum példája válasz látható a képeken.
5. lépés: A modul beállítása


Hozz létre egy hozzáférési pontot, és egy weboldalt tárol egy IP-címen (alapértelmezett: 192.168.4.1), hogy megkapja a hitelesítő adatokat az eszközkezelőtől/felhasználótól a legelső indításkor, vagy ha a modul nem találja a már tárolt hitelesítő adatokat a EEPROM.
A felhasználónak meg kell adnia azt az SSID -t és jelszót, amelyhez a felhasználó csatlakozni szeretne. A szélességi és hosszúsági fokok automatikusan kitöltődnek, ha engedélyezi a böngésző számára a hely elérését.
Miután megadta az összes adatot, kattintson a "KÜLDÉS" gombra, majd az összes hitelesítő adatot írja be a modul EEPROM -jába.
Ez a lépés nagyon fontos, mivel a modulok tömeges gyártása során nem lehetséges az összes modul pontos helyadatokkal és WiFi hitelesítő adatokkal történő programozása. Ezenkívül nem tanácsos a program hitelesítő adatait kódolni, mivel ha egyáltalán át kell helyeznünk a modult egy másik helyre, vagy meg akarjuk változtatni a WiFi hitelesítő adatokat, újra kell programoznunk a modult. Ennek elkerülése érdekében a szóváltás, a kezdeti beállítások funkció elérhető.
6. lépés: Most itt az ideje, hogy adatokat adjon a felhőhöz


Miután az összes előző lépést elvégezte, itt az ideje, hogy hagyja, hogy a modul feltöltse az adatokat a szerverre. A hitelesítő adatok mentése után automatikusan elindul a feltöltés.
Az "insert.php" -et API hívásnak nevezi, és minden paramétert átad GET metódusban.
Az alábbi kódrészlet bemutatja a paraméterek feldolgozásának módját.
if (isset ($ _ GET ['temp']) && isset ($ _ GET ['hum']) && isset ($ _ GET ['pres']) && isset ($ _ GET ['aqi']) && isset ($ _ GET ['mac']) && isset ($ _ GET ['lat']) && isset ($ _ GET ['lon']))) 2. {3. // 4. főprogram
Mint minden modul elkezdi feltölteni az adatokat.
Megjegyzés: Csökkentse a feltöltési gyakoriságot a kódban, ha úgy érzi, hogy a szerver túlterhelt.
7. lépés: Air -over (OTA) frissítés

Miután a modul minden beállításra került, és elkezdi feltölteni az adatokat, minden nap ellenőrzi a firmware -frissítéseket a programban meghatározott időpontban. Ha talál ilyet, akkor letölti és felvillanja a benne lévő bináris fájlt. Ha pedig nem, akkor az adatok feltöltésének szokásos művelete folytatódik.
Új frissítés kereséséhez a modul meghívja az "update.php" fájlt, elküldve a MAC -címet a kérés fejlécében. A szerver ezután ellenőrzi, hogy az adott MAC -címnek van -e új frissítése, ha igen, akkor válaszul elküldi a legújabb firmware bináris fájlját.
Ezenkívül ellenőrzi a modul alapvető hitelesítéséhez szükséges összes fejlécet.
8. lépés: Hogyan férhet hozzá a felhasználó/ügyfél az adatokhoz…



Ez nagyon egyszerű elérni az adatokat a szerverre. Csak a "retrieve.php" hívásával megkapjuk az időjárási adatokat válaszként JSON formátumban. Ezt követően már csak a JSON -adatok elemzéséről van szó az egyes elemek eléréséhez. Hasonló az XML válasz. A felhasználó mindig megadhatja azt a válaszformátumot, amelyben a felhasználó kényelmesen dolgozik. Ha a felhasználó nem adja meg a formátumot, akkor az alapértelmezett formátum a JSON.
A mintakérés a POSTMAN eszköz segítségével történik az API működésének ellenőrzésére.
Az alábbi kódrészletben látható egy példa a JSON -válasz JavaScript -elemzésére.
var url = "https://example.com/retrieve.php?lat=19.044848&lon=72.8464373";function httpGet (theUrl) {var xmlHttp = new XMLHttpRequest (); xmlHttp.open ("GET", theUrl, false); // hamis a szinkron kéréshez xmlHttp.send (null); return xmlHttp.responseText; } Var myVar = httpGet (URL); var obj = JSON.parse (myVar); document.getElementById ("aqi"). internalHTML = obj.data [0].aqi; document.getElementById ("hőmérséklet"). internalHTML = Math.round (obj.adatok [0].temp) + "° C"; document.getElementById ("temp"). internalHTML = Math.round (obj.adatok [0].temp) + "° C"; document.getElementById ("páratartalom"). internalHTML = Math.round (obj.adatok [0]. humum) + "%"; document.getElementById ("nyomás"). internalHTML = Math.round (obj.adatok [0].pres) + "mb";
A példa HTML -oldal forráskódja, amely elemzi a JSON -választ, ezen lépés végén érhető el.
Megjegyzés: Módosítsa a fájl kiterjesztését ".html" -re.
9. lépés: A projekt korlátai
- A projekt a GET segítségével küldi el az adatokat; annak ellenére, hogy nem érzékeny adatokkal foglalkozik, az adatok könnyen kezelhetők, mivel a fejlécek ellenőrzésén kívül nincs semmilyen mechanizmusa a forrás hitelességének ellenőrzésére, amely könnyen módosítható, és akár egy normál eszköz is hamisítható időjárási modulnak tűnik.
- Mivel a modul kizárólag más hozzáférési pontokra (WIFI) támaszkodik és függ azoktól az adatok küldésétől, amelyek az esetek többségében más szervezetekről származnak. Ha a hozzáférési pont valamilyen oknál fogva nem működik, a modul nem tud adatokat küldeni.
- Annak ellenére, hogy a projekt a meglévő rendszer pontosságának növelésére épült, a piacon elérhető érzékelő a vártnál kevésbé pontos, ami a fő céljának meghiúsulásához vezet.
- A projekt tervezése során terveztem egy olyan üzemmód beillesztését, amelyben a szerver átlagolja az adatok értékét a hely alapján a hibajavításhoz. Ennek a funkciónak a megvalósításakor azonban rájöttem, hogy szüksége van néhány harmadik féltől származó API-ra ahhoz, hogy a koordinátákat földrajzi régiókba fordítsa.
10. lépés: A projekt további fejlesztései
- A modul pontossága tovább javítható, ha a piacon kapható általános modul használata helyett az érzékelőket kifejezetten az adott célra szabja.
- A modul úgy módosítható, hogy még önállóbban működjön egy speciális chip használatával, amely vezeték nélkül kommunikál a Cell-tornyokkal az adatok elküldésére, ezáltal javítva a hibatűrést.
- A napelem és az akkumulátorrendszer együtt használható az ESP mély alvó üzemmódjával, ezáltal javítva az energiahatékonyságot és függetlenítve a külső tápegységtől.
- A POST segítségével adatokat lehet küldeni valamilyen hitelesítési mechanizmussal, például ciklikus kódok használatával minden adatátvitelhez.
- A NodeMCU helyett, amely egy prototípus-tábla, egyedi mikrovezérlőt használhatunk a sorozatgyártásban, amely nemcsak csökkenti a költségeket, hanem a lehető legjobban használja ki a rendszer erőforrásait.
- A Google földrajzi helymeghatározó API -jával és bármely rendelkezésre álló nyílt WIFI -hez kapcsolódva a modul konfiguráció nélkül is működhet; készen áll az adatok gyári küldésére, bármilyen beállítás nélkül.
11. lépés: Néhány szó a közönség számára

Hé srácok, rájöttem, hogy ez egyáltalán nem kezdőbarát oktatóanyag, mivel nem említettem minden részletet, amelyet le kell fedni. És ez a projekt valóban hatalmas ahhoz, hogy egy Instructable -ban lefedhető legyen. Mégis megpróbáltam a legjobb tudásom szerint kiterjed minden fontos szempontból a projekt. Azt is tudom, hogy egy videó, amely bemutatja a projekt működését, nagyon jó lett volna, de mivel ez az első tanulságos és őszintén szólva, ez az első publikációm ehhez hasonlóról, nagyon izgultam, hogy egy kamera.
Ha segítségre van szüksége a projekt elkészítéséhez vagy ehhez hasonlóhoz, akkor csak lépjen kapcsolatba velem a [email protected] címen, vagy írjon megjegyzést, mint mindig. Igyekszem a lehetőségeimhez mérten segíteni nektek.
Köszönöm!!
Ajánlott:
IoT -alapú intelligens parkolási rendszer a NodeMCU ESP8266 használatával: 5 lépés

IoT -alapú intelligens parkolási rendszer a NodeMCU ESP8266 használatával: Manapság nagyon nehéz megtalálni a parkolást a forgalmas területeken, és nincs olyan rendszer, amely a parkolási lehetőségek online elérhetőségét lekérné. Képzelje el, ha megkapja a parkolóhely elérhetőségét a telefonján, és nincs barangolása, hogy ellenőrizze a
Alexa intelligens otthoni rendszer a NodeMCU relé modul használatával: 10 lépés

Alexa intelligens otthoni rendszer a NodeMCU relé modul használatával: Ebben az IoT projektben elkészítettem az Alexa Smart Home Automation rendszert a NodeMCU ESP8266 & Relé modul. A hangvezérléssel könnyedén vezérelheti a világítást, a ventilátort és más háztartási készülékeket. Az Echo Dot intelligens hangszóró csatlakoztatásához a
Intelligens időjárás állomás (Arduino használatával): 5 lépés

Intelligens időjárás -állomás (Arduino használatával): Az időjárás -állomás szárazföldi vagy tengeri létesítmény, amely a légköri viszonyok mérésére szolgáló eszközökkel és berendezésekkel szolgál az időjárás -előrejelzésekhez, valamint az időjárás és az éghajlat tanulmányozásához. A mérések tartalmazzák a hőmérsékletet
IoT alapú intelligens kertészet és intelligens mezőgazdaság ESP32 használatával: 7 lépés

IoT alapú intelligens kertészet és intelligens mezőgazdaság ESP32 használatával: A világ idővel változik, és így a mezőgazdaság is. Manapság az emberek minden területen integrálják az elektronikát, és ez alól a mezőgazdaság sem kivétel. Az elektronika egyesülése a mezőgazdaságban segíti a gazdákat és a kerteket kezelő embereket. Ebben
Egyszerű elosztott ütemezett csengőrendszer: 6 lépés

Egyszerű elosztott ütemezett csengőrendszer: Olyan oktatási programban dolgozom, amely a normál középiskolai campuson kívül található. Mivel lényegében egy irodaépületben vagyunk, az iskola jellemző felszereltsége nélkül, nincsenek harangjaink, amelyek figyelmeztetnének az órák végére vagy kezdetére. A diákok mi