Tabla de contenido:

ESP-NOW Home Automation Esp8266 Raspberry Pi MQTT: 4 pasos
ESP-NOW Home Automation Esp8266 Raspberry Pi MQTT: 4 pasos

Video: ESP-NOW Home Automation Esp8266 Raspberry Pi MQTT: 4 pasos

Video: ESP-NOW Home Automation Esp8266 Raspberry Pi MQTT: 4 pasos
Video: ESPNOW as simple as possible | Getting Started, Range test & much more.. 2024, Noviembre
Anonim
ESP-NOW Home Automation Esp8266 Raspberry Pi MQTT
ESP-NOW Home Automation Esp8266 Raspberry Pi MQTT

En este Instructable, les muestro cómo utilicé ESP-NOW en la automatización de mi hogar. En el esquema se pueden ver los flujos de comunicación.

Te muestro:

  • como funciona el remitente
  • como funciona el receptor
  • cómo funciona la comunicación en serie con una Raspberry Pi

No muestro cómo funcionan MQTT y mi domótica, puedes encontrar otras buenas instrucciones para eso.

Créditos: este Instructable se inspiró en:

Video # 172 por Andreas Spiess

www.esploradores.com/practica-6-conexion-es…

Paso 1: copia de seguridad a través de WiFi y MQTT

Copia de seguridad a través de WiFi y MQTT
Copia de seguridad a través de WiFi y MQTT

Descubrí que ESP-NOW es extremadamente rápido y bastante confiable, pero a veces falla. En mi programa agregué una copia de seguridad a través de una conexión WiFi normal y MQTT.

Paso 2: el remoto / remitente

El remoto / remitente
El remoto / remitente
El remoto / remitente
El remoto / remitente
El remoto / remitente
El remoto / remitente
El remoto / remitente
El remoto / remitente

En el primer esquema ves cómo funciona el programa del remitente:

  1. El esp8266 se inicia desde el encendido o desde el reinicio
  2. ESP-NOW está inicializado
  3. El módulo envía ESP-NOW por un tiempo definido
  4. El módulo comprueba si el receptor recibió el mensaje ESP-NOW en una función de devolución de llamada.

    1. Si se recibió el mensaje ESP-NOW, el módulo entra en suspensión profunda de baja potencia
    2. Si no se recibió el mensaje ESP-NOW, el módulo inicia una conexión WiFi y una conexión MQTT como conexión de respaldo.

El programa para el remitente está en mi Github (Master_sender.ino). Los programas envían tanto el tema como el mensaje para la automatización del hogar MQTT en un mensaje ESP-NOW combinado, combinado en un signo '&' para una división fácil en el receptor.

Hice dos controles remotos / remitentes diferentes:

Remitente 1: El esp8266 está en suspensión profunda y se activa mediante un reinicio. El led del botón se enciende y se atenúa cuando el módulo está terminado. Si el voltaje de la batería es demasiado bajo, el led parpadea. Si el ESP-NOW falló, el led parpadea antes de cambiar a las conexiones WiFi / MQTT. El esp8266 se alimenta de una batería LiPo con un regulador de voltaje HT7333 a 3.3V

Remitente 2: El esp8266 se apaga y se enciende presionando el botón. Normalmente, la conexión ESP-NOW se realiza después de que el botón "haga clic". El esp8266 se alimenta directamente de una batería LiPo. No sé si el esp8266 se daña por el alto voltaje de una batería completamente cargada (hasta 4.2 V) cuando se enciende solo unos 100 ms. Es más alto que las especificaciones (3.0 - 3.6V).

Nota: si la carga de la batería es baja, el ESP-NOW falla.

Paso 3: El receptor - Hardware (esp8266 y Raspberry Pi)

El receptor - Hardware (esp8266 y Raspberry Pi)
El receptor - Hardware (esp8266 y Raspberry Pi)
El receptor - Hardware (esp8266 y Raspberry Pi)
El receptor - Hardware (esp8266 y Raspberry Pi)
El receptor - Hardware (esp8266 y Raspberry Pi)
El receptor - Hardware (esp8266 y Raspberry Pi)

La descripción del receptor se divide en dos partes:

  1. Hardware
  2. Software

El hardware

El receptor esp-01 está conectado a mi Raspberry Pi Zero, que ejecuta mi sistema de automatización del hogar (Openhab2) y Node Red.

En el esquema se muestran las conexiones simples:

  • RX del esp-01 a TX del RasPi
  • TX del esp-01 a RX del RasPi
  • GND a GND
  • El esp-01 VCC es alimentado por el pin de 3.3V del Raspi
  • En el esp-01, tanto RST como CH_PD se elevan.

Hice un conector de interfaz para montarlo fácilmente

En una imagen puedes ver mis conexiones de cables a mi Raspberry Pi 3 (que tiene el mismo pinout, pero usé otro pin de 3.3V para conectar a CH_PD).

El esp-01 fue programado como se muestra en mi otro Instructable (ver paso 3).

Paso 4: El receptor: software (serie, nodo rojo, MQTT)

El receptor: software (serie, nodo rojo, MQTT)
El receptor: software (serie, nodo rojo, MQTT)
El receptor: software (serie, nodo rojo, MQTT)
El receptor: software (serie, nodo rojo, MQTT)
El receptor: software (serie, nodo rojo, MQTT)
El receptor: software (serie, nodo rojo, MQTT)

Programa en esp8266

El programa para el receptor esp-01 está en mi Github (Master_sender.ino). El programa es realmente simple, solo imprime el mensaje ESP-NOW recibido en el puerto serie de la Raspberry Pi.

Puerto serial

En la Raspberry Pi, debe activar el puerto serie (en raspbian, ejecute 'sudo raspi-config') para la comunicación serie normal.

El nombre del puerto serie es:

  • Raspberry Pi Zero: / dev / ttyAMA0
  • Raspberry Pi 3: / dev / ttyS0

Puede comprobar el puerto serie ejecutando 'dmesg | grep tty 'o' ls / dev '

Nodo rojo

En Node Red, seleccione el Nodo de entrada serial y configure el puerto serial (vea las imágenes adjuntas). Tenga en cuenta la velocidad en baudios de la conexión en serie, que debe coincidir con la velocidad en baudios programada en el esp8266.

La salida del nodo serial es transformada por un nodo de función que divide el mensaje en el signo '&' y establece msg.topic y msg.payload. La salida de la función se dirige al nodo de salida mqtt que envía el mensaje al servidor MQTT. Tenga en cuenta que el campo de tema del nodo mqtt está en blanco, porque el tema está establecido en el mensaje.

Recomendado: