Bomba para Gamificación (Scape Room) con Arduino Nano

¿Qué es lo que vamos a hacer?

Estaba dispuesto a realizar una bomba para utilizarla en clase a modo de juego Scape Room, dando otra perspectiva a los contenidos a través de gamificación . Me decidí a realizar un modelo super chulo con un TFT táctil, utilizando un maletín y un montón de luces led, pero se me ocurrió hacer una versión más austera con material de sobra que tenía por aquí antes de meterme en ese otro modelo.

En este documento vamos a ver como desarrollar una maqueta de bomba con cuenta atrás, realizada con Arduino, un LCD y un teclado matricial. Adicionalmente utilizaremos un led bicolor y un zumbador para mejorar el proyecto y para alimentarlo utilizaremos una batería de ion-litio 18650, con un cargador y un step-up que nos proporcionará los 5 voltios de alimentación, cortados por un interruptor (en mi caso utilice un mini-conmutador que tenía por aquí).

Para el atrezo utilizaré cartón, para imitar la carga de C4, y realizaré una caja como detonador donde irá toda la electrónica reutilizando cartón, el contrachapado de una caja de fresas y un par de tornillos con sus tuercas M4. Esto habrá que pegarlo con silicona termofusible, aunque también utilizaré cola de carpintero. Además, aplicaré pasta de relleno para madera si hay que tapar imperfeccione y un poco de pintura para el acabado.

El material electrónico necesario

Cantidad Nombre Foto
1 Arduino Nano Arduino Nano
1 LCD 16×2 I2C LCD 16x2 I2C
1

BUZZER

1

TECLADO MATRICIAL DE MEMBRANA

1

LED BICOLOR

1

BATERÍA ION-LITIO 18650

1

PORTA BATERÍAS

1

CARGADOR BATERÍA TP4056

1

STEP-UP 5V MT3608

1

INTERRUPTOR/CONMUTADOR

Como material adicional será necesario un poco de estaño para soldar, cables y en mi caso utilizaré una pcb perforada para soldar el buzzer y el led con su resistencia limitadora (solo utilizo una resistencia en el común porque solo enciendo un led a la vez).

Circuito electrónico

La pantalla LCD se conecta por I2C, por lo que solo hace falta conectar 4 cables (Vcc, GND, SDA y SCL). El teclado de membrana se conecta en pines digitales consecutivos, del 3 al 9. Se debe tener en cuenta que en un Arduino Nano los pines quedan consecutivos por un lado de la placa. El buzzer lo conectaré en el pin digital 2 y los diodos en el 10 y 11, quedando el esquema de la siguiente forma. El cargador queda conectado al step-up por medio del conmutador y la salida del step-up, irá conectada a Vcc del Arduino, mientras que las masas se conectan entre sí como indica la imagen.

Recuerdo que en el diodo led bicolor se ha puesto una sola resistencia limitadora porque solo estará encendido un led a la vez, ya que si quisiera encender los dos de forma simultánea tendría que disponer de una resistencia limitadora para cada uno de ellos.

Con respecto al circuito de carga hay que tener en cuenta dos cuestiones:

  1. Si conectamos el Arduino por USB para programarlo, el conmutador de la batería debe estar abierto (al step-up no debe llegarle corriente).
  2. Es preferible realizar la carga de la batería sin que el circuito esté funcionando. Carga completamente la batería y luego enciende el Arduino sin que esté conectado la entrada USB al cargador.

Programación del Arduino

El programa debe realizar las siguientes subrutinas:

  1. Configurar el LCD.
  2. Establecer la variable del teclado.
  3. Establecer los pines de los leds y del buzzer como salida.
  4. Solicitar el tiempo en el que comenzará la cuenta atrás. Pulsando # se guardará el dato y saldrá de la subrutina, mientras que con * se borrará y volverá a pedir el tiempo.
  5. Solicitar la clave de desactivación de 4 dígitos. Pulsando # se guardará el dato y saldrá de la subrutina, mientras que con * se borrará y seguirá pidiéndola. Solo será visible el último dígito, el resto estará representado por *.
  6. Cuenta atrás donde se evaluará:
    • Si se introducen números comprobando si la clave es correcta al introducir el 4ª dígito. Se finaliza el programa con un mensaje de desactivación de bomba, si la clave es correcta y si es incorrecta se borra el dato y se espera la entrada de la nueva clave (se imprime un mensaje indicando que la clave es incorrecta).
    • Si se ha llegado a cero en la cuenta atrás. Se finaliza el programa con un mensaje de detonación de la bomba.

Por lo que el diagrama de flujo sería algo parecido a este:

Para programar el uso de los dispositivos utilizaré dos librerías:

Keypad para el uso simplificado del teclado en matriz de membrana, disponible en https://github.com/Chris–A/Keypad

LiquidCrystal_I2C para el control del display LCD 16×2 I2C. Se puede instalar por medio del Gestor de librerías del IDE de Arduino o descargarla desde https://github.com/johnrickman/LiquidCrystal_I2C

Otra característica del programa es que usaré al comienzo del programa una variable que estable el momento en el que el contador llega a cero a partir del momento en el que comienza la cuenta atrás, por lo que realmente no hay contador, sino que se compara el momento actual, dado por la función millis(), con el momento en el cual detonará la bomba.

Ve como funciona el proyecto