Los dispositivos IoT pueden hacer cosas geniales, pero una parte esencial de la ecuación es cómo se comunican. Puede administrar eso con un módulo ESP-01.

Tener un presupuesto limitado no significa necesariamente que no pueda asumir proyectos avanzados de bricolaje. Si está buscando un módulo WiFi pequeño, asequible y conveniente para escalar sus proyectos de IoT, el módulo ESP-01 es una excelente opción. Sin embargo, integrar un módulo de este tipo con un protocolo liviano como MQTT puede ser complicado, especialmente si es nuevo en el desarrollo de IoT.

Programar solo la placa ESP-01 puede ser un desafío en comparación con otros módulos de la serie ESP8266. Pero repasemos los conceptos básicos de toda la configuración de hardware y software que necesita para comenzar a usar el módulo, así como también cómo configurar MQTT de una manera simple y procedimental.

Conociendo la Junta

ESP8266 ESP-01 es un módulo WiFi pequeño y compacto que viene con un chip ESP8266EX, que es un SoC altamente integrado diseñado para aplicaciones IoT.

instagram viewer

El módulo incluye un microcontrolador inalámbrico de un solo chip con una pila de protocolos TCP/IP y es capaz de conectarse a una red inalámbrica o actuar como un punto de acceso. El módulo ESP-01 también cuenta con un encabezado de 2x4 pines que brinda acceso a sus pines GPIO, alimentación y tierra, y la interfaz UART.

Configuración del hardware

El módulo no es compatible con la placa de prueba en absoluto. Para mayor comodidad, puede comprar una placa de extensión preconstruida o simplemente seguir el método antiguo: usar cables de puente y una placa de prueba.

Hay un programador dedicado, la placa del módulo serie ESP8266, que puede facilitar su experiencia de programación. Si prefieres ir por esta ruta, BRICOLAJEHOBI tiene un práctico tutorial sobre cómo actualizar un programa en el módulo ESP-01 usando un programador (incluido el adaptador del módulo convertidor USB a TTL CH340G).

Pero aún puede programar el módulo usando una placa Arduino. Mire el diagrama del circuito a continuación como referencia.

Si bien puede parecer tentador, generalmente no recomendamos conectar el módulo directamente al pin de 3.3v de Arduino, ya que requiere más corriente que la que proporciona el pin. En su lugar, conecte el Arduino 5V a un regulador de voltaje de 3,3 V como LM1117/LD117, luego encienda el módulo WiFi desde el regulador.

No conecte el CCV y CH_PD pines del ESP al 5V pin del arduino. Conexión del módulo a 5V el poder puede dañarlo.

Todos los capacitores son 10uF y la resistencia es una 1K resistor.

Requisitos de Software

El módulo ESP-01 se usa comúnmente con la plataforma Arduino. Como tal, configurar el software es bastante simple, especialmente si está familiarizado con Arduino C. Sin embargo, si está más familiarizado con Raspberry, hay muchos Proyectos IoT de Raspberry Pi puedes probar.

Estos son los requisitos básicos:

  • Un agente o servidor MQTT (como Mosquitto o CloudMQTT).
  • Un IDE de Arduino con la biblioteca central ESP8266.
  • La biblioteca PubSubClient para Arduino.

Debe recordar que tener su propio servidor MQTT localmente le brinda flexibilidad dentro de sus proyectos.

Instalación de las bibliotecas necesarias

Primero, descargue e instale el IDE de Arduino en su computadora. Una vez instalado, abra el IDE de Arduino y vaya a Archivo > preferencias.

En el URL adicionales del administrador de tableros campo, introduzca la siguiente URL:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Hacer clic DE ACUERDO para cerrar la ventana de Preferencias.

A continuación, vaya a Herramientas > Junta > Gerente de Juntas.

Luego busca esp8266 e instale el paquete de la placa esp8266; esto incluye todas las bibliotecas necesarias para el módulo ESP-01.

Para instalar la biblioteca PubSubClient, vaya a Bosquejo > Incluir biblioteca > Administrar bibliotecas.

Buscar PubSubCliente y haga clic en la biblioteca para instalarla.

Una vez que tenga todas las bibliotecas necesarias instaladas, puede comenzar a programar el módulo ESP-01. Sin embargo, una cosa a tener en cuenta es que puede usar el Wifi.h que se incluye en la biblioteca, o descargar el ESPWifi.h biblioteca e inclúyelo en tu boceto.

Establecimiento de una conexión entre ESP-01 y MQTT Broker

Un broker MQTT es un servidor que actúa como intermediario entre los clientes MQTT. Permite a los clientes enviar y recibir mensajes entre sí a través de un modelo de publicación-suscripción.

Para conectar su módulo ESP-01 a un corredor MQTT, deberá especificar la dirección IP y el número de puerto del corredor en su código. También deberá proporcionar una ID de cliente única que identifique su módulo ESP-01 al corredor.

Primero, incluya las bibliotecas necesarias en la parte superior de su boceto

#incluir <ESP8266 WiFi.h>
#incluir <PubSubCliente.h>

A continuación, defina los detalles de la conexión WiFi y MQTT.

constantecarbonizarse* ssid = "TU_SSID";
constantecarbonizarse* contraseña = "TU CONTRASEÑA";
constantecarbonizarse* servidor_mqtt = "TU_SERVIDOR_MQTT";

No olvide reemplazar los marcadores de posición con sus propios detalles de conexión WiFi y MQTT.

Después de eso, crea un cliente WiFi y conéctate a tu red WiFi local:

WiFiCliente espCliente;
vacíoconfiguración_wifi(){
retraso (10);
WiFi.begin (ssid, contraseña);
mientras (WiFi.estado() != WL_CONECTADO) {
retraso (500);
}
}

Esta función debe llamarse en el configuración() función de su boceto.

A continuación, deberá crear un cliente MQTT y conectarse a su corredor MQTT:

PubSubCliente cliente(espCliente);
vacíoreconectar(){
mientras (!cliente.conectado()) {
si (cliente.conectar("ESP01", usuario_mqtt, contraseña_mqtt)) {
// Suscríbete a un tema
cliente.subscribe("prueba/tema");
} demás {
retraso (5000);
}
}
}

Una vez que se haya conectado a su corredor MQTT, puede comenzar a publicar y suscribirse a temas.

Publicación de datos de ESP-01 a MQTT Broker

Ahora que ha conectado con éxito su módulo ESP01 al agente MQTT, veamos cómo puede publicar datos desde el ESP-01 al agente.

Para publicar datos, utilice el cliente.publicar() función para publicar un mensaje en el enTema tema.

cliente.publicar("enTema", "Hola desde ESP-01");

Esto publicará el mensaje "Hola desde ESP-01" al enTema tema.

También puede publicar datos de sensores del ESP-01 en el intermediario. Por ejemplo, si tiene un sensor de temperatura conectado a su ESP-01, puede publicar los datos de temperatura en el corredor como se muestra a continuación.

flotar temperatura = 25.5;
Cadena cadena de temperatura = Cadena(temperatura);
carbonizarse temperaturaChar[5];
cadena de temperatura.toCharArray(temperaturaChar, 5);
cliente.publicar("Temperatura", temperaturaChar);

Esto publicará los datos de temperatura en el Temperatura tema.

Los datos se pueden publicar en un bucle o en intervalos regulares, según los requisitos de su proyecto. Asegúrese de no inundar al corredor con demasiados datos y de publicar en un intervalo razonable.

Suscripción a temas de MQTT y recepción de datos en ESP-01

Para suscribirse a un tema, utilice el cliente.subscribe() función. Para nuestro caso a continuación, el cliente se suscribe al fuera de tema tema.

cliente.subscribe("temafuera");

Una vez que se haya suscrito a un tema, puede recibir mensajes publicados en ese tema usando el cliente.bucle() función en el bucle() función en el siguiente esquema:

vacíobucle(){
si (!cliente.conectado()) {
reconectar();
}
cliente.bucle();
}

Esto verificará continuamente si hay nuevos mensajes y ejecutará la función de devolución de llamada cuando se haya recibido un nuevo mensaje.

Para manejar los mensajes recibidos, defina una función de devolución de llamada como la que se muestra a continuación:

vacíollamar de vuelta(carbonizarse* tema, byte* carga útil, sin firmar En t longitud){
// Imprime el mensaje recibido
De serie.imprimir("Mensaje recibido sobre el tema: ");
De serie.imprimir(tema);
De serie.imprimir(". Mensaje: ");
para (En t yo=0;iDe serie.imprimir((carbonizarse)carga útil[i]);
}
De serie.println();
}

Esta función se llamará cuando se reciba un nuevo mensaje sobre el tema suscrito. Imprimirá el mensaje recibido al Serial Monitor.

Uso de niveles de QoS (calidad de servicio) y funciones de seguridad

Una de las técnicas más importantes utilizadas en el manejo de solicitudes es el uso de niveles de QoS (Calidad de servicio) para sus mensajes MQTT. Los niveles de QoS definen cómo el corredor y los suscriptores deben manejar sus mensajes. Hay tres niveles de QoS: 0, 1 y 2.

El nivel 0 de QoS es el menos confiable, ya que los mensajes se envían solo una vez y no se garantiza que se entreguen al suscriptor. El nivel 1 de QoS es más confiable, ya que los mensajes se envían al menos una vez y se garantiza que se entregarán al suscriptor al menos una vez. El nivel 2 de QoS es el más confiable, ya que los mensajes se envían exactamente una vez y se garantiza que se entregarán al suscriptor exactamente una vez. La forma en que sus dispositivos se comunican coincide con otros Problemas y soluciones comunes de seguridad de Internet de las cosas (IoT) quieres estar al tanto.

Para usar niveles de QoS, puede especificar el nivel deseado al publicar mensajes usando el cliente.publicar() función:

cliente.publicar("tema", "¡Hola Mundo!", 1);

Esto publicará el mensaje. ¡Hola Mundo! hacia tema tema con nivel de QoS 1.

Otra técnica avanzada es el uso Última Voluntad y Testamento (LWT) mensajes Los mensajes LWT son mensajes que envía el intermediario cuando un cliente se desconecta inesperadamente. Creemos que esto es importante para detectar dispositivos fuera de línea o para activar acciones cuando un dispositivo se desconecta.

Para usar mensajes LWT, puede especificar el mensaje LWT cuando se conecta al corredor usando el cliente.setWill() función:

cliente.setWill("estado", "desconectado", 1, verdadero);

Esto establecerá el mensaje LWT en desconectado sobre el estado tema con QoS nivel 1 y el indicador de retención establecido en verdadero.

Prepárese para su próximo proyecto de IoT

El módulo ESP-01 es una solución asequible y compacta para proyectos de IoT, y usarlo con MQTT puede llevar su proyecto al siguiente nivel. Aunque la configuración inicial puede ser desalentadora, los beneficios de MQTT, como la comunicación ligera y la alta escalabilidad, hacen que valga la pena la inversión.