Pagine

lunedì 28 maggio 2012

Come utilizzare il chip CP2102 con Arduino


Dopo gli articoli incentrati sui prodotti Freescale ed in particolare sulla demoboard DEMOJM, con questa guida entreremo per la prima volta nel vasto mondo di Arduino proponendovi una soluzione molto interessante per tutti coloro che vogliono interfacciare e programmare il micro ATmega328P (Atmel), con bootloader Arduino precaricato, senza ricorrere ai chip FTDI e Atmel notoriamente abbastanza costosi. Per programmare e comunicare con Arduino è possibile usare infatti anche il chip CP2102 della Silicon Labs disponibile in una economica versione dongle acquistabile su ebay ad un prezzo davvero molto contenuto, intorno ai 2 euro.





Il chip CP2102 non è altro che un bridge USB to UART e, come si può osservare dalla scheda mostrata in figura, è dotato da un lato di un connettore USB e dall'altro di 6 pin:
  • RST, reset
  • 3V3, alimentazione 3.3 V
  • 5V, alimentazione 5 V
  • TXD, linea seriale in trasmissione
  • RXD,  linea seriale in ricezione
  • GND, massa
Il problema principale, che si incontra quando si cerca di utilizzare questo chip per programmare Arduino, riguarda il connettore di reset che non provvede ad inviare il segnale di autoreset necessario per avviare correttamente la fase di upload dello sketch all'interno del micro Atmel. A differenza invece degli altri pin che funzionano correttamente e che possono essere tranquillamente collegati ad Arduino come se si stesse utilizzando un chip FTDI.

Le soluzioni per risolvere questo piccolo problema sono due: allenarsi per entrare in profondo sincronismo con il chip inviando manualmente, magari attraverso l'uso di un pulsante, il segnale di reset al micro appena si avvia l'upload dello sketch, oppure connettere il pin di reset del micro non con il pin di uscita denominato RST  ma con il pin denominato DTR. Il segnale presente su questo pin permette di inviare il comando di autoreset con la giusta temporizzazione ed è prelevabile dal dongle saldando un pin aggiuntivo sull'uscita DTR line, come mostrato in figura.


Questo hack, per il quale dobbiamo ringraziare Moritz Urlich, l'autore della soluzione, consente di programmare perfettamente il nostro amato Arduino come se stessimo utilizzando un chip FTDI e consente, ovviamente, anche di instaurare una comunicazione seriale tra micro e computer per operazioni di debug o per inviare eventuali comandi.

Ho utilizzato personalmente tale soluzione e non ho riscontrato nessun problema. E' necessario sottolineare però che per il momento ho provato questo chip solo con il micro ATMEL328P con bootloader Arduino 2009 precaricato. E' da verificare la compatibilità con Arduino UNO.

In particolare ho utilizzato tale chip per programmare e comunicare con una scheda chiamata Diavolino (realizzata da Evil Mad Scientist Laboratories), derivata direttamente da Arduino. L'obiettivo del mio esperimento era quello di accendere a distanza da PC (via USB) una presa sfruttando il link wireless 315MHz realizzato tramite una coppia ricevitore/trasmettitore di questo tipo. Il chip CP2102 mi ha quindi permesso di instaurare agevolmente questa comunicazione con il micro riducendo notevolmente i costi finali di progetto.
La versione di Arduino che ho utilizzto (chiamata Diavolino), non è altro che una versione ridotta all'osso e molto economica della scheda open hardware made in Italy, senza chip USB to UART, senza regolatore e volendo anche senza header pin. E' presente infatti solo il micro con bootloader precaricato, il pcb e alcuni componenti essenziali per il corretto funzionamento della scheda. Tutti gli interessati possono trovare ulteriori info direttamente sulla pagina web del prodotto.

Source: http://blog.tarn-vedra.de/2011/09/using-cp2102-on-arduino.html

Nessun commento:

Posta un commento