El juego conocido como «Quiz» que consiste en unos pulsadores de colores que serán activados por los participantes para dar una respuesta a una pregunta dada en el menor tiempo posible.

Lo usaremos en clase como herramienta de evaluación, autoevaluación y entretenimiento, realizando preguntas breves y dinámicas, que nos servirá para medir conocimientos, habilidades o competencias sobre un tema específico.

La comunicación entre los botones será inalámbrica (WIFI) usando los ESP8266 y ESP-01, serán alimentados por una batería de litio recargable (18650) y podremos añadir tantos pulsadores como deseemos, en el proyecto emplearemos cinco.

Materiales por cada pulsador

  • Esp-01
  • Led verde de 3mm (power on)
  • Interruptor (1cm x 1,5cm) (power)
  • Botón pulsador de gran tamaño con leds, de 60cm de diámetro.
  • Baterías de litio 18650
  • Cargadores USBTP4065
  • Regulador de voltaje a 3.3V, LM1117T-3.3
  • Resistencias 47, 100, 470, 10K
  • 2 Condensadores 47uF
  • Adaptador USB C opcional
  • Mosfet de canal P, IRF4905

Materiales para centralita de control

  • ESP8266
  • 4 tiras de 8 leds WS2812b
  • Resistencia 470 ohm
  • Interruptor 10x15mm (power)
  • Step Up
  • Batería de litio 18650
  • Cargador de batería USBTP4065 USB mini
  • Pulsador metálico de 15mm de diámetro

Esquema eléctrico de los pulsadores

Vamos a usar GP2 de entrada para el pulsador en pull up, eso nos evitará usar una resistencia y el GP0 (que en LOW activa el modo programación al arrancar) para activar el led del pulsador.

La activación del led será a través de un Mosfet de canal P para conseguir la tención de la entrada sin pasar por el regulador de 3.3V, esto hará que el led luzca con la potencia adecuada. Añadiremos una resistencia de 10k de VCC a GP0 para garantizar que no arranca en modo programación. 

Nota: Empecé queriendo usar un transistor 2N2222 por simpleza, pero al estar su base en LOW al arrancar, el ESP-01 se ponía en modo programación y no ejecutaba ningún programa a sí que mi solución fue la del Mosfet canal P, ahora tan solo se invierte la lógica en la programación.

La alimentación la recularemos con un LM1117T para administrar los 3.3V estables con los que funciona el ESP-01. Los condensadores darán mayor estabilidad.

Un pequeño led nos dará la información de que el sistema está alimentado al pulsar el interruptor.

La batería de litio 18650 estará conectada al cargador tipo USB C (o mini depende del gusto) TP4056, que con sus dos led indicadores (rojo-azul) nos informará de la carga de la pila que estado encendido tiene una duración de alrededor de 2 días.

Recreación de uno de los pulsadores.

El ESP-01

Barato, bajo consumo y de pequeño tamaño, ideal para este proyecto.

El mayor problema del ESP-01 es que debe ser alimentado a 3.3V y que para programarlo para que trabaje de forma autónoma hay que arrancarlo con el GPIO0 conectado a GND, esto es un engorro pues una vez programado hay que volver a desconectar para que se ejecute el programa  con normalidad. La chapuza es clara como se puede apreciar en la siguiente fotografía. Con maña y un pequeño cablecito se puede crear el puente necesario entre estos pines para quitarlo cuando convenga.

Esp-01 sobre un adaptador conectado a un usb TTL con un puenteo entre GPO0 y tierra, listo para programar.

Como se ve en la imagen, he empleado un programador TTL conectado a una placa «ESP-01 Adapter» que permite alimentarlo a 3.3V

Las conexiones son las típicas en este caso.

  • TX a RX
  • RX a TX
  • Y la alimentación de USB de 5V será regulada por la placa adaptadora.

Luego en el IDE de Arduino elegir una placa «Generic ESP 8266«. Y si todo sale bien visualizaremos algo parecido a esto.

Una vez enviado el programa, recuerda retirar el puente de GPIO0 a GND y reiniciar el módulo para que funcione.

Aquí te presento los pines de conexión del ESP-01.

Un punto a tener en cuenta sobre todo a la hora de realizar la PCB es que para que el ESP-01 entre en modo operacional y encienda, debemos poner en HIGH el pin CH_PD (6), ya que en la PCB final no usaremos el adaptador que hemos usado para programar que trae incorporada esta conexión a HIGH (ver esquema de conexiones).

Lo primero que debemos hacer con los ESP-01 que irán en los pulsadores es obtener sus direcciones MAC, pues deben ser reconocidos por la centralita que será comandada por un ESP8266 y a la hora de programar esta última, deberemos introducir dichas direcciones. Este punto lo trataremos más adelante en el apartado de programación de la centralita.

Para ello es necesario programar los ESP-01 con el siguiente programa. 

Código para encontrar la MAC de los ESP-01

Obtendremos por el serial (115200) las direcciones MAC de tanto los ESP-01 como los de la ESP8266.

Este programa de obtención de las MAC debe usarse también para averiguar la dirección MAC del ESP8266 que irá en la centralita, pues a la hora de programar los pulsadores la necesitaremos.

En definitiva te recomiendo que apuntes todas las MAC en algún lugar para emplearlas más tarde en las propias programaciones.

Pizarrita que no viene mal en estos momentos

Esquema eléctrico de la centralita

Simpleza máxima es la que emplearemos. 

Un pulsador para resetear los módulos de pulsación por WIFI conectado al pin D2 (GPOI4 en el ESP8266) en PullUp, y cuatro tiras de leds WS2812b de 8 leds cada una con paralelo en el pin D7 (GPIO13) mediante una resistencia de 470omh.

Estos leds indicarán el color del módulo pulsador ganador. Hay que tener en cuenta que el brillo de los 32 leds no puede ser demasiado intenso pues la batería no suministra demasiada corriente y podemos provocar el reinicio del sistema por saturación, así que mejor no superar la intensidad que provoca la interrupción y podemos apagar algunos leds, por lo menos en colores que suponen mezclas como por ejemplo del amarillo o el blanco. (Se puede jugar con este valor en la programación).

Recreación de la centralita de resultados.

Recordar que el ESP2866 trae su propio regulador de tensión a 3.3V así que no añadiremos más electrónica en la PCB. Sin embargo los leds WS2812b deben conectarse a una tensión de 5V por eso emplearemos un Step UP.

Código de los pulsadores emisores

Recuerda que hay que cambiar en la cabecera del programa la línea de broadcastAddress[] (en la línea 8) que debe ser la del ESP8266 con el que queremos mantener la comunicación.

Expresaremos los 6 bytes de las MAC en hexadecimal, de la forma «0x00» con cada uno de sus 6 valores.

Además, debemos asignar en la variable buttonNumber (en la línea 16) el número del botón que estemos programando (del 1 al 5 en este caso, dependiendo del color).

Repetir el mismo código cambiando las variables mencionadas en cada uno de los botones que usarás.

Código de la Centralita

La programación de la placa ESP8266 es muy distinta a la de una placa ESP32, así que cuidado con las librerías empleadas y sobre todo con la librería ESP_now.h y la Espnow.h que suelen confundirse (por el guion).

Piezas de montaje para los pulsadores

Interior y colocación de la PCB en un módulo pulsador.
Interior y colocación de la PCB en la unidad centralita.