Satura rādītājs:

UbiDots-ESP32 savienošana un vairāku sensoru datu publicēšana: 6 soļi
UbiDots-ESP32 savienošana un vairāku sensoru datu publicēšana: 6 soļi

Video: UbiDots-ESP32 savienošana un vairāku sensoru datu publicēšana: 6 soļi

Video: UbiDots-ESP32 savienošana un vairāku sensoru datu publicēšana: 6 soļi
Video: Sensor data monitoring using Esp32 and ubidots | Remote monitoring using Esp32 #shorts #esp32 2024, Jūlijs
Anonim
UbiDots-ESP32 savienošana un vairāku sensoru datu publicēšana
UbiDots-ESP32 savienošana un vairāku sensoru datu publicēšana

ESP32 un ESP 8266 ir ļoti pazīstami SoC IoT jomā. Tie ir sava veida svētība IoT projektiem. ESP 32 ir ierīce ar integrētu WiFi un BLE. Vienkārši norādiet savu SSID, paroli un IP konfigurāciju un integrējiet lietas mākonī. Šeit, šajā pamācībā, mēs pārdomāsim dažus IoT pamatnoteikumus, piemēram, IoT platformu, MQTT, nebrīves portālus utt. Tāpēc ļaujiet mums to apskatīt

  • IoT arhitektūra ļoti vienkāršos vārdos sastāv no iegultas ierīces un IoT platformas, lai ievietotu ierīci mākonī. Šeit mēs izmantojam UbiDots IoT platformu, lai vizualizētu sensoru datus.
  • IP iestatījumu un lietotāja akreditācijas datu pārvaldība lietotājam var sagādāt galvassāpes. Ko darīt, ja lietotājs vēlas mainīt WiFi akreditācijas datus? Ko darīt, ja lietotājs vēlas mainīt DHCP/statiskā IP iestatījumus? ESP32 mirgošana katru reizi nav uzticama un pat nav risinājums šīm problēmām. Tāpēc mēs apmeklēsim nebrīvē pieejamo portālu, lai saglabātu WiFi akreditācijas datus un citas konfigurācijas.
  • MQTT tagad kļūst par ļoti izplatītu terminu IoT pasaulē. tā ir pārsniegusi publicēšanas un abonēšanas pieprasījumus un atbildes (HTTP), pateicoties ātrai, stabilai un vienkāršai arhitektūrai.

Šeit, šajā pamācībā, mēs demonstrēsim.

  • WiFi un MQTT akreditācijas datu piešķiršana, izmantojot Captive Portal.
  • Vairāku sensoru datu publicēšana un abonēšana UbiDots.
  • Sensora datu nolasīšana no bezvadu temperatūras un mitruma sensoriem.
  • Tīmekļa veidlapas mitināšana no ESP32.
  • Lasīšana un rakstīšana no SPIFFS ESP32.

1. darbība. Aparatūras un programmatūras specifikācija

Aparatūras un programmatūras specifikācija
Aparatūras un programmatūras specifikācija
  • ESP32 WiFi/BLE
  • Bezvadu temperatūras un mitruma sensors

Programmatūras specifikācija

Arduino IDE

2. darbība. Izvērstā portāla izveide

Notveršanas portāla izveide
Notveršanas portāla izveide
Notveršanas portāla izveide
Notveršanas portāla izveide
Notveršanas portāla izveide
Notveršanas portāla izveide

Fiksēts portāls ir tīmekļa lapa, kas tiek parādīta jaunizveidotajiem lietotājiem, pirms viņiem tiek piešķirta plašāka piekļuve tīkla resursiem. Šeit mēs apkalpojam trīs tīmekļa lapas, lai izvēlētos starp DHCP un statiskajiem IP iestatījumiem. mēs varam definēt IP adresi uz ESP divos veidos.

  • DHCP IP adrese- tas ir veids, kā dinamiski piešķirt ierīcei IP adresi. ESP noklusējuma IP adrese ir 192.168.4.1
  • Statiskā IP adrese- mūsu tīkla ierīcei tiek piešķirta pastāvīga IP adrese. lai ierīcei nodrošinātu statisku IP, mums ir jānosaka IP adrese, vārtejas adrese un apakštīkla maska.

Pirmā tīmekļa lapa tiek mitināta vietnē 192.168.1.77. Šeit lietotājam tiek piedāvātas radio pogas, lai izvēlētos starp DHCP un statiskā IP iestatījumiem. Nākamajā tīmekļa vietnē mums ir jāsniedz ar IP saistīta informācija, lai turpinātu.

HTML kods

Tīmekļa lapu HTML kods ir atrodams šajā Github krātuvē. Lai izveidotu HTML tīmekļa lapas, varat izmantot jebkuru IDE vai teksta redaktoru, piemēram, Sublime vai piezīmju grāmatiņu ++.

  • Vispirms izveidojiet HTML tīmekļa lapu, kurā ir divas radio pogas, lai izvēlētos starp DHCP un Static IP Settings.
  • Tagad izveidojiet pogu, lai iesniegtu savu atbildi
  • Piešķiriet radio pogām kādu nosaukumu.
  • ESP Web servera klase ņems šos nosaukumus par argumentiem un saņems radio pogu atbildi, izmantojot šos argumentus
  • Tagad ievietojiet pogu "IESNIEGT", lai nosūtītu atbildi uz ierīci. Pārējās tīmekļa lapās mums ir tekstlodziņi.
  • Tekstlodziņam piešķiriet nosaukuma vērtību un ievades veidu un pievienojiet pogu Iesniegt, lai iesniegtu atbildi.
  • Lai atiestatītu teksta lauka saturu, izveidojiet pogu “RESET”.

3. darbība. WiFi un UbiDots akreditācijas datu nodrošināšana

WiFi un UbiDots akreditācijas datu nodrošināšana
WiFi un UbiDots akreditācijas datu nodrošināšana

Galvenā problēma rodas, pārvaldot WiFi akreditācijas datus. Pat ja mums ir WiFiMulti bibliotēka, kur mēs varam ierīcei piešķirt vairākus SSID un paroles, un ierīce izveidos savienojumu ar pieejamo tīklu. Bet ko darīt, ja pieejamais tīkls nav iekļauts WiFiMulti sarakstā. Nepārtraukta ESP32 ierīces mirgošana nav uzticams risinājums.

Lai atrisinātu šo problēmu, mēs mitinām tīmekļa vietni, kurā lietotājs var iesniegt pieejamā tīkla SSID un paroli. Tas darbojas šādi.

  • Tīmekļa lapa tiek mitināta statiskajā IP vai DHCP IP, ko lietotājs izvēlējies no piesaistītā portāla
  • Šajā tīmekļa vietnē ir teksta lauki SSID, paroles un UBIDOTS marķiera ID ievadīšanai, lai ierīci savienotu ar UbiDots.
  • Ievades laukos ievadiet vietējā WiFi SSID un paroli, ievadiet UbiDot marķiera ID un ievadiet IESNIEGT
  • Šie akreditācijas dati tiek saglabāti ESP32 EEPROM
  • Pēc 60 sekundēm ierīce automātiski atvienosies no AP
  • Nākamreiz, ieslēdzot ierīci, lietotājam nav jāveic šī procedūra, ierīce automātiski ielādēs lietotāja akreditācijas datus no EEPROM un turpinās sensoru rādījumu publicēšanu UbiDots.

4. darbība. Sensora rādījumu publicēšana UbiDots

Šeit mēs izmantojam bezvadu temperatūras un mitruma sensorus kopā ar ierīci ESP 32, lai iegūtu temperatūras un mitruma datus. Mēs nosūtām datus uz UbiDots, izmantojot MQTT protokolu. MQTT ievēro publicēšanas un abonēšanas mehānismu, nevis šo pieprasījumu un atbildi. Tas ir ātrāks un uzticamāks par HTTP. Tas darbojas šādi.

  • Mēs izmantojam uzdevumu plānotāju, lai ieplānotu uzdevumu, piemēram, datu iegūšana no sensoriem, sensora rādījumu publicēšana, tēma MQTT abonēšana.
  • Pirmkārt, iekļaujiet uzdevumu plānotāja galvenes failus, tā instanci un plāno uzdevumus.
  • Mēs esam ieplānojuši divus uzdevumus, kas attiecas uz divām dažādām kontroles darbībām.

#define _TASK_TIMEOUT#include

Plānotājs ts;

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

1. uzdevums ir sensora vērtības nolasīšanai, šis uzdevums tiek izpildīts 1 sekundi, līdz tiek sasniegts taimauts 10 sekundes

  • Kad Task1 sasniedz savu laiku, mēs izveidojam savienojumu ar vietējo Wifi un MQTT brokeri.
  • Tagad 2. uzdevums ir iespējots, un mēs atspējojam 1. uzdevumu

  • 2. uzdevums ir sensoru datu publicēšana UbiDots MQTT brokerī, šis uzdevums tiek izpildīts 20 sekundes, līdz tiek sasniegts 20 sekunžu taimauts
  • Kad 2. uzdevums ir beidzies, 1. uzdevums ir atkal iespējots un 2. uzdevums ir atspējots. Arī šeit mēs iegūstam atjaunināto vērtību, un process turpinās.

I2C sensora datu nolasīšana

Mēs iegūstam 29 baitu rāmi no bezvadu temperatūras un mitruma sensoriem. Šis rāmis tiek manipulēts, lai iegūtu faktiskos temperatūras un mitruma datus

uint8_t dati [29];

dati [0] = Sērijas1.lasījums (); kavēšanās (k); // chck par sākuma baitu, ja (dati [0] == 0x7E) {while (! Serial1.available ()); par (i = 1; i <29; i ++) {data = Serial1.read (); kavēšanās (1); } ja (dati [15] == 0x7F) /////// lai pārbaudītu, vai recesīvie dati ir pareizi {if (dati [22] == 1) //////// pārliecinieties, vai sensora tips ir pareizs {

mitrums = ((((dati [24]) * 256) + dati [25]) /100,0); mitrums /=10,0; cTempint = (((uint16_t) (dati [26]) << 8) | dati [27]); cTemp = (pludiņš) cTempint /100.0; cTemp /= 10,0; fTemp = cTemp * 1,8 + 32; fTemp /= 10,0; akumulators = nejaušs (100, 327); spriegums = akumulators/100; mezgla ID = dati [16];}

Savienojuma izveide ar UbiDots MQTT API

Iekļaujiet galvenes failu MQTT procesam

#iekļaut

definējiet citus MQTT mainīgos, piemēram, klienta vārdu, brokera adresi, marķiera ID (marķiera ID tiek ielādēts no EEPROM)

#define MQTT_CLIENT_NAME "ClientVBShightime123"

char mqttBroker = "things.ubidots.com";

char lietderīgā slodze [100]; char tēma [150];

// izveidot mainīgo, lai saglabātu marķiera ID

String tokenId;

Izveidojiet mainīgos, lai saglabātu dažādus sensoru datus, un izveidojiet char mainīgo, lai saglabātu tēmu

#define VARIABLE_LABEL_TEMPF "tempF" // Mainīgā etiķetes piešķiršana #define VARIABLE_LABEL_TEMPC "tempC" // Mainīgā etiķetes piešķiršana #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "mitrs mainīgais" // Assing

char tēma1 [100]; char topic2 [100]; char topic3 [100];

publicējiet datus minētajā MQTT tēmā, lietderīgā slodze izskatīsies šādi: "tempc": {value: "tempData"}}

sprintf (topic1, "%s", ""); sprintf (topic1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (lietderīgā slodze, "%s", ""); // Notīra lietderīgo slodzi sprintf (lietderīgā slodze, "{"%s / ":", VARIABLE_LABEL_TEMPC); // Pievieno vērtību sprintf (lietderīgā slodze, "%s {" vērtība / ":%s}", lietderīgā slodze, str_cTemp); // Pievieno vērtību sprintf (lietderīgā slodze, "%s}", lietderīgā slodze); // Aizver vārdnīcas iekavas Serial.println (lietderīgā slodze); Serial.println (client.publish (topic1, payload)? "Published": "notpublished");

// Dariet to pašu ar citu tēmu

client.publish () publicē datus UbiDots

5. darbība: datu vizualizācija

Datu vizualizācija
Datu vizualizācija
Datu vizualizācija
Datu vizualizācija
Datu vizualizācija
Datu vizualizācija
  • Dodieties uz Ubidots un piesakieties savā kontā.
  • Virzieties uz informācijas paneli no cilnes Dati augšpusē.
  • Tagad noklikšķiniet uz ikonas "+", lai pievienotu jaunos logrīkus.
  • Sarakstā atlasiet logrīku un pievienojiet mainīgo un ierīces.
  • Sensora datus var vizualizēt informācijas panelī, izmantojot dažādus logrīkus.

6. darbība: vispārējais kods

HTML un ESP32 kods Over ir atrodams šajā GitHub krātuvē.

Kredīti

  • ncd ESP32 sadalīšanas panelis.
  • ncd Bezvadu temperatūras un mitruma sensori.
  • kroga pasūtītājs
  • UbiDots
  • Uzdevumu plānotājs

Ieteicams: