Finalmente hemos colgado el lazo amarillo desde nuestro balcón hasta el balcón del señor Jaume, en la calle Milà i Fontanals de Barcelona. Hoy, 30 de enero de 2018, día que no se ha podido celebrar el pleno del Parlament porque nuestro presidente Puigdemont no puede venir a defensar su candidatura a la presidencia de la Generalitat.

Cada día recordamos que hay presos políticos: Oriol Junqeras, Quim Forn, Jordi Sánchez y Jordi Cuixart, y gent que está en el exilio y que no puede volver con garantías. Delitos? Lo que es delito es continuar siendo súbditos del Reino de España. Alguien dirá que no hay mayoría para proclamar la idependencia… pues hagamos un referéndum.

Por Navidades acabé esta mesa de pinball, en el formato de mesa de café. Ya es la segunda que he hecho siguiendo este esquema, montando una TV de 32”. En este caso he incorporado algunas mejoras: la disposición de los botones y la implementación del nudge.

En el proceso de construcción me han entrado ganas de construir una máquina de pinball con dos monitores (la configuración típica de playfield y backlight), o sea que estoy reuniendo las piezas y ya estoy pensando en el diseño. Será uno de los proyectos para este trimestre.

A ver si doy un empujón al proyecto de la diana electrónica. He avanzado bastante en el software. Ya hice pruebas en su día con la librería OpenCV, y ahora es el momento de atacar la parte crítica del problema, que es la detección fiable de los dardos.

Como el problema es bastante crítico, lo primero será tener la diana con unas condiciones de luz bien controladas, con iluminación uniforme y sin sombras. Para ello he montado una estructura de madera con tira de LEDs por los lados, com se ve en la foto. El siguiente paso será conseguir unas webcams decentes. De momento las pruebas las he hecho con una webcam muy sencilla con resolución de 480px. Estoy esperando una webcam de 720px, que a parte de una mejor resolución espero que tenga mejor calidad. Finalmente también dispongo de una RaspiCam NoIR (la cámera de infrarrojos propia de la Raspberry Pi). Esta sí que tiene una buena resolución y calidad, el problema es que no es USB, y por tanto en una Raspberry Pi sólo puede haber una cámara RaspiCam.

La idea inicial es utilizar una Raspberry Pi 3, con dos webcams USB conectadas. Se trata de ir haciendo pruebas e ir controlando todas las variables y causísticas que se puedan dar. Por suerte, en todo este proceso no estoy solo, sino que hay más gente empeñada en la construcción de una diana eletrónica con dardos de punta de hierro. Concretamente el proyecto https://github.com/hanneshoettinger/opencv-steel-darts y la discusión que se genera en el grupo de Facebook de https://www.facebook.com/groups/281778298914107/. Hacía años que no entraba en el Facebook, ya veo que en las próximas semanas seré un asiduo.

Ya iré explicando mis aventuras y avances.

Esta semana he acabado una nueva máquina, una recreativa vertical. Curiosamente, es la segunda que hago de forma seguida. A mi este formato me gusta mucho, ya veo que no soy el único.

Como novedad, he mirado de perfeccionar el tema del vidrio que protege la pantalla, y el vidrio del marquee retroiluminado. La idea es que con la fresadora se practican unas ranuras en los laterales, y el vidrio va encastado dentro de estas ranuras. El vidrio se pinta por detrás, siguiendo el marco de la pantalla. Queda un resultado muy profesional.

Ya tengo ganas de hacer esta nueva recreativa: una máquina de dardos con detección automática de los dardos y su puntuación. Pero no dardos con punta de plástico. Ha de ser un dartboard original de corcho con dardos de punta metálica.

Para la detección de los dardos había la posibilidad de utilizar una malla resistiva y poder posicionar dónde lanzamos los dardos. Pero creo que no sería de fiar. Lo mejor será utilizar visión por computadora con OpenCV. Ya hablaré sobre el tema más adelante.

De momento he estado trabajando con la lógica de los diferentes juegos de dardos que hay. Los más populares son: 301, 501, Count Up, Cricket, Round the Clock, Halve it. Y ahora ya puedo presentar la primera versión de la aplicación, no funcional, que sólo funciona en la consola de Linux. Esta versión simula partidas reales de hasta 4 jugadores: primero escoges el juego; después número de jugadores; después asignas los usuarios; comenzamos a jugar al juego seleccionado pasando por las diferentes rondas (cada ronda son tres tiradas de los dardos). Y así vamos registrando la puntuación hasta que llegamos al ganador.

En las siguientes versiones del programa (escrito en C++) se tendrá que implementar toda la parte de OpenCV, y finalmente toda la parte de SDL (librería gráfica). Todo tendrá que correr en una Raspberry Pi 3, de manera que el desarrollo lo hago en el portátil, pero asegurando la portabilidad en la RPi3. Este tiene que ser el proyecto estrella de este semestre. Es una idea que me persigue de hace tres años. De hecho no es una idea original, hay diversos proyectos que utilizan dardos con punta de hierro y tableros de corcho o fibra, en vez de las dianas electrónicas con puntas de plástico. Quizás ahora el proyecto más similar sería open-cv-steeldarts, que se está desarrollando en Python y que todavía no es plenamente funcional. Le daré una ojeada sobretodo por el tema de la calibración y detección de los dardos.

Enlaces:

Estoy programando en C++ y SDL el software para una máquina de dardos. Ya tengo casi acabada toda la parte de la lógica de la aplicación, así que he empezado a mirarme la parte gráfica, que haré con la libreria SDL como he utilizado en anteriores proyectos.

A raíz de migrar el proyecto a SDL (y conservando la compatitibilidad con la parte de consola) he tropezado con un error de programación de aquellos que te hacen perder el tiempo. Al final la cosa no ha sido grave, digamos que no era un error de concepto sino más bien de despiste, debido a que el código por momentos se está complicando y conviene mantener el código bien ordenado y lógico.

El cas es que, a raíz de este contratiempo, he querido hacer una pequeña recopilación del código mínimo SDL para pintar un trozo de texto por pantalla, utilizando diferentes técnicas: a) toda la parte de SDL mezclada en el fichero main.cpp; b) POO, utilizando un fichero para cada clase; c) POO, pero metiendo todas las clases en un solo fichero.

Los tres ejemplos se pueden descargar en el siguiente enlace:

El domingo Maria cumple 12 años. En esta ocasión he hecho una cajita retroiluminada con tres LEDs SMD. La electrónica no es difícil, se trata de un timer 555 configurado para que esté encendido durante 15 minutos. Ha de servir como punto de luz en la habitación cuando los chavales se van a la cama.

El proyecto lo he diseñado primero con Eagle CADSoft, y luego con KiCAD, pues de hecho estoy migrando a KiCAD, como tiene que ser. El prototipo de la placa PCB lo he hecho con la fresadora. Ya tenía experiencia del año pasado de utilizar el script pcb2gcode con el Eagle, y ahora lo estoy utilizando con el KiCAD, con resultados muy buenos.

El Timer 555 se puede configurar como temporizador o para hacer pulsos. En nuestro caso, hemos optado por un diseño de manera que cuando pulsemos el botón se enciendan los LEDs durante 15 minutos. Los 15 minutos se consiguen escogiendo los valores adecuados de R y C (recordar que RxC tiene unidades de tiempo). He escogido un TLC555CD para minimizar el consum . El TLC555CD es SMD y tiene formato SOIC. La idea es alimentarlo todo con 3V y minimizar al máximo el consum durante los periodos de stand-by, pues se alimenta con 2 piles AAA i se espera que duren bastante tiempo.

He ensayado con la soldadura SMD, de la que no soy ningún experto. El timer TLC555CD (format SOIC-8) lo he soldado manualmente, y ha quedado una soldadura bastante limpia. Los LEDs también son SMD. Si tuviera que hacer otra unidad, probariía con la soldadura SMD al horno.

Este sería un proyecto interesante para hacer muchas unidades en serie, de hecho ya estuve mirando proveedores para aprovisionar una buena cantidad de los componentes. La idea es que todos los componentes fueran SMD, y entonces sí que haría un pedido de placas PCB a un fabricante, pues ahora los precios son razonables.

Cuanto a la parte del fresado la madera es DM de 2mm. Todos los cortes están hechos con la fresadora, así como las letras, donde se ha escogido la fuente Black Rose. La parte más crítica es montar la cajita con los ángulos bien rectos, y pintarlo todo y que quede perfecto. Detrás de las letras se pone un metacrilato blanco, también cortado con la CNC.

Por tanto, es un proyecto simple pero finalmente más laborioso de lo que creía, y ciertamente se puede automatizar en gran medida para hacer una tirada grande. Lo que no se puede automatizar son los nombres que hay que fresar, esto sí que es bajo demanda.

Referencias:

Hemos estado programando un script en C++ para hacer cavidades. Cavidades de diferente tipo: rectangulares, rectangulares con cantos redondeados, circulares y elípticas. Además, la profundidad de la cavidad puede ser constante (cavidad cilíndrica) o bien una cavidad esférica. Por tanto, hay 8 posibilidades de cavidades diferentes, como se ve en la imagen, con diversos parámetros que puedes controlar. El script genera el G-Code directo para ser fresado.

Si quieres utilizar el script, primero tendrás que mirar las ilustraciones que hay en la documentación, y así entender los diferentes parámetros. Básicamente tenemos que introducir el origen de coordenadas de la cavidad (allá donde está centrada); los semiejes en el caso de los rectángulos-elipse, o el radio en el caso del círculo; la profundidad final en el caso de cavidades cilíndricas; el radio esférico en el caso de cavidades esféricas, que dará lugar a más o menos profundidad esférica. En función de la broca que tengamos y de la resolución que queramos, también hemos de definir el paso lineal y el paso de profundidad (parámetros -m y -n).

Para las cavidades cilíndricas hay suficiente con utilizar brocas normales de fresar (las de 2mm de diámetro son las más pequeñas que he conseguido). Pero para las cavidades esféricas es interesante utilizar una broca tipo round nose bit, y así conseguimos un mejor acabado, como se puede apreciar en la foto.

El primer proyecto para utilizar mis cavidades es fresar el juego del mancala (o awalé o otros nombres), donde quiero fresar varias cavidades diferentes. Ya informaremos cuando esté acabado.

Es un proyecto escrito en C++, no requiere ninguna librería especial, por tanto su compilación es directa. Para la versión 1.0.6, la última versión:

$ g++ -o cnchollow cnchollow-1.0.6.cpp
Ex:
$ ./cnchollow -f rectangle -t cylindrical -x 100 -y 100 -r 30.23 -s 15.21 -z -10.3 -m 3.0 -n -1.0 -o ./cnchollow.ngc


Referencias:

Estos días estamos viviendo unos días inciertos en Catalunya. Es necesario salir a la calle y defensar el gobierno legítimo, rehusar de pleno la aplicación del artículo 155 de la Constitución Española, y no dejar pasar la oportunidad que representa las elecciones del 21D. Así que hemos hecho unos carteles para llevarlos a la manifestación del 11N, y todas las que sean necesarias. Actualmente, tenemos en las prisiones españolas: Jordi Sánchez, Jordi Cuixart, Oriol Junqueras, Dolors Bassa, Meritxell Borràs, Josep Rull, Raül Romeva, Carles Mundó, Joaquim Forn y Jordi Turull. Y el número puede aumentar.

Aquí expongo mi workflow para hacer un cartel en blanco y negro, a partir de una foto.

1. GIMP. A la hora de escoger la foto hemos de procurar que el fondo sea claro y contrastado con la foto, de manera que el GIMP detecte bien los contornos. Abrimos la foto con el GIMP, y desaturamos la foto (convertiéndola a escala de grises), y con la herramienta Umbral de color blanco-negro, escogemos la imagen que queremos fresar.

2. LibreCAD es el software que utilizo para generar el DXF. Importo la imagen, y creo una capa para definir las líneas de fresado. Como la broca que utilizaré es de 2mm, escojo un trazo de 2mm, y de esta manera me puedo hacer una buena idea de cómo quedará el resultado final. Resigo todos los contornos, lo hago de manera manual.

3. Todavía en el LibreCAD, he de definir los puentes de manera que no haya ninguna isla que se pueda desprender cuando después haga el fresado. Genero el fichero dxf.

4. Vuelvo al GIMP y relleno de negro las superfícies que quedarán vacías. De esta manera me puedo hacer una buena idea del resultado final, y prever el éxito de la pieza.

5. Con el script de python dxf2gcode puedo definir las propiedades del fresado. Concretamente, la profundidad del corte. Si la plancha de madera que utilizaré es de 3mm, la profundidad será de 3mm. Genero el fichero G-Code.

6. Con LinuxCNC ya puedo fresar la pieza, con una broca de 2mm. Una vez finalizado el trabajo, se lija y se corrigen posibles imperfecciones.

Todo el proceso está explicado en el video. En la imagen se ve cómo queda el resultado final con la foto de Raül Romeva, ahora en prisión. Ahora sólo queda hacer los carteles, y salir a la calle. La lucha continua.

Referencias:

Estos días estoy haciendo una nueva máquina de Pinball, igual que la primera, con configuración FS (FullScreen), es decir, de una sola pantalla. Aprovechando que tengo un ordinador con el que hacer pruebas, en un segundo disco quiero instalar el Visual Pinball con configuración B2S (Backglass to Screen), es decir, con dos pantallas: la principal es el playfield, y la secundaria es el backglass.

Así pues he instalado el Visual Pinball y el VPinMAME, y he mirado los tutoriales para ver cómo funciona esto del B2S. Y ya tengo las primeras mesas funcionando. No es difícil de entender y de implementar, pero lo que sí es cierto es que tendré que ir una por una de las más de 200 mesas que tengo implementadas y clasificadas.

Lo primero que hay que hacer es bajarse los archivos de backglass (con extensión .directb2s). A partir de las dos pantallas que tengo (una de 22” 1920×1080; y otra de 17” 1280×1024), creo el fichero screenres.txt, relacionado con la geometría de las dos pantallas. Y entonces he de ir una por una de las mesas, entrar en el script (el código), y configurar el script para que funcione el modo B2S. Ejecutar la mesa (jugar un rato :-) ), comprobar que todo funcione correctamente, y ajustar algún parámetro si es necesario. En particular, las mesas que tienen DMD (Dot Matrix Display), ajustaré la geometría para que el display DMD aparezca en la pantalla del backglass, en una posición que no sea invasiva.

En la configuración FS tengo implementadas 200 mesas. Algunas de ellas no se han portado todavía a B2S, pues no tienen el fichero de backglass, o me han dado problemas. Si tengo tiempo, miraré de implementar algunas mesas más que vea que son divertidas, y así recuperar el valor de 200 mesas implementadas. En el futuro, miraré de introducir el display de DMD, aunque yo siempre tengo un ojo puesto en la simplicidad.

Cuando tenga configuradas las mesas B2S será el momento de hacer el mueble de pinball con dos pantalls, de momento en un formato pequeño: pantallas de 22” y 17”, y un mueble lo más pequeño posible que integre estas dos pantallas. Esta será la parte más divertida y original. Además, si tengo tiempo, quiero poner un plunger analógico, un accelerómetro para el nudge, y un monedero. Pero esto será otra historia. De momento ya hay mucha faena configurando las mesas B2S.

Page 4 of 17« First...«23456»...Last »