Comunicación vía radio para ESP8266 y ESP32 con ESPNOW

Última modificación hace 10 meses

ESP-NOW es un «nuevo» protocolo de comunicaciones vía radio que soportan los ESP8266 y ESP32, desarrollado por Espressif, su fabricante, que permite hacer transmisiones de datos muy rápidas (y cuando digo muy rápidas, digo rapidísimas).

Su principal objetivo es sustituir al Wifi para permitir consumos de energía mucho más bajos y con ello mayor autonomía en dispositivos que funcionan con batería al permitir el envío de datos en pocos milisegundos, en lugar de los varios segundos (de 3 a 12 segundos) que se emplearían en realizarlas con Wifi.

Además de su velocidad hay otro ámbito donde sobresale, y es en el alcance que proporciona. Donde una comunicación wifi puede tener un alcance de 25 a 100 metros, con ESP-NOW podemos obtener fácilmente entre 100 y 500 metros de alcance, e incluso más, dependiendo de las condiciones tanto en un caso como en otro.

Como te decía, uno de los mayores problemas cuando queremos hacer proyectos de bajo consumo que funcionen con pilas o baterías con un ESP8266 o ESP32 es que las comunicaciones por wifi matan la autonomía.

Esto es así por dos motivos:

  • Obligan a que el ESP8266 o ESP32 tenga que estar despierto mucho tiempo (solamente para conectarse a nuestra red wifi tarda varios segundos, aunque luego envíe solo un byte o incluso nada).
  • El protocolo wifi consume mucha energía, y cuando digo mucha es muchísima (relativamente, claro).

Y si pudiéramos reducir ese tiempo hasta los 40 msec (SI, CUARENTA MILISEGUNDOS). Reduciríamos el consumo 200 VECES. Solo con esto nuestro proyecto pasaría de tener 48 horas de autonomía a tener varios meses... ¿Interesante?

Introducción (en palabas de Espressif)

Veamos, antes de presentarte el Gateway ESP-NOW, el protocolo con un poco más de profundidad…

ESP-NOW es un tipo de protocolo de comunicación Wi-Fi sin conexión definido por Espressif. A diferencia de los protocolos Wi-Fi tradicionales, las cinco primeras capas superiores de OSI se simplifican a una sola capa en ESP-NOW, los datos no necesitan pasar por la capa física, la capa de enlace de datos, la capa de red y la capa de transporte, lo que reduce el retraso causado por la pérdida de paquetes en una red congestionada y permite un tiempo de respuesta más rápido.

ESP-NOW ocupa menos recursos de CPU y flash, puede trabajar con Wi-Fi y Blutooth LE, soporta las series de ESP8266、ESP32、ESP32-S y ESP32-C. El modo de transmisión de datos de ESP-NOW es flexible, incluyendo unicast y broadcast, soporta la conexión y el control de dispositivos uno-a-muchos y muchos-a-muchos. Y ESP-NOW puede ser utilizado como un módulo auxiliar independiente para ayudar a la configuración de la red, la depuración y las actualizaciones de firmware.

Hay dos roles definidos en ESP-NOW según el flujo de datos, iniciador y respondedor. El mismo dispositivo puede tener dos roles al mismo tiempo. Por lo general, los interruptores, los sensores, las pantallas LCD, etc., desempeñan el papel de iniciador en un sistema IoT, mientras que las luces, los enchufes y otras aplicaciones inteligentes desempeñan el papel de respondedor.

Control

Hay algunas ventajas evidentes en ESP-NOW:

  1. Respuesta rápida: Tras el encendido, los dispositivos pueden transmitir datos y controlar otros dispositivos emparejados directamente sin ninguna conexión inalámbrica, y la velocidad de respuesta es de milisegundos.
  2. Bajo consumo: ESP-NOW simplifica los protocolos de cinco capas en una sola capa, lo que conduce a un proceso de comunicación más fácil y un menor consumo de energía, un botón de control puede ser utilizado durante dos años sólo con dos pilas AA.
  3. Buena Compatibilidad: Cuando el dispositivo se conecta al router o funciona como un hotpot, también puede realizar una comunicación rápida y estable por ESP-NOW. Y el dispositivo puede mantener una conexión estable a través de ESP-NOW incluso si el router está defectuoso o la red es inestable.
  4. Comunicación a larga distancia: ESP-NOW soporta la comunicación a larga distancia, se puede aplicar a las escenas al aire libre y puede mantener una conexión estable, incluso los dispositivos están separados por las paredes incluso pisos.
  5. Control multicapa: Podemos realizar el control multi-salto de los dispositivos por ESP-NOW. Cientos de dispositivos pueden ser controlados a través de unicast, broadcast y control de grupo.
    Múltiples métodos de control: ESP-NOW soporta el interruptor táctil, la pantalla LCD, diferentes sensores y el control por voz.

Aprovisionamiento

ESP-NOW es un método de aprovisionamiento además del aprovisionamiento Wi-Fi y el aprovisionamiento Bluetooth. En primer lugar, configura la red para el primer dispositivo a través de bluetooth, y los demás dispositivos no necesitan la información de SSID/contraseña, el primer dispositivo conectado a la red puede enviar esta información a los demás directamente. Los usuarios pueden elegir si permiten que los dispositivos restantes accedan a la red en el lado de la APP.

Actualización

ESP-NOW se puede utilizar para la transmisión masiva de datos como la actualización del firmware.

  1. Reanudar la actualización desde el punto de interrupción: cuando se utiliza ESP-NOW para actualizar el firmware, el firmware será sub-empaquetado en un tamaño fijo y se escribirá en la memoria flash de uno en uno, el dispositivo registrará los paquetes actualizados. Si el proceso de actualización se interrumpe, el dispositivo sólo solicitará los paquetes de firmware restantes para realizar la actualización desde el punto de interrupción.
  2. Actualización de múltiples dispositivos: ESP-NOW puede soportar la actualización de múltiples dispositivos al mismo tiempo, 50 dispositivos pueden ser actualizados en 3 minutos.
  3. Restablecimiento de la versión: el firmware puede restablecer la versión anterior si se produce un error de actualización.

Depuración

ESP-NOW puede ser utilizado para recibir el log de funcionamiento para la depuración. Se puede utilizar en los casos en los que no se puede tener contacto directo con los dispositivos debido a la electricidad de alta tensión, alta temperatura. Con el apoyo de conexiones de muchas a muchas (many-to-many), el iniciador puede recibir registros de múltiples respondedores para diagnosticar los fallos del dispositivo rápidamente.

  1. Logs del dispositivo
    • Análisis de logs: analiza el tiempo de funcionamiento y los tiempos de reinicio desde el log.
    • Almacenamiento de logs: almacena los datos adquiridos en las tarjetas SD o los exporta a la web.
    • Modificación de logs: el nivel de log de cada modelo de función puede ajustarse libremente.
  2. Depuración de comandos
    • Depuración de periféricos: se pueden enviar comandos de control para probar periféricos como GPIO, UART, LED, etc.
    • Depuración de Wi-Fi: el código de país, el modo de Wi-Fi, la potencia de Wi-Fi, etc se puede ajustar, y el rendimiento de Wi-Fi puede ser depurado.
    • Depuración del estado: comando de reinicio, comando de reset, estado de la memoria y de la tarea en ejecución.
    • Comandos personalizados
  3. Pruebas de producción
    • Pruebas de interferencias: distribuir un gran número de paquetes de datos Wi-Fi para interferir en la red.
    • Pruebas Inalámbricas: monitorear el desempeño de RF, prueba de paquetes ping, distancia y prueba de desempeño de RF.
    • Pruebas de módulos: prueba de tiempo de lectura de flash, prueba de precisión de tiempo.
    • Verificación de la versión: comprobar si la versión de fábrica del dispositivo es la especificada.

Encriptación de datos

ESP-NOW puede proteger la seguridad de los datos con ECDH y AES128-CCM.

  1. Configuración rápida: 16 dispositivos pueden ser configurados en 5 segundos.
  2. Handshake de Múltiples Dispositivos: El iniciador ESP-NOW puede soportar el handshake de múltiples dispositivos al mismo tiempo.
  3. Seguridad:
    • ECDH y cadena de prueba de posesión (PoP) utilizados para autorizar la sesión y derivar la clave compartida.
    • Encriptación en modo AES256-CTR de los datos de configuración.
    • Encriptación en modo AES128-CCM de los datos ESP-NOW.

Limitaciones de ESP-NOW

Como con todas las cosas en la vida, no todo son ventajas con ESP-NOW. Al final para conseguir esos tiempos de transmisión tan cortos hay que llegar a compromisos y estos son algunos:

Menor cantidad de datos

¿Cuál es el límite de datos de wifi? Ya sabes que ninguno, podemos ver una película por wifi o podemos, incluso, ver video en streaming de forma ilimitada. Esto con ESP-NOW no es así.

ESP-NOW tiene una limitación en la cantidad de datos que puede enviar en unos 250 bytes. Por supuesto, nada nos impide hacer todas las transferencias independientes de datos (de 250 bytes cada una) para enviar lo que queramos, por grande que sea. Pero, claro, ahí ESP-NOW deja de ser tan ventajoso y seguramente sea preferible utilizar wifi.

Limitación de pares encriptados

Si queremos que las transmisiones estén encriptadas, para que no puedan ser recibidas o leídas por alguien no autorizado, ESP-NOW no nos lo pone fácil si tenemos muchos dispositivos.

Se admiten 10 pares encriptados como máximo en modo Station y 6 como máximo en modo SoftAP o SoftAP + Station. Se admiten múltiples pares no encriptados, pero, el número total de nodos encriptados debe ser inferior a 20.

Afortunadamente ESP-NOW se utiliza principalmente para sensores en entorno doméstico, por lo que no es muy importante si alguien tiene acceso a esos datos y el cifrado no suele ser algo imprescindible.

Por supuesto, nada nos impide crear nuestro propio sistema de encriptación por software sin esa limitación.

Ventajas y desventajas de ESP-NOW vs LoRa

Esta es una pregunta que suele salir y es el motivo por el que la he incluido aquí, aunque realmente tiene poco que ver y está pensado para casos distintos.

ESP-NOW y LoRa no son comparables (ni para bien ni para mal):

  • Ni en coste: Para ESP-NOW no necesitamos ningún hardware adicional, mientras que para LoRa necesitaremos un módulo de radio LoRa.
  • Ni en complejidad: La solución con ESP-NOW es muy rápida y sencilla mientras que implementar LoRa es relativamente complicado.
  • Ni en alcance: Lo normal es que con ESP-NOW podamos cubrir entre 100 y 500 metros, mientras que con LoRa podemos cubrir varios kilómetros.
  • Ni en cantidad de datos que podemos enviar: Con ESP-NOW podemos enviar todos los datos que queremos en mensajes de 250 bytes, todo lo deprisa que queramos. Con LoRa las comunicaciones son mucho más lentas y está limitado por normativa el porcentaje de tiempo que podemos transmitir, así como el espaciado en el tiempo entre diferentes transmisiones.

Gateway ESP-NOW a MQTT

He desarrollado un gateway (una pasarela) que te permite unir fácilmente el mundo ESP-NOW con el mundo MQTT, el protocolo estándar del IoT (Internet de las Cosas o «Internet Of Things») mediante WiFi.

En el siguiente artículo tienes todo lo necesario para que pongas el gateway en marcha rápidamente y puedas adaptarlo a tus necesidades fácilmente.

https://emariete.com/gateway-esp-now-mqtt/

Comparte este artículo

Muchas gracias por colaborar con lo más difícil de este proyecto: COMPARTIRLO Y DARLO A CONOCER. De nada sirve lo mucho que yo pueda trabajar en estos tutoriales y proyectos si la gente no los llega a conocer. ¡MUCHAS GRACIAS A TODOS LOS QUE COMPARTÍS!

Justo debajo tienes unos botones que te facilitarán compartirlo en Facebook, Twitter, WhatsApp y Telegram.

❤

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 4.3 / 5. Recuento de votos: 7

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Deja un comentario