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.