Mündəricat:

NodeMCU istifadə edərək Ağıllı Paylanmış IoT Hava Nəzarət Sistemi: 11 addım
NodeMCU istifadə edərək Ağıllı Paylanmış IoT Hava Nəzarət Sistemi: 11 addım

Video: NodeMCU istifadə edərək Ağıllı Paylanmış IoT Hava Nəzarət Sistemi: 11 addım

Video: NodeMCU istifadə edərək Ağıllı Paylanmış IoT Hava Nəzarət Sistemi: 11 addım
Video: NodeMCU ESP8266 WiFi İnkişaf lövhəsinə HTTP Müştəri nümunəsi ilə giriş 2024, Noyabr
Anonim
NodeMCU istifadə edərək Ağıllı Paylanmış IoT Hava Nəzarət Sistemi
NodeMCU istifadə edərək Ağıllı Paylanmış IoT Hava Nəzarət Sistemi

Hamınız ənənəvi hava stansiyasından xəbərdar ola bilərsiniz; amma əslində necə işlədiyini heç düşünmüsünüzmü? Ənənəvi hava stansiyası bahalı və həcmli olduğu üçün bu stansiyaların vahid sahəyə nisbətən çox az olması məlumatların qeyri -dəqiqliyinə səbəb olur. Sizə necə izah edəcəyəm: Tutaq ki, bir stansiya bir şəhərin ortasında yerləşir və 'x' metr radiusda yerləşən yeganə stansiyadır, yaxınlıqda hər hansı bir çirkləndirici maddə varsa asanlıqla qərəzli ola bilər. bütün 'x' metrlik radius sahəsini çirkli olaraq göstərən stansiyanın bütün ərazinin hava məlumatlarını təyin etməkdən məsul olduğu üçün.

Bu problemi həll etmək üçün modulların sıxlığını artırmaq lazımdır ki, bu da modulların daha ucuz olması və mövcud olana nisbətən daha az yer tutması ilə mümkündür.

Təklif etdiyim həllin bu problem üçün mükəmməl bir həll olmasının səbəbi budur, qiyməti 10 dollardan aşağıdır və həm də ovucumun üstündə rahatlıqla dayanır.

Bu necə işləyir…

Bu layihənin 3 əsas hissəsi var.

Cihaz tərəfi:

Cihaz, hava məlumatlarını hər 'x' vaxt aralığında serverə göndərən şəkildə göstərilən IoT moduludur. Məlumatlara faktiki hava məlumatları, modulun coğrafi yeri daxildir; yəni koordinatları, MAC ünvanı; cihazı, hazırda işlədiyi firmware versiyasını bənzərsiz şəkildə tanımaq üçün. Cihaz tərəfi, serverə məlumatı aktiv şəkildə töhfə verən bölgə boyunca paylanmış N modullarından ibarətdir.

Server tərəfi:

Adından da göründüyü kimi, modullardan məlumat almaq və verilənlər bazasında saxlamaq, köhnə versiyada işləyərsə modulu ən son proqram təminatı ilə yeniləmək, hava məlumatlarını xahişi ilə müştəri.

Müştəri/İstifadəçi tərəfi:

Hava məlumatlarını serverdən tələb edən son istifadəçidir. Müştəri mövcud yeri göndərir və yerləşdiyi yerə əsasən, server müştəri ilə bütün modullar arasındakı məsafəni hesablayır və dəqiq hesab edilən müştəriyə ən yaxın modulun hava məlumatlarını göndərir.

Təchizat

  • NodeMCU (ESP8266-12E)
  • DHT11 (Nəmlik və temperatur sensoru)
  • BMP180 (təzyiq və temperatur sensoru)
  • MQ-135 (Hava keyfiyyəti indeksi sensoru)
  • USB kabeli (proqramı yükləmək üçün)
  • 5 volt enerji təchizatı
  • Kondansatörler (İsteğe bağlı: elektrik xəttinə paralel yerləşdiriləcək)
  • Arduino IDE (proqramı düzəltmək və yükləmək üçün)
  • POSTMAN tətbiqi (isteğe bağlı: API ayıklama üçün)
  • Veb sayt (PHP və MySQL serverini yerləşdirmək üçün)

Addım 1: Bütün Komponentləri Lehimləyin və Proqramı NodeMCU -ya Yükləyin

Bütün komponentləri lehimləyin və proqramı NodeMCU -ya yükləyin
Bütün komponentləri lehimləyin və proqramı NodeMCU -ya yükləyin
Bütün komponentləri lehimləyin və proqramı NodeMCU -ya yükləyin
Bütün komponentləri lehimləyin və proqramı NodeMCU -ya yükləyin

Bütün komponentləri bir lövhədə dövrə diaqramında göstərildiyi kimi NodeMCU -ya lehimləyin. Ayrıca, məlumat ötürülməsi və qəbulu zamanı güc artdıqca elektrik xətlərinə paralel olaraq bir kondansatörü lehimləyin.

Lehimləmə işləri bitdikdən sonra "code.c" faylında göstərilən kodu yükləyin.

Qeyd: Etimadnaməni öz etimadnamənizlə əvəz etməyi unutmayın. Həmçinin "html_file.h" adlı faylı arduino eskiz qovluğuna yerləşdirin. Bu layihədə istifadə olunan bütün başlıq sənədləri burada tapa bilərsiniz

Kodun xüsusiyyətləri:

Giriş nöqtəsi: Kütləvi istehsalda hər bir modulu etimadnaməsi ilə proqramlaşdırmaq çətin olduğundan, modulun sonrakı istifadə üçün EEPROM -da modulların bağlanması lazım olan WiFi -nin etimadnaməsini qəbul etmək üçün ilk açılışında bir veb səhifəsi var.

Etimadnamələri konfiqurasiya edildikdən sonra NodeMCU, EEPROM -un etimadnaməsini yoxlayır və EEPROM -da mövcud olan WiFi etimadnaməsinə qoşulur.

WiFi -yə uğurla qoşulduqdan sonra, NodeMCU hər 'x' vaxt aralığında məlumatları serverə yükləməyə başlayır, məlumatlara hava məlumatları, modulun MAC ünvanı, firmware versiyası, cihazın coğrafi yeri daxildir.

OTA yeniləməsi: Modul, kodda göstərilən müəyyən bir zamanda hər gün yeni bir firmware yeniləməsini yoxlayır. Bu xüsusiyyət faydalıdır, çünki hər hansı bir istehsalçının hər hansı bir dəyişiklik etməsi halında fərdi modulun proqramını davam etdirməsi və dəyişdirməsi mümkün deyil.

Watchdog Timer: Atlast ilişib qalsa və ya çökərsə insan müdaxiləsi olmadan özünü bərpa etmək üçün bir yol olmalıdır. Buna Watchdog timer istifadə etməklə nail olmaq olar. Bunun necə işlədiyi belədir: Hər saniyədə işləyən bir ara vermə alt proqramı var. ISR, hər dəfə sayğacı artırır və sayğacın maksimum sayına çatıb -çatmadığını yoxlayır. Sayğac maksimum dəyərə çatdıqda, qəzaya uğradığını düşünərək modul özünü sıfırlayır. Normal işlədikdə, sayaç maksimum sayına çatmadan həmişə sıfırlanır.

Addım 2: SQL Serverin konfiqurasiyası

SQL Serverin konfiqurasiyası
SQL Serverin konfiqurasiyası

SQL Server qurulması da çox sadədir. Sadəcə SQL serverində bir verilənlər bazası yaradın və "database_structure.txt" adlı faylı idxal edərək qəbulu idxal edin. Bu addımda faylı tapa bilərsiniz. Təlimat verən ".sql" fayllarını yükləməyə icazə vermədiyi üçün faylın adını ".txt" olaraq dəyişdirdim.

Qeyd: ".txt" faylını ".sql" adlandırın.

Addım 3: Fayl serverini konfiqurasiya edin

Bir veb saytınız varsa və onlayn olaraq yerləşdirildiyiniz təqdirdə serveri konfiqurasiya etmək çox asandır. Bir veb sayt qurma və onu yerləşdirmə prosedurundan keçməyəcəyəm, çünki bu təlimatın əhatə dairəsi xaricindədir. Ancaq sənədlərin işini sınamaq üçün onu öz ev kompüterinizdə localhost olaraq yerləşdirə bilərsiniz.

Təlimat PHP fayllarını yükləməyə icazə vermədiyi üçün faylların adını ".txt" olaraq dəyişdirdim.

Qeyd: Faylların uzantısını ".php" olaraq dəyişdirin. "Config.php" faylının etimadnaməsini də dəyişməyi unutmayın.

Yalnız sənədləri serverə yükləyin və getməyə hazırsınız.

PHP faylları haqqında qısa məlumat verəcəyəm.

db_config.php:

Bu faylda, SQL serverinə qoşulmaq üçün lazım olan bütün etimadnamələr saxlanılır.

db_connect:

Bu faylda verilənlər bazası bağlantısı üçün lazım olan sinif mövcuddur.

insert.php:

NodeMCU, GET metodundan istifadə edərək məlumatları serverə yükləmək üçün bu PHP faylını çağırır. Bu fayl eyni məlumatları SQL serverində saxlamaqdan da məsuldur.

retrieve.php:

İstifadəçi/Müştəri GET metodundan istifadə edərək bu PHP -yə zəng edir. Server istifadəçi ilə bütün modullar arasındakı məsafəni hesablayır. Daha sonra ən yaxın modulun məlumatları müştərinin istədiyi kimi JSON/XML formatında müştəriyə cavab olaraq göndərilir.

update.php:

Bu PHP faylı modul tərəfindən hər gün müəyyən bir zamanda çağırılır və modulun firmware proqramının ən son versiyası ilə işlədiyini yoxlayır. Yalnız ən son ".bin" faylını fayl serverinə yerləşdirin və faylın dəyişənində faylın kataloqunu göstərin.

Bu bir çox fayl əvvəlcə çətin görünürsə, istifadəçi sənədlərini növbəti addıma daxil etdim.

Addım 4: İstifadəçi Sənədləri

İstifadəçi Sənədləri
İstifadəçi Sənədləri
İstifadəçi Sənədləri
İstifadəçi Sənədləri

Giriş:

Hava API, yer üzündəki yerlər üçün hava məlumatlarını tələb etmək üçün sadə bir interfeys təmin edir. Göstərilən çıxış formatı ilə müəyyən bir enlem/uzunluq cütü üçün hava məlumatlarını tələb edirsiniz. API, istədiyiniz yerdən ən yaxın modul tərəfindən son olaraq qeydə alınan temperatur, rütubət, təzyiq və Hava keyfiyyət indeksini qaytarır.

Başlamazdan əvvəl:

Bu sənəd, inkişaf etdirilən bir tətbiqə hava məlumatlarını daxil etmək istəyən veb sayt və mobil inkişaf etdiricilər üçün nəzərdə tutulmuşdur. Mövcud parametrlər üzrə API və istinad materiallarından istifadə edərək istifadəni təqdim edir.

Hava məlumatları tələbləri:

Hava API tələbləri bir URL simli olaraq qurulur. API, bir enlik/uzunluq cütünün təyin etdiyi yerdəki bir nöqtə üçün hava məlumatlarını qaytarır. Qeyd edək ki, hava məlumatlarının dəqiqliyi bir sahədə yerləşdirilən modulların sıxlığı ilə birbaşa mütənasibdir.

Weather API sorğusu aşağıdakı formanı alır:

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

Çıxış formatı (format) aşağıdakı dəyərlərdən biri ola bilər:

  • JSON (tövsiyə olunur), JavaScript Object Notation (JSON) çıxışını göstərir; və ya
  • XML, qovşaq daxilində bükülmüş XML -də çıxışı göstərir.

İstək Parametrləri:

Bütün URL -lərdə olduğu kimi, parametrlər ampersand (&) simvolu ilə ayrılır. Parametrlərin siyahısı və onların mümkün dəyərləri aşağıda göstərilmişdir.

Tələb olunan parametrlər:

  • lat: Axtarmaq üçün bir yerin enini təmsil edir. (məsələn, lat = 19.56875)
  • lon: Axtarmaq üçün bir yerin uzunluğunu təmsil edir. (məsələn, uzunluq = 72.97568)

İsteğe bağlı parametrlər:

format: Hava məlumatlarının cavab çıxış formatını təyin edir. Ya JSON, ya da XML ola bilər. Varsayılan JSON -dur. (məsələn format = json və ya format = xml)

Hava Cavabları:

Hər bir etibarlı sorğu üçün, saat qurşağı xidməti sorğu URL -də göstərilən formatda bir cavab qaytaracaq. Hər bir cavabda aşağıdakı elementlər olacaq:

  • müvəffəqiyyət: cavabın vəziyyətini göstərən bir dəyər.

    • 0: Mənfi; sorğunun düzgün qurulmadığını göstərir.
    • 1: Təsdiq; sorğunun uğurlu olduğunu göstərir.
  • Mesaj: sorğunun səhv olmasının səbəbini göstərən bir simli. Yalnız status mənfi olduqda mövcuddur.
  • data: çoxlu hava parametrləri olan bir sıra.

    • temperatur: temperatur məlumatları.
    • hum: rütubət varlığı məlumatları.
    • pres: mütləq təzyiq məlumatları.
    • aqi: indiki Hava keyfiyyət indeksi.

Hər iki formatın nümunə cavablarını şəkillərdə görmək olar.

Addım 5: Modulun Qurulması

Modul Quraşdırma
Modul Quraşdırma
Modul Quraşdırma
Modul Quraşdırma

İlk açılışda cihaz menecerindən/istifadəçisindən etimadnamələrini almaq üçün və ya modul artıq saxlanılan etimadnaməsini tapmadığı təqdirdə bir giriş nöqtəsi yaradılır və bir IP ünvanı (Varsayılan: 192.168.4.1) üzərində yerləşdirilir. EEPROM.

İstifadəçi, modulun qoşulmasını istədiyi SSID və şifrəni daxil etməlidir. Brauzerin yerləşdiyi yerə daxil olmasına icazə verdiyiniz təqdirdə enlem və uzunluq avtomatik olaraq doldurulur.

Bütün məlumatlar daxil edildikdən sonra "GÖNDƏR" düyməsini basın və sonra bütün etimadnamələr modulun EEPROM -da yazılır.

Bu addım çox vacibdir, çünki modulları kütləvi istehsal edərkən, bütün modulları dəqiq yeri məlumatları və WiFi etimadnamələri ilə proqramlaşdırmaq mümkün deyil. Ayrıca, proqramdakı etimadnamələrini sərt kodlaşdırmaq məsləhət görülmür, çünki modulu başqa yerə köçürməliyiksə və ya WiFi məlumatlarını dəyişdirmək istəyiriksə, modulu yenidən proqramlaşdırmalıyıq. Bu çətinlikdən qaçmaq üçün ilkin quraşdırma funksiyası tətbiq olunur.

Addım 6: Məlumatların Buluda Töhfə Verilməsinin Vaxtıdır

Məlumatların Buluda Töhfə Verilməsinin Vaxtıdır
Məlumatların Buluda Töhfə Verilməsinin Vaxtıdır
Məlumatların Buluda Töhfə Verilməsinin Vaxtıdır
Məlumatların Buluda Töhfə Verilməsinin Vaxtıdır

Bütün əvvəlki addımlar tamamlandıqdan sonra, modulun məlumatları serverə yükləməsinə icazə vermək vaxtıdır. Etimadnaməni saxladıqdan sonra avtomatik olaraq yükləməyə başlayır.

GET metodunda göndərmək üçün bütün parametrləri keçən bir API çağırışı olaraq "insert.php" ni çağırır.

Aşağıdakı kod parçası parametrlərin necə işləndiyini göstərir.

if (isset ($ _ GET ['temp'])) && isset ($ _ GET ['hum']) && isset ($ _ GET ['pres']) && isset ($ _ GET ['aqi']) && isset ($ _ GET) ['mac']) && isset ($ _ GET ['lat']) && isset ($ _ GET ['lon']))) 2. {3. // əsas proqram 4.}

Eynilə bütün modullar məlumat yükləməyə başlayır.

Qeyd: Serverin həddən artıq yükləndiyini hiss edirsinizsə, koddakı yükləmə tezliyini azaldın.

Addım 7: Havada (OTA) Yeniləmə

Havada (OTA) Güncellemesi
Havada (OTA) Güncellemesi

Modul bütün qurulduqdan və məlumatları yükləməyə başladıqdan sonra proqramda qeyd olunan müəyyən bir vaxtda hər gün firmware yeniləmələrini yoxlayır. Əgər taparsa, içindəki ikili faylı yükləyir və yanıb -sönür. Və belə deyilsə, məlumatların normal yüklənməsi davam edir.

Yeni bir yeniləməni yoxlamaq üçün modul, MAC ünvanını istək başlığına göndərərək "update.php" çağırır. Server sonra bu xüsusi MAC ünvanının yeni bir yeniləməyə malik olub olmadığını yoxlayır, əgər varsa, cavab olaraq ən son firmwarein ikili faylını göndərir.

Ayrıca modulun əsas identifikasiyası üçün lazım olan bütün başlıqları yoxlayır.

Addım 8: İstifadəçi/Müştəri məlumatlara necə daxil ola bilər …

İstifadəçi/Müştəri məlumatlara necə daxil ola bilər …
İstifadəçi/Müştəri məlumatlara necə daxil ola bilər …
İstifadəçi/Müştəri məlumatlara necə daxil ola bilər …
İstifadəçi/Müştəri məlumatlara necə daxil ola bilər …
İstifadəçi/Müştəri məlumatlara necə daxil ola bilər …
İstifadəçi/Müştəri məlumatlara necə daxil ola bilər …

Məlumatların serverdən əldə edilməsi olduqca sadədir. Yalnız "retrieve.php" ə zəng edərək hava məlumatlarını cavab olaraq JSON formatında alacağıq. Bundan sonra, ayrı -ayrı elementlərə daxil olmaq üçün JSON məlumatlarını təhlil etmək qalır. XML cavabında da oxşardır. İstifadəçi həmişə istifadəçinin işləmək üçün rahat olduğu cavab formatını təyin edə bilər. İstifadəçi formatı göstərmirsə, standart format JSON -dur.

API işini yoxlamaq üçün POSTMAN vasitəsi ilə nümunə sorğu edilir.

JavaScript -də JSON cavabının təhlili nümunəsi aşağıdakı kod parçasında göstərilmişdir.

var url = "https://example.com/retrieve.php?lat=19.044848&lon=72.8464373"; httpGet (theUrl) funksiyası {var xmlHttp = yeni XMLHttpRequest (); xmlHttp.open ("GET", theUrl, false); // xmlHttp.send sinxron istəyi üçün yanlış (null); qayıt xmlHttp.responseText; } var myVar = httpGet (url); var obj = JSON.parse (myVar); document.getElementById ("aqi"). innerHTML = obj.data [0].aqi; document.getElementById ("temperatur"). innerHTML = Math.round (obj.data [0].temp) + "° C"; document.getElementById ("temp"). innerHTML = Math.round (obj.data [0].temp) + "° C"; document.getElementById ("rütubət"). innerHTML = Math.round (obj.data [0].hum) + "%"; document.getElementById ("təzyiq"). innerHTML = Math.round (obj.data [0].pres) + "mb";

JSON cavabını təhlil edən nümunə HTML səhifəsinin mənbə kodu bu addımın sonunda mövcuddur.

Qeyd: Fayl uzantısını ".html" olaraq dəyişdirin.

Addım 9: Bu Layihənin məhdudiyyətləri

  • Layihə məlumatları göndərmək üçün GET -dən istifadə edir; Həssas məlumatlarla işləməsə də, məlumat asanlıqla idarə oluna bilər, çünki mənbələri yoxlamaqdan başqa, mənbənin həqiqiliyini yoxlamaq üçün heç bir mexanizmi yoxdur, bu da asanlıqla dəyişdirilə bilər və hətta adi bir cihaz da korlana bilər. hava modulu kimi görünür.
  • Modul, əksər hallarda digər təşkilatların məlumatlarını göndərmək üçün yalnız digər giriş nöqtəsinə (WIFI) güvənir və asılıdır. Əgər giriş nöqtəsi nədənsə xidmətdən çıxsa, modul məlumat göndərə bilməyəcək.
  • Layihə mövcud sistemin dəqiqliyini artırmaq üçün qurulsa da, bazarda mövcud olan sensor gözləniləndən daha az dəqiqdir və nəticədə əsas məqsədinin uğursuzluğa səbəb olur.
  • Layihəni planlaşdırarkən, səhvlərin düzəldilməsi üçün serverin yerləşdiyi yerə görə məlumatların orta dəyərini təyin etdiyi bir rejim daxil etməyi planlaşdırdım. Ancaq bu xüsusiyyəti tətbiq edərkən, koordinatları coğrafi bölgələrə tərcümə etmək üçün bəzi üçüncü tərəf API-lərinə ehtiyac olduğunu başa düşdüm.

Addım 10: Bu Layihədə Edilə biləcək Əlavə Təkmilləşdirmələr

  • Modulun dəqiqliyi, bazarda mövcud olan ümumi modulu istifadə etmək əvəzinə, xüsusi məqsədlər üçün sensorlar hazırlamaqla daha da təkmilləşdirilə bilər.
  • Məlumat göndərmək üçün Hüceyrə qüllələri ilə simsiz əlaqə quran xüsusi bir çip istifadə edərək modul daha da müstəqil işləmək üçün dəyişdirilə bilər və beləliklə arızaya qarşı tolerantlığı artırır.
  • Günəş paneli və batareya sistemi ESP-nin dərin yuxu rejimi ilə birlikdə istifadə edilə bilər, beləliklə enerji səmərəliliyini artırır və onu xarici enerji təchizatından daha müstəqil edir.
  • POST, hər bir məlumat ötürülməsi üçün dövri kodların istifadəsi kimi bəzi identifikasiya mexanizmi ilə məlumat göndərmək üçün istifadə edilə bilər.
  • Bir prototip lövhəsi olan NodeMCU əvəzinə, kütləvi istehsalda yalnız xərcləri azaltmaqla yanaşı sistem qaynaqlarından da ən yaxşı şəkildə istifadə edən xüsusi bir mikro nəzarətçidən istifadə edə bilərik.
  • Google geolocation API ilə birlikdə və mövcud hər hansı bir açıq WIFI -yə qoşulmaqla, modul hətta konfiqurasiya etmədən də işləyə bilər; heç bir konfiqurasiya olmadan fabrikdən məlumat ötürməyə hazırdır.

Addım 11: Tamaşaçılara Bir neçə Söz

Tamaşaçılara Bir neçə Söz
Tamaşaçılara Bir neçə Söz

Hey uşaqlar, başa düşdüyüm hər bir detalı qeyd etmədiyim üçün bunun heç də yeni başlayanlar üçün uyğun bir dərs olmadığını başa düşürəm. Həm də bu layihə Təlimatla əhatə olunmaq üçün həqiqətən genişdir. Yenə də layihənin bütün vacib aspektlərini əhatə etməyə çalışdım. Mən də bilirəm ki, layihənin işini əks etdirən bir video həqiqətən əla olardı, amma bu mənim ilk təlimatçılığım və düzünü desəm, buna bənzər bir şeyi ilk nəşr etdiyim üçün bir filmin qarşısında olmaq çox əsəbi idi. kamera

Bu layihənin və ya buna bənzər bir şeyin hazırlanmasında hər hansı bir yardıma ehtiyacınız varsa, [email protected] ünvanından mənə müraciət edin və ya hər zamanki kimi şərh yaza bilərsiniz. Bacardığım qədər sizə kömək etməyə çalışacağam.

Çox sağ ol!!

Tövsiyə: