Visualizzazione post con etichetta SerialpyIO. Mostra tutti i post
Visualizzazione post con etichetta SerialpyIO. Mostra tutti i post

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.

venerdì 31 dicembre 2010

Il progetto prosegue, ma con qualche difficoltà

Dopo varie prove di una cosa sono più che certo: lo shield è necessario.
In questi giorni di assenza sono andato molto avanti col progetto, in mancanza di stripboard ho optato per una breadboard sperimentale (le strip sono introvabili a Torino) che mi fa risparmiare mille saldature, in attesa di una versione definitiva su Unsped's shield.
Desciverò di seguito i passaggi, i problemi e le relative soluzioni che ho adottato per arrivare ad attaccare arduino al pc e vedere la startup sequence di arduinome
IMG_1963

- Saldature

Come si vede nella foto ho saldato led, diodi e i fili seguendo la guida ufficiale su flipmu. Per fissare i pezzi prima di saldarli ci sono più opzioni: allargare i piedini dei componenti una volta inseriti (il più veloce), fissarli con della plastilina adatta (più preciso ma molto lento).  Per questo passaggio è necessario fare molta attenzione perchè in caso di errore, rimuovere un componente è abbastanza difficoltoso.
Per quanto riguarda i fili per unire le 4 schede, io ho utilizzaro i ribbon da 16 per ottenere un risultato più pulito possibile. Come consiglia la guida è conveniente unire le pcb con della colla, io non sapendo quale utilizzare, per non rovinarle ho usato del nastro isolante. Non è strettamente necessario unire le pcb, dalgli schemi delle enclosures, si nota che il peso della pressione dei tasti è sostenuto dal faceplate, che viene saldamente avvitato alle pcb passando dai bottoni.

IMG_1143

IMG_1171

IMG_1149



- Parte logica

Per questo passaggio, non trovando in nessun negozio di Torino le Stripboard, ho utilizzato una breadbord, copiando la shield di Unsped in ogni dettaglio. Consiglio a tutti coloro che non avessero il suddetto shield, di prendere spunto solo da quello, che è sicuramente funzionante. Io per facilitarmi il lavoro ne ho guardate 3 diverse, rischiando la pazzia a causa delle differenze tra i vari progetti. Su questo blog ci sono delle belle foto dettagliate delle due facce dello shield.
Per comodità nel caso voleste testare il circuito su breadbord, consiglio l'utilizzo dei cavi da 20 con un'anima unica metallica (doppino telefonico).
Non sto a spiegare nel dettaglio come fare il circuito, basta osservare bene lo shield, per la resistenza da 100Kohm da dieci pin è necessario tagliare l'ultimo facendo attenzione a non tagliare il primo (quello col puntino è il numero 1).

Per collegare la parte logica alle PCB ho seguito questa guida, molto chiara e semplice. Vi consiglio di prestare molta attenzione ai collegamenti per evitare di rovinare i component.

IMG_1960

IMG_1152

IMPORTANTE!!
Un grosso e insormontabile problema (per ora...) è la versione di Arduino: UNO. Successiva alla duemilanove, la uno possiede alcune caratteristiche differenti dalla precedente, tra la quali c'è anche la mancanza del chip FTDI, sostituito dal più avanzato ATmega8U2. Per permettere ai programmi per monome e arduinome di interfacciarsi con la nostra costruzione, bisogna flashare il chip FTDI come dice qui alla fine della pagina. Arduino UNO non avendo questo chip non può essere flashato in quel modo e quindi non sarà mai riconosciuto da ArduinomeSerial e monomeSerial. Pertanto sconsiglio l'aquisto di questa versione per il momento, io prenderò quella precedente su un sito (qui o qui) che ne ha ancora alcune in stock a prezzo ribassato. Ribadisco "per il momento" perchè questa nuova versione di arduino possiede un nuovo chip seriale/usb che porterebbe ad un aumento delle prestazioni di Arduinome, con una minore latenza e forse anche un interfaccia MIDI
Ho visto che qualcuno è riuscito a interfacciare con linux, arduino uno a Serial-pyIO, l'ho contattato per ricevere maggiori spiegazioni e appena saprò qualcosa in più posterò aggiornamenti.

Senza titolo-1
Errore Seria-PyIO

Per mettere il firmware di arduinome su arduino ho scaricato l'ultima versione del programma dal sito ufficiale e l'ultimo firmware da qui. 
Per fare l'upload:
- estrarre l'archivio contenente il firmware
- aprirlo con il programma di arduino
- selezionare il file ArduinomeFirmwareX_X.pde
- Andare su Tools e selezionare il vostro arduino (Board) e la porta (Serial Port)
- verificare con Sketch/Verify
- e infine FIle/Upload to IO port

Dopo questi passaggi, quando collego arduino al pc mi parte la sequenza di led (vedi video sottostante), che spero sia quella corretta, per verificare il funzionamento dei bottoni non so ancora come fare, ma vi farò sapere.