Objetivo
Proyecto Arduino que abre puertas con el servomotor o permite el acceso a ciertas funciones con un código de seguridad mediante un mando a distancia con infrarrojo (IR).
Material Utilizado
Paso 1 – Montaje
Tienes que conectar los pines de la placa Imagina TdR STEAM con la placa amarilla Keyestudio UNO (está basada en el Arduin UNO). Estas dos placa ya vienen en el kit.
Después conecta el servomotor a la entrada A3 (analógica número 3).
Si te has fijado 👀, el servomotor tiene 3 cables:
- ⚫️ El cable oscuro debe que ir conectado a la clavija GND (está señalado en la placa Imagina TdR STEAM).
- 🔴 El cable rojo debe ir conectado a la clavija VCC.
- 🟠 Y el cable naranja se pone a la tercera clavija que queda, la A3.
Paso 2 – Programación
El programa de ArduinoBlocks completo lo puedes encontrar aquí.
Crear un nuevo proyecto ArduinoBlocks
Es el momento de crea un nuevo proyecto en ArduinoBlocks.
Selecciona el tipo de placa que sea la «Imagina TDR STEAM».
Introduce el nombre para este proyecto, por ejemplo, «Código de seguridad mediante mando a distancia».
Configuración inicial: baudios consola, iniciar variables e iniciar servomotor
Primero debes configurar la consola (que más tarde usarás) a 9600 baudios.
Inicializamos las variables siguientes:
- posición del dígito: si el código de seguridad que pongas es el «16» significa que está formado por dos dígitos: el «1» y el «6». Si la variable posición del dígito es el número «2» significa que nos referimos al segundo dígito de 16, el 6. Esta variable te permitirá indicar la posición que quieres descifrar con el mando a distancia.
- primer dígito es correcto y segundo dígito es correcto: te sirven para saber si el número que has marcado con el mando es el correcto. El primer dígito es el que se encuentra en la posición 1 (como ya he explicado antes), el segundo dígito es el que se encuentra en la posición 2. Estas dos variables podrán tener dos valores: «On» o «Off» (es formato booleano en vez de formato texto o número). Cuando quieras decir que el dígito es correcto pondrás «On», de lo contrario, «Off». Inicialmente el programa no puede marcar los dígitos como correctos, porque querría decir que se ha introducido el código de seguridad correctamente, por tanto debes iniciar las dos variables «Off» (incorrecto).
Finalmente, mueves el servomotor a la posición de ángulo 0º.
Tecla pulsada del mando y escribir en consola
El LED RGB de la placa Imagina TdR STEAM siempre marcará rojo, solo será verde para avisarte que el código marcado coincide con el código de seguridad (ya lo verás más adelante).
Para que el bloque «crear texto con» tenga tantas crear una frase de texto compuesta por múltiples partes, por ejemplo: «Parte 1 Part 2 Parte 3». Pasos a seguir:
1. Clicar el icono redondo azul
2. Y arrastrar un bloque «varNum» al bloque «unir» (donde la flecha roja está indicando en la imagen de abajo). Este bloque añade textos nuevos.
Debes guardar el valor de la tecla pulsada en el mando a la variable «tecla mando». ¿Cómo la placa Imagina TdR STEAM sabe qué tecla se pulsa en el mando? Pues el mando envía los datos vía infrarrojos y el receptor infrarrojo (IR) de la placa recibe los datos.
Fíjate que el bloque «Receptor IR (Texto HEX)» recibe datos en hexadecimales. Aquí tienes una tabla que te enseña qué significa cada texto hexadecimal en el número que todos conocemos (también dicho número decimal).
¡Al final serás un experto en matemáticas! 🤓
Es muy importante guardar el código enviado por el mando en una variable, ya que si lo hacemos así:
Porque así el programa lee dos veces el código enviado por el mando. Y como explico más adelante, el mando de vez en cuando envía algún código distinto 🤪.
Es importante saber qué valores tienen las variables y cómo cambian, por esto escribirás sus valores en la consola con el bloque «Enviar» y «crear texto con».
El resultado en la consola se verá así:
Reto
Prueba de marcar con el mando a distancia las teclas «*», «1» y «6». Verás que la consola no mostrará «*», «1» o «6» sino que será en forma de letras y números, este formato se llama código hexadecimal.
Cambiar posición del dígito
El bloque condicional «Si … hacer …» detecta cuando se pulsa la tecla «*» (asterisco) en el mando. Esta tecla avisará al programa que tú quieres cambiar la posición del dígito.
Fíjate que estás que comparando la variable «tecla mando» con el texto hexadecimal mediante un bloque texto.
En mi caso, la tecla asterisco «*» en el mando tiene asignado el código hexadecimal «00FF42BD». Puede ser que tu mando envíe otro texto hexadecimal, para saberlo abre haz una prueba 👨💻:
- Abre la aplicación Arduino Connector para permitir conectar el PC con la placa Keyestudio UNO y la placa Imagina TdR STEAM.
- Sube el programa con el cable USB del PC a la placa Keyestudio UNO
- Clica el botón «Consola» en ArduinoBlocks
- Selecciona los baudios a 9600
- Clica el botón «Conectar»
- Verás que el programa va escribiendo en la consola líneas de texto. Pulsa la tecla asterisco «*» del mando a distancia (recuerda que el mando esté apuntando al receptor infrarrojo o IR de la placa Imagina TdR STEAM).
- Mira qué código hexadecimal aparece en la consola.
Seguramente verás que se muestran los códigos hexadecimales «000000FF» o «FFFFFFF». Esto sucede cuando se mantiene presionada cualquier tecla del mando durante un tiempo.
La consola se escribirá cosas como la siguiente imagen.
Seguramente se escribirán muchas líneas muy rápidamente ⏩ en la consola. Para ralentizar ⏸️ el programa, puedes poner un bloque «Esperar 500 milisegundos» al final del programa.
Lo puedes dejar ya puesto para el resto de pasos.
Como he dicho, en mi caso la tecla asterisco tiene el código hexadecimal «00FF42BD», recuerda cambiar el código en tu programa con el hexadecimal de tu mando.
Descifrar el código de seguridad
El código de seguridad que yo he decidido poner es el «16» y contiene dos dígitos: el 1 y el 6.
Al final del proyecto te planteo un reto que es cambiar el código de seguridad por el tuyo.
Estos dos nuevos bloques condicionales sirven para decidir la posición del dígito queremos descifrar.
El condicional de arriba dice que si estás en la posición del dígito número 1 y también has presionado la tecla del mando 1 (que en mi caso es el código hexadecimal «00FF6897» en formato texto) pues se avisa al programa que el primer dígito es correcto o «On». Y se hace lo mismo con la posición 2.
Los códigos hexadecimales para la tecla 1 y 6 pueden ser distintos para ti, cámbialos en tu programa según los que tú tengas. Recuerda que tienes la consola para descubrirlo.
¡Ya estás llegando al final del proyecto! 💪
El código es correcto: permitir acceso y abrir puerta con el servomotor
Para terminar, nuestro sistema de seguridad solo le falta permitir el acceso al usuario cuando este introduzca el código correcto y haga mover el servomotor.
Para esto pones el bloque condicional que mira si el primer dígito es correcto y el segundo dígito es correcto. Si son correctos, quiere decir que su valor es «On» (recuerda que antes te he hablado sobre valores booleanos).
Si el programa detecta que los dígitos son correctos, avisa el usuario con el LED RGB verde, avisa por la consola que el código es correcto y mueve el servomotor (que este podría mover una puerta).
Finalmente tienes que reiniciar las variables para que el sistema vuelva ha empezar de nuevo.
Si aún tienes algún error, es normal cuando se prueban proyectos nuevos. Revisa cada paso y seguro que encontrarás la solución.
¡Ya tienes tu sistema de seguridad 🔐 listo, eres un crack!
Retos
Te propongo unos retos donde tienes que proponer tu la solución
Retos iniciales:
- Cambiar el código de seguridad «16» por otro tuyo.
- Botón del mando que reinicie el programa (por ejemplo reiniciar las variables «posición del dígito» y otras).
Retos avanzados:
- Cambiar el código de seguridad de dos dígitos por uno de 4 dígitos por otro tuyo.
- Poner una pantalla LCD (incluida en el kit TdR STEAM) para que informe del estado del programa: código incorrecto o correcto y número que la persona introduce con el mando.