Escáner de imágenes LEGO-EV3
Escáner de imágenes construido con el set LEGO Mindstorms EV3 Education y una rueda adicional. Incluye fuente del software Mindstorms EV3 e instrucciones de compilación. Escanea papel de 8,5 pulgadas de ancho, pero se puede adaptar a tamaños de página similares.
Entradas
- Botones de ladrillo: para controlar los menús de configuración.
- Ultrasonido: detecta cuándo se inserta papel
- Sensor táctil: restablece la posición del sensor de color por colisión
- Sensor de luz: escanea píxeles para crear una imagen
Producción
- Imagen en escala de grises de 44 por 32 píxeles y 8 bits
- Archivo CSV representativo de valores de datos de mapa de bits de 8 bits en escala de grises
- Imagen difuminada en pantalla
Regiones
Esta construcción requiere piezas de un juego LEGO MINDSTORMS EV3 y una rueda grande adicional, que se puede obtener de otro juego del mismo juego o de un juego de autos.
Detalles de construcción y sensor
- Este robot implementa dos configuraciones de engranajes de fuerza, una para mover el sensor de luz en el eje horizontal, a través de un monorraíl, la segunda para proporcionar un mecanismo de bobinado para el papel que contiene la imagen que se va a escanear.
- Tanto el mecanismo de enrollado como el monorraíl utilizan un motor grande.
- Se utiliza un contrapeso para alinear la rueda del monorriel con la fuerza normal ejercida por la superficie del monorriel.
- Cerca del carrete hay un sensor de infrarrojos que permite detectar cuando se inserta el papel.
- Se colocan dos sensores táctiles en cada esquina del escáner. Se utilizan para detectar cuando el monorraíl ha llegado a una esquina. Actualmente sólo está en uso el sensor del lado derecho.
Notas de software
El programa consta de cuatro etapas: UI, Escanear, Imprimir imagen, Guardar imagen. La interfaz de usuario se construye adaptando el paradigma MVC a la programación secuencial de ladrillos. Permite n pantallas de configuración, pudiendo configurar un valor por pantalla. Las variables utilizadas más adelante en el programa corresponden a una configuración cada una.
Pantallas de configuración
- uiPrintScreen: bool: si es verdadero, se imprimirá una imagen difuminada de 1 bit en la pantalla del EV3, para parecerse a la imagen en escala de grises de la RAM.
- uiSaveState: bool: si es verdadero, se generará un archivo CSV a partir de los datos en la RAM. Este archivo se parece a un archivo de mapa de bits y se puede convertir a un mapa de bits utilizando un programa externo como A-VEKT Image CSV Converter.
- XStartPos: numérico: indica la posición inicial en pulgadas, en el eje X.
- YStartPos: numérico: indica la posición inicial en pulgadas, en el eje Y.
- ancho: numérico: indica el ancho de la imagen en pulgadas.
- altura: numérico: indica la altura de la imagen en pulgadas.
Fase de escaneo
- Antes de escanear, se le solicita al usuario que inserte el papel a escanear y la posición del sensor de luz se restablece a la posición inicial.
- El escaneo consiste en cambiar el movimiento del sensor de imagen a través del monorraíl y el papel a través del carrete, para crear una matriz de puntos escaneados de forma independiente.
- Al escanear, una línea se escanea de derecha a izquierda y la siguiente de izquierda a derecha. Esto reduce el tiempo de escaneo.
- Una vez que se completa el escaneo, el papel restante se retira de la parte posterior del escáner.
Fase de impresión
- Esta fase es opcional y está habilitada de forma predeterminada. Consiste en imprimir la imagen en la pantalla.
- La imagen escaneada contiene datos en escala de grises, pero la pantalla del EV3 es de 1 bit en blanco y negro. Para compensar, cada píxel escaneado se convierte en un patrón de 4 por 4 píxeles mediante tramado ordenado (Bayer), que luego se imprime en la pantalla.
Fase de ahorro
- Esta fase es opcional.
- Debido a que el bloque de archivos del EV3 se limita a guardar solo caracteres imprimibles, no se puede generar una imagen de mapa de bits mediante programación. En su lugar, se utiliza un archivo CSV.
- El CSV se puede convertir en un mapa de bits utilizando “A-VEKT Image CSV Converter” con la configuración del canal alfa de 8 bits.
- Al crear el CSV, las líneas que se escanearon al revés se reordenan en una segunda matriz.
Mejoras
- La precisión del escáner podría mejorarse con un segundo conjunto, que podría usarse para crear un eje x de dos rieles en lugar de un monorriel.
- Debido a las fuerzas ejercidas por los cables, el monorraíl es en ocasiones inestable, lo que provoca un enfoque variable al capturar algunos píxeles.
- El software se puede mejorar. Lo libero tal como estaba cuando dejé de trabajar en él.
- No tengo planes de continuar desarrollando este proyecto hasta que LEGO lance una versión de LEGO MINDSTORMS EV3 para sistemas operativos Linux o encuentre otra razón convincente para comprar mi propio juego Mindstorms EV3.
Licencias y derechos de autor
- Los archivos fuente se comparten bajo la Licencia Pública General GNU 2.0
- Las imágenes de instrucciones y los contenidos adicionales se comparten bajo la licencia Creative Commons Attribution 4.0 International.
- Los derechos de autor son compartidos entre la Universidad de Puerto Rico en Arecibo y yo.
Descargos de responsabilidad
- Desarrollé esto por diversión como parte de una clase de Introducción a la Robótica de la Universidad de Puerto Rico en Arecibo.
- Este escáner se basa libremente en la impresora de "La guía no oficial del inventor LEGO MINDSTORMS NXT 2.0".
- LEGO, MINDSTORMS, MINDSTORMS EV3, MINDSTORMS NXT son marcas comerciales y/o derechos de autor del Grupo LEGO. El uso de ellos no implica ninguna afiliación o respaldo por parte de ellos.