Averigua la combinación. Caja fuerte con Arduino y s2aio.

Llevaba este proyecto en la cabeza desde hacía mucho tiempo. Tenía ganas de homenajear al cine clásico de robos de cajas fuertes. Esas pelis en las que un antiguo amigo de lo ajeno en proceso de reinserción, se ve obligado a desempolvar el estetoscopio y afinar oído. En un segundo plano queda el motivo, por secuestro de un familiar o ser querido, como servicio secreto a su país con incidente internacional de por medio o por chantaje de su atigua banda… me encantan todas las versiones. Con este pequeño montaje nos hemos divertido mucho y esperamos que os resulte educativo y entretenido. Vamos a ello.

Nuestra caja fuerte es una antigua cajita de jabones a la que hemos añadido una puerta recortada de un retajo sobrante de alguna manualidad. Aquí podéis ver como luce:

frontal

Solo podéis intuir que como rueda/dial de combinación hemos instalado un potenciómetro y como pulsador para abrir la caja hemos puesto un práctico panel táctil capacitivo. Si abrimos la caja y echamos un vistazo a la parte de atrás de la puerta, se desvela el misterio:

detalle-interior

Dos mini servos trabajan como pestillos para controlar las operaciones de apertura y cierre de la caja. Veréis que todos los cables se dirijen a un rincón, por donde pasan a la pared trasera para conectarse a una placa Arduino:

trasera

Allí encontraremos ademaś un LED RGB que nos ayudará a simular una sirena de policía y un zumbador que como ya os explicaremos será el que haga las veces de estetoscopio.

En esta otra imágen, aunque sean del mismo color, se puede apreciar el bloque de foam negro que hemos pegado en el interior del lateral derecho de la caja que sirve de apoyo a los brazos de los servos para cerrarla:

detalle-cierre

Planteamiento y funcionamiento.

El programa que hemos creado en Scratch se inventa dos números que componen la combinación de la caja fuerte. Cada número desbloquea uno de los pestillos/servos. Debemos averiguar cada uno de esos números sin más ayuda que un pip-pip que va a sonar por el zumbador. Hay que estar muy concentrado puesto que esos pitidos serán tanto más agudos cuanto más cerca estemos del número correctode la combinación. Cuando creamos que estamos escuchando el sonido más agudo, solo tenemos que poner nuestra huella sobre el panel capacitivo para comprobarlo. Si acertamos, uno de los pestillos se abrirá y deberemos enfrentarnos con el segundo. Si también lo logramos desbloquear, la caja fuerte estará abierta y podremos quedarnos con el botín. ¿Quéréis saber lo que contiene?. Un poquito más adelante os lo mostramos en el video. Solo nos queda por tratar un pequeño detalle. ¿Qué ocurre si tratamos de abrir la caja fuerte con una combinación que no es la correcta?. Pues pobres de vosotros, porque los pestillos se cerrarán a cal y canto y os detendrá la policía.

3pin_dupont_200Esquema.

Sobre el diagrama encontraréis numerados los puertos utilizados por los dispositivos. Ya sabéis que utilizamos placas Arduino con hileras de pines extra para simplificar conexiones junto con sensores y actuadores compatibles. Con estos cables tricolores podamos olvidarnos (por el momento) de las resistencias a la vez que minimizamos los posibles cortocircuitos y sobrecargas. Si os fijáis, el cable rojo (tensión de 5 voltios) está situado en el centro del conector, de modo que aunque lo orientemos mal, lo más probable es que nuestro montaje simplemente no funcione puesto que quedarán conectados el negro (masa) con el amarillo (señal o datos).

Aunque estamos pergeñando un pequeño juego que nos sirva para explicar el funcionamiento de los LEDs RGB, hemos preferido adelantar a este montaje su utilización. Baste decir que en realidad son 3 LEDs en el mismo encapsulado. Uno rojo (Red), otro verde (Green) y otro azul (Blue). Cada sub-LED se alimenta de la señal de un puerto por lo que veréis que utilizamos en este montaje los digitales 2-3-4. Como conexión a masa (o negativo) comparten un cable (negro) que hemos conectado al pin de masa del puerto digital 2, aunque nos serviría cualquiera de ellos.

Demostración.

Sin más dilación os mostramos el video en el que Martina tratará de conseguir el botín que protege nuestra caja fuerte:

Debemos pediros disculpas porque el micrófono de la cámara no capta correctamente todas las frecuencias que genera el zumbador y distorsiona el sonido en algunas de ellas. También habréis podido comprobar lo que ocurre cuando fallamos la combinación. Suena una sirena y por detrás de la caja fuerte se aprecia como el LED RGB parpadea en rojo y azul.

Programación.

Como es habitual, el programa ha sido confeccionado desde Scratch 2.0, utilizando como puente de enlace con Arduino, el módulo s2aio de nuestro muy estimado Alan Yorinks. Si queréis conocer más sobre s2aio, su funcionamiento, posibilidades y a su autor, os ofrecemos aquí una estupenda lectura. Mientras tanto, vayamos con la explicación. El objeto fundamental del programa es la rueda de la combinación. Para ella hemos programado los siguientes módulos:

scratch-inicioInicio – Aunque la mayoría de nuestros trabajos comienzan con la bandera verde, este es un caso especial por la preparación que requiere asegurarnos de la posción de la puerta de la caja fuerte, de modo que la ejecución comenzará cuando estemos seguros de que la puerta está cerrada y pulsemos la tecla espacio. Después de colocar (si hubiera sido movido por error) la rueda en su posición adecuada, fijamos la variable Pestillo a 1 para indicar que actuaremos sobre él en primer lugar. También iniciamos la variable Boton a False. A continuación definimos y activamos los puertos de la placa Arduino que vamos a necesitar y el tipo de dispositivo que irá conectado. Se mueven los servos a la posición de cerrado. Tened en cuenta que los servos giran ambos hacia el centro de la puerta para evitar chocar tanto con el suelo como con el techo, de ahí que los grados que se indican para cada uno no coincidan. Los siguientes mensajes se envían a unos objetos pestillos que hemos creado para dar la sensación de que la puerta se ha cerrado. Podéis ver sus pequeños módulos en el programa que os ofreceremos al final del artículo. Son muy intuitivos, de modo que no nos detendremos en ellos. A continuación se envía el mensaje listo para confirmar que los parámetros iniciales ya están fijados y ejecutaremos un bucle permanente para leer el estado la la plaquita táctil, fijando la variable Boton a True en caso de ser pulsada (la lectura analógica sube aproximadamente a 650 cuando lo hacemos).

scratch-inventar-y-leer

Elección de combinación y lectura de potenciómetro – Con la llamada a este módulo el programa elige un valor al azar de entre los posibles en una lectura analógica en Arduino (0-1023) y lo guarda en la variable Lock (la combinación que tenemos que acertar). Se asegura de que la variable Boton sigue en False y repite un bucle hasta que el panel táctil esté pulsado. El bucle en cuestión lee la posición del potenciómetro y la guarda en la variable Pot. También gira la rueda de combinación adecuándose a la posición del potenciómetro para simular el funcionamiento de una caja fuerte real.

Generador de tonos – También al recibir el mensaje de listo se activa este módulo. Con él se controlará el tipo de pitido que escucharemos, nuestra única pista para saber si estamos cerca de la combinación correcta. El bucle principal se repetirá hasta que se pulse el panel táctil y mientras, calcula cuántos bloques de 25 valores (variable ModulosDe25) hay entre la posición del potenciómetro y el valor que el programa ha elegido como combinación. Como el valor correcto se corresponde con un pitido de 1500 Hertzios, descontamos 75 Hz por cada bloque de 25 valores que se aleje nuestro potenciómetro de la combinación. Así pues, cuanto más lejos estemos de ese valor correcto, más grave será el tono generado por el zumbador. Si hay 19 bloques de 25 ó más, el tono a generar será un fijo de 100 Hz. Despues de todas las comprobaciones, generamos 2 pitidos (con la Frecuencia adecuada) con 2 décimas de segundo entre ellos, introduciendo un retardo de un segundo entre cada pareja de pip-pip.scratch-generador-de-tonos

 

Comprobando combinación – Este módulo es la clave par comprobar si nuestra pericia ha dado resultado.scratch-combrobando-bingo La ejecución del módulo comienza precisamente cuando se detecta que el panel táctil ha sido pulsado. Acto seguido se comprueba si la diferencia entre la posición del potenciómetro y el número que el programa había elegido como combinación es o no mayor de 25 en cualquiera de las 2 direcciones. Si estamos en lo cierto, se comprueba qué pestillo estamos tratando de abrir. Si es el primero lo abre, suena un sonido y pide al objeto Pestillo que actúe para acompañar, fija la variable Pestillo a 2, espera unos segundos y vuelve a lanzar el mensaje Listo para que nos trabajemos el cierre que queda. En caso de que sea el segundo pestillo, hace lo propio para abrirlo y termina el programa. Hemos sido capaces de abrir la caja y acceder al botín. Solo nos queda comprobar qué ocurre en caso de que el valor seleccionado desde el potenciómetro no se correspondiese con la combinación. En esa tesitura se mandan las órdenes de cierre de ambos pestillos, suena la sirena y el LED RGB simula las luces roja y azul de la policía, poniendo fin a nuestra aventura.

En el programa encontraréis algún que otro módulo de servicio que nos ha servido para las pruebas de apertura y cierre de servos. No son estrictamente necesarios para el desarrollo del programa, pero conviene tenerlos a mano para poder manipular la puerta sin tener que echar mano del potenciómetro. El programa completo lo tenéis disponible en este enlace.

Ya sabéis que estamos a vuestra disposición para cualquier duda o consulta que nos queráis hacer llegar. Mientras tanto, disfruten ustedes del día de Reyes y les deseamos un 2017 muy fecundo para la experimentación y la educación. Hasta la próxima.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.