Caja fuerte activada con patrones de colores
Bienvenidos, somos Carlos Gálvez, Laura Lora y Raúl Retana. Este proyecto consiste en una caja fuerte que consta de tres sensores de color, un buzzer, un botón y dos servomotres. Cada sensor tiene asignado una de las tres cartulinas de colores, que son roja, azul y verde. Al poner estas cartulinas delante de su sensor correspondiente, se emite un sonido con el buzzer y se mueven los servomotores para abrir la caja. Además, hay un botón que permite cambiar el color que lee cada sensor, así el usuario, puede establecer una nueva combinación de colores como patrón de apertura.
I. Parte software
Para la parte software contamos con distintos subprogramas y una clase para todos los sensores de colores. Dentro de ella, creamos tres instancias, una para cada sensor.
Una vez declaradas e inicializadas las variables, establecemos en los pines S0 y S1 de los sensores, los valores HIGH y LOW respectivamente. Estos indican el escalado de la señal, que permiten aumentar o disminuir la precisión del sensor de color. Hemos escogido estos valores que suponen un escalado del 20% de la señal, ya que son los recomendados para el uso de este sensor con arduino, mientras no se necesiten captar colores muy específicos.
El subprograma con la funcionalidad principal del proyecto es el de abrir caja fuerte, donde los tres sensores, mediante un bucle “while”, se encuentran captando nueva información hasta que obtengan el valor que le hemos asignado a cada sensor. Es decir, el ColorReader1, ColorReader2 y ColorReader3, tienen asignados los colores rojo, azul y verde, respectivamente, hasta que no obtengan esos datos, continuarán dentro del bucle.
Una vez se encuentran ante los valores correctos, salen del bucle y se activa el buzzer que emitirá un sonido para avisar de la apertura de la caja fuerte. A continuación, los
4 servomotores pasan de estar de la posición 0 (caja cerrada) a 90 (caja abierta). Una vez hemos hecho esto, volvemos a otro bucle donde se comprueba constantemente si los sensores de color siguen recibiendo las mismas señales. De no ser así, la caja fuerte debe cerrarse, volviéndose a activar los servomotores pasando de nuevo a la posición 0.
Por otro lado, mientras la caja esté abierta, hemos añadido otra funcionalidad y es la de cambiar la combinación de colores. Existe un botón que al presionarlo se accede a la función de cambiar la contraseña, esta permitirá al usuario modificar el color que lee cada sensor. Una vez haya colocado la nueva cartulina en frente del sensor correspondiente, se debe presionar de nuevo el botón y sustituirá los colores antiguos por los nuevos.
La última función es la que utilizan los sensores para captar los colores correspondientes. Estos sensores tienen cuatro posiciones que dependen de los valores que le lleguen a S2 o S3, HIGH o LOW. Primero se escribe LOW en S2 y S3, para poder captar el color rojo, utilizándose pulseInt que permite captar la duración de un pulso de LOW a HIGH. Después, se pone el pin S3 a HIGH lo que permite que capte el azul y se vuelve a hacer una función pulseInt. Por último, el S2 a HIGH, permite leer el verde. Al obtener los valores, se comparan con los estándares que hemos delimitado y se comprueba si es el color que estamos buscando, si lo es, se devuelve verdadero y si no se devuelve falso. Hay un cuarto estado que no hemos utilizado, cuando el S2 está a HIGH y el S3 está a LOW que permite detectar luz blanca.
Más aún, las dos librerías que hemos utilizado en el código son GFButton.h y Servo.h. Para los botones de arduino si utilizamos solo HIGH y LOW, puede ocurrir el fenómeno conocido como “chattering”, donde el botón salta de apagado a encendido varias veces antes de obtener una posición efectiva, pudiendo así afectar a los resultados de nuestro proyecto. Por lo tanto, la primera librería añade funcionalidades para poder estabilizar los botones y evitar este fallo. Sin embargo, la segunda es una librería estándar de arduino imprescindible para el uso de los servomotores.
Adjuntamos un vídeo de la explicación detallada del código utilizado.
II. Parte Hardware
La lista completa de componentes electrónicos usados son los siguientes:
- Cables con conectores macho/hembra para conectar los distintos componentes
- Un botón dispuesto mediante una configuración con resistencia pull-down
- Arduino mega 2560
- Buzzer
- Tres sensores de color TCS320
- Dos servomotores MG90S
- Una placa base
Para comenzar, haremos una breve explicación de las entradas o entradas y salidas de los servomotores y los sensores de colores.
El servomotores MG90S constan de engranajes y acoplamientos metálicos. Se utilizan cuando realmente necesitamos ejercer fuerza, pudiendo además ceder las partes de plástico por si las necesitamos redondas.
Este componente cuenta con tres entradas, el cable amarillo debe ir conectado a un pin digital, el rojo a 5V y el marrón oscuro a tierra (GND).
Por otra parte, los sensores TCS320 permiten reconocer el color del objeto que tienen situado en frente de ellos. Este incorpora cuatro LEDs de luz blanca y un protector de plástico, así intenta minimizar los efectos de la iluminación ambiente en la medición.
Este elemento tiene múltiples entradas y salidas, adjuntamos un esquema sobre donde deberían ir conectadas cada una para facilitar la comprensión. Remarcar que los pines digitales de la placa arduino, pueden variar entre el 0-13, no tienen por que ser los escogidos como muestra.
Para construir físicamente el proyecto hemos utilizado una caja de cartón, dónde hemos colocado los servomotores por dentro, así como unos pliegues que hemos hecho para que hiciesen de tope y la caja no se pudiese abrir con los servomotores en la posición cero. Hemos escogido estos servomotores dado que poseen engranajes metálicos y más fuerza de torque (1,8 kg.cm) que otros servos más baratos, que creímos que podían no tener la suficiente fuerza para abrir la caja.
En la parte superior de la caja encontramos los tres sensores de luz y unas ranuras donde podemos colocar las tres tarjetas, roja, azul y verde. Tanto estos sensores como los servomotores, dependiendo de lo que necesiten sus entradas, van conectados a una placa base y a un Arduino Mega 2560, situados en la parte trasera de la caja.
En la propia placa base encontramos el botón que nos permite cambiar la combinación de colores correcta, además del buzzer que sonará cuando se vaya a abrir o cerrar la caja.
Por último, añadimos un vídeo explicativo de la parte hardware del proyecto.