Cuprins:
- Pasul 1: Specificații hardware și software
- Pasul 2: Crearea unui portal captiv
- Pasul 3: Furnizarea acreditării WiFi și UbiDots
- Pasul 4: Publicarea citirilor senzorilor pe UbiDots
- Pasul 5: Vizualizarea datelor
- Pasul 6: Cod general
Video: UbiDots-Conectarea unui ESP32 și publicarea datelor cu senzori multipli: 6 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
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
- ESP32 WiFi / BLE
- Senzor de temperatură și umiditate fără fir
Specificații software
IDE Arduino
Pasul 2: 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
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
- 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:
Senzori multipli BMP280 în Arduino Uno prin SPI: 6 pași
Mai mulți senzori BMP280 în Arduino Uno prin SPI: În acest tutorial vom conecta trei BMP280 pe Arduino Uno prin SPI, dar puteți conecta până la opt BMP280 pe Uno folosind porturile digitale D3 la D10 ca nSS (Slave Select) pentru fiecare senzor. a probelor de presiune atmosferică măsurate de B
Senzori multipli de temperatură IR - MLX90614: 4 pași
Senzori multipli de temperatură IR - MLX90614: Acesta este un ghid rapid despre modul de configurare a mai multor senzori de temperatură fără contact MLX90614B prin magistrala I2C cu un Arduino uno și afișarea citirilor pe monitorul serial al Arduino IDE. Folosesc plăcile prefabricate, dar dacă cumpărați senzorul b
Stație meteo 2.4 TFT Arduino cu senzori multipli: 7 pași
2.4 Stație meteo TFT Arduino cu senzori multipli: o stație meteo portabilă Arduino cu un LCD TFT și câțiva senzori
Publicarea datelor senzorului de presiune fără fir folosind MQTT: 7 pași
Publicarea datelor senzorului de presiune fără fir folosind MQTT: ESP32 și ESP 8266 sunt SoC foarte familiare î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
Termometru cu culoare relativă a temperaturii pe afișaj TFT de 2 "și senzori multipli: 5 pași
Termometru cu culoare relativă a temperaturii pe un afișaj TFT de 2 "și senzori multipli: Am realizat un afișaj care arată măsurătorile mai multor senzori de temperatură. Interesant este că culoarea valorilor se schimbă odată cu temperatura: > 75 grade Celcius = RED > 60 > 75 = ORANGE > 40 < 60 = GALBEN > 30 < 40