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.

Programa completo

Abrir el programa completo en MicroBlocks

La demostración en clase puede seguir este orden:

  1. Enciende primero solo 1 placa y observa cómo parpadea con un ritmo fijo.
  2. Enciende la 2.ª y la 3.ª placa y observa que al principio no están sincronizadas.
  3. Coloca las placas más cerca unas de otras y espera a que se sincronicen poco a poco.
  4. 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 es 100 milisegundos.
  • 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 es 12.

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.

Programa del reloj

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

Adelantar el reloj después de recibir

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:

  1. No necesita router. En el aula no hace falta configurar el nombre ni la contraseña de una red WiFi.

  2. Es adecuado para difusión de uno a muchos. Cuando una "luciérnaga" envía el mensaje light, los dispositivos cercanos pueden recibirlo.

  3. 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".

  4. 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

  1. Cambiar tick
    Cuanto menor sea tick, más rápido será el ritmo de parpadeo; cuanto mayor sea tick, más lento será el ritmo.

  2. Cambiar circle
    Cuanto menor sea circle, más frecuentes serán los parpadeos; cuanto mayor sea circle, más largo será el intervalo entre parpadeos.

  3. Cambiar la intensidad del empuje
    Ahora, después de recibir un mensaje, el programa solo hace clock += 1. Si se cambia a clock += 2 o clock += 3, ¿la sincronización será más rápida? ¿Será más fácil que se vuelva inestable?

  4. Añadir filtrado de mensajes
    Responder solo al mensaje light puede hacer que el programa sea más estable en un aula con muchas personas y muchos dispositivos.

  5. 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.

CC-BY-SA

© por CoCube 2024-2026.
Many thanks to Professor José Manuel Ruiz Gutiérrez for helping with the translation!
Este trabajo tiene una licencia CC-BY-SA 4.0.