Tabla de contenido:
- Suministros
- Paso 1: medir la temperatura y la humedad
- Paso 2: crear y configurar el proyecto
- Paso 3: instalar bibliotecas
- Paso 4: conecte un sensor DHT11
- Paso 5: envío de datos a la nube
- Paso 6: diagnóstico
- Paso 7: iniciar y depurar el proyecto
- Paso 8: Configuración del panel
- Paso 9: Conclusión
Video: Conexión de un sensor DHT11 / DHT22 a la nube con una placa basada en ESP8266: 9 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
En el artículo anterior, conecté mi placa NodeMCU basada en ESP8266 a un servicio Cloud4RPi. ¡Ahora es el momento de un proyecto real!
Suministros
Requisitos de hardware:
- Cualquier placa basada en un chip ESP8266 (por ejemplo, NodeMCU)
- Un sensor DHT11 o DHT22
Software y servicios:
- Biblioteca de sensores DHT de Adafruit - v1.3.7
- Sensor unificado Adafruit - v1.0.3
- cloud4rpi-esp-arduino - v0.1.0
- Cloud4RPI: panel de control en la nube para dispositivos IoT
- PlatformIO IDE para VSCode
Paso 1: medir la temperatura y la humedad
Ya tenía un sensor DHT11, así que decidí usarlo para medir la temperatura y la humedad. Elija una biblioteca Arduino para leer los datos de los sensores.
El registro de Arduino contiene varias bibliotecas, de las cuales seleccioné la más popular.
De acuerdo con su repositorio de GitHub, también debemos agregar un paquete de sensor unificado Adafruit.
Paso 2: crear y configurar el proyecto
Ya describí cómo crear un proyecto de PlatformIO e instalar bibliotecas en la primera parte. Mi proyecto se llama "MyNodeMCU". La estructura se muestra arriba.
Este proyecto es un ejemplo de Cloud4RPi ligeramente modificado. Decidí almacenar el token del dispositivo y las credenciales de Wi-Fi en el archivo de configuración en lugar del código.
El archivo platform.io tiene el siguiente aspecto:
[platformio] default_envs = nodemcuv2 [env: nodemcuv2] platform = espressif8266 framework = arduino board = nodemcuv2
Paso 3: instalar bibliotecas
La instalación de las bibliotecas es bastante sencilla. Puede hacerlo desde la interfaz gráfica del IDE o agregando los nombres de biblioteca requeridos a la sección lib_deps del archivo platform.io:
; … Lib_deps = cloud4rpi-esp-arduino Adafruit Unified Sensor DHT biblioteca de sensores build_flags = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DEBUG = 0 -D SSID_NAME = / "_" TU_PRODUCCIÓN_SS = / "_" TU_PASO_SS = / "_" TU " D CLOUD4RPI_TOKEN = / "_ YOUR_DEVICE_TOKEN _ \"
Las bibliotecas agregadas se instalarán automáticamente en la subcarpeta de un proyecto.
El encabezado main.cpp tiene el siguiente aspecto:
#include #include #include #include "DHT.h"
Paso 4: conecte un sensor DHT11
Adafruit proporciona un ejemplo DHTtester.ino de una conexión de sensor.
Este código inicializa un sensor y define una estructura para almacenar el resultado de la medición (en caso de que tuviera éxito):
# definir DHTPIN 2 // Pin digital conectado al sensor DHT # definir DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.begin (); //… struct DHT_Result {float h; flotar t; }; DHT_Result dhtResult;
La siguiente función muestra cómo leer los datos del sensor y almacenarlos en la estructura de datos descrita anteriormente.
void readSensors () {float h = dht.readHumidity (); // Leer la temperatura como Celsius (por defecto) float t = dht.readTemperature ();
// Compruebe si alguna lectura falló y salga
if (isnan (h) || isnan (t)) {Serial.println (F ("¡No se pudo leer el sensor DHT!")); regreso; } dhtResult.h = h; dhtResult.t = t; }
Paso 5: envío de datos a la nube
Una vez que tenemos esos datos, el siguiente paso es enviarlos al servicio Cloud4RPi.
La página de Cloud4RPi para Arduino describe la API de la biblioteca, que es un conjunto de métodos utilizados para:
- crear, leer y actualizar variables,
- enviar valores de variables a la nube utilizando el protocolo MQTT.
La biblioteca admite tres tipos de variables: Bool, Numeric y String.
El flujo de trabajo de la biblioteca comienza con la creación de una instancia de API utilizando Device Token del sitio web cloud4rpi.io (consulte la parte 1 del artículo para obtener más detalles).
#si está definido (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #terminara si
Luego, declare las variables para las lecturas de DHT11:
c4r.declareNumericVariable ("DHT11_Temp"); c4r.declareNumericVariable ("DHT11_Hum");
Luego, obtenga los datos del sensor, guárdelos en variables y publique los datos en Cloud4RPi:
c4r.setVariable ("DHT11_Temp", dhtResult.t); c4r.setVariable ("DHT11_Hum", dhtResult.h); c4r.publishData ();
La temperatura y la humedad no cambian rápidamente, por lo que no es necesario enviar más de un valor cada 5 minutos.
Paso 6: diagnóstico
Cloud4RPi admite datos de diagnóstico junto con valores variables. Usé el tiempo de actividad, la intensidad de la señal de Wi-Fi y la dirección IP como datos de diagnóstico:
c4r.declareDiagVariable ("Dirección_IP"); c4r.declareDiagVariable ("RSSI"); // Intensidad de la señal WiFi c4r.declareDiagVariable ("Uptime");
Nota: La función millis que utilizo para obtener el tiempo de actividad se restablece a cero cada ~ 50 días. Que es más que suficiente para mi proyecto.
El siguiente código establece valores de variables de diagnóstico:
c4r.setDiagVariable ("RSSI", (Cadena) WiFi. RSSI () + "dBm"); c4r.setDiagVariable ("Dirección_IP", WiFi.localIP (). toString ()); c4r.setDiagVariable ("Uptime", uptimeHumanReadable (currentMillis)); c4r.publishDiag ();
La función uptimeHumanReadable convierte milisegundos a una forma conveniente:
String uptimeHumanReadable (milisegundos largos sin firmar) {static char uptimeStr [32]; segundos largos sin firmar = milisegundos / 1000; minutos largos sin firmar = segundos / 60; horas int sin firmar = minutos / 60; unsigned int días = horas / 24; segundos - = minutos * 60; minutos - = horas * 60; horas - = días * 24; sprintf (uptimeStr, "% d días% 2.2d:% 2.2d:% 2.2d", (byte) días, (byte) horas, (byte) minutos, (byte) segundos); return String (uptimeStr); }
La función genera una cadena como esta 5 días 10:23:14 en lugar de un número grande extraño.
Paso 7: iniciar y depurar el proyecto
Después de compilar el código creado y actualizarlo en NodeMCU, el dispositivo se conecta a un servicio en la nube y comienza a enviar datos.
Puede aumentar el nivel de detalle del registro estableciendo la variable del preprocesador CLOUD4RPI_DEBUG en 1 (agregue -D CLOUD4RPI_DEBUG = 1 a la sección build_flags en el archivo platform.io).
A continuación, abra el sitio cloud4rpi.io y observe el nuevo dispositivo en línea. Ábralo para ver todos los valores de las variables recibidos del dispositivo: sensor y diagnóstico.
Paso 8: Configuración del panel
En este paso, la conexión de datos a la nube está operativa. Ahora, configuremos la representación visual de los datos.
Usé la interfaz de usuario de configuración del panel para crear el siguiente panel.
El tablero se puede compartir, así que lo comparto instantáneamente con mi amigo.
Paso 9: Conclusión
El código completo del proyecto está disponible en la esencia.
¡Eso es todo por ahora!
Las preguntas y sugerencias son bienvenidas en los comentarios.
Recomendado:
Conexión de Arduino WiFi a la nube usando ESP8266: 7 pasos
Conectando Arduino WiFi a la Nube Usando ESP8266: En este tutorial te explicaremos cómo conectar tu Arduino a la nube IoT a través de WiFi Configuraremos una instalación compuesta por un Arduino y un módulo WiFi ESP8266 como una cosa IoT y la prepararemos para comunicarse con la nube AskSensors. L
Conceptos básicos de IoT: Conexión de su IoT a la nube con Mongoose OS: 5 pasos
Conceptos básicos de IoT: conexión de su IoT a la nube mediante el sistema operativo Mongoose: si es una persona a la que le gustan los retoques y la electrónica, la mayoría de las veces se encontrará con el término Internet de las cosas, generalmente abreviado como IoT, y eso se refiere a un conjunto de dispositivos que pueden conectarse a Internet. Siendo una persona así
Placa de conexión compatible con protoboard para ESP8266-01 con regulador de voltaje: 6 pasos (con imágenes)
Placa de conexión compatible con protoboard para ESP8266-01 con regulador de voltaje: ¡Hola a todos! espero que estés bien. En este tutorial, mostraré cómo hice este adaptador amigable para la placa de pruebas personalizado para el módulo ESP8266-01 con una regulación de voltaje adecuada y características que habilitan el modo flash del ESP. He hecho este mod
Conexión SSH / SCP segura desde Raspberry Pi al servidor en la nube para copias de seguridad y actualizaciones: 3 pasos
Conexión segura SSH / SCP desde Raspberry Pi al servidor en la nube para copias de seguridad y actualizaciones: el propósito de este instructivo es mostrarle cómo conectarse de forma automática y segura desde su Raspberry Pi a un servidor en la nube remoto (y viceversa) para llevar a cabo copias de seguridad y actualizaciones, etc. Para hacer esto, usa pares de claves SSH que obvia
Cómo programar una placa AVR usando una placa Arduino: 6 pasos
Cómo programar una placa AVR usando una placa Arduino: ¿Tiene una placa de microcontrolador AVR por ahí? ¿Es complicado programarlo? Bueno, estás en el lugar indicado. Aquí, le mostraré cómo programar una placa de microcontrolador Atmega8a utilizando una placa Arduino Uno como programador. Así que sin más