Përmbajtje:

UbiDots-Lidhja e një ESP32 dhe publikimi i të dhënave të shumëfishta të sensorit: 6 hapa
UbiDots-Lidhja e një ESP32 dhe publikimi i të dhënave të shumëfishta të sensorit: 6 hapa

Video: UbiDots-Lidhja e një ESP32 dhe publikimi i të dhënave të shumëfishta të sensorit: 6 hapa

Video: UbiDots-Lidhja e një ESP32 dhe publikimi i të dhënave të shumëfishta të sensorit: 6 hapa
Video: Управление 32 серводвигателями с PCA9685 и ESP32 - V4 2024, Nëntor
Anonim
UbiDots-Lidhja e një ESP32 dhe publikimi i të dhënave të shumëfishta të sensorit
UbiDots-Lidhja e një ESP32 dhe publikimi i të dhënave të shumëfishta të sensorit

ESP32 dheESP 8266 janë SoC shumë të njohura në fushën e IoT. Këto janë një lloj ndihme për projektet IoT. ESP 32 është një pajisje me WiFi dhe BLE të integruar. Thjesht jepni konfigurimin tuaj SSID, fjalëkalimin dhe IP dhe integroni gjërat në cloud. Këtu në këtë udhëzues, Ne do të meditojmë përmes disa prej kushteve themelore të IoT si platforma IoT, MQTT, Portalet e Kapur etj. Pra, le të kalojmë nëpër të

  • Arkitektura IoT me fjalë shumë të thjeshta përbëhet nga një pajisje e ngulitur dhe platforma IoT për ta vënë pajisjen në re. Këtu po përdorim platformën UbiDots IoT për të vizualizuar të dhënat e sensorit.
  • Menaxhimi i cilësimeve IP dhe kredencialet e përdoruesit mund të jetë një dhimbje koke për përdoruesit. Po nëse Përdoruesi dëshiron të ndryshojë kredencialet WiFi? Po sikur përdoruesi të ndryshojë cilësimet e DHCP/IP statike? Ndezja e ESP32 çdo herë nuk është e besueshme dhe as zgjidhje për këto probleme. Pra, ne do të kalojmë përmes portalit të kapur për të ruajtur kredencialet WiFi dhe konfigurimet e tjera.
  • MQTT tani po bëhet një term shumë i zakonshëm në botën IoT. ka tejkaluar kërkesën dhe përgjigjet (HTTP) nga Publish and Subscribe për shkak të arkitekturës së shpejtë, të fuqishme dhe të dobët.

Këtu në këtë udhëzues, ne do të demonstrojmë.

  • Dhënia e kredencialeve WiFi dhe MQTT duke përdorur Portalin e Kapur.
  • Publikimi dhe Abonimi i të dhënave të shumta të Sensorit në UbiDots.
  • Leximi i të dhënave të sensorit nga sensorët e temperaturës dhe lagështisë pa tela.
  • Pritja e një forme uebi nga ESP32.
  • Leximi dhe Shkrimi nga SPIFFS ESP32.

Hapi 1: Specifikimet e harduerit dhe softuerit

Specifikimet e harduerit dhe softuerit
Specifikimet e harduerit dhe softuerit
  • ESP32 WiFi/BLE
  • Sensori i temperaturës dhe lagështisë pa tel

Specifikimi i Softuerit

Arduino IDE

Hapi 2: Krijimi i një Portali të Kapur

Krijimi i një Portali të Kapur
Krijimi i një Portali të Kapur
Krijimi i një Portali të Kapur
Krijimi i një Portali të Kapur
Krijimi i një Portali të Kapur
Krijimi i një Portali të Kapur

Një portal i kapur është një faqe në internet që u shfaqet përdoruesve të sapo lidhur para se t'u jepet qasje më e gjerë në burimet e rrjetit. Këtu po shërbejmë tre faqe në internet për të zgjedhur midis DHCP dhe cilësimeve IP statike. ne mund të përcaktojmë adresën IP të ESP në dy mënyra.

  • Adresa IP DHCP- është një mënyrë për të caktuar në mënyrë dinamike adresën IP të pajisjes. Adresa IP e paracaktuar e ESP është 192.168.4.1
  • Adresa IP statike- caktimi i një Adrese IP të përhershme në pajisjen tonë të rrjetit. për të siguruar IP statike për pajisjen duhet të përcaktojmë adresën IP, adresën e portës dhe maskën e nën -rrjetës.

Faqja e parë në internet po mbahet në 192.168.1.77. Këtu Përdoruesi pajiset me butonat e radios për të zgjedhur midis cilësimeve të DHCP dhe IP statike. Në faqen tjetër, ne duhet të sigurojmë informacionin e lidhur me IP për të vazhduar më tej.

Kodi HTML

Kodi HTML për faqet e internetit mund të gjendet në këtë depo Github. Ju mund të përdorni çdo IDE ose redaktues teksti si Sublime ose notepad ++ për të bërë faqe në internet HTML.

  • Së pari krijoni një faqe në internet HTML që përmban dy butona radio për të zgjedhur midis DHCP dhe cilësimeve IP statike.
  • Tani krijoni butonin për të paraqitur përgjigjen tuaj
  • Jepni ndonjë emër butonave të radios.
  • Klasa e serverit ESP në internet do t'i marrë këto emra si argumente dhe do të marrë përgjigjen e butonave të radios duke përdorur këto argumente
  • Tani futni një buton 'SUBMIT' për të dërguar përgjigjen në pajisje. Në faqet e tjera të internetit, ne kemi kuti teksti.
  • Jepni vlerën e emrit dhe llojin e hyrjes në kutinë e tekstit dhe shtoni një buton dorëzimi në 'PUBRDORIM' dorëzoni përgjigjen.
  • Krijoni një buton 'RESET' për të rivendosur përmbajtjen e fushës së tekstit.

Hapi 3: Sigurimi i kredencialeve WiFi dhe UbiDots

Sigurimi i kredencialeve WiFi dhe UbiDots
Sigurimi i kredencialeve WiFi dhe UbiDots

Problemi kryesor ndodh gjatë menaxhimit të kredencialeve të WiFi. Edhe pse kemi bibliotekë WiFiMulti për atë ku mund të japim SSID dhe fjalëkalime të shumta në pajisje dhe pajisja do të lidhet me rrjetin në dispozicion. Por, çfarë nëse rrjeti i disponueshëm nuk është në listën WiFiMulti. Ndezja e pajisjes ESP32 gjatë gjithë kohës nuk është një zgjidhje e besueshme.

Për të zgjidhur këtë problem, Ne po presim një faqe në internet ku përdoruesi mund të paraqesë SSID dhe Fjalëkalimin e rrjetit në dispozicion. Punon si më poshtë.

  • Faqja e internetit mbahet në IP statike ose IP DHCP siç zgjidhet nga përdoruesi nga portali i kapur
  • Kjo faqe në internet përmban fusha teksti për të futur SSID, fjalëkalim dhe ID -në e shenjës UBIDOTS për të lidhur pajisjen me UbiDots.
  • Vendosni SSID -in dhe fjalëkalimin e WiFi -it tuaj lokal në fushat e hyrjes, futni ID -në e UbiDot -it dhe futni NUBNSHIRIM
  • Këto kredenciale ruhen në EEPROM të ESP32
  • Pas 60 sekondash Pajisja do të shkëputet automatikisht nga AP
  • Herën tjetër kur të ndizni pajisjen, Përdoruesi nuk duhet të ndjekë këtë procedurë, Pajisja do të marrë automatikisht kredencialet e përdoruesit nga EEPROM dhe do të vazhdojë me publikimin e leximeve të sensorit në UbiDots.

Hapi 4: Publikimi i leximeve të sensorëve në UbiDots

Këtu ne po përdorim sensorë pa temperaturë dhe lagështi pa tel me pajisjen ESP 32 për të marrë të dhënat e temperaturës dhe lagështisë. Ne po i dërgojmë të dhënat në UbiDots duke përdorur protokollin MQTT. MQTT ndjek një mekanizëm publikimi dhe abonimi më tepër se kërkesën dhe përgjigjen. Isshtë më i shpejtë dhe i besueshëm se HTTP. Kjo funksionon si më poshtë.

  • Ne po përdorim Task Scheduler për të planifikuar detyrën si marrja e të dhënave nga sensorët, Publikimi i leximeve të sensorëve, Abonimi në temën MQTT.
  • Së pari, përfshini skedarët e titullit të Task Scheduler, është shembulli dhe cakton detyrat.
  • Ne kemi planifikuar dy detyra që i referohen dy operacioneve të ndryshme të kontrollit.

#define _TASK_TIMEOUT#përfshijnë

Planifikues ts;

// --------- Detyrat ------------ // Detyra tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL, & taskSensorDisable); Detyra tWiFi (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);

Detyra 1 është për të lexuar vlerën e sensorit, kjo detyrë funksionon për 1 sekondë derisa të arrijë afatin prej 10 sekondash

  • Kur Task1 arrin kohën e tij Ne jemi duke u lidhur me ndërmjetësin lokal Wifi dhe MQTT.
  • Tani Detyra 2 është aktivizuar dhe ne po e çaktivizojmë Detyrën 1

  • Detyra 2 është për publikimin e të dhënave të sensorit tek ndërmjetësi UbiDots MQTT, kjo detyrë funksionon për 20 sekonda derisa të arrijë afatin prej 20 sekondash
  • Kur Task2 arrin kohën e vet, Detyra 1 aktivizohet përsëri dhe Task2 është çaktivizuar. Këtu përsëri, ne po marrim vlerën e përditësuar dhe procesi vazhdon.

Leximi i të dhënave të sensorit I2C

Ne po marrim një kornizë 29-bajtësh nga sensorët e temperaturës dhe lagështisë pa tela. Ky kuadër është manipuluar për të marrë të dhënat aktuale të temperaturës dhe lagështisë

uint8_t të dhëna [29];

të dhënat [0] = Serial1.lex (); vonesa (k); // kontrolloni për fillimin e bajtit nëse (të dhënat [0] == 0x7E) {ndërsa (! Serial1.disponueshëm ()); për (i = 1; i <29; i ++) {të dhënat = Serial1.lex (); vonesa (1); } nëse (të dhënat [15] == 0x7F) /////// për të kontrolluar nëse të dhënat e nxjerra janë të sakta {nëse (të dhënat [22] == 1) //////// sigurohuni që lloji i sensorit eshte e sakte {

lagështia = ((((të dhënat [24]) * 256) + të dhënat [25]) /100.0); lagështia /=10.0; cTempint = ((((uint16_t) (të dhëna [26]) << 8) | të dhëna [27]); cTemp = (noton) cTempint /100.0; cTemp /= 10.0; fTemp = cTemp * 1.8 + 32; fTemp /= 10.0; bateri = e rastësishme (100, 327); tension = bateri/100; nodeId = të dhënat [16];}

Lidhja me UbiDots MQTT API

Përfshini skedarin e kokës për procesin MQTT

#përfshi

përcaktoni variabla të tjerë për MQTT si emri i klientit, adresa e ndërmjetësit, ID -ja e shenjës (Ne po marrim ID -në e shenjës nga EEPROM)

#përcakto MQTT_CLIENT_NAME "KlientiVBShightime123"

char mqttBroker = "things.ubidots.com";

ngarkesa char [100]; tema char [150];

// krijoni ndryshore për të ruajtur ID -në e shenjës

Shenja e vargutId;

Krijoni variabla për të ruajtur të dhëna të ndryshme të sensorit dhe krijoni një ndryshore char për të ruajtur temën

#define VARIABLE_LABEL_TEMPF "tempF" // Vlerësimi i etiketës së ndryshores #define VARIABLE_LABEL_TEMPC "tempC" // Vlerësimi i etiketës së ndryshueshme #përcaktoni VARIABLE_LABEL_BAT "bat" #përcaktoni VARIABLE_LABEL_HUMID "etiketën e lagësht" // Vlerësimi

tema char1 [100]; tema e kar22 [100]; tema char3 [100];

publikoni të dhënat në temën e përmendur MQTT, ngarkesa do të duket si {"tempc": {vlera: "tempData"}}

sprintf (tema1, "%s", ""); sprintf (tema1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (ngarkesa, "%s", ""); // Pastron sprintf -in e ngarkesës (ngarkesa, "{"%s / ":", VARIABLE_LABEL_TEMPC); // Shton vlerën sprintf (ngarkesa, "%s {" vlera / ":%s}", ngarkesa, str_cTemp); // Shton vlerën sprintf (ngarkesa, "%s}", ngarkesa); // Mbyll kllapat e fjalorit Serial.println (ngarkesa); Serial.println (client.publish (topic1, payload)? "Published": "notpublished");

// Bëni të njëjtën gjë edhe për tema të tjera

client.publish () publikon të dhënat në UbiDots

Hapi 5: Vizualizimi i të dhënave

Vizualizimi i të dhënave
Vizualizimi i të dhënave
Vizualizimi i të dhënave
Vizualizimi i të dhënave
Vizualizimi i të dhënave
Vizualizimi i të dhënave
  • Shkoni te Ubidots dhe Hyni në llogarinë tuaj.
  • Shkoni te Paneli i Kontrollit nga skeda e të dhënave e shënuar në krye.
  • Tani klikoni ikonën "+" për të shtuar widget -et e reja.
  • Zgjidhni një widget nga lista dhe shtoni një ndryshore dhe pajisje.
  • Të dhënat e sensorit mund të vizualizohen në pult duke përdorur pajisje të ndryshme.

Hapi 6: Kodi i përgjithshëm

Kodi Over për HTML dhe ESP32 mund të gjendet në këtë depo GitHub.

Kredite

  • ncd ESP32 bordi i shpërthimit.
  • ncd Sensorë të temperaturës pa tel dhe lagështisë.
  • pubsubclient
  • UbiDots
  • Programi i detyrave

Recommended: