Cuprins:

UbiDots-Conectarea unui ESP32 și publicarea datelor cu senzori multipli: 6 pași
UbiDots-Conectarea unui ESP32 și publicarea datelor cu senzori multipli: 6 pași

Video: UbiDots-Conectarea unui ESP32 și publicarea datelor cu senzori multipli: 6 pași

Video: UbiDots-Conectarea unui ESP32 și publicarea datelor cu senzori multipli: 6 pași
Video: ESP32. Curs în limba română. Lecția 1, introducere 2024, Iulie
Anonim
UbiDots-Conectarea unui ESP32 și publicarea datelor cu senzori multipli
UbiDots-Conectarea unui ESP32 și publicarea datelor cu senzori multipli

ESP32 și ESP 8266 sunt SoC foarte familiari în domeniul IoT. Acestea sunt un fel de avantaj pentru proiectele IoT. ESP 32 este un dispozitiv cu WiFi și BLE integrate. Dă doar configurația SSID, parola și IP și integrează lucrurile în cloud. Aici, în acest instructiv, vom analiza câțiva dintre termenii de bază ai IoT, cum ar fi platforma IoT, MQTT, portaluri captive etc. Deci, haideți să trecem prin ea

  • Arhitectura IoT în cuvinte foarte simple constă dintr-un dispozitiv încorporat și o platformă IoT pentru a pune dispozitivul în cloud. Aici folosim platforma IoT UbiDots pentru a vizualiza datele senzorilor.
  • Gestionarea setărilor IP și a acreditărilor de utilizator poate fi o durere de cap pentru utilizator. Ce se întâmplă dacă utilizatorul dorește să schimbe acreditările WiFi? Ce se întâmplă dacă utilizatorul dorește să schimbe setările DHCP / Static IP? Intermitentul ESP32 de fiecare dată nu este fiabil și nici măcar soluția pentru aceste probleme. Deci, vom trece prin portalul captiv pentru a salva acreditările WiFi și alte configurații.
  • MQTT devine acum un termen foarte comun în lumea IoT. a depășit cererile și răspunsurile (HTTP) de la Publicare și Abonare datorită arhitecturii rapide, robuste și slabe.

Aici, în acest instructiv, vom demonstra.

  • Oferirea de acreditări WiFi și MQTT utilizând Captive Portal.
  • Publicarea și abonarea mai multor date senzorilor la UbiDots.
  • Citirea datelor senzorului de la senzorii de temperatură și umiditate fără fir.
  • Găzduirea unui formular web de la ESP32.
  • Citirea și scrierea din SPIFFS ESP32.

Pasul 1: Specificații hardware și software

Specificații hardware și software
Specificații hardware și software
  • ESP32 WiFi / BLE
  • Senzor de temperatură și umiditate fără fir

Specificații software

IDE Arduino

Pasul 2: Crearea unui portal captiv

Crearea unui portal captiv
Crearea unui portal captiv
Crearea unui portal captiv
Crearea unui portal captiv
Crearea unui portal captiv
Crearea unui portal captiv

Un portal captiv este o pagină web care este afișată utilizatorilor nou conectați înainte de a li se acorda acces mai larg la resursele de rețea. Aici servim trei pagini web pentru a selecta între DHCP și Static IP Settings. putem defini adresa IP către ESP în două moduri.

  • Adresa IP DHCP - este o modalitate de a atribui dinamic adresa IP dispozitivului. Adresa IP implicită a ESP este 192.168.4.1
  • Adresa IP statică - atribuirea unei adrese IP permanente dispozitivului nostru de rețea. pentru a furniza IP-ul static dispozitivului, trebuie să definim adresa IP, adresa gateway-ului și masca de subrețea.

Prima pagină web este găzduită la 192.168.1.77. Aici Utilizatorul are la dispoziție butoanele radio pentru a selecta între setările DHCP și Static IP. În următoarea pagină web, trebuie să furnizăm informațiile legate de IP pentru a continua mai departe.

Cod HTML

Codul HTML pentru paginile web poate fi găsit în acest depozit Github. Puteți utiliza orice IDE sau editor de text precum Sublime sau notepad ++ pentru a crea pagini web HTML.

  • Mai întâi Creați o pagină web HTML care conține două butoane radio pentru a alege între DHCP și Static IP Settings.
  • Acum creați butonul pentru a trimite răspunsul
  • Dați un anumit nume butoanelor radio.
  • Clasa de server Web ESP va lua aceste nume ca argumente și va obține răspunsul butoanelor radio folosind aceste argumente
  • Acum introduceți un buton „TRIMITE” pentru a trimite răspunsul la dispozitiv. În celelalte pagini web, avem casete de text.
  • Dați valoarea numelui și tipul de intrare casetei de text și adăugați un buton de trimitere pentru a „TRIMITE” trimite răspunsul.
  • Creați un buton „RESET” pentru a reseta conținutul câmpului de text.

Pasul 3: Furnizarea acreditării WiFi și UbiDots

Furnizarea de acreditări WiFi și UbiDots
Furnizarea de acreditări WiFi și UbiDots

Problema principală apare în timpul gestionării acreditărilor WiFi. Chiar dacă avem o bibliotecă WiFiMulti, pentru care putem oferi mai multe SSID-uri și parole dispozitivului, iar dispozitivul se va conecta la rețeaua disponibilă. Dar, dacă rețeaua disponibilă nu se află în lista WiFiMulti. Intermitentul dispozitivului ESP32 tot timpul nu este o soluție fiabilă.

Pentru a rezolva această problemă, găzduim o pagină web unde utilizatorul poate trimite SSID-ul și parola rețelei disponibile. Funcționează după cum urmează.

  • Pagina web este găzduită la adresa IP statică sau IP DHCP, așa cum este ales de utilizator din portalul captiv
  • Această pagină Web conține câmpuri de text pentru a introduce SSID, parolă și ID de simbol UBIDOTS pentru a conecta dispozitivul la UbiDots.
  • Introduceți SSID-ul și parola WiFi-ului dvs. local în câmpurile de introducere, introduceți ID-ul simbolului UbiDot și introduceți SUBMIT
  • Aceste acreditări sunt salvate în EEPROM-ul ESP32
  • După 60 de secunde, dispozitivul se va deconecta automat de la AP
  • Data viitoare când porniți dispozitivul, utilizatorul nu trebuie să urmeze această procedură. Dispozitivul va prelua automat acreditările utilizatorului din EEPROM și va continua cu publicarea citirilor senzorului în UbiDots.

Pasul 4: Publicarea citirilor senzorilor pe UbiDots

Aici folosim senzori de temperatură și umiditate fără fir cu dispozitivul ESP 32 pentru a obține datele de temperatură și umiditate. Trimitem datele către UbiDots folosind protocolul MQTT. MQTT urmărește mai degrabă un mecanism de publicare și abonare care solicită și răspunde. Este mai rapid și mai fiabil decât HTTP. Acest lucru funcționează după cum urmează.

  • Folosim Task Scheduler pentru a programa sarcina, cum ar fi preluarea datelor de la senzori, publicarea citirilor senzorilor, abonarea la subiectul MQTT.
  • În primul rând, includeți fișierele antet Task Scheduler, este instanța și planifică sarcinile.
  • Am programat două sarcini referitoare la două operații de control diferite.

#define _TASK_TIMEOUT # include

Programator ts;

// --------- Tasks ------------ // Task tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL, & taskSensorDisable); Task tWiFi (10 * TASK_SECOND, TASK_FOREVER și & taskWiFiCallback, & ts, false, NULL și & taskWiFiDisable);

Sarcina 1 este pentru citirea valorii senzorului, această sarcină rulează timp de 1 secundă până când ajunge la expirarea de 10 secunde

  • Când Task1 își expiră, ne conectăm la brokerul local Wifi și MQTT.
  • Acum Task 2 este activat și dezactivăm Task 1
  • Sarcina 2 este pentru publicarea datelor senzorilor în brokerul UbiDots MQTT, această sarcină rulează timp de 20 de secunde până când ajunge la expirarea de 20 de secunde
  • Când Task2 își expiră, Task 1 este activat din nou și Task2 este dezactivat. Din nou, obținem valoarea actualizată și procesul continuă.

Citirea datelor senzorului I2C

Obținem un cadru de 29 de octeți de la senzorii de temperatură și umiditate fără fir. Acest cadru este manipulat pentru a obține date reale de temperatură și umiditate

date uint8_t [29];

date [0] = Serial1.read (); întârziere (k); // chck pentru octetul de start if (data [0] == 0x7E) {while (! Serial1.available ()); for (i = 1; i <29; i ++) {data = Serial1.read (); întârziere (1); } if (date [15] == 0x7F) /////// pentru a verifica dacă datele de recepție sunt corecte {if (data [22] == 1) //////// asigurați-vă că tipul senzorului este corect {

umiditate = ((((date [24]) * 256) + date [25]) /100.0); umiditate /=10.0; cTempint = (((uint16_t) (date [26]) << 8) | data [27]); cTemp = (float) cTempint /100.0; cTemp / = 10,0; fTemp = cTemp * 1,8 + 32; fTemp / = 10,0; baterie = aleatorie (100, 327); tensiune = baterie / 100; nodeId = data [16];}

Conectarea la API-ul UbiDots MQTT

Includeți fișierul antet pentru procesul MQTT

#include

definiți alte variabile pentru MQTT, cum ar fi numele clientului, adresa brokerului, ID-ul simbolului (preluăm ID-ul simbolului din EEPROM)

#define MQTT_CLIENT_NAME "ClientVBShightime123"

char mqttBroker = "things.ubidots.com";

încărcare utilă char [100]; subiect char [150];

// creați o variabilă pentru a stoca ID-ul jetonului

String tokenId;

Creați variabile pentru a stoca diferite date ale senzorilor și creați o variabilă char pentru a stoca subiectul

char topic1 [100]; char topic2 [100]; char topic3 [100];

publicați datele pe subiectul MQTT menționat, sarcina utilă va arăta ca {"tempc": {value: "tempData"}}

sprintf (topic1, "% s", ""); sprintf (topic1, "% s% s", "/v1.6/devices/", DEVICE_LABEL); sprintf (sarcină utilă, "% s", ""); // Curăță sarcina utilă sprintf (sarcină utilă, "{"% s / ":", VARIABLE_LABEL_TEMPC); // Adaugă valoarea sprintf (sarcină utilă, "% s {" valoare / ":% s}", sarcină utilă, str_cTemp); // Adaugă valoarea sprintf (sarcină utilă, "% s}", sarcină utilă); // Închide parantezele dicționarului Serial.println (sarcină utilă); Serial.println (client.publish (topic1, payload)? "Published": "nepublicat");

// Faceți același lucru și pentru alte subiecte

client.publish () publică datele în UbiDots

Pasul 5: Vizualizarea datelor

Vizualizarea datelor
Vizualizarea datelor
Vizualizarea datelor
Vizualizarea datelor
Vizualizarea datelor
Vizualizarea datelor
  • Accesați Ubidots și conectați-vă la contul dvs.
  • Navigați la Tabloul de bord din fila Date listată în partea de sus.
  • Acum faceți clic pe pictograma „+” pentru a adăuga noile widgeturi.
  • Selectați un widget din listă și adăugați o variabilă și dispozitive.
  • Datele senzorului pot fi vizualizate pe tabloul de bord folosind diferite widget-uri.

Pasul 6: Cod general

Codul Over pentru HTML și ESP32 poate fi găsit în acest depozit GitHub.

credite

  • ncd ESP32 board breakout.
  • Senzori de temperatură și umiditate fără fir ncd.
  • pubsubclient
  • UbiDots
  • Planificator de sarcini

Recomandat: