Sincronización de luciérnagas con ESP-NOW
En un bosque por la noche, muchas luciérnagas empiezan parpadeando cada una a su propio ritmo. Después de un tiempo, pueden formar poco a poco un ritmo común: primero un pequeño grupo parpadea junto, y luego una gran parte parpadea casi al mismo tiempo.
Este proyecto usa ESP-NOW para crear un experimento de "luciérnagas electrónicas". Cada placa actúa como una luciérnaga: parpadea según su propio ritmo y, cuando escucha que una compañera cercana parpadea, adelanta un poco su propio ritmo. Después de funcionar durante un tiempo, varias placas sincronizan gradualmente sus parpadeos.
Referencia:
1. Demostración
Prepara 3 o más placas MicroBlocks compatibles con ESP-NOW y descarga el mismo programa firefly.ubp en cada una.
Al ejecutar el programa, cada placa inicia su propio reloj interno, parpadea a intervalos regulares y recibe mensajes de parpadeo enviados por otras placas. Al principio, sus tiempos de parpadeo pueden ser diferentes. Después de observar durante un rato, verás que los parpadeos se acercan poco a poco hasta formar una sincronización cada vez más ordenada.

Abrir el programa completo en MicroBlocks
La demostración en clase puede seguir este orden:
- Enciende primero solo 1 placa y observa cómo parpadea con un ritmo fijo.
- Enciende la 2.ª y la 3.ª placa y observa que al principio no están sincronizadas.
- Coloca las placas más cerca unas de otras y espera a que se sincronicen poco a poco.
- Pulsa el botón A de una placa para alterar aleatoriamente su reloj interno y observa cómo vuelve a unirse al ritmo del grupo.
2. Principio de la sincronización de luciérnagas
Este programa usa tres variables para simular el ritmo interno de una luciérnaga:
tick: el tiempo de un paso del reloj. En este programa, el valor predeterminado es100milisegundos.clock: el valor actual del reloj. Puede entenderse como "en qué paso va la luciérnaga".circle: un ciclo completo. En este programa, el valor predeterminado es12.
Podemos imaginar clock como un pequeño reloj circular:
0, 1, 2, 3, ... 11, 12
Cuando clock llega a circle, la placa parpadea una vez y vuelve a poner clock en 0.

La lógica principal puede entenderse así:
Cada 1 tick:
clock aumenta en 1
Si clock >= circle:
enviar mensaje ESP-NOW "light"
parpadear
clock = 0
La clave de la sincronización está en "empujar suavemente el reloj propio cuando se escucha el parpadeo de otra placa".
Si se recibe un mensaje ESP-NOW:
Si clock < circle:
clock aumenta en 1

Esta acción puede llamarse "empuje" o "ajuste suave". No hace que todas las placas se sincronicen de inmediato; solo permite que las placas retrasadas alcancen un poco a las que van por delante. Muchos pequeños empujes acumulados hacen que todo el grupo forme gradualmente el mismo ritmo.
3. Ventajas de ESP-NOW
ESP-NOW es muy adecuado para este proyecto porque no funciona como "conectarse a un servidor y luego comunicarse", sino que permite que los dispositivos se envíen mensajes cortos directamente.
En este proyecto, ESP-NOW tiene varias ventajas claras:
No necesita router. En el aula no hace falta configurar el nombre ni la contraseña de una red WiFi.
Es adecuado para difusión de uno a muchos. Cuando una "luciérnaga" envía el mensaje
light, los dispositivos cercanos pueden recibirlo.Tiene baja latencia y una respuesta visual directa. Los estudiantes pueden ver claramente el efecto de "yo parpadeo una vez y otros se ven afectados".
Es adecuado para experimentos de comportamiento colectivo. Con 2 placas se puede observar la influencia mutua; con 3 o más placas, el proceso de sincronización se ve con mayor claridad.
Además, ESP-NOW tiene un alcance de comunicación relativamente largo. Si las condiciones lo permiten, el experimento de sincronización de luciérnagas puede realizarse en todo el aula.
4. Preguntas para seguir explorando
Cambiar
tick
Cuanto menor seatick, más rápido será el ritmo de parpadeo; cuanto mayor seatick, más lento será el ritmo.Cambiar
circle
Cuanto menor seacircle, más frecuentes serán los parpadeos; cuanto mayor seacircle, más largo será el intervalo entre parpadeos.Cambiar la intensidad del empuje
Ahora, después de recibir un mensaje, el programa solo haceclock += 1. Si se cambia aclock += 2oclock += 3, ¿la sincronización será más rápida? ¿Será más fácil que se vuelva inestable?Añadir filtrado de mensajes
Responder solo al mensajelightpuede hacer que el programa sea más estable en un aula con muchas personas y muchos dispositivos.Configurar diferentes canales
Asigna diferentes grupos a diferentes canales ESP-NOW para que cada grupo de luciérnagas solo se sincronice dentro de su propio grupo.