Mündəricat:

UbiDots-a ESP32-ni bağlamaq və çoxsaylı sensor məlumatlarını dərc etmək: 6 addım
UbiDots-a ESP32-ni bağlamaq və çoxsaylı sensor məlumatlarını dərc etmək: 6 addım

Video: UbiDots-a ESP32-ni bağlamaq və çoxsaylı sensor məlumatlarını dərc etmək: 6 addım

Video: UbiDots-a ESP32-ni bağlamaq və çoxsaylı sensor məlumatlarını dərc etmək: 6 addım
Video: Включите и выключите светодиод с помощью мобильного приложения с помощью Bluetooth на плате ESP32. 2024, Noyabr
Anonim
UbiDots-Bir ESP32-yə qoşulmaq və Birdən çox Sensor Verisini Nəşr etmək
UbiDots-Bir ESP32-yə qoşulmaq və Birdən çox Sensor Verisini Nəşr etmək

ESP32 vəESP 8266, IoT sahəsində çox tanış bir SoC -dir. Bunlar IoT layihələri üçün bir növ xeyirdir. ESP 32, inteqrasiya edilmiş WiFi və BLE ilə bir cihazdır. Sadəcə SSID, parol və IP konfiqurasiyalarınızı verin və şeyləri buluda inteqrasiya edin. Bu təlimatda IoT platforması, MQTT, Captive portalları və s. Kimi IoT -nin bəzi əsas şərtləri üzərində düşünəcəyik

  • IoT Arxitekturası, çox sadə sözlərlə, cihazı buludda yerləşdirmək üçün quraşdırılmış bir cihazdan və IoT platformasından ibarətdir. Burada sensor məlumatlarını görüntüləmək üçün UbiDots IoT platformasından istifadə edirik.
  • IP parametrlərini və istifadəçi məlumatlarını idarə etmək istifadəçi üçün baş ağrısı ola bilər. İstifadəçi WiFi etimadnaməsini dəyişdirmək istəsə nə olar? İstifadəçi DHCP/Statik IP parametrlərini dəyişdirmək istəsə nə olar? ESP32 -nin hər dəfə yanması etibarlı deyil və hətta bu problemlərin həlli deyil. WiFi məlumatlarını və digər konfiqurasiyaları saxlamaq üçün əsir portaldan keçəcəyik.
  • MQTT indi IoT dünyasında çox yayılmış bir termin halına gəlir. Sürətli, möhkəm və arıq arxitekturaya görə Nəşr et və Abunə olun tərəfindən verilən tələb və cavabları (HTTP) aşdı.

Burada bu təlimatlı olaraq, nümayiş etdirəcəyik.

  • Captive Portal istifadə edərək WiFi və MQTT etimadnamələrinin verilməsi.
  • UbiDots -a birdən çox Sensor məlumatının nəşr edilməsi və abunə olması.
  • Simsiz Temperatur və Nəmlik Sensorlarından Sensor məlumatlarının oxunması.
  • ESP32 -dən bir veb forması yerləşdirmək.
  • SPIFFS ESP32 -dən oxumaq və yazmaq.

Addım 1: Avadanlıq və Proqram Təminatı

Avadanlıq və Proqram Təminatı
Avadanlıq və Proqram Təminatı
  • ESP32 WiFi/BLE
  • Simsiz Temperatur və Nəmlik Sensoru

Proqram Təminatı

Arduino IDE

Addım 2: Əsir Portal Yaratmaq

Əsir Portal Yaratmaq
Əsir Portal Yaratmaq
Əsir Portal Yaratmaq
Əsir Portal Yaratmaq
Əsir Portal Yaratmaq
Əsir Portal Yaratmaq

Əsir portal, yeni əlaqələndirilmiş istifadəçilərə şəbəkə mənbələrinə daha geniş giriş verilməzdən əvvəl göstərilən bir veb səhifəsidir. Burada DHCP və Statik IP Ayarları arasında seçim etmək üçün üç veb səhifəyə xidmət edirik. IP ünvanını ESP -yə iki şəkildə təyin edə bilərik.

  • DHCP IP ünvanı- cihaza IP ünvanını dinamik olaraq təyin etməyin bir yoludur. ESP -nin standart IP ünvanı 192.168.4.1 -dir
  • Statik IP ünvanı- şəbəkə cihazımıza daimi bir IP ünvanı təyin etmək. cihaza statik IP təmin etmək üçün IP ünvanını, ağ geçidi ünvanını və alt şəbəkə maskasını təyin etməliyik.

İlk veb səhifə 192.168.1.77 -də yerləşdirilir. Burada İstifadəçiyə DHCP və Statik IP parametrləri arasında seçim etmək üçün radio düymələri verilir. Növbəti veb səhifədə, daha çox davam etmək üçün IP ilə əlaqəli məlumatları təqdim etməliyik.

HTML kodu

Veb səhifələr üçün HTML kodu bu Github deposunda tapıla bilər. HTML web səhifələri yaratmaq üçün Sublime və ya notepad ++ kimi hər hansı bir IDE və ya mətn redaktorundan istifadə edə bilərsiniz.

  • Əvvəlcə DHCP və Statik IP Ayarları arasında seçim etmək üçün iki radio düyməsi olan bir HTML veb səhifəsi yaradın.
  • İndi cavabınızı göndərmək üçün düyməni yaradın
  • Radio düymələrinə bir ad verin.
  • ESP Web server sinfi bu adları arqument olaraq qəbul edəcək və bu arqumentləri istifadə edərək radio düymələrinin cavabını alacaq
  • İndi cavabı cihaza göndərmək üçün 'SUBMIT' düyməsini daxil edin. Digər web səhifələrində mətn qutularımız var.
  • Mətn qutusuna adın dəyərini və Giriş növünü daxil edin və cavabı göndərmək üçün 'SUBMIT' düyməsinə əlavə edin.
  • Mətn sahəsinin məzmununu sıfırlamaq üçün 'RESET' düyməsini yaradın.

Addım 3: WiFi və UbiDots Etimadnamələrinin verilməsi

WiFi və UbiDots Etimadnamələrini təmin etmək
WiFi və UbiDots Etimadnamələrini təmin etmək

Əsas problem WiFi etimadnaməsini idarə edərkən baş verir. WiFiMulti kitabxanamız olsa da, cihaza birdən çox SSID və parol verə biləcəyik və cihaz mövcud şəbəkəyə qoşulacaq. Ancaq mövcud şəbəkə WiFiMulti siyahısında olmasa nə olar. ESP32 cihazının daim yanıb -sönməsi etibarlı bir həll deyil.

Bu problemi həll etmək üçün istifadəçinin mövcud şəbəkənin SSID və Şifrəsini göndərə biləcəyi bir veb səhifəyə sahibik. Aşağıdakı kimi işləyir.

  • Veb səhifə, istifadəçi tərəfindən əsir portaldan seçildiyi kimi statik IP və ya DHCP IP -də yerləşdirilir
  • Bu veb səhifədə cihazı UbiDots -a bağlamaq üçün SSID, parol və UBIDOTS token ID daxil etmək üçün mətn sahələri var.
  • Giriş sahələrinə yerli WiFi -nin SSID və şifrəsini daxil edin, UbiDot -un mö'cüzə nömrəsini daxil edin və SUBMIT daxil edin.
  • Bu etimadnamələr ESP32 -nin EEPROM -da saxlanılır
  • 60 saniyədən sonra cihaz avtomatik olaraq AP-dən ayrılacaq
  • Növbəti dəfə cihazı açdığınızda, istifadəçinin bu proseduru yerinə yetirməsi lazım deyil, cihaz avtomatik olaraq istifadəçinin etimadnaməsini EEPROM -dan alacaq və sensor oxunuşlarını UbiDots -da dərc etməyə davam edəcək.

Addım 4: Sensor oxunuşlarını UbiDots -da yayımlayın

Burada temperatur və Nəmlik məlumatlarını əldə etmək üçün ESP 32 cihazı ilə Kabelsiz Temperatur və Nəmlik Sensorlarından istifadə edirik. MQTT protokolundan istifadə edərək məlumatları UbiDots -a göndəririk. MQTT, tələb və cavabı deyil, yayım və abunə mexanizmini izləyir. HTTP -dən daha sürətli və etibarlıdır. Bu aşağıdakı kimi işləyir.

  • Sensorlardan məlumat əldə etmək, sensor oxunuşlarını dərc etmək, MQTT mövzusuna abunə olmaq kimi vəzifələri planlaşdırmaq üçün Task Scheduler -dən istifadə edirik.
  • Birincisi, Task Scheduler başlıq fayllarını daxil edin, bu nümunədir və vəzifələri planlaşdırır.
  • İki fərqli nəzarət əməliyyatına əsaslanan iki vəzifə təyin etdik.

#define _TASK_TIMEOUT#daxil edin

Planlaşdırıcı ts;

// --------- Tapşırıqlar ------------ // Tapşırıq tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL, & taskSensorDisable); Tapşırıq tWiFi (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);

Tapşırıq 1, sensorun dəyərini oxumaq üçündür, bu tapşırıq 10 saniyəlik fasiləyə çatana qədər 1 saniyə ərzində işləyir

  • Task1 vaxtı bitəndə yerli Wifi və MQTT brokerinə qoşuluruq.
  • İndi Task 2 aktivdir və Task 1'i deaktiv edirik
  • Tapşırıq 2, sensor məlumatlarını UbiDots MQTT brokerinə yayımlamaq üçündür, bu vəzifə 20 saniyəlik fasiləyə çatana qədər 20 saniyə ərzində işləyir.

  • Task2 vaxtına çatanda Task 1 yenidən aktiv edilir və Task2 deaktiv edilir. Burada yenə də yenilənmiş dəyəri əldə edirik və proses davam edir.

I2C Sensor Verilərinin oxunması

Simsiz Temperatur və Nəmlik Sensorlarından 29 baytlıq bir çərçivə alırıq. Bu çərçivə, faktiki temperatur və Nəmlik məlumatlarını əldə etmək üçün manipulyasiya olunur

uint8_t məlumatları [29];

data [0] = Serial1.read (); gecikmə (k); // chck, başlanğıc baytı if (data [0] == 0x7E) {while (! Serial1.available ()); for (i = 1; i <29; i ++) {data = Serial1.read (); gecikmə (1); } if (data [15] == 0x7F) /////// resive məlumatların doğru olub olmadığını yoxlamaq üçün {əgər (data [22] == 1) //////// sensorun növündən əmin olun Düzdür {

rütubət = (((((data [24]) * 256) + data [25]) /100.0); rütubət /=10.0; cTempint = ((((uint16_t) (məlumatlar [26]) << 8) | məlumatlar [27]); cTemp = (float) cTempint /100.0; cTemp /= 10.0; fTemp = cTemp * 1.8 + 32; fTemp /= 10.0; batareya = təsadüfi (100, 327); gərginlik = batareya/100; nodeId = məlumat [16];}

UbiDots MQTT API -yə qoşulur

MQTT prosesi üçün başlıq faylını daxil edin

#daxil edin

müştəri adı, broker ünvanı, token ID kimi MQTT üçün digər dəyişənləri təyin edin (EEPROM -dan token ID alırıq)

#dequine MQTT_CLIENT_NAME "ClientVBShightime123"

char mqttBroker = "things.ubidots.com";

char yükü [100]; char mövzusu [150];

// token ID saxlamaq üçün dəyişən yaradın

String tokenId;

Fərqli sensor məlumatlarını saxlamaq üçün dəyişənlər yaradın və mövzunu saxlamaq üçün char dəyişənini yaradın

#define VARIABLE_LABEL_TEMPF "tempF" // Dəyişən etiketin təyin edilməsi #VARIABLE_LABEL_TEMPC "tempC" təyin edin // Dəyişən etiketin təyin edilməsi #define VARIABLE_LABEL_BAT "bat" #VARIABLE_LABEL_HUMID "nəmli etiketin təyin edilməsi //"

char mövzu1 [100]; char mövzu2 [100]; char mövzu3 [100];

məlumatları qeyd olunan MQTT mövzusunda yayımlayın, yük "{tempc": {value: "tempData"}} kimi görünəcək

sprintf (mövzu1, "%s", ""); sprintf (mövzu1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (faydalı yük, "%s", ""); // faydalı yük sprintf (faydalı yük, "{"%s / ":", VARIABLE_LABEL_TEMPC); // sprintf dəyərini əlavə edir (yük, "%s {" dəyər / ":%s}", yük, str_cTemp); // sprintf dəyərini əlavə edir (yük, "%s}", yük); // Serial.println (faydalı yük) lüğət mötərizələrini bağlayır; Serial.println (client.publish (mövzu1, yük)? "Nəşr": "nəşr olunmayıb");

// Başqa mövzu üçün də eyni şeyi edin

client.publish () məlumatları UbiDots -da dərc edir

Addım 5: Məlumatların görselleştirilmesi

Məlumatların vizuallaşdırılması
Məlumatların vizuallaşdırılması
Məlumatların vizuallaşdırılması
Məlumatların vizuallaşdırılması
Məlumatların vizuallaşdırılması
Məlumatların vizuallaşdırılması
  • Ubidots -a gedin və hesabınıza daxil olun.
  • Yuxarıda göstərilən Məlumatlar sekmesinden Tablosuna gedin.
  • İndi yeni vidjetlər əlavə etmək üçün "+" işarəsini vurun.
  • Siyahıdan bir widget seçin və dəyişən və cihazlar əlavə edin.
  • Sensor məlumatları müxtəlif vidjetlərdən istifadə edərək tablosunda görüntülənə bilər.

Addım 6: Ümumi Kod

HTML və ESP32 üçün Aşırı kodu bu GitHub deposunda tapa bilərsiniz.

Kreditlər

  • ncd ESP32 qırılma lövhəsi.
  • ncd Simsiz temperatur və Nəmlik Sensorları.
  • pubsubclient
  • UbiDots
  • Vəzifə Planlayıcısı

Tövsiyə: