Arxiu de la categoria: Joanillo Productions

Nova màquina: recreativa arcade vertical

Aquesta setmana he acabat una nova màquina, una recreativa vertical. Curiosament, és la segona que faig seguides. A mi aquest format m’agrada molt, ja veig que no sóc l’únic.

Com a novetat, he mirat de perfeccionar el tema del vidre que protegeix la pantalla, i el vidre del marquee retroil·luminat. La idea és que amb la fresadora s’ha de fer ranures, i el vidre va encastat dins d’aquestes ranures. El vidre es pinta per darrere, seguint el marc de la pantalla. Queda un resultat molt professional.

recreativa dards v0.0.8

Ja tinc ganes de fer aquesta nova recreativa: una màquina de darts amb detecció automàtica dels darts i la seva puntuació. Però no dards amb punta de plàstic. Ha de ser un dartboard original de suro amb dards de punta metàl·lica.

Per a la detecció dels dards hi havia la possibilitat d’utilitzar una malla resistiva i poder posicionar on llencem els dards. Però crec que no seria de fiar. El millor serà utilitzar visió per computadora amb OpenCV. Ja parlaré sobre el tema més endavant.

De moment he estat treballant amb la lògica dels diferents jocs de dards que hi ha. Els més populars són: 301, 501, Count Up, Cricket, Round the Clock, Halve it. I ara ja puc presentar la primera versió de l’aplicació, no funcional, que només funciona a la consola de Linux. Aquesta versió simula partides reals de fins a 4 jugadors: primer esculls el joc; després número de jugadors; després assignes els usuaris; comencem a jugar al joc seleccionat passant per les diferents rondes (cada ronda són tres tirades dels dards). I així anem registrant la puntuació fins que arribem al guanyador.

En les següent versions del programa (escrit amb C++) s’haurà d’implementar tota la part de OpenCV, i finalment tota la part de SDL (llibreria gràfica). Tot haurà de córrer en una Raspberry Pi 3, de manera que el desenvolupament el faig en el portàtil, però assegurant la portabilitat a la RPi3. Aquest hauria de ser el projecte estrella d’aquest semestre. És una idea que em persegueix de fa tres anys. De fet no és una idea original, hi ha diversos projectes que utilitzen dards amb punta de ferro i taulells de suro o fibra, en comptes de les dianes electròniques amb puntes de plàstic. Potser ara el projecte més similar seria open-cv-steeldarts, que s’està desenvolupant amb Python i que encara no és plenament funcional. Li donaré una ullada sobretot pel tema de la calibració i detecció dels dards.

Enllaços:

Ordenant idees amb la llibreria SDL

Estic programant amb C++ i SDL el software per a una màquina de dards. Ja tinc quasi bé acabada tota la part de la lògica de l’aplicació, així que he començat a mirar-me la part gràfica, que faré amb la llibreria SDL com he utilitzat en altres projectes.

Arrel de migrar el projecte a SDL (tot i conservant la compatitibilitat amb la part de consola) he ensopegat amb un error de programació d’aquells que et fan perdre temps. Al final la cosa no ha sigut greu, diguem que no era un error de concepte sinó més aviat un despiste, degut a què el codi per moments s’està complicant i convé mantenir el codi ben ordenat i lògic.

El cas és que, arrel d’aquest contratemps, he volgut fer una petita recopilació del codi mínim SDL per pintar un tros de text per pantalla, utilitzant diferents tècniques: a) tota la part de SDL barrejada en el fitxer main.cpp; b) POO, utilitzant un fitxer per cada classe; c) POO, però ficant totes les classes en un sol fitxer.

Els tres exemples es poden descarregar:

Maria 12 anys: caixa retroil.luminada amb timer basat en 555

El diumenge la Maria fa 12 anys. En aquesta ocació he fet una caixeta retroil·luminada amb tres LEDs SMD. L’electrònica no és difícil, es tracta d’un timer 555 configurat per tal de què estigui encés durant 15 minuts. Ha de servir com a punt de llum a l’habitació a l’hora de fer nones.

El projecte l’he dissenyat primer amb Eagle CADSoft, i després amb KiCAD, doncs de fet estic migrant a KiCAD, com ha de ser. El prototipus de la placa PCB l’he fet amb la fresadora. Ja tenia experiència de l’any passat d’utilitzar el script pcb2gcode a l’Eagle, i ara l’estic utilitzant amb el KiCAD, amb resultats molt bons.

El Timer 555 es pot configurar com a temporitzador o per fer pulsos. En el nostre cas, hem optat per un disseny de manera que quan pitgem el pulsador s’encenen els LEDs durant 15 minuts. Els 15 minuts s’aconsegueixen escollint els valors adequats de R i C (recordar que RxC té unitats de temps). He escollit un TLC555CD per tal de minimitzar el consum . El TLC555CD és SMD i té format SOIC. La idea és alimentar-ho tot amb 3V i minimitzar al màxim el consum durant els periodes de stand-by, doncs s’alimenta amb 2 piles AAA i s’espera que durin bastant de temps.

He assajat amb la soldadura SMD, de la que no sóc expert. El timer TLC555CD (format SOIC-8) l’he soldat manualment, i ha quedat una soldadura força neta. Els LEDs també són SMD. Si n’hagués de fer un altre provaria amb la soldadura al forn.

Aquest seria un projecte interessant per fer-ne molts en sèrie, de fet ja vaig estar mirant els proveïdors per aprovisionar una bona quantitat dels components. La idea és que tots els components fossin SMD, i aleshores sí que es faria una comanda de plaques PCB a un fabricant, doncs ara hi ha moltes facilitats i preus raonables.

Quant a la part del fresat la fusta és DM de 2mm. Tots els talls estan fets amb la fresadora, així com les lletres, on s’ha escollit la font Black Rose. La part més crítica és muntar la capsa amb els angles ben rectes, i pintar-ho tot i que quedi perfecte. Al darrera les lletres es fica un metacril·lat blanc, també tallat amb la CNC.

Per tant, és un projecte senzill però finalment més laboriós del que em pensava, i certament es pot automatitzar en gran mesura per fer una tirada gran. El que no es pot automatitzar són els noms que has de fresar, això sí que és sota demanda.

Referències:

cnchollow script. Generador de G-Code per a fresar diferents tipus de cavitats

Hem estat programant un script amb C++ per fer cavitats. Cavitats de diferent tipus: rectangulars, rectangulars amb cantos arrodonits, circulars i el·líptiques. A més, la profunditat de la cavitat pot ser constant (cavitat cilíndrica) o bé una cavitat esfèrica. Per tant, hi ha 8 possibilitats de cavitats diferents, com es veu a la imatge, amb diversos paràmetres que pots controlar. El script genera el G-Code directe per a ser fresat.

Si vols utilitzar el script, primer hauràs de mirar les il·lustracions que hi ha a la documentació, per tal d’entendre els diferents paràmetres. Bàsicament haurem d’introduir l’origen de coordenades de la cavitat (allà on està centrada); els semieixos en el cas dels rectangles-el·lipse, o el radi en el cas del cercle; la profunditat final en el cas de cavitats cilíndriques; el radi esfèric en el cas de cavitats esfèriques, que donarà lloc a més o menys profunditat esfèrica. En funció de la broca que tinguem i de la resolució que vulguem, també hem de definir el pas linial i el pas de profunditat (paràmetres -m i -n).

Per a les cavitats cilíndriques n’hi ha prou amb utilitzar broques normals de fresar (les de 2mm de diàmetre són les més petites que he aconseguit). Però per a les cavitats esfèriques és interessant utilitzar una broca tipus round nose bit, i així aconseguim un millor acabat, com es pot apreciar a la foto.

El primer projecte per utilitzar les meves cavitats és fresar el joc del mancala (o awalé o altres noms), on vull fresar vàries cavitats diferents. Ja informarem quan estigui acabat.

És un projecte escrit amb C++, no requereix cap llibreria especial, per tant la seva compilació és directa. Per la versió 1.0.6, la darrera versió:

$ 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

Referències:

Fresar una foto en blanc i negre amb CNC

Aquests dies estem vivint uns dies incerts a Catalunya. S’ha de sortir al carrer i defensar el govern legítim, rebutjar de ple l’aplicació de l’article 155 de la Constitución Española, i no deixar passar l’oportunitat que representa les eleccions del 21D. Així que hem fet uns cartells per portar-los a la manifestació del 11N, i totes les que calguin. Actualment, tenim a les presons espanyoles: Jordi Sánchez, Jordi Cuixart, Oriol Junqueras, Dolors Bassa, Meritxell Borràs, Josep Rull, Raül Romeva, Carles Mundó, Joaquim Forn i Jordi Turull. I el número pot augmentar.

Aquí exposo el meu workflow per fer un cartell en blanc i negre, a partir d’una foto.

1. GIMP. A l’hora d’escollir la foto hem de procurar que el fons sigui clar i contrastat amb la foto, de manera que el GIMP detecti bé les vores. Obrim la foto amb el GIMP, i dessaturem la foto (convertint-la a escala de grisos), i amb l’eina llindar de color blanc-negre, escollim la imatge que volem fresar.

2. LibreCAD és el software que faig servir per generar el DXF. Importo la imatge, i creo una capa per definir les línies de fresat. Com que la broca que faré servir és de 2mm, escullo un traç de 2mm, i d’aquesta manera em puc fer una bona idea de com quedarà el resultat final. Ressegueixo tots els contorns, ho faig de manera manual.

3. Encara amb LibreCAD, he de definir els ponts de manera que no hi hagi cap illa que es pugui desenganxar quan després faci el fresat. Genero el fitxer dxf.

4. Torno al GIMP i omplo de negre les superfícies que quedaran buides. D’aquesta manera em puc fer una bona idea del resultat final, i preveure l’èxit de la peça.

5. Amb el script de python dxf2gcode puc definir les propietats del fresat. Concretament, la profunditat de tall. Si la fullola que faré servir és de 3mm, la profunditat serà de 3mm. Genero el fitxer G-Code.

6. Amb LinuxCNC ja puc fresar la peça, amb una broca de 2mm. Un cop acabat, es fa un polit i s’arreglen possibles imperfeccions.

Tot el procés està explicat en el video. A la imatge es veu com queda el resultat final amb la imatge del Raül Romeva, ara mateix a presó. Ara només queda fer els cartells, i sortir al carrer. La lluita continua.

Referències:

Provant taules B2S a Virtual Pinball

Aquests dies estic fent una nova màquina de Pinball, igual que la primera, amb configuració FS (FullScreen), és a dir, d’una sola pantalla. Aprofitant que tinc un ordinador amb el qual puc fer proves, en un segon disc dur vull instal·lar el Visual Pinball amb configuració B2S (Backglass to Screen), és a dir, amb dues pantalles: la principal és el playfield, i la secundària és el backglass.

Així doncs he instal·lat el Visual Pinball i el VPinMAME, i he mirat els tutorials per veure com funciona això del B2S. I ja tinc les primeres taules funcionant. No és difícil d’entendre i d’implementar, però el que sí que és veritat és que hauré d’anar una per una de les 200 taules que tinc implementades i classificades.

El primer que s’ha de fer és baixar-se els arxius de backglass (amb extensió .directb2s). A partir de les dues pantalles que tinc (una de 22” 1920×1080; i una altra de 17” 1280×1024), creo el fitxer screenres.txt, relacionat amb la geometria de les dues pantalles. I aleshores he d’anar una per una de les taules, entrar en el script (el codi), i configurar el script per tal de què funcioni el mode B2S. Executar la taula (jugar una estona :-)), comprovar que tot funciona correctament, i ajustar algun paràmetre si és necessari. En particular, les taules que tenen DMD (Dot Matrix Display), ajustaré la geometria per tal de què el display DMD aparegui en la pantalla del backglass, en una posició que no sigui invasiva.

En la configuració FS tinc implementades 200 taules. Algunes d’elles no s’han portat encara a B2S, doncs no tenen fitxer de backglass, o m’han donat problemes. Si tinc temps, miraré d’implementar algunes taules més que vegi que són divertides, per tal de recuperar el valor de 200 taules implementades. En el futur, miraré d’introduir el display de DMD, tot i que jo sempre tinc un ull posat en la simplicitat.

Quan tingui configurades les taules B2S serà el moment de fer el moble de pinball amb dues pantalles, de moment amb un format petit: pantalles de 22” i 17”, i un moble el més petit possible que integri aquestes dues pantalles. Aquesta serà la part més divertida i original. A més, si estic engrescat, vull ficar un plunger analògic, un acceleròmetre per al nudge, i un moneder. Però això ja serà una altra història. De moment ja hi ha molta feina configurant les taules B2S.

Xiangqi (escacs xinesos)

Fa uns dies que he acabat el taulell de Xiangqi i les peces, i ja he jugat algunes partides. He estat provant diferents maneres d’omplir amb color negre o vermell les peces. Les peces negres (i el taulell) les he fet amb silicona negra. El resultat és correcte, però el problema és que en envernissar-ho queda una mica enganxifós. És per això que finalment el taulell no l’he envernissat. Les peces vermelles les he fet amb Aquaplast barrejat amb pintura acrílica vermella, i el resultat és més que correcte. M’agradaria fer més proves, per exemple algun altre tipus de silicona o bé resina epoxi o de poliéster.

Com que la meva màquina CNC és 30x40cm, el taulell l’he hagut de dividir en dues parts, que he hagut d’ajuntar amb cola blanca i espigues de fusta. El taulell és de fusta de pi, i les fitxes són de fusta de boix de 5 cm de diàmetre. És un procés lent i laboriós fer les fitxes d’una en una (són 32 peces en total). Evidentment, el procés seria molt més ràpid utilitzant un taulell de pi.

Al llarg del procés de construcció he fet unes quantes fotos, i penjo un video de tot el procés. Per tal de millorar el procediment d’envernissat, he fet un jig on puc vernissar per davant i per darrere les peces de 8 en 8.

Prototip PCB de doble cara amb CNC

Aquests dies he estat perfeccionant com fer un prototipus de PCB amb la fresadora CNC.

Abans que res he hagut d’implementar el auto-probe per tal de compensar l’anivellament superficial de la placa on vull fresar. Aquest projecte requereix la màxima precisió. El tema del auto-probe va ser especialment ràpid i fàcil de fer, cosa rara doncs les coses fàcils normalment es compliquen de forma inesperada… Està documentat a [1].

Un cop l’auto-probe està funcionant, ja puc mirar de fer les plaques de doble cara. El principal repte està en girar la placa i que els forats en una capa i en l’altre coincideixin exactament. Com es veu a la foto, això s’ha aconseguit bastant bé, i la bona notícia és que hi ha marge per centrar bé els forats en la capa top (doncs en la foto es veu que els forats no estan exactament centrats). Tot està ben documentat en l’enllaç [2]

Ara que ja tinc el procés bastant clar, ja puc afrontar un petit projecte que requereix una placa de doble cara. Consisteix en muntar un mini-ordinador, amb finalitat purament acadèmica, amb un microprocessador Z80 [3]. Però abans de fer-lo, primer vindrà el programador de EEPROM [4], doncs a l’ordinador li hauré de carregar un programa en una EEPROM. No sé si tot plegat ho tindré enllestit abans de vacances.

En el passat havia fet plaques amb el mètode UV i amb el mètode de la planxa. Val a dir que sempre he tingut dificultats vàries en aconsegur plaques amb qualitat òptima. Ara, amb la CNC, estic buscant una manera ràpida de fer prototipus. En bona manera crec que ho he aconseguit. Ara bé, el procés, tot i que satisfactori, és més lent del que em pensava.

Joc del Simon. Extraescolar de Robòtica al Balmes

Ja hem acabat l’extraescolar de Robòtica al Balmes. Aquest any hem programat el joc del Simon amb una Raspberry Pi. Tota la documentació (i la programació didàctica) està a la wiki [1].

Durant aquestes 13 sessions hem anat treballant sobre diferents temes, que ens portaven a l’objectiu final de fer un prototipus de Simon:

  • Hem programat el script amb Python, viatjant per les diferents versions a mida que necessitàvem incorporar noves funcionalitats.
  • Hem connectat botons i LEDs als pins GPIO de la RPi.
  • Hem vist com, utilitzant transistors, podem disparar des dels pins GPIO senyals de 12V per encendre tires de LEDs blancs.
  • Hem discutit sobre l’alimentació de tot el sistema, i alternatives.
  • Hem discutit sobre com produir el so i la seva amplificació.
  • Hem dissenyat el moble final, utilitzant eines de fabricació digital com l’impressora 3D i la fresadora CNC.

Al final ha sigut un curs molt multidisciplinar, hem tocat moltes coses, tot i que per manca de temps, coneixements i d’infraestructura, moltes coses les ha implementat el professor i les ha mostrat a classe. Però al final l’experiència ha sigut enriquidora per tots.

El resultat final es pot veure a la foto i en aquest video:

Referències: