Publicado por

Proyecto de Interacción Tangible (desarrollo) CERRADURA MULTIPROPÓSITO

Proyecto de Interacción Tangible (desarrollo) CERRADURA MULTIPROPÓSITO
Publicado por

Proyecto de Interacción Tangible (desarrollo) CERRADURA MULTIPROPÓSITO

PROTOTIPADO Definición Para el diseño del prototipo he adaptado una antigua caja de diskettes de 3.5”, dentro de la cual he instalado…
PROTOTIPADO Definición Para el diseño del prototipo he adaptado una antigua caja de diskettes de 3.5”, dentro de la…

PROTOTIPADO

Definición

Para el diseño del prototipo he adaptado una antigua caja de diskettes de 3.5”, dentro de la cual he instalado el Arduino y una placa de prototipado a la que he conectado el piezoeléctrico y un led RGB, que me servirá como indicador del modo de operación. Un sensor capacitivo realizará la función de botón de selección/activación según el modo elegido.

En el exterior he instalado otra placa de prototipado en la que he situado cuatro bombillas led de colores que se encienden al pulsar el botón correspondiente, cada uno de las cuales emite además un sonido característico a través del piezo instalado en el interior. Un display puede servir como menú de visualización de los ajustes y/o configuración.

En la placa de prototipado exterior he instalado una placa ESP32-WROOM-32D con WiFi / Bluetooth para una posible interacción remota. En esta placa está programada la interacción del display y del sensor de proximidad HC-SR04, y está conectada mediante dos pines con el Arduino para indicar a éste el modo de operación y la posible orden de apertura de la caja.

Además del sensor capacitivo conectado al Arduino, he instalado una llave metálica conectada a un pin TOUCH de la placa ESP32, de manera que al tocar la llave también sirve como botón de acción.

Mediante un potenciómetro se selecciona el modo de operación, girando ángulos de 45º para cada selección. En el display se indica el modo activo, que se transmite al Arduino para unificar las interacciones. A continuación, haré una breve explicación del funcionamiento de cada modo:

  • Mode 0: Modo Sonido ON / OFF

Con el modo seleccionado, al tocar la llave metálica conectada al pin TOUCH se activa / desactiva el sonido para todos los modos del prototipo.

  • Mode 1: Modo apertura libre (botón)

Tocando el pin TOUCH se abre o se cierra la cerradura.

  • Mode 2: Modo sensor de Proximidad

Cuando el sensor detecta a la persona más cerca de 20cm, da la orden de apertura de la cerradura. Cuando se aleja a más de 40cm, espera 5 segundos para dar la orden de cierre y la luz amarilla parpadea poco antes de cerrarse.

  • Mode 3: Modo Juego (SIMON-OPEN)

El juego consiste en reproducir los sonidos/luces aleatorias que produce el Arduino en ese mismo orden, de manera que cuando se logra reproducir la melodía correcta (de 6 tonos en este caso, por hacerlo fácil), la cerradura abre. Tocando el sensor capacitivo se repite la secuencia actual recién generada. Si la caja está desbloqueada, el sensor cierra la cerradura.

  • Mode 4: REMOTE WiFi LOCKER

En este modo se inicia un Servidor Web en el puerto 80 al que nos conectamos a través de la placa ESP32 mediante la red Wifi local, desde cualquier navegador. La página web creada para interactuar con el prototipo tan solo consta de 3 botones: Abrir, Cerrar y Salir.

  • Mode 5: MULTIPURPOSE LOCKER by Vinz

Este modo lo he dejado en blanco, para poder utilizarlo bajo demanda, en función de las necesidades particulares. Aquí se podría instalar cualquiera de las ideas planteadas en el brainstorming de la PEC03, como una cámara de video, lector de huellas, de tarjetas, detector de caras, o el motor de apertura automática.

Mapa conceptual

Enlace al video explicativo de la propuesta

En el siguiente enlace de YouTube está disponible el video con una pequeña explicación de la propuesta planteada y el funcionamiento del prototipo:

PROTOTIPO

Para poder visualizar una parte básica del funcionamiento, he añadido un potenciómetro al prototipo realizado en la PEC anterior, cuya entrada analógica decidirá el modo de operación. He dejado en la parte exterior solo las entradas sobre las que actúa el usuario y he mejorado el funcionamiento operativo del juego que abre la cerradura.

En el prototipo de la versión final, he conectado el potenciómetro a la nueva placa ESP32. Para lograr la interacción entre esta placa y la Arduino Uno utilizo el pin 25 para enviar los datos analógicos del potenciómetro al pin analógico A1 del Arduino, de manera que tengo el mismo modo de operación en ambas placas. Las órdenes de apertura de la cerradura las envío como una señal HIGH / LOW desde el pin 2 del ESP32 al A2 del Arduino.

He conectado también al ESP32 el sensor de proximidad HC-SR04 y la pantalla display 16×2.

Las funciones del servo para apertura de la puerta y el modo juego siguen implementados íntegramente en la placa Arduino Uno.

Los componentes utilizados son los siguientes:

1x Arduino UNO
1x ESP32-WROOM-32D DevKitC V4
1x Piezoeléctrico
7x Resistencias 220 Ohms
2x Resistencias 470 Ohms
2x Resistencias 10 kOhms
1x Resistencia 1 kOhms
1x Resistencia 4,7 kOhms
4x Pulsadores
4x LED de color verde, amarillo, rojo y azul
1x LED RGB (por simplificar, finalmente dejé puesto un LED azul)
2x Potenciómetros
1x Condensador de 0.1nF
1x Servomotor
1x Sensor de proximidad HC-SR04
1x Display Liquid Crystal 16×2

Esquema y conexiones

Arduino Uno

He utilizado el pin analógico A0 del Arduino para recibir la tensión que llega de los pulsadores, que será diferente según se haya pulsado uno u otro botón debido al montaje en escalera de resistencias.

Los pines 2, 3, 4 y 5 los utilizo como salida digital para encender los LED, y el 7 servirá para enviar los datos al piezo.

El pin 6 lo utilizo en modo PWM para modificar el ángulo del brazo del servo.

Los pines 12 y 13 los utilizo para activar el sensor capacitivo.

ESP32-WROOM-32D

El potenciómetro de selección del modo de operación está conectado al pin 13 del ESP32.

El sensor de proximidad HC-SR04 está conectado a los pines 32 y 35 para el trigger y el echo, respectivamente.

Los pines de salida al display son el 21, 19, 18, 5, 17 y 16 para las conexiones rs, enable, d4, d5, d6 y d7, respectivamente.

Además, utilizo el pin TOUCH 4 para utilizarlo como botón interacción en la placa ESP32.

 

Éste es el esquema del conexionado, implementado utilizando Fritzing:

BIBLIOGRAFÍA y ENLACES

MADUELL, Eloi y VILANOVA, Santiago. Interacción tangible. Barcelona: FUOC, 2022 (PID_00287694)
Disponible en línea: https://materials.campus.uoc.edu/daisy/Materials/PID_00287694/html5/PID_00287694.html

VILANOVA, Santiago. Teclados. Barcelona: FUOC, 2022 (PID_00287691)
Disponible en línea: https://materials.campus.uoc.edu/daisy/Materials/PID_00287691/html5/PID_00287691.html

VILANOVA, Santiago. Dispositivos apuntadores. Barcelona: FUOC, 2022 (PID_00287688)
Disponible en línea: https://materials.campus.uoc.edu/daisy/Materials/PID_00287688/html5/PID_00287688.html

VILANOVA, Santiago. Análisis de Audio. Barcelona: FUOC, 2022 (PID_00287692)
Disponible en línea: https://materials.campus.uoc.edu/daisy/Materials/PID_00287692/html5/PID_00287692.html

MOR, Enric. Design Toolkit [en línea]. Barcelona: UOC. [consulta: 20 de abril de 2023]. Disponible en: http://design-toolkit.recursos.uoc.edu/es/

VILANOVA, Santiago. Dispositivos electrónicos. Barcelona: FUOC, 2022 (PID_00287689)
Disponible en línea: https://materials.campus.uoc.edu/daisy/Materials/PID_00287689/html5/PID_00287689.html

MADUELL, Eloi. Visión artificial. Barcelona: FUOC, 2022 (PID_00287695)
Disponible en línea: https://materials.campus.uoc.edu/daisy/Materials/PID_00287695/html5/PID_00287695.html

INTERACTION DESIGN FOUNDATION (2023). Literatura de código abierto y acceso abierto [en línea][consulta: 16 de abril de 2023]. Disponible en: https://www.interaction-design.org/literature

VILANOVA, Santiago. Comunicación y tratamiento de datos. Barcelona: FUOC, 2022 (PID_00287690)
Disponible en línea: https://materials.campus.uoc.edu/daisy/Materials/PID_00287690/html5/PID_00287690.html

 

ARDUINO. 01 Starter Kit: Your First Circuit. YouTube [consulta: 9 de marzo de 2023]. Disponible en: https://www.youtube.com/watch?v=r0KErKHxHf0

AFROTECHMODS (Fun with electronics). Canal YouTube [consulta: 9 de marzo de 2023]. Disponible en: https://www.youtube.com/channel/UCosnWgi3eorc1klEQ8pIgJQ

ADELL, Ferran y SERRA, Laura. Galería de proyectos de interacción tangible [en línea] Barcelona: UOC. (PID_00287693) [consulta: 9 de marzo de 2023]. Disponible en: http://interaccio-tangible.aula.uoc.edu/es/

HACKERS (An Avnet Comunity) [en línea][consulta: 9 de marzo de 2023]. Disponible en: https://www.hackster.io/

PROJECT HUB (Arduino Projects) [en línea][consulta: 9 de marzo de 2023]. Disponible en: https://projecthub.arduino.cc/

PROCESSING ELECTRONICS [en línea]. UOC. [consulta: 27 de marzo de 2023]. Disponible en: https://processing.org/tutorials/electronics

ESP32-DevKitC V4 Getting Started Guide [2023] [consulta: 8 de mayo de 2023]. Disponible en: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/hw-reference/esp32/get-started-devkitc.html

INGENIERO EN CASA. Programar ESP32 con Arduino IDE. YouTube [consulta: 8 de mayo de 2023]. Disponible en: https://www.youtube.com/watch?v=wVRcAMWvWko&list=PL2bw5I2fJF8YTESrwu2HSYjp15v_vDuFB&index=2

PROGRAMADOR NOVATO. Curso ESP32. YouTube [consulta: 8 de mayo de 2023]. Disponible en: https://www.youtube.com/watch?v=VuJkqL2Ys3Y&list=PLCTD_CpMeEKTvjzabAvLGHakg-ql6t0q6

LA BUHARDILLA DEL LOCO. Curso ESP32 desde 0 en español. YouTube [consulta: 8 de mayo de 2023]. Disponible en: https://www.youtube.com/watch?v=pdgFqPbw64g&list=PLWXJr4iWm_MXA0yQRKs62YHCTnYirJldM

SINAPTEC. ESP32 desde Cero – Tutorial 6: Servidor Web (WebServer). [2018][en línea]. UOC. [consulta: 29 de mayo de 2023]. Disponible en:
http://www.sinaptec.alomar.com.ar/2018/09/esp32-desde-cero-tutorial-6-servidor.html

 

 

SOFTWARE

 

ARDUINO IDE Versión 2.1.0 [2023] https://www.arduino.cc/

LUCID SOFTWARE Inc. Lucidchart, 2023 [software en línea]. Disponible en: https://www.lucidchart.com

FRITZING (beta) Versión 0.9.10. https://fritzing.org/

 

 

 

IMÁGENES

00_key5
vecteezy_cyber-technology-security-network-protection-background-design-vector-illustration_1330255

01_altavoz-inteligente-control-casa-tecnologia-innovadora
Imagen de rawpixel.com en Freepik https://www.freepik.es/foto-gratis/altavoz-inteligente-control-casa-tecnologia-innovadora_13463638.htm#query=cerradura&position=14&from_view=search&track=sph

02_ojo-verde-mirando-ojo-cerradura
Imagen de Freepik https://www.freepik.es/foto-gratis/ojo-verde-mirando-ojo-cerradura_31499101.htm#query=cerradura&position=0&from_view=search&track=sph

03_bloqueo-teclado
Imagen de mrsiraphol en Freepik https://www.freepik.es/foto-gratis/bloqueo-teclado_1115734.htm#query=lock&position=33&from_view=search&track=sph

04_candado-acero-letrero-vacio
Imagen de d3images en Freepik https://www.freepik.es/foto-gratis/candado-acero-letrero-vacio_955373.htm#query=lock&position=29&from_view=search&track=sph

05_vecteezy_fingerprint-lock-vector-icon-on-white-background_7167694

06_pexels-ylanite-koppens-612800
Foto de Ylanite Koppens: https://www.pexels.com/es-es/foto/dos-llaves-maestras-negras-612800/

07_pexels-david-martins-589038
Foto de david martins: https://www.pexels.com/es-es/foto/persona-sosteniendo-cofre-de-madera-marron-589038/

08_concepto-seguridad-seguridad-empresarial-proteccion-corporativa
Imagen de rawpixel.com en Freepik https://www.freepik.es/foto-gratis/concepto-seguridad-seguridad-empresarial-proteccion-corporativa_3533269.htm#query=lock&position=10&from_view=search&track=sph

09_conjunto-ilustracion-3d-cursores-puntero-mano
Imagen de upklyak en Freepik https://www.freepik.es/foto-gratis/conjunto-ilustracion-3d-cursores-puntero-mano_32331555.htm#query=press%20button&position=23&from_view=search&track=ais

10_tocando-pantalla-telefono-movil_2202
Imagen de ibrandify en Freepik https://www.freepik.es/vector-gratis/tocando-pantalla-telefono-movil_953660.htm#query=open%20mobile&position=24&from_view=search&track=ais

11_pexels-cottonbro-studio-3945663
Foto de cottonbro studio: https://www.pexels.com/es-es/foto/manos-tecnologia-blanco-juego-3945663/

 

Debate0en Proyecto de Interacción Tangible (desarrollo) CERRADURA MULTIPROPÓSITO

No hay comentarios.

Publicado por

Panel de emociones y control de acceso

Panel de emociones y control de acceso
Publicado por

Panel de emociones y control de acceso

Para este proyecto se ha creado un panel interactivo que permita a los infantes dar a conocer como se sienten. Desarrollo  Para…
Para este proyecto se ha creado un panel interactivo que permita a los infantes dar a conocer como se…

Para este proyecto se ha creado un panel interactivo que permita a los infantes dar a conocer como se sienten.

Desarrollo 

Para poder desarrollar el panel de emociones, lo primero que debe hacerse es crear una base de datos y un servidor para poder almacenar el sitio web. Para ello se ha instalado Xampp, dentro del cual se encuentra el módulo apache para el servidor y la bbdd mySQL donde hay tres tablas. La web-app se comunica con el servidor, principalmente hecho con lenguaje php y html, para extraer y montar la web en función del número de alumnos y los datos de los alumnos.

Aquí en localhost encontramos tres tablas en una base de datos llamada school:

  1. Flag con dos columnas: id_flag e id_state. Esto sirve como control de que algo se ha escaneado con la cámara. Siempre tendrá un registro, 0 si no hay escaneado y id_alumno si se ha escaneado.
  2. State con 3 columnas: date, id y state. Sirve como registro del estado emocional del alumno.
  3. Student: contiene dos columnas, name e id. Posteriormente se podrían añadir otros datos importantes, como la clase, el nombre del profesor…

El sitio web está en el servidor Xampp (School web). Está hecha en php para que pueda funcionar la vinculación con la base de datos y html + css (style en las propias etiquetas html y en la librería Bootstrap 5). 

¿Cómo funciona la cámara? 

El código se encuentra programado en el IDE de Arduino. Se han tenido que instalar las librerías de ESP32. El script funciona de la siguiente manera: se conecta al WIFI (lo tiene integrado) y hace una serie de configuraciones, donde crea un servidor web en el cual se emitan las imágenes capturadas. Se muestra en 3 resoluciones diferentes, en este caso, se usa la resolución más baja, ya que el uso es simplemente como lector QR. Para que la cámara pueda identificar la grabación, se ha usado Python, ya que dispone de librerías de reconocimiento facial, de imagen, de objetos… En este caso, se ha enfocado en el reconocimiento de código de barras/QR. El código usado es copiado, excepto la vinculación con la base de datos. 

Una vez que se ha leído el QR y su correspondiente identificador, en este caso un texto con un número, este se guarda en la base de datos. 

La selección de emociones: 

Se usa el módulo ESP8266, que tiene Wifi y un procesador interno que permite gestionar características de Arduino. Cuando identifica que el flag de la base de datos se encuentra activo, flag modificado al leer el QR, se pulsa el botón con la emoción requerida, y se manda esta información a la bbdd a partir de llamadas a distintos ficheros php que realizan la función de consulta a base de datos, almacenados en la bbdd mysqp de XAMPP. De allí el registro puede consultarse en la página web creada para tal fin.

El acceso: 

Con el propio Arduino UNO R3 se ha incorporado una pantalla LCD y un sensor de movimiento. Al detectar movimiento, justo en el momento que se pasa la mano para escanear el QR, se muestra un texto de bienvenida en la pantalla LCD.

Debate0en Panel de emociones y control de acceso

No hay comentarios.

Publicado por

PEC 3: Conceptualización

PEC 3: Conceptualización
Publicado por

PEC 3: Conceptualización

Fase 1: Empatizar Los usuarios potenciales, sobre los cuales se pretende conocer más a fondo sus necesidades y problemáticas, son infantes, que…
Fase 1: Empatizar Los usuarios potenciales, sobre los cuales se pretende conocer más a fondo sus necesidades y problemáticas,…

Fase 1: Empatizar

Los usuarios potenciales, sobre los cuales se pretende conocer más a fondo sus necesidades y problemáticas, son infantes, que comprenden de los 3 a los 6 años de edad.

Uno de los problemas en las primeras etapas de vida, es tener la habilidad para expresarse y el poder dar un nombre a las emociones. Algunos niños y niñas no tienen la habilidad de poder decir claramente qué les pasa, ya que ésta no está desarrollada. Es posible que un niño o niña, cuando se sienta enfadado no sea capaz de decirlo de forma concisa, de igual manera que no son capaces de identificar la emoción de otra persona que, por ejemplo, se sienta triste. Este paso, la adquisición del conocimiento emocional, es muy importante para un desarrollo sano y madurativo, para que de adultos, tengan una empatía y puedan hacer saber a los demás cómo se sienten, sin estar retraídos. En resumen, que sean adultos sanos mentalmente, seguros y comunicativos.

Educar y legitimar las emociones

Aunque la gestión emocional puede parecer algo sencillo, una vez se es adulto, esto debe trabajarse y aprenderse desde la primera infancia. Es importante pues, acompañar, ayudar y gestionar estas emociones, para que crezcan de forma equilibrada y armónica. 

¿Qué sienten los infantes al no saber expresar sus emociones? Frustración.

¿Qué dicen o hacen? Al no saber expresarse, suelen desahogarse de otra forma, como tirando objetos, pegando a otros compañeros… en definitiva teniendo rabietas (de 2-4 años generalmente).

 

Fase 2: Definir

El problema principal de la gestión de emociones en los infantes es la incapacidad de saber administrarlas. Por otro lado, necesitan a alguien con quién empatizar, los infantes deben crecer con figuras de apego sano, con las que puedan confiar. Estas figuras suelen ser de su entorno más cercano: los progenitores, los abuelos, los profesores… Dicho lo cual, el objetivo principal es buscar una forma de que los infantes puedan expresar sus emociones y hacerles saber a su entorno cómo se sienten para ser escuchadas, valoradas y puedan sentirse mejor al obtener una respuesta acorde a su sentimiento. 

Perfiles ficticios que puedan beneficiarse de una solución para la gestión de las emociones:

Samuel, 4 años: 

Ha tenido una hermana y sus progenitores no pueden prestarles la atención que precisa en una situación tan delicada.

Marta, 5 años:

Sus padres se han divorciado. Su vida tal como la conocía se ha desestabilizado, tiene que pasar unos días con cada uno, una nueva casa, peleas constantes entre ellos…

 

Ana, 3 años

Vive muchos cambios en su entorno: su madre viaja constantemente por trabajo y su padre no puede estar el tiempo debido con ella. 

 

Carlos, 6 años

Está pasando por una importante etapa de transición, se siente desorientado, miedoso, y reacciona de forma violenta cuando las cosas no le salen como quiere. 

Moodboard de emociones

 

Fase 3: Idear

Objetivo: Diseñar un sistema Arduino que permita a los infantes dar a conocer cómo se sienten y ser escuchados, tanto si la emoción es positiva, como si es negativa. 

Brainstorming

Posibles maneras de llegar al objetivo:

    • Juegos: disfraces, cartas…
    • Cuentos sobre emociones…
    • Crear un diccionario de emociones.
    • Dibujar y pintar emociones.
    • Música.
    • Círculo con un peluche en que los niños cuando lo tengan digan como se sienten los demás…
    • Pizarra de emociones.
    • Bote de emociones.
    • Fotomatón emotivo: con un dado de emociones, hacer fotos con la emoción que sale en el dado. 
  • Panel donde el infante pueda indicar mediante un botón la emoción que siente.

El humor es un buen aliado para gestionar las emociones.  Debe ser divertido en cierta manera. 

Fase 4: Prototipar

Dar forma a las ideas

Una vez que ya tenemos definido el público, su problema y el objetivo de lo que queremos conseguir (conocer las emociones de los pequeños, que sepan gestionarlas y acompañarlos en el proceso), nos centraremos tan sólo en los primeros pasos; es decir que el infante sepa expresar su emoción y esto llegue a un adulto y a partir de aquí, sepa consolar y dar alternativas al estado emocional del infante. Generalmente los niños, donde pasan más tiempo, es en las escuelas, por lo que este sistema emocional se instalaría en los colegios, en cada clase. Tiene que ser sencillo ya que va dirigido a los infantes. Se tratará de un panel con unos botones de unos emoticonos con cada emoción: Felicidad, miedo, enfado, tristeza.  Para poder identificar a cada niño con su emoción, se utilizará un lector de código QR que el alumno tendrá en su mochila, o en su bata, que pasará a la entrada de clase, justo antes de empezar. Una vez identificado, en una pantalla se muestra el nombre del alumno, un sonido específico, quizás algún elemento visual, como una bandera, para que el infante, entonces, seleccione la emoción, Esta entrada iría a una base de datos, vinculada a un software, como una página web sencilla en HTML, donde tendrá acceso el profesorado, que le permita tratarla a posteriori, ya sea inmediatamente o en el momento en que lo considere oportuno. También se podría hacer llegar a los tutores legales dicha información, como una especie de parte al final del día: “Hoy el alumno se ha sentido triste, por lo que la profesora ha hablado con él y le ha hecho saber el motivo”. Quizás la misma base de datos pueda servir para el control de asistencia de los alumnos, dejando a un lado el sistema de pasar lista. También sería interesante añadir al software un sistema de estadísticas donde se muestran los estados emocionales de cada alumno, su evolución y si la emoción se ha tratado debidamente. 

Boceto del esquema general

 

Esquema

Objetivo del panel de emociones: conocer el estado emocional diario de los infantes en la escuela

  • Pantalla LCD para mostrar la información del alumno.
  • Plataforma en la nube para guardar histórico.
  • Cuatro botones con cada emoción (Felicidad, tristeza, enfado, miedo).
  • Cable conexión eléctrica para que el panel funcione.
  • Lector QR para leer los códigos de cada infante.
  • Módulo WIFI para que los datos se transmitan.
  • Motor para levantar una bandera.
  • Página HTML para mostrar las entradas (alumno, emoción, día, parte profesor).
  • Códigos QR vinculados a cada alumno.

 

Video 

Cartel

Debate0en PEC 3: Conceptualización

No hay comentarios.

Publicado por

Interacción Tangible | PEC02 – SIMON OPEN

Interacción Tangible | PEC02 – SIMON OPEN
Publicado por

Interacción Tangible | PEC02 – SIMON OPEN

JUSTIFICACIÓN El presente documento se corresponde con la segunda Prueba de Evaluación Continua (PEC02) de la asignatura de Interacción Tangible del Grado…
JUSTIFICACIÓN El presente documento se corresponde con la segunda Prueba de Evaluación Continua (PEC02) de la asignatura de Interacción…

JUSTIFICACIÓN

El presente documento se corresponde con la segunda Prueba de Evaluación Continua (PEC02) de la asignatura de Interacción Tangible del Grado en Técnicas de Interacción Digital y Multimedia de la UOC.

En esta prueba nos proponen crear un mini proyecto con Arduino en el que la acción de usuario actúe sobre, al menos, dos controles como iluminación, audio y/o imagen. Debemos trabajar el desarrollo del proyecto a través de las fases del design thinking (empatizar, definir, idear, prototipar, testear).

Se publica en Folio un extracto de la memoria, con la que podéis reproducir fácilmente el prototipo, junto con el video del funcionamiento.

HISTORIA

Imagen del Prototipo Simon OpenEl proyecto es un guiño al juego de SIMON SAY (Simón dice), ya que el funcionamiento de memorizar los colores o tonos es el mismo, aunque un poco más sencillo. La diferencia es que se trata de una única melodía con un número de notas predefinido. Cuando se logra reproducir correctamente podemos abrir la cerradura, por lo que he llamado al prototipo SIMON OPEN.

La cerradura bloquea una caja que contiene a Van Gogh pintando su autorretrato. El juego se trata de liberarlo reproduciendo la melodía aleatoria. ¡Si no eres capaz de memorizar un sencillo código sonoro-luminoso, no podrás salvarlo! ?.

 

DEFINICIÓN

El proyecto consiste en cuatro bombillas led de colores que se encienden al pulsar el botón correspondiente, cada uno de las cuales emite además un sonido característico.

El juego consiste en reproducir los sonidos/luces aleatorias que produce el Arduino en ese mismo orden, de manera que cuando se logra reproducir la melodía correcta (de 6 tonos en este caso, por hacerlo fácil), tenemos la posibilidad de abrir la cerradura de una caja tocando un sensor capacitivo.

PLANTEAMIENTO

Para resolver el problema planteado necesitaré generar números aleatorios (del 0 al 3) y almacenar la secuencia en un array de n posiciones. Comparando la secuencia pulsada por el usuario en los 4 pulsadores disponibles con la generada aleatoriamente podremos averiguar si es correcta y activar el sensor capacitivo para poder abrir la cerradura.

En el momento en que presionamos un botón equivocado, que difiere de la melodía generada, volvemos a empezar y se genera una nueva aleatoriamente.

Mapa conceptual

Enlace al video explicativo del funcionamiento

En el siguiente enlace está disponible una pequeña explicación del funcionamiento del prototipo, en el que se testea tanto el acierto como el fallo en la reproducción de la secuencia aleatoria:

PROTOTIPO

Para diseñar el prototipo he instalado la placa de interconexión y el Arduino sobre una antigua caja de diskettes, colocando la palanca del servomotor actuando como cerradura. Los componentes utilizados son los siguientes:

1x Arduino UNO
1x Piezoeléctrico
5x Resistencias 220 Ohms
2x Resistencias 10 kOhms
1x Resistencia 4,7 kOhms
4x Pulsadores
4x LED de color verde, amarillo, rojo y azul
1x Condensador de 0.1nF
1x Servomotor

Esquema y conexiones

He utilizado el pin analógico A0 del Arduino para recibir la tensión que llega de los pulsadores, que será diferente según se haya pulsado uno u otro botón debido al montaje en escalera de resistencias.

Los pines 2, 3, 4 y 5 los utilizo como salida digital para encender los LED, y el 8 servirá para enviar los datos al piezo.

El pin 9 lo utilizo en modo PWM para modificar el ángulo del brazo del servo.

El esquema del conexionado, implementado utilizando Fritzing:

Diseño esquemático

EL CÓDIGO

//Importamos las librerías para el servo y el sensor capacitivo y creamos las instancias

#include <Servo.h>

#include <CapacitiveSensor.h>

CapacitiveSensor capSensor = CapacitiveSensor (13,12);    //Defino los pines para activar el sensor

Servo myServo;

 

const int numNote = 6;      //Número de notas de la secuencia, que proporciona la dificultad al juego

int notes[] = {1915,1519,1275,956};   //array que guarda las 4 frecuencias

int sequence[numNote];   //array que guarda la secuencia inicial (random)

int userSequence[numNote];   //array que guarda la secuencia generada por el usuario

int position = 0; //posición en la que guardar la nota

 

boolean locked = true;  //Al inicio la puerta está bloqueada

int sensorValue;        //variable que almacena el valor del sensor capacitivo

 

void setup() {

Serial.begin(9600);   //iniciamos la comunicación en serie para poder utilizar el monitor serie

 

myServo.attach(9);     //Salida al servo

pinMode(2,OUTPUT);     //Salida a led verde

pinMode(3,OUTPUT);     //Salida a led amarillo

pinMode(4,OUTPUT);     //Salida a led rojo

pinMode(5,OUTPUT);     //Salida a led azul

 

//inicializamos los arrays

for (int i=0;i<numNote;i++){

userSequence[i] = 0;

sequence[i] = 0;

}

myServo.write(90);    //Colocamos el brazo del servo a 90 grados (bloqueo)

secuenciaInicio();    //Función que reproduce la secuencia de inicio del juego

 

}

 

void loop() {

//Leemos el sensor de contacto

sensorValue = capSensor.capacitiveSensor(30);

// Leemos el valor analógico y lo mostramos por el monitor del puerto serie

int keyVal = analogRead(A0);

Serial.println(keyVal);

Serial.print(sensorValue);

Serial.print(»    La secuencia es: «);

for (int i=0;i<position;i++) Serial.print(userSequence[i]);

//Dependiendo del valor que llegue tocamos una nota u otra, y encendemos el led correspondiente

if (keyVal == 1023){

tone(8, notes[3],500);

digitalWrite(5, HIGH);

delay(700);

grabarTono(3);

}

else if (keyVal >= 900 && keyVal <= 1022){

tone(8,notes[2],500);

digitalWrite(4, HIGH);

delay(700);

grabarTono(2);

}

else if (keyVal >= 650 && keyVal <= 710){

tone(8,notes[1],500);

digitalWrite(3, HIGH);

delay(700);

grabarTono(1);

}

else if (keyVal >= 500 && keyVal <= 550){

tone(8,notes[0],500);

digitalWrite(2, HIGH);

delay(700);

grabarTono(0);

}

else {            //Si no estamos pulsando mantenemos el silencio y los led apagados

noTone(8);

for (int i=2;i<6;i++) digitalWrite(i, LOW);

}

//Si tocamos la malla metálica y la caja no está bloqueada abrimos el brazo del servo y desbloqueamos la cerradura

if (sensorValue > 1000 & locked == false){

myServo.write(180);

}

}

 

/**************************************************************************************************************/

//FUNCIONES

//La secuencia de inicio reproduce la secuencia random muy rápidamente indicando que comienza el juego

void secuenciaInicio(){

for (int i=0;i<numNote;i++) sequence[i] = random(4); //generamos una secuencia aleatoria con números del 0 al 3 (Ej: {0,0,1,2,3,1,2,3,0,1})

for(int i=0;i<3;i++){

for (int j=0;j<numNote;j++){

tone(8,notes[sequence[j]],50);

digitalWrite(sequence[j]+2, HIGH);

delay(70);

noTone(8);

digitalWrite(sequence[j]+2, LOW);

delay(10);

}

}

delay(1000);

reproducirSecuencia();

}

//Función que reproduce la secuencia random pausadamente

//Aprovecho que los pines digitales coinciden con la posición de la frecuencia correspondiente +2

void reproducirSecuencia(){

for(int i=0;i<numNote;i++){

tone(8,notes[sequence[i]],500);

digitalWrite((sequence[i])+2, HIGH);

delay(700);

noTone(8);

digitalWrite((sequence[i])+2, LOW);

}

}

//En esta función se graba la secuencia pulsada en un array que se va comparando con la aleatoria

//La variable position

void grabarTono(int note){

userSequence[position] = note;

//Si el usuario se equivoca reiniciamos todo y bloqueamos

if (userSequence[position] != sequence[position]){

position = 0;

for (int i=2;i<6;i++) digitalWrite(i, LOW);

for (int i=0;i<numNote;i++){

userSequence[i] = 0;

sequence[i] = 0;

}

Serial.println(«FALLO»);

//close the door

myServo.write(90);

locked = true;

delay(500);

secuenciaInicio();

}

else{

position++;

//Si la variable position alcanza el valor definido activamos el sensor capacitivo para poder abrir la cerradura

if(position == numNote) {

for(int i=0;i<20;i++) {

Serial.println(«PRUEBA SUPERADA!!!»);

for (int j=2;j<6;j++) digitalWrite(j, HIGH);

delay(50);

for (int j=2;j<6;j++) digitalWrite(j, LOW);

delay(50);

}

//open the door

locked = false;

 

}

}

 

}

 

 

Debate0en Interacción Tangible | PEC02 – SIMON OPEN

No hay comentarios.

Publicado por

Pec 2: Introducción al entorno de Arduino

Pec 2: Introducción al entorno de Arduino
Publicado por

Pec 2: Introducción al entorno de Arduino

Sobre el proyecto Antes de ponerme manos a la obra con este proyecto, creé un pequeño esquema con lo que quería hacer…
Sobre el proyecto Antes de ponerme manos a la obra con este proyecto, creé un pequeño esquema con lo…

Sobre el proyecto

Antes de ponerme manos a la obra con este proyecto, creé un pequeño esquema con lo que quería hacer y posteriormente las preguntas que quería que salieran. En un principio, iban a haber 3 posibles respuestas, pero como la pantalla lcd sólo permite 16 caracteres en horizontal y dos líneas en vertical, tuve que acortar las respuestas a dos, y tratar que, las preguntas no superarán los 40 caracteres, ya que es el máximo que permite. Por otro lado, opté por hacer el concurso en inglés, ya que no parece que el sistema acepte bien el sistema UTF-8.

ARDUCINE

Tu Arduino se va a convertir en un juego de preguntas sobre cine.

Para la creación de este interactivo juego de preguntas y respuestas se han usado los siguientes materiales:

  • 2 pulsadores.
  • 1 pantalla lcd.
  • 2 leds (uno rojo y uno verde).
  • Piezo.
  • 3 resistencias de 220 Ohmios.
  • 1 resistencia de 10 Kilo Ohmios.
  • 1 potenciómetro (de 10 Kilo Ohmios)

Tiempo: 50 minutos

Nivel: **

Basado en los proyectos: Piano electrónico, Bola de cristal.

Se necesitan muchos cables, por eso se tiene que prestar mucha atención a la hora de realizar las conexiones y asegurar que todo está en su sitio.  

Se tiene que añadir la librería LiquidCrystal para poder visualizar los caracteres. Una vez conectado, es importante que se gire la rueda del potenciómetro para que se muestre la pantalla. En mi caso, por falta de espacio se han tenido que usar dos placas, una para los componentes de la pantalla, el potenciómetro y los pulsadores (quería que estuvieran accesibles para poder jugar) y otra placa para añadir el piezo (“altavoz”) y los leds rojo (respuesta incorrecta) y verde (respuesta correcta).

Enlace a Youtube del Prototipado

Esquema de disposición de los pines

Enlace del proyecto

Bibliografía:

Libro de proyectos Arduino

https://www.tinkercad.com/

https://unsplash.com/

https://forum.arduino.cc/t/piezo-buzzer-winning-and-loosing-sound-fx/182115/4

https://www.arduino.cc/en/Tutorial/BuiltInExamples/Blink

https://forum.arduino.cc/t/counter-variables-with-analogread/581534

https://www.arduino.cc/reference/en/language/functions/random-numbers/random/

https://forum.arduino.cc/t/16×2-lcd-one-line-scrolling-one-stationary/406501/4

https://forum.arduino.cc/t/escribir-un-valor-en-la-pantalla/31703

https://forum.arduino.cc/t/correctly-display-long-sentences-on-lcd/322967

https://forum.arduino.cc/t/codigo-de-pulsometro/583136

https://forum.arduino.cc/t/getting-a-nice-sound-from-piezo/394393/7 lo

Debate0en Pec 2: Introducción al entorno de Arduino

No hay comentarios.

Publicado por

The even more Useless Machine

Publicado por

The even more Useless Machine

  Corren los años 50 y un profesor del MIT llamado Marvin Minsky crea uno de los artilugios mas peculiares de la…
  Corren los años 50 y un profesor del MIT llamado Marvin Minsky crea uno de los artilugios mas…

 

Corren los años 50 y un profesor del MIT llamado Marvin Minsky crea uno de los artilugios mas peculiares de la historia de la electrónica: The useless machine.

La maquina pasó desapercibida hasta años mas tarde, tras el auge de internet, cuando un video de una maquina de este tipo se convirtió en uno de los primeros memes de la red. Bien sea por el concepto, bien sea por lo cómico de ver una máquina que se auto apaga, el video se extendió y se hizo su hueco en la historia de internet.

 

Cumplidos los 70 años del primer prototipo de
Minsky, y a modo de homenaje, se plantea el
siguiente proyecto educativo: Revisar, reinterpretar
y reinventar la icónica máquina de Marvin. Crear la
maquina inútil, todavía mas inútil.

Bajo esta premisa comenzaba hace varias semanas mi pequeño proyecto educativo para la UOC. Un proyecto muy interesante, entretenido y con el que me he trasladado a mis años mas tiernos cuando daba clase de tecnología en el colegio. Os dejo por aquí unas fotos,  el video del prototipo, y la memoria, por si alguien siente curiosidad por el proceso creativo detrás de esta máquina tan inútil, pero tan genial.

¡Saludos!

Debate2en The even more Useless Machine

  1. Adrià Garriga Bassas says:

    Buenas Andoni,

    Acabo de leer tu proyecto y me ha parecido divertidísimo. No tiene desperdicio.

    Un saludo.