Tabla de contenido:

UbiDots: conexión de un ESP32 y publicación de datos de varios sensores: 6 pasos
UbiDots: conexión de un ESP32 y publicación de datos de varios sensores: 6 pasos

Video: UbiDots: conexión de un ESP32 y publicación de datos de varios sensores: 6 pasos

Video: UbiDots: conexión de un ESP32 y publicación de datos de varios sensores: 6 pasos
Video: ESP32 + UBIDOTS💻: PRIMER ENVIO DE DATOS📈 2024, Mes de julio
Anonim
UbiDots: conexión de un ESP32 y publicación de datos de varios sensores
UbiDots: conexión de un ESP32 y publicación de datos de varios sensores

ESP32 y ESP 8266 son SoC muy familiares en el campo de IoT. Estos son una especie de bendición para los proyectos de IoT. ESP 32 es un dispositivo con WiFi y BLE integrados. Simplemente proporcione sus configuraciones de SSID, contraseña e IP e integre las cosas en la nube. Aquí, en este instructivo, reflexionaremos sobre algunos de los términos básicos de IoT, como plataforma de IoT, MQTT, portales cautivos, etc.

  • La arquitectura de IoT en palabras muy simples consiste en un dispositivo integrado y una plataforma de IoT para poner el dispositivo en la nube. Aquí estamos usando la plataforma UbiDots IoT para visualizar los datos del sensor.
  • Administrar la configuración de IP y las credenciales de usuario puede ser un dolor de cabeza para el usuario. ¿Qué pasa si el usuario desea cambiar las credenciales de WiFi? ¿Qué sucede si el usuario desea cambiar la configuración de DHCP / IP estática? Flashear el ESP32 cada vez no es confiable y ni siquiera es la solución para estos problemas. Así que pasaremos por el portal cautivo para guardar las credenciales de WiFi y otras configuraciones.
  • MQTT ahora se está convirtiendo en un término muy común en el mundo de IoT. ha superado las solicitudes y respuestas (HTTP) de Publish and Subscribe debido a la arquitectura rápida, robusta y ajustada.

Aquí, en este instructable, lo demostraremos.

  • Dar credenciales WiFi y MQTT usando el portal cautivo.
  • Publicar y suscribir múltiples datos de sensores a UbiDots.
  • Lectura de los datos del sensor de sensores inalámbricos de temperatura y humedad.
  • Alojando un formulario web desde el ESP32.
  • Lectura y escritura de SPIFFS ESP32.

Paso 1: Especificación de hardware y software

Especificación de hardware y software
Especificación de hardware y software
  • ESP32 WiFi / BLE
  • Sensor inalámbrico de temperatura y humedad

Especificación de software

IDE de Arduino

Paso 2: creación de un portal cautivo

Creando un portal cautivo
Creando un portal cautivo
Creando un portal cautivo
Creando un portal cautivo
Creando un portal cautivo
Creando un portal cautivo

Un portal cautivo es una página web que se muestra a los usuarios recién conectados antes de que se les conceda un acceso más amplio a los recursos de la red. Aquí estamos sirviendo tres páginas web para seleccionar entre DHCP y Configuración de IP estática. podemos definir la dirección IP a ESP de dos formas.

  • Dirección IP DHCP: es una forma de asignar dinámicamente la dirección IP al dispositivo. La dirección IP predeterminada del ESP es 192.168.4.1
  • La dirección IP estática: asigna una dirección IP permanente a nuestro dispositivo de red. Para proporcionar la IP estática al dispositivo, necesitamos definir la dirección IP, la dirección de la puerta de enlace y la máscara de subred.

La primera página web se aloja en 192.168.1.77. Aquí, el usuario cuenta con los botones de opción para seleccionar entre DHCP e IP estática. En la siguiente página web, debemos proporcionar la información relacionada con la propiedad intelectual para continuar.

código HTML

El código HTML para las páginas web se puede encontrar en este repositorio de Github. Puede utilizar cualquier IDE o editor de texto como Sublime o notepad ++ para crear páginas web HTML.

  • Primero, cree una página web HTML que contenga dos botones de opción para elegir entre DHCP y Configuración de IP estática.
  • Ahora crea el botón para enviar tu respuesta
  • Dale un nombre a los botones de radio.
  • La clase del servidor web ESP tomará estos nombres como argumentos y obtendrá la respuesta de los botones de opción usando estos argumentos
  • Ahora inserte un botón 'ENVIAR' para enviar la respuesta al dispositivo. En las otras páginas web, tenemos cuadros de texto.
  • Dé el valor del nombre y el tipo de entrada al cuadro de texto y agregue un botón de envío para 'ENVIAR' enviar la respuesta.
  • Cree un botón 'RESET' para restablecer el contenido del campo de texto.

Paso 3: Proporcionar credenciales de WiFi y UbiDots

Proporcionar credenciales de WiFi y UbiDots
Proporcionar credenciales de WiFi y UbiDots

El principal problema ocurre al administrar las credenciales de WiFi. Aunque tenemos la biblioteca WiFiMulti para eso, donde podemos dar múltiples SSID y contraseñas al dispositivo y el dispositivo se conectará a la red disponible. Pero, ¿qué pasa si la red disponible no está en la lista WiFiMulti? Hacer flashear el dispositivo ESP32 todo el tiempo no es una solución confiable.

Para resolver este problema, estamos alojando una página web donde el usuario puede enviar el SSID y la contraseña de la red disponible. Funciona de la siguiente manera.

  • La página web está alojada en la IP estática o la IP DHCP elegida por el usuario en el portal cautivo.
  • Esta página web contiene campos de texto para ingresar SSID, contraseña e ID de token UBIDOTS para conectar el dispositivo a UbiDots.
  • Ingrese el SSID y la contraseña de su WiFi local en los campos de entrada, ingrese el ID del token de UbiDot e ingrese ENVIAR
  • Estas credenciales se guardan en la EEPROM de ESP32
  • Después de 60 segundos, el dispositivo se desconectará automáticamente del AP
  • La próxima vez que encienda el dispositivo, el usuario no tiene que seguir este procedimiento, el dispositivo obtendrá automáticamente las credenciales de usuario de EEPROM y continuará publicando las lecturas del sensor en UbiDots.

Paso 4: Publicar las lecturas del sensor en UbiDots

Aquí estamos usando sensores inalámbricos de temperatura y humedad con el dispositivo ESP 32 para obtener los datos de temperatura y humedad. Enviamos los datos a UbiDots utilizando el protocolo MQTT. MQTT sigue un mecanismo de publicación y suscripción en lugar de solicitud y respuesta. Es más rápido y confiable que HTTP. Esto funciona de la siguiente manera.

  • Estamos utilizando el Programador de tareas para programar la tarea, como obtener datos de los sensores, publicar las lecturas de los sensores o suscribirse al tema MQTT.
  • Primero, incluya los archivos de encabezado del Programador de tareas, su instancia y programe las tareas.
  • Hemos programado dos tareas referidas a dos operaciones de control diferentes.

#define _TASK_TIMEOUT # include

Programador ts;

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

La tarea 1 es para leer el valor del sensor, esta tarea se ejecuta durante 1 segundo hasta que alcanza el tiempo de espera de 10 segundos

  • Cuando la Task1 llega a su tiempo de espera, nos estamos conectando a Wifi local y al broker MQTT.
  • Ahora la Tarea 2 está habilitada y estamos deshabilitando la Tarea 1
  • La tarea 2 es para publicar los datos del sensor en el corredor UbiDots MQTT, esta tarea se ejecuta durante 20 segundos hasta que alcanza el tiempo de espera de 20 segundos.
  • Cuando la Tarea 2 alcanza su tiempo de espera, la Tarea 1 se habilita nuevamente y la Tarea 2 se deshabilita. Aquí nuevamente, estamos obteniendo el valor actualizado y el proceso continúa.

Lectura de los datos del sensor I2C

Estamos obteniendo un marco de 29 bytes de los sensores inalámbricos de temperatura y humedad. Este marco se manipula para obtener datos reales de temperatura y humedad

uint8_t datos [29];

datos [0] = Serial1.read (); retraso (k); // chck para el byte de inicio if (data [0] == 0x7E) {while (! Serial1.available ()); para (i = 1; i <29; i ++) {datos = Serial1.read (); retraso (1); } if (data [15] == 0x7F) /////// para verificar si los datos recibidos son correctos {if (data [22] == 1) //////// asegúrese de que el tipo de sensor es correcto {

humedad = ((((datos [24]) * 256) + datos [25]) /100.0); humedad /=10.0; cTempint = (((uint16_t) (datos [26]) << 8) | datos [27]); cTemp = (flotante) cTempint /100.0; cTemp / = 10.0; fTemp = cTemp * 1.8 + 32; fTemp / = 10.0; batería = aleatorio (100, 327); voltaje = batería / 100; nodeId = data [16];}

Conexión a la API de UbiDots MQTT

Incluya el archivo de encabezado para el proceso MQTT

#incluir

definir otras variables para MQTT como el nombre del cliente, la dirección del corredor, la ID de token (estamos obteniendo la ID de token de EEPROM)

#define MQTT_CLIENT_NAME "ClientVBShightime123"

char mqttBroker = "cosas.ubidots.com";

carga útil char [100], tema char [150];

// crea una variable para almacenar el ID del token

String tokenId;

Cree variables para almacenar diferentes datos de sensores y cree una variable char para almacenar el tema

#define VARIABLE_LABEL_TEMPF "tempF" // Evaluando la etiqueta de la variable # define VARIABLE_LABEL_TEMPC "tempC" // Evaluando la etiqueta de la variable #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "humid" // Evaluando la etiqueta de la variable

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

publicar los datos en el tema MQTT mencionado, la carga útil se verá como {"tempc": {value: "tempData"}}

sprintf (tema1, "% s", ""); sprintf (tema1, "% s% s", "/v1.6/devices/", DEVICE_LABEL); sprintf (carga útil, "% s", ""); // Limpia la carga útil sprintf (carga útil, "{"% s / ":", VARIABLE_LABEL_TEMPC); // Agrega el valor sprintf (payload, "% s {" value / ":% s}", payload, str_cTemp); // Agrega el valor sprintf (payload, "% s}", payload); // Cierra los corchetes del diccionario Serial.println (payload); Serial.println (client.publish (topic1, payload)? "Published": "notpublished");

// Haz lo mismo con el otro tema también

client.publish () publica los datos en UbiDots

Paso 5: Visualización de los datos

Visualizando los datos
Visualizando los datos
Visualizando los datos
Visualizando los datos
Visualizando los datos
Visualizando los datos
  • Vaya a Ubidots e inicie sesión en su cuenta.
  • Navegue hasta el Panel de control desde la pestaña Datos que aparece en la parte superior.
  • Ahora haga clic en el icono "+" para agregar los nuevos widgets.
  • Seleccione un widget de la lista y agregue una variable y dispositivos.
  • Los datos del sensor se pueden visualizar en el panel de control utilizando diferentes widgets.

Paso 6: Código general

El código Over para HTML y ESP32 se puede encontrar en este repositorio de GitHub.

Créditos

  • Placa de conexión ncd ESP32.
  • Sensores inalámbricos de temperatura y humedad ncd.
  • pubsubcliente
  • UbiDots
  • Programador de tareas

Recomendado: