Durante quest’ultimo periodo ho realizzato un controllo di motori in corrente continua con l’Arduino che riceve dati da Processing che a sua volta riceve ed invia dati all’ Ipod touch.

I motorini sono da 6V 250mA (ovviamente alimentati esternamente da 4 pile AA ricaricabili) e vengono pilotati, tramite transistor BDX53C, dall’Arduino che sfrutta la tecnica PWM.

Purtroppo, per mancanza di un componente elettronico, non ho potuto aggiungere la funzione di cambiare senso di rotazione. Sarebbe servito un ponte H come questo: L293D.

Ho anche realizzato un’interfaccia grafica grazie a processing, che mostra a video due slider (verticali) con la quale è possibile visualizzare il valore PWM (che va da 0 a 255) dei singoli motorini, ed un pulsante on/off per l’accensione e spegnimento dei motorini.

Girovagando per la rete ho trovato un applicazione per ITouch che permette l’invio/ricezione dei dati al computer, quest’applicazione è TouchOSC che tramite un’applicazione (Windows, Mac, Linux) permette di creare una semplice interfaccia grafica per l’ipod.

Di seguito il video della realizzazione:

Controllo motori DC con Arduino + Processing + Ipod Touch

Sorgente Processing:

Alla riga: Ipod = new NetAddress(“192.168.0.10”, 9000); Al posto di “192.168.0.10” si deve inserire l’indirizzo ip interno dell’ipod (9000 è la porta di default di comunicazione che usa TouchOSC). Alla riga: myPort = new Serial(this, “COM3”, 9600); Al posto di “COM3” si deve inserire la porta di comunicazione alla quale è attaccato l’Arduino.

Sorgente Arduino:

Screen interfaccia Ipod:

 

Download sorgente arduino + sorgente processing + interfaccia ipod: http://www.megaupload.com/?d=OHYV1DYZ

 

Il prossimo passo sarà riuscire ad eliminare la connessione Pc <-> Arduino con il cavo USB, spero di poterci riuscire presto per fare un piccolo robot comandato dal pc (e anche dall’ipod).

Controllo motori DC con Arduino + Processing + Ipod Touch
Tags:                         
  • che meravigliosi jumper! sono con i morsetti integrati? poso sapere dove li hai comprati?

    • Anonimo

      Certamente!Li ho comprati su http://www.futurashop.it ecco il codice del prodotto: 7300-JWMMROSSOOppure puoi semplicemente cercare “jumper”, sono molto costosi, 10pz/3.8€ :)

  • grazie mille :D
    il prodotto che mi hai linkato più che morsetti sembrano dei buchini, non esistono dei jumper che terminano proprio con dei morsetti? oppure quei buchini hanno la stessa funzione?

    • Anonimo

      Ma stai parlando dei cavi sulla breadboard oppure quelli attaccati ai motori?

      • intendevo quelli attaccati ai motorini, pensavo fossero: maschio-morsetto invece sono femmina-femmina?

        • Anonimo

          Ah, nonò! Quelli li ho fatti io, sono dei semplici pin presi dalle stripline attaccati tramite un filo a dei morsetti per motorini!

  • Paolo

    Ciao, vìho provato ad eseguire tutto quello che hai fatto solo che al posto dei mootorini ci ho messo due led… teoricamente se il segnale è in pwm dovrebbero accendersi gradualmente, ma non va nulla. Funziona solo l’interfaccia OSC (su Android Samsung Galaxy 3) e PC. Ma arduino non risponde.. Ho anche impostato la velocità 9600 e la COM che nel mio caso è la COM1.
    In piU mi esce un errore su processing quando lavoro al conrario, ovvero comando dal pc quello il display di OSC (che infatti non va)

    Questo è l’errore:

    Native lib Version = RXTX-2.1-7
    Java lib Version = RXTX-2.1-7
    ### [2013/7/5 22:6:12] ERROR @ OscP5 ERROR. an error occured while forwarding an OscMessage
    to a method in your program. please check your code for any
    possible errors that might occur in the method where incoming
    OscMessages are parsed e.g. check for casting errors, possible
    nullpointers, array overflows … .
    method in charge : oscEvent java.lang.reflect.InvocationTargetException

    • Xfox1

      E’ probabile che la versione di processing che hai installato sia differente da quella che ho utilizzato io!
      In ogni caso si, essendo il segnale in PWM dovrebbe funzionare nello stesso modo con i LED (occhio al modo in cui colleghi i LED in quanto invertendo il senso di marcia invertiva la polarità).

      Inoltre, TouchOSC non è del tutto compatibile con Android!

      • Paolo

        Sono riuscito dopo una lunga ricerca e molte prove, e comunque grazie per la risposta.
        Voglio condividere la modifica, e magari la puoi aggiornare anche tu.
        Nella riga dove hai scritto:
        myPort = new Serial(this, “COM1”, 9600);
        va sostituita con:
        myPort = new Serial(this, Serial.list()[0], 9600);

        Utilizzando l’ultima versione di Processing ovvero la 2.

        Ciao

        • Xfox1

          Grazie mille per la segnalazione!