21 de marzo de 2020

NodeMCU: 07_ESPNOW (Comunicación bidireccional) ¡¡EUREKA!!

Entro ahora en terreno desconocido. No he leído nada, por ahora, que me permita hacer una comunicación ESP-NOW de forma bidireccional con los ESP8266, aunque puedo obtener pistas de la entrada NodeMCU: 04_ESPNOW (Comunicación maestro-esclavo).

La idea y paso previo


La idea es conectar un NodeMCU a un LED en D1 y a un pulsador en D0. Y asimismo otro segundo NodeMCU. Cuando pulse el pulsador del primer NodeMCU debe iluminarse el LED del segundo, y viceversa. Vamos, este circuito para ambos:



Para probar que está todo bien conectado... Así, si pulsamos el botón, se enciende el LED del NodeMCU.


Y ahora el desafío: al pulsar el pulsador, se debe encender el LED del otro NodeMCU...

= = = = = = = = = = = 

El programa del primer NodeMCU

En este programa tenemos que hacer dos cosas (respecto a comunicaciones master-slave ESPNOW anteriores), que son:
  1. Utilizar el role 3 --> esp_now_set_self_role(3); 
  2. Utilizar la MAC de la otra estación en la línea de emparejamiento (esp_now_add_peer) y en el envío de datos (esp_now_send).
  3. Utilizar el callback de envío (esp_now_register_send_cb) y también el de recepción (esp_now_register_recv_cb), y en este último, programar los resultados. En mi caso, encender un LED.
Una vez comprendido el sistema, podremos hacer maravillas conectando ambos dispositivos. Habrá que ver cómo hacer para conectar más de uno... 

El programa del segundo NodeMCU


Es idéntico al primero. Lo único que cambia es que ahora el primer NodeMCU es la estación (STA) vista desde el segundo (AP), así que hay que poner la STA MAC del primero en esp_now_add_peer y esp_now_send.

= = = = = = = = = = = =

NOTA: en estos días de confinamiento forzoso, con la amenaza de una enfermedad infecciosa en las puertas, este resultado me ha puesto muy contento. ¡¡Por fin lo he entendido!!

1 comentario: