avances con el lector (fisico) de tortillas

publicado el 2018-09-03

parte del proyecto: tortilla-stories


¡vamos bien! a continuación comparto unas imágenes describiendo algo de mi avance con la implementación del lector de tortillas.

foto filtrada de una cámara web en un soporte, dirigida hacia la superficie de abajo, donde hay dos tarjetas con filas de puntos

más o menos así se veía mi acomodo de la cámara y las muestras a leer

lectura en vivo

tuve que ajustar unos parámetros en el software de detección de códigos para que funcionara con el feed de video en vivo.

había asumido que habría poco ruido, y tuve que cambiar el primer chequeo añadiendo unos parámetros de áreas mínimas y máximas a tomarse como “bits”.

captura de pantalla del punto de vista de la cámara web, con una imagen sobrepuesta en la tarjeta que está viendo, indicando que la está leyendo

tan pronto funcionó... ¡captura de pantalla!

eventualmente lo fui mejorando, invertí la imagen para seguir los estándares de visión computacional (el área de interés en claro) y para poder usar la función de erosión con el fin de eliminar un poco de ruido. además tuve que ajustar el umbral de brillo y reducir la distancia de los puntos adyacentes a los “centros calculados” de los bits (?)

captura de pantalla del punto de vista de la cámara web, con imágenes sobrepuestas en las dos tarjetas que está viendo: los bits ahora se ven blancos, y además de los indicadores del código se ven los números identificados: 255 y 91

identificando dos códigos a la vez

osc

eventualmente, además de todo un “cablerío” interno para que todo funcionara, pude agregar el protocolo de mensajes osc para activar al player de sonidos.

captura de pantalla similar a la anterior, pero ahora al lado hay texto de consola que indica que se han detectado cambios y enviado mensajes osc

aquí la consola indica que los mensajes se están enviando

prototipo de interfaz física

por último, como todo va a estar controlado desde escena, desde las tornamesas donde se pondrán las tortillas, era necesario hacer una interfaz física que se comunicaría via serial con la computadora.

una “aguja”, al ser movida hacia la tortilla (como en un tocadiscos real), va a indicar que la lectura del código ha de realizarse - este es un mecanismo de protección ante el ruido y la posibilidad de que haya una lectura válida cuando la tortilla apenas se está colocando.

cuando la lectura sea válida, además de enviar el mensaje osc al player, va a avisar encendiendo un led y el motor de la tornamesa. también desactivará la lectura para evitar el ruido que habrá cuando la tortilla esté girando.

cuando la “aguja” se quite de la tortilla, se va a indicar que la tornamesa se está apagando por lo que hay que enviar el mensaje correspondiente, confirmando encendiendo el led, y apagando el motor.

este comportamiento ha de suceder por cada tornamesa.

para las “agujas” pienso usar potenciómetros (resistores que cambian su valor al girarlos).

armé un pequeño prototipo del hardware de dos tornamesas, sin motores, implementando además un pequeño protocolo de comunicación.

lo programé con un arduino y lo pude probar con éxito.

foto filtrada de una protoboard con dos potenciómetros, dos leds, y dos resistores conectados sobre ella, junto con algunos cables

así se ve el circuito por el momento, el arduino está abajo

como dato curioso, el protocolo serial luce así por el momento:

compu a arduino:
0x20 + i : flashea el led i
0x30 + i : enciende el motor i
0x40 + i : apaga el motor i

arduino a compu:
0x50 + i : activa lectura de tornamesa i
0x60 + i : apaga tornamesa i

por ejemplo, cuando la aguja de la tornamesa 1 es movida hacia la tortilla, el arduino envía 0x51. cuando la computadora logra leer la tortilla, envía al arduino 0x21 y luego 0x31.

cuando la aguja se quita de la tortilla, el arduino envía 0x61. al apagar la tornamesa y confirmar, la computadora envía al arduino 0x21 y luego 0x41.