lunedì 7 novembre 2011

Aggiornamenti in vista!

Dopo parecchi mesi di assenza dal blog e dal progetto, ho deciso di riprenderlo e concluderlo! Sembra che sulla scena arduinome ci siano stati parecchi aggiornamenti sulla compatibilità con il famigerato Arduino UNO, che è stato il motivo principale dell' interruzione del progetto.
Pensandoci, non aveva alcun senso farsi spedire uno shield, progettare un enclosure con non pochi dispendi di tempo e soldi, per avere una periferica funzionante a singhiozzi, nonostante tutte le configurazioni ed i settaggi richiesti.
Da una breve lettura dei nuovi post sul forum di monome.org, sembra che i ragazzi di flipmu, gli stessi che hanno ideato e realizzato arduinome, stiano facendo un nuovo progetto chiamato chronome, nient'altro che un arduinome con led RGB. Essendo un progetto abbastanza nuovo, si stanno impegnando anche sui problemi di compatibilità con arduino uno e tutti i vari sistemi operativi.
Vi ricordate l'impossibilità di flashare il nuovo arduino a causa del chip 8U2? Ora non è più un problema, si sono diffuse varie guide per flasharlo e farlo sembrare agli occhi del PC (come si faceva col duemilanove) un monome a tutti gli effetti. Qualche mese fa ho seguito questa procedura, che non è facile ed immediata come col duemilanove (eheh sembrava troppo semplice eh?!), è andato tutto a buon fine e sono riuscito a far riconoscere automaticamente (Plug&Play!) arduinome su Ubuntu linux. Ovviamente con windows non ha funzionato.
Da qualche tempo ormai i vecchi monomeSerial e arduinomeSerial, sono stati soppiantati da serialOSC: un software molto più potente che rimane in background come servizio e riconosce in automatico un monome o un arduinome collegati al pc permettendoti di utilizzarlo subito, senza ulteriori settaggi. L'unico problemino è che questo serialosc in ambiente windows non riconosce periferiche basate su aUNO, nonostante queste siano state correttamente flashate, al contrario in ambiente linux non ha alcun problema di riconoscimento.
A quanto credo di aver capito, modificando qualche riga dell' ultima versione di serialosc per win si può ovviare a questo problema, e finalmente riuscirò ad avere un arduinome completamente funzionante!
Nei giorni a seguire proverò questa modifica e nel caso funzionasse posterò una semplice guida per flashare il chip 8U2 di aUNO e quella per farlo funzionare sotto win!

PS: Se qualcuno fosse interessato all'acquisto di shield può commentare sotto, magari in tanti riusciamo a spuntare un buon prezzo!

venerdì 18 febbraio 2011

Progetto enclosure

Sto progettando l'enclosure per arduinome con sketchup e sono quasi alla fine, questo è il risultato

Progetto enclosure

Progetto enclosure colorata

L' enclosure sarà fatta interamente in legno, escluso uno dei due faceplate che sarà di plexyglass nero, per staccare un po e per diminuire l'altezza dei bottoni. Per il faceplate ho preso spunto da quello di machine collective, aumentando di 10mm il lato del quadrato. I lati invece si incastrano a "dentelli" l'uno con l'altro e la curva sul fondo l'ho fatta per fare una minima retroilluminazione. Il mio obiettivo è quello di nascondere tutte le viti, a differenza della maggior parte dei progetti che si trovano in rete, e credo di aver trovato una soluzione.
Infine, per tagliare il tutto una volta completato il progetto, farò riferimento a Vectorealism.com, che si occupa di taglio laser.

Non è stato difficile progettare il box per arduinome, tuttavia ho ancora qualche dubbio: esclusi tutti i dettagli estetici, a mio avviso sono due le variabili che interferiscono con l'esperieza di utilizzo del clone di monome.


  • La prima è l'altezza dei bottoni. Questa dipende, a livello strutturale, dal faceplate visto che viene avvitata assieme alla PCB ad esso. La mia idea è quella di ridurre al minimo questa variabile, per diminuire il gioco dei bottoni alla pressione e la diffusione di luce sulla cornice. Pertanto la somma dei due faceplate è 11mm (5 legno  e 6 plexy), l'altezza del bottone è 13,7 e la differenza è quindi 2,7mm. A questo punto mi è venuto il dubbio: non è che con la pressione del tasto, quest' altezza sia inferiore alla cornice? Dalle mie sofisticate misurazioni (ah ah!) sembra di no, perchè il tasto si abbassa intorno ai due millimetri, come si vede nelle foto in fondo (due sarebbero state sufficienti, ma ho pure il pallino per la fotografia!).

  • La seconda è l'altezza della cornice. Inizialmente la mia idea era quella di separare la parte logica dalle pcb con tasti e led per ottenere uno scatolotto contenente la prima e un faceplate pressoché piatto per suonare arduinome più comodamente. Poi dissuaso dal trasporto, inevitabilmente più difficoltoso, sono ritornato al punto di partenza, rimanendo comunque dell' idea di farla più bassa possibile (monome è alto 38mm!). L' altezza totale compresi i faceplate è di 51mm, lo spazio effettivo che riempirò con la parte logica è 28mm e spero basti. Lo farei ancora più basso, ma non vorrei doverlo rifare per problemi di spazio.

La la luce bianca soffusa che uscirà dalle fessure in basso del box, l'ho pensata per diminuire lo stress visivo derivante da un utilizzo prolungato di arduinome al buio (dopo ore di luci lampeggianti nel buio totale ti rincoglionisci un po) e... anche la componente estetica vuole la sua parte!
Detto questo, in questi giorni (finiti gli esami) finirò il progetto dell' enclosure e la parte grafica che sarà serigrafata su un lato del box. Intanto comincio a pensare al nome che darò a questa mia prima creazione!


Metodo infallibile per misurare l' abbassamento di un tasto alla pressione :)

IMG_3226

IMG_3232

IMG_3243

mercoledì 9 febbraio 2011

Un bug che non riesco a risolvere...

Arduinome funziona a meraviglia, a parte il fatto che non ha ancora una cornice appropriata e  un fastidioso bug che non riesco a risolvere. Dopo il video spiegherò meglio i dettagli:



A volte, quando premo un bottone, questo rimane acceso e il software lo interpreta come se lo stessi ancora premendo e fino a quando non lo premo nuovamente, questa situazione non si sblocca.
Premetto che qualsiasi utilizzo io ne stia facendo, il blocco non tarda ad arrivare. Nel caso stia utilizzando il programma On/Off di serialpyio (vedi post precedenti) non mi da nessun fastidio, ma se si blocca mentre sto registrando un pezzo, diventa più fastidioso.
Non riesco a capire in quali cause risieda questo problema, l'unica cosa che credo di poter escludere (spero!) è la componente hardware, in quanto i tasti funzionano bene e soprattutto si verifica in maniera casuale, in qualsiasi posizione della matrice.

L'unico accorgimento che ha diminuito il bug (o almeno così mi è sembrato) è stato l'aumento del baudrate, di default 57600, a 115200. In questo modo arduinome sarà più reattivo e quindi andrà a diminuire anche la latenza. In ogni caso è conveniente aumentare il baudrate e per farlo sono necessari solo questi brevi passaggi:

Aumentare il baudrate di arduinome
Per farlo andremo a modificare sia il firmware (3.2 l'attuale) di arduinome, che il programma al quale si interfaccia, ovvero serialpyio.

Firmware
  1. Aprire il firmware 3.2 attraverso la software di arduino
  2. Posizionarsi sulla riga 488 e cambiare il numero contenuto tra parentesi dopo Serial.begin, da 57600 a 115200.
  3. Verify e Upload
Serial-pyIO
  1. Posizionarsi nella cartella principale di serialpyio e poi src\spyio
  2. Per sicurezza creiamo una copia di backup del file router.py, che andremo ad editare
  3. Aprire router.py. In mancanza di python, per comodità consiglio l'utilizzo di Notepad++, che numera le righe, altrimenti qualsiasi editor di testo andrà benissimo.  
  4. Posizionarsi sulla riga 1194 e modificare il numero finale di questa stringa da 57600 a 115200
                   spyio.gui.dialog.devicedialog.AddSerialDeviceDialog(self, False, 57600)
             

Dopo queste due modifiche, quando interfacceremo il nostro arduinome a serial-pyIO avrà un baurate più elevato.

Baudrate

giovedì 27 gennaio 2011

La svolta decisiva!

Alla fine tra vari esperimenti e prove di ogni genere, sono finalmente riuscito a far funzionare Arduinome! Non ho capito bene il motivo di tale funzionamento improvviso, ma descriverò nel dettaglio la procedura che ho seguito per farlo funzionare.

IMG_2389
Arduinome con faceplate provvisorio, connesso attraverso serial-pyIO all' app
Nerdscroll (Max)
Innanzitutto ci tengo a precisare che arduinome serial e monome serial continuano a non riconoscere arduinome, ma Serial-pyIO anche in ambiente windows, riesce a gestire appieno ogni funzionalità e i software sviluppati per monome.
Partendo dal presupposto che i led e i pulsanti erano collegati propriamente ad arduino (vedi post precedenti), l'unico problema che dovevo risolvere era interfacciare arduino a serial-pyio per poterlo utilizzare con i vari software OSC. 
Per prima cosa è necessario avere serial-pyio funzionante i ambiente win, nel mio caso l' ultima versione presente sul sito ufficiale non funzionava, quindi sono stato costretto ad utilizzare quella del git che ho scaricato con ubuntu. Di seguito i passaggi che ho utilizzato per farlo funzionare con windows 7.

Serial-pyIO funzionante in windows 7
Nel caso non si sappia come utilizzare git in ambiente windows è possibile seguire la procedura (nel post precedente) per ubuntu e copiare la cartella in windows, oppure per facilitare le cose, questo pacchetto (multiupload) che contiene la suddetta versione importata da ubuntu da me.

2- Posizionarsi nella cartella di Serial-pyIO e fare doppio click su serial-pyio.py (nel caso windows vi chieda con quale programma aprire il file.py andate nel percorso di installazione di python e selezionare python.exe)
3- Nella GUI di Serial-pyio selezionare device/add arduinome, lasciare invariato il campo "name" e nella casella "serial port", la porta com corrispondente ad arduino UNO (nel mio caso COM9)

Una volta eseguiti questi passaggi, il mio arduinome risultava connesso e i tasti venivano riconosciuti alla perfezione. Nel caso in cui il tasto premuto venga visualizzato in ritardo, non c'è da preoccuparsi: è una funzione necessaria a ridurre il consumo di CPU da parte del software, per diminuire il ritardo selezionare Config/GUI refresh rate/ impostare in valore desiderato (più basso è il valore, minore è il ritardo). 

Come descritto nel post precedente, le applicazioni di serial pyio per testare arduinome non funzionavano correttamente. Tanto per tentarne una, mi è venuto in mente di reuploadare il firmware di arduinome, nonostante l'avessi fatto più volte senza risultati. Questa volta l'ho fatto aggiornando preventivamente il software di arduino dalla versione 0021 alla 0022 e stranamente Arduinome ha cominciato a funzionare!!

Upload firmware ad arduino UNO
I passaggi che ho seguito sono molto semplici:

  1. Scaricare ed estrarre il software più aggiornato di arduino dal sito ufficiale (nel momento in cui scrivo è 0022)
  2. Scaricare ed estrarre il firmware di arduinome originale, aggiornato all'ultima versione (nel mio caso la 3.2)
  3.  Dal software di arduino selezionare la corretta "board" e la corretta "serial port" (nel mio caso rispettivamente Arduino UNO e COM9)
  4. Click sul pulsante Verify ed infine Upload
Dopo aver eseguito questa procedura, sarà sufficiente aprire Serial-pyIO, aggiungere arduinome, selezionare un test qualsiasi per vederne l'effetto sul nostro arduinome. Appena avrò tempo, finiti gli esami, metterò un video per facilitare questi passaggi.

IMG_2362
Nerdscroll ti permette di far scorrere un messaggio preimpostato, oppure accendere/spegere
ogni singolo led della matrice

IMG_2363

venerdì 7 gennaio 2011

Arduinome comincia a dare segni di vita!

Data la mancanza del chip FTDI, mi ero rassegnato all' idea di acquistare Arduino Duemilanove, senza attendere aggiornamenti che mi permettessero di utilizzare Arduino UNO.
Prima di accantonare il progetto nell'attesa della spedizione, visto che su win non dava segni di vita, in ambiente linux ho provato a collegare arduinome a Serial-pyIO e... sorpresa! Viene riconosciuto! Nello screen dell' errore di Serial-pyIO si nota che in alto a sinistra, sotto la scritta name, manca il campo per aggiungere serial port (nel mio caso COM9) che è invece presente nella versione per linux.
Scopro così che i bottoni funzionano, ma quando faccio partire l'animazione default del programma, mi demoralizzo nel vedere che i led si accendevano in maniera casuale, in modo completamente diverso dal previsto.
Almeno un dubbio me l'ero tolto: oltre che i led (sequenza di accensione), anche le saldature e i collegamenti tra i bottoni e Arduino erano corrette, alla pressione di ogni tasto, veniva visualizzata l'anteprima su schermo di quello che avevo premuto. Ovviamente neanche gli altri test di Serial-pyIO fuzionavano:

  • La funzione On\Off alla pressione di un tasto accende il led corrispondente, mi visualizzava su schermo la pressione, ma il led non si accendeva.
  • La funzione Random, che crea un animazione casuale, non era neanche lontanamente paragonabile a quella effettivamente si verificava.
  • La funzione Follw Me, alla pressione di un tasto in successione ad un altro crea l'animazione dello spostamento tra il primo e il secondo, non faceva accendere neanche un led
Dopo l'esecuzione di questi test, ho dedotto che i bottoni venivano riconosciuti abbastanza bene dal programma (in alcuni casi non veniva riconosciuta la pressione), che però non era in grado di gestire la matrice di led.

Come si installa Serial-pyIO e a cosa serve?
Per ottenere questi miseri, ma pur sempre soddisfacenti risultati, ho dovuto installare Ubuntu Linux (10.10 Maverick) su un'altra partizione, ed eseguire il software Serial-pyIO, basato su Python. Le distribuzioni Linux, possiedono nativamente Python, non vi è quindi la necessità di installarlo (come in Win), tuttavia l'ultima versione di Serial-pyIO disponibile sulla pagina ufficiale, non riuscivo ad esegurila a causa di qualche errore che non sono riuscito ad interpretare. Teoricamente, sarebbe sufficiente eseguire il file Serial-pyIO.py per eseguire la GUI del programma o in alternativa utilizzarlo da riga di comando.
Il problema dell'avvio di serial-pyio l'ho risolto eseguendo la versione prelevata dal GIT del progetto, in continuo aggiornamento, che è possibile trovare in questa pagina assieme all SVN. Per utilizzare il git è necessario installare git tramite il comando "sudo apt-get install git", (senza le virgolette) nel teminale e inserire la stringa "git clone git://serial-pyio.git.sourceforge.net/gitroot/serial-pyio/serial-pyio". Nel caso in cui non siano state apportate modifiche a git, Serial-pyIO sarà situato nell' omonima cartella nella home dell'utente. Fatto questo per eseguire il soft su linux basterà semplicemente fare un doppio click sul file Serial-pyio.sh. Per aggiungere la nostra periferica basta inserire nel campo serial port il nome della porta corrispondente, nel mio caso "/dev/ttyACM0" ricordandosi di non omettere la prima slash. Per verificare a quale porta è collegato arduinome è necessario

- Aprire il terminale con arduinome scollegato
- Digitare "tail -f /var/log/messages"
- Collegare la periferica
- A questo punto dovrebbe apparire il log del collegamento di arduinome che avrà un nome tipo ACM0 o ACM1 e così via, da inserire nel campo serial port come "/dev/ttyACMX", dove X sta al numero visualizzato nel log precedente.

Questo software è un' alternativa a monomeserial e arduinomeesrial che può essere eseguito in abienti Windows, Linux e OSX; pertanto possiede le funzioni dei sue software sopracitati, e permette attraverso il protocollo OSC (Open Sound Control) di interfacciare arduinome agli svariati software sviluppati per monome, bastati su Max/Msp, Pure Data e Chuck.