Taula de continguts:
- Pas 1: Especificació de maquinari i programari
- Pas 2: crear un portal captiu
- Pas 3: proporcionar credencials de WiFi i UbiDots
- Pas 4: Publicació de les lectures del sensor a UbiDots
- Pas 5: visualització de les dades
- Pas 6: Codi general
Vídeo: UbiDots: connexió d’un ESP32 i publicació de dades de sensors múltiples: 6 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
ESP32 i ESP 8266 són SoC molt familiars en el camp de l'IoT. Es tracta d’una mena de benefici per als projectes IoT. ESP 32 és un dispositiu amb WiFi i BLE integrats. Simplement doneu les vostres configuracions d’SSID, contrasenya i IP i integreu les coses al núvol. Aquí, en aquest instructiu, reflexionarem sobre alguns dels termes bàsics de l'IoT, com ara la plataforma IoT, MQTT, portals captius, etc.
- L’arquitectura IoT en paraules molt senzilles consisteix en un dispositiu incrustat i una plataforma IoT per posar el dispositiu al núvol. Aquí estem utilitzant la plataforma IoT UbiDots per visualitzar les dades del sensor.
- Administrar la configuració d’IP i les credencials d’usuari pot ser un mal de cap per a l’usuari. Què passa si l’usuari vol canviar les credencials de WiFi? Què passa si l'usuari vol canviar la configuració de DHCP / IP estàtica? Parpellejar l’ESP32 cada cop no és fiable ni tan sols és la solució per a aquests problemes. Així, passarem pel portal captiu per desar les credencials WiFi i altres configuracions.
- MQTT s’està convertint en un terme molt comú al món de l’IoT. ha superat les sol·licituds i respostes (HTTP) de Publish and Subscribe a causa de l'arquitectura ràpida, robusta i senzilla.
Aquí, en aquest instructiu, anirem a demostrar.
- Donar credencials de WiFi i MQTT mitjançant Captive Portal.
- Publicació i subscripció de diverses dades del sensor a UbiDots.
- Lectura de les dades del sensor dels sensors sense fils de temperatura i humitat.
- Allotjament d’un formulari web des de l’ESP32.
- Lectura i escriptura des de SPIFFS ESP32.
Pas 1: Especificació de maquinari i programari
- ESP32 WiFi / BLE
- Sensor de temperatura i humitat sense fils
Especificació de programari
IDE Arduino
Pas 2: crear un portal captiu
Un portal captiu és una pàgina web que es mostra als usuaris recentment connectats abans que se'ls concedeixi un accés més ampli als recursos de la xarxa. Aquí oferim tres pàgines web per seleccionar entre DHCP i Static IP Settings. podem definir l'adreça IP a ESP de dues maneres.
- Adreça IP DHCP: és una manera d’assignar dinàmicament l’adreça IP al dispositiu. L’adreça IP per defecte de l’ESP és 192.168.4.1
- L'adreça IP estàtica: assigna una adreça IP permanent al nostre dispositiu de xarxa. per proporcionar la IP estàtica al dispositiu, hem de definir l'adreça IP, l'adreça de la passarel·la i la màscara de subxarxa.
La primera pàgina web s’allotja al 192.168.1.77. Aquí es proporciona a l’usuari els botons d’opció per seleccionar entre els paràmetres DHCP i Static IP. A la següent pàgina web, hem de proporcionar la informació relacionada amb la IP per continuar endavant.
Codi HTML
El codi HTML de les pàgines web es troba en aquest dipòsit de Github. Podeu utilitzar qualsevol IDE o editor de text com Sublim o Bloc de notes ++ per crear pàgines web HTML.
- Primer, creeu una pàgina web HTML que contingui dos botons d’opció per triar entre la configuració DHCP i la configuració IP estàtica.
- Ara creeu el botó per enviar la vostra resposta
- Posa un nom als botons d'opció.
- La classe de servidor web ESP prendrà aquests noms com a arguments i obtindrà la resposta dels botons d’opció mitjançant aquests arguments
- Ara inseriu un botó "ENVIAR" per enviar la resposta al dispositiu. A les altres pàgines web, tenim quadres de text.
- Indiqueu el valor del nom i el tipus d’entrada al quadre de text i afegiu un botó d’enviament per enviar la resposta a "ENVIAR".
- Creeu un botó "RESET" per restablir el contingut del camp de text.
Pas 3: proporcionar credencials de WiFi i UbiDots
El problema principal es produeix en gestionar les credencials WiFi. Tot i que tenim una biblioteca WiFiMulti per a això, on podem donar diversos SSID i contrasenyes al dispositiu i el dispositiu es connectarà a la xarxa disponible. Però, què passa si la xarxa disponible no apareix a la llista WiFiMulti. Parpellejar el dispositiu ESP32 tot el temps no és una solució fiable.
Per resoldre aquest problema, estem allotjant una pàgina web on l'usuari pot enviar l'SSID i la contrasenya de la xarxa disponible. Funciona de la següent manera.
- La pàgina web s’allotja a la IP estàtica o IP DHCP, segons l’opció que ha triat l’usuari des del portal captiu
- Aquesta pàgina web conté camps de text per introduir SSID, contrasenya i identificador de testimoni UBIDOTS per connectar el dispositiu a UbiDots.
- Introduïu el SSID i la contrasenya del vostre WiFi local als camps d’entrada, introduïu l’identificador de testimoni d’UbiDot i introduïu ENVIAR
- Aquestes credencials es guarden a la EEPROM d'ESP32
- Després de 60 segons, el dispositiu es desconnectarà automàticament de l'AP
- La propera vegada que engegueu el dispositiu, l'usuari no ha de seguir aquest procediment; el dispositiu recuperarà automàticament les credencials d'usuari d'EEPROM i continuarà publicant les lectures del sensor a UbiDots.
Pas 4: Publicació de les lectures del sensor a UbiDots
Aquí fem servir sensors de temperatura i humitat sense fils amb el dispositiu ESP 32 per obtenir les dades de temperatura i humitat. Enviem les dades a UbiDots mitjançant el protocol MQTT. MQTT segueix un mecanisme de publicació i subscripció més que la sol·licitud i la resposta. És més ràpid i fiable que HTTP. Això funciona de la següent manera.
- Estem utilitzant Task Scheduler per programar la tasca, com ara obtenir dades de sensors, publicar les lectures del sensor, subscriure’s al tema MQTT.
- En primer lloc, incloeu els fitxers de capçalera del Planificador de tasques, la seva instància i planifica les tasques.
- Hem programat dues tasques referents a dues operacions de control diferents.
#define _TASK_TIMEOUT # include
Programador ts;
// --------- Tasques ------------ // Tasca tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL, & taskSensorDisable); Tasca tWiFi (10 * TASK_SECOND, TASK_FOREVER i & taskWiFiCallback, & ts, false, NULL i & taskWiFiDisable);
La tasca 1 serveix per llegir el valor del sensor que aquesta tasca s'executa durant 1 segon fins que arriba a un temps d'espera de 10 segons
- Quan la Task1 arribi a la seva data d’espera, ens connectem a l’agent local de Wifi i MQTT.
-
Ara la tasca 2 està activada i estem desactivant la tasca 1
- La tasca 2 serveix per publicar les dades del sensor al corredor UbiDots MQTT, aquesta tasca s’executa durant 20 segons fins que s’aconsegueix un temps d’espera de 20 segons
- Quan la tasca 2 arriba al seu temps d'espera, la tasca 1 es torna a activar i la tasca 2 es desactiva. Un cop més, obtenim el valor actualitzat i el procés continua.
Lectura de les dades del sensor I2C
Els sensors de temperatura i humitat sense fils obtenim un marc de 29 bytes. Aquest marc es manipula per obtenir dades reals de temperatura i humitat
dades uint8_t [29];
dades [0] = Serial1.read (); retard (k); // chck for byte start if (data [0] == 0x7E) {while (! Serial1.available ()); for (i = 1; i <29; i ++) {data = Serial1.read (); retard (1); } if (dades [15] == 0x7F) /////// per comprovar si les dades de recepció són correctes {if (dades [22] == 1) //////// assegureu-vos que el tipus de sensor és correcte {
humitat = ((((dades [24]) * 256) + dades [25]) /100.0); humitat /=10,0; cTempint = (((uint16_t) (dades [26]) << 8) | dades [27]); cTemp = (flotant) cTempint /100.0; cTemp / = 10,0; fTemp = cTemp * 1,8 + 32; fTemp / = 10,0; bateria = aleatòria (100, 327); tensió = bateria / 100; nodeId = data [16];}
Connexió a l'API UbiDots MQTT
Incloeu el fitxer de capçalera per al procés MQTT
#incloure
definiu altres variables per a MQTT com el nom del client, l'adreça del corredor, l'identificador del testimoni (estem recuperant l'identificador del testimoni a EEPROM)
#define MQTT_CLIENT_NAME "ClientVBShightime123"
char mqttBroker = "coses.ubidots.com";
char charge [100]; char topic [150];
// crear variable per emmagatzemar l'identificador de testimoni
String tokenId;
Creeu variables per emmagatzemar diferents dades del sensor i creeu una variable de caràcter per emmagatzemar el tema
#define VARIABLE_LABEL_TEMPF "tempF" // Assignació de l'etiqueta de variable # define VARIABLE_LABEL_TEMPC "tempC" // Assignació de l'etiqueta de variable #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "humid" // Assignació de l'etiqueta de variable
char topic1 [100]; char topic2 [100]; char topic3 [100];
publiqueu les dades al tema MQTT esmentat, la càrrega útil tindrà l'aspecte de {"tempc": {value: "tempData"}}
sprintf (tema1, "% s", ""); sprintf (tema1, "% s% s", "/v1.6/devices/", DEVICE_LABEL); sprintf (càrrega útil, "% s", ""); // Neteja la càrrega útil sprintf (càrrega útil, "{"% s / ":", VARIABLE_LABEL_TEMPC); // Afegeix el valor sprintf (càrrega útil, "% s {" valor / ":% s}", càrrega útil, str_cTemp); // Afegeix el valor sprintf (càrrega útil, "% s}", càrrega útil); // Tanca els claudàtors del diccionari Serial.println (càrrega útil); Serial.println (client.publish (tema1, càrrega útil)? "Published": "no publicat");
// Feu el mateix amb altres temes
client.publish () publica les dades a UbiDots
Pas 5: visualització de les dades
- Aneu a Ubidots i inicieu la sessió al vostre compte.
- Aneu al tauler de control des de la pestanya Dades que apareix a la part superior.
- Ara feu clic a la icona "+" per afegir els ginys nous.
- Seleccioneu un widget de la llista i afegiu una variable i dispositius.
- Les dades del sensor es poden visualitzar al tauler de control mitjançant diferents widgets.
Pas 6: Codi general
El codi Over per a HTML i ESP32 es pot trobar en aquest dipòsit de GitHub.
Crèdits
- tauler de ruptura ESP32 ncd.
- Sensors de temperatura i humitat sense fils ncd.
- pubsubclient
- UbiDots
- Planificador de tasques
Recomanat:
Guia de connexió PLSD: Connexió a Apple TV mitjançant AirPlay [No oficial]: 10 passos
Guia de connexió PLSD: Connexió a Apple TV mitjançant AirPlay [No oficial]: es proporciona la següent guia per il·lustrar el procés de connexió a televisors Apple de sala de conferències mitjançant AirPlay. Aquest recurs no oficial es proporciona com a cortesia de l’administració, el personal i els hostes autoritzats del districte escolar de Perkins
CONNEXIÓ DE SENSORS MÚLTIPLES A UN PORT SÈRIE ARDUINO UNO: 4 passos
CONNEXIÓ DE MULTIPLES SENSORS A UN PORT SERIAL ARDUINO UNO: En aquest tutorial ampliarem un únic port sèrie Arduino UNO UART (Rx / Tx) perquè es puguin connectar diversos sensors Atlas. L'ampliació es fa mitjançant la placa expansora de ports sèrie 8: 1. El port d'Arduino està vinculat a l'expansor després de
Arduino Uno + SIM900 + DHT22 + Thingspeak [CAT / PL] DADES SENSORS MÚLTIPLES !: 3 passos
Arduino Uno + SIM900 + DHT22 + Thingspeak [CAT / PL] DADES SENSORS MÚLTIPLES !: Hola, he vist que falta informació sobre com publicar les dades del sensor a Thingspeak mitjançant Arduino Uno amb el mòdul SIM900. Així que vaig fer breu instruccions de connexió i configuració Arduino UNO amb sensor SIM900 i DHT22. Dades de DHT22 (temper
Connexió TCP / IP a través de GPRS: Com enviar dades al servidor mitjançant el mòdul SIM900A: 4 passos
Connexió TCP / IP a través de GPRS: Com enviar dades al servidor mitjançant el mòdul SIM900A: en aquest tutorial us explicaré com enviar dades al servidor TCP mitjançant el mòdul sim900. També veurem com podem rebre dades del servidor al client (mòdul GSM)
Publicació de dades del sensor de pressió sense fils mitjançant MQTT: 7 passos
Publicació de dades de sensors de pressió sense fils mitjançant MQTT: ESP32 i ESP 8266 són SoC molt familiars en el camp de l’IoT. Es tracta d’una mena de benefici per als projectes IoT. ESP 32 és un dispositiu amb WiFi i BLE integrats. Només cal que doneu el vostre SSID, contrasenya i configuracions d’IP i que integreu les coses a