Tabla de contenido:
- Paso 1: Especificación de hardware y software
- Paso 2: Sensores inalámbricos de temperatura y presión
- Paso 3: Conexión a WiFi
- Paso 4: Configurar UbiDots en ESP32
- Paso 5: Publicar las lecturas del sensor en UbiDots
- Paso 6: Visualización de los datos
- Paso 7: Código general
Video: Publicación de datos del sensor de presión inalámbrico mediante MQTT: 7 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
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 del sensor inalámbrico de presión y temperatura
- 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
- ESP32 WiFi / BLE
- Sensor inalámbrico de presión y temperatura
Especificación de software
- IDE de Arduino
- XCTU
- Utilidad Labview
Paso 2: Sensores inalámbricos de temperatura y presión
Características
- Sensor de grado industrial Sensor de temperatura de presión inalámbrico de largo alcance
- Rango de funcionamiento 0 a 14000 mbar -40 ° a + 85 ° C (-40 ° a 185 ° F)
- Resolución de presión de cálculo interno configurable 0.012 a 0.065 mbar
- Resolución de temperatura de cálculo interno configurable 0,002 a 0,012 ° C
- Precisión ± 2,5 mbar, ± 2 ° C
- Salidas de presión absoluta, presión relativa y cambio de altitud relativa
- Alcance de línea de visión de 2 millas con antena incorporada
- Rango LOS superior de hasta 28 millas con antenas de alta ganancia
- Interfaz para Raspberry Pi, Microsoft® Azure®, Arduino y más
- Redes de malla inalámbrica con DigiMesh®
Configuración del sensor inalámbrico de presión y temperatura con Labview Utility y XCTU
El sensor funciona en dos modos
- Modo de configuración: configure el ID de bandeja, el retraso, el número de reintentos, etc. Más sobre esto está más allá del alcance de este instructivo y se explicará en el siguiente instructivo.
- Modo de ejecución: estamos ejecutando el dispositivo en modo de ejecución. Y para analizar estos valores estamos usando la utilidad Labview
Esta interfaz de usuario de Labview muestra los valores en gráficos agradables. Muestra los valores actuales y pasados. Puede ir a este enlace para descargar la interfaz de usuario de Labview. haga clic en el icono Ejecutar en el menú de la página de destino para ir al modo de ejecución.
Paso 3: Conexión a WiFi
Estamos utilizando el portal cautivo para guardar las credenciales de WiFi y pasar el cursor por la configuración de IP. Para obtener una introducción detallada sobre el portal cautivo, puede seguir las siguientes instrucciones.
El portal cautivo nos da la opción de elegir entre configuraciones estáticas y DHCP. Simplemente ingrese las credenciales como IP estática, máscara de subred, puerta de enlace y la puerta de enlace del sensor inalámbrico se configurará en esa IP.
Se aloja una página web en la que aparece una lista que muestra las redes WiFi disponibles y el RSSI. Seleccione la red WiFi y la contraseña e ingrese enviar. Las credenciales se guardarán en EEPROM y la configuración de IP se guardará en SPIFFS. Se puede encontrar más sobre esto en este instructivo.
Paso 4: Configurar UbiDots en ESP32
Aquí estamos usando sensores inalámbricos de presión y temperatura con el dispositivo ESP 32 para obtener los datos de temperatura y humedad. Estamos enviando 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 Scheduler 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 los datos reales de temperatura y humedad
si (Serial1.available ())
{datos [0] = Serial1.read (); retraso (k); if (datos [0] == 0x7E) {while (! Serial1.available ()); para (i = 1; i <36; i ++) {datos = Serial1.read (); retraso (1); } if (data [15] == 0x7F) /////// para verificar si los datos recibidos son correctos {if (data [22] == 0x06) //////// asegúrese de que el tipo de sensor es correcto {int cTemp = ((((datos [24]) * 256) + datos [25])); int16_t abs_pressure = ((((uint16_t) (datos [26]) << 8) | datos [27]) * 0,001); int rlt_pressure = ((((datos [28]) * 256) + datos [29]) * 0,001); int16_t delta_alt = ((((uint16_t) (datos [30]) << 8) | datos [31]) * 0.01); batería flotante = ((datos [18] * 256) + datos [19]); voltaje de flotación = 0.00322 * batería; Serial.print ("Número de sensor"); Serial.println (datos [16]); Serial.print ("Tipo de sensor"); Serial.println (datos [22]); Serial.print ("Versión de firmware"); Serial.println (datos [17]); Serial.print ("Temperatura en grados Celsius:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("Presión absoluta:"); Serial.println (abs_pressure); Serial.print ("mbar"); Serial.print ("Presión relativa:"); Serial.println (rlt_pressure); Serial.print ("mbar"); Serial.print ("Altitud Delta:"); Serial.println (delta_alt); Serial.print ("medidor"); Serial.print ("valor ADC:"); Serial.println (batería); Serial.print ("Voltaje de la batería:"); Serial.print (voltaje); Serial.println ("\ n"); if (voltaje <1) {Serial.println ("Tiempo para reemplazar la batería"); }}} else {for (i = 0; i <36; i ++) {Serial.print (datos ); Serial.print (","); retraso (1); }}}}
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 intermediario, el ID del token
#define TOKEN "BBFF - **********************************" // Your Ubidots TOKEN # define MQTT_CLIENT_NAME "***************************"
char mqttBroker = "cosas.ubidots.com";
carga útil de char [100]; char tema [150]; // crear una variable para almacenar el token de identificación del token
Paso 5: Publicar las lecturas del sensor en UbiDots
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 6: Visualización de 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 tablero usando diferentes widgets.
Paso 7: 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 de temperatura y presión inalámbricos ncd
- pubsubcliente
- UbiDots
- Programador de tareas
Recomendado:
Envío de datos del sensor inalámbrico de temperatura y humedad a Excel: 34 pasos
Envío de datos del sensor inalámbrico de temperatura y humedad a Excel: estamos usando aquí el sensor de temperatura y humedad de NCD, pero los pasos siguen siendo los mismos para cualquiera de los productos de ncd, por lo que si tiene otros sensores inalámbricos de ncd, experimente gratis para observar junto con otros. Mediante la parada de este texto, es necesario
Datos del sensor inalámbrico de vibración y temperatura a MySQL usando Node-RED: 40 pasos
Datos del sensor inalámbrico de temperatura y vibración a MySQL usando Node-RED: Presentamos el sensor de temperatura y vibración inalámbrico industrial IoT de largo alcance de NCD, con un alcance de hasta 2 millas mediante el uso de una estructura de red de malla inalámbrica. Al incorporar un sensor de temperatura y vibración de precisión de 16 bits, este dispositivo trans
Envío de datos del sensor inalámbrico de temperatura y humedad IOT a MySQL: 41 pasos
Envío de datos del sensor inalámbrico de temperatura y humedad de IOT a MySQL: presentamos el sensor de temperatura y humedad de IoT de largo alcance de NCD. Con un alcance de hasta 28 millas y una arquitectura de red de malla inalámbrica, este sensor transmite datos de humedad (± 1,7%) y temperatura (± 0,3 ° C) a intervalos definidos por el usuario, durmiendo i
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: 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 su SSID, contraseña e configuraciones de IP e integre las cosas en
Introducción a AWS IoT con sensor de temperatura inalámbrico mediante MQTT: 8 pasos
Introducción a AWS IoT con sensor de temperatura inalámbrico mediante MQTT: en Instructables anteriores, hemos pasado por diferentes plataformas en la nube como Azure, Ubidots, ThingSpeak, Losant, etc. Hemos estado utilizando el protocolo MQTT para enviar los datos del sensor a la nube en casi toda la plataforma en la nube. Para más información