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.

6 commenti:

  1. Ciao, ho scoperto ora questo blog veramente molto curato e ne posso capire la passione che ci stai mettendo a realizzare l' arduinome.
    Volevo farti una domanda, la corrente che fornisce l' arduino, che viene presa direttamente dall' usb 2.0 che quindi corrisponde a 500mA è sufficiente ad alimentare il tutto? ad esempio in una situazione di tutti i led accesi si hanno 20mA*64led e cioè circa 1.28A + gli altri componenti si superano il mezzo A fornito dall' USB. Non riesco a capire questa cosa.

    Saluti e complimenti.
    Alessandro.

    RispondiElimina
  2. Ciao, ti ringrazio per i complimenti! In effetti all'inizio ho avuto anche io qualche dubbio sull' alimentazione, dato il basso amperaggio dell'usb. Mentre cercavo il valore della resistenza da mettere in entrata al max, per limitare la corrente alla matrice di led, ho letto che questo integrato ha una gestione particolare della matrice: nonostante la matrice sembri accesa completamente, in realtà vengono accesi contemporaneamente solo 8 led, che vengono "switchati" attraverso le righe a una velocità di 800 volte al secondo, creando l'illusione di una accensione uniforme. Pertanto se la corrente del tuo led è 20mA dovrai moltiplicarla per otto (le colonne) e sommarla a 10mA (corrente necessaria a Max). Per maggiori info ti rimando al documento ufficiale a questo link (in inglese) "http://www.arduino.cc/playground/Main/MAX72XXHardware".

    Spero di esser stato abbastanza chiaro, se hai altri dubbi chiedi pure qui!

    RispondiElimina
  3. Sei stato chiarissimo. Mi sto cominciando ad avvicinare al progetto ma mi ero perso quel documento.
    Piano piano mi sto procurando il materiale, tu hai avuto difficoltà a reperire i vari componenti?

    Scusami le mille domande (ne arriveranno ancora, preparati :D) ma sei il più chiaro punto di riferimenti che ho trovato.

    Alessandro.

    RispondiElimina
  4. Qualche difficoltà l'ho avuta, in particolare nel reperire i bottoni e le pcb di sparkfun. Per questi due componenti ho contattato Regali e Desideri (rivenditori ufficiali sparkfun) che gentilmente hanno provveduto ad ordinarli per me, con tempi di spedizione ridotti e costi doganali nulli. Se dovessi contruirne un altro, eviterei di comprare le pcb 4x4 di sparkfun, bensì le Bibo, che sono già 8x8, evitandomi un bel po di saldature. Per quanto riguarda i componenti elettronici come resistori e integrati sono riuscito a trovare tutto dal mio elettronico di fiducia (a parte il max che da dovuto ordinarlo --> solo 2gg di attesa!). Nei miei post precedenti c'è il link al sito dove ho ordinato i prodotti sparkfun e dovrebbe averne ancora degli altri!

    RispondiElimina
  5. Yeah! Ho visto il link, ma ora che mi hai detto do un occhio a questa Bibo :D

    Per il MAX potresti darmi un link che proprio non riesco a trovarla qui in Italia? Ti ringrazio ancora.

    Ah, un' altra cosa prima che mi dimentichi: lo schema per lo "shield" è corretto e funzionante? Ho visto nei commenti di collegare pin1 e 2, altri invece dicono di non farlo. Tu come hai operato?

    Ciao e grazie ancora. :)
    Alessandro.

    RispondiElimina
  6. Per quanto riguarda il max, me l'ha ordinato il mio negozio di elettronica, quindi non saprei dirti dove reperirlo in Italia. Ho letto nel log di altri arduinome, che è possibile ottenerlo gratuitamente (come campione di prova) dal sito del produttore (tempi di consegna abbastanza lunghi) oppure puoi ordinarlo sul link presente nella pagina dei componenti su flipmu (progetto di arduinome originale).

    Per lo schema io ho seguito solo quello dello shield di unsped, verificherò se quello per stripboard che ho pubblicato nei post precedenti, è corretto. Nel mio caso il pin uno e 2 del 164 sono collegati!

    RispondiElimina