Arduino Serial v2.0a

24 11 2010

Ciao a tutti, ieri sera sono finalmente riuscito a riprendere in mano un vecchio (fallimentare) progetto: Arduino Serial. Mesi fa, facendo degli acquisti su un noto negozio online di ciarpame elettronico, mi aggiudicai una scheda Arduino Serial PCB, ossia la schedina stampata per montare Arduino con la porta seriale.

Arduino Serial 2.0a PCB

Arduino Serial 2.0a PCB

Il simpatico portale di ecommerce, analizzando la mia scelta della schedina, mi propose automaticamente un chip ATMEGA328, dotato di bootloader Arduino precaricato: vedendo questa simpatica associazione, non mi posi minimamente il problema ed aggiunsi all’ordine il suddetto chip. Dopo pochi giorni il tutto pervenne a casa e cominciai il montaggio dei vari componenti (racimolati dalle scorte o acquistati in vari negozi di Torino), giunto però alla fase di test, mi resi conto che l’IDE Arduino non prevedeva la possibilità di gestire una scheda Arduino Serial con a bordo un ATMEGA328:

Selezione delle schede su Arduino

Selezione delle schede su Arduino

Documentandomi (in ritardo) scoprii che impiegare l’ATMEGA328 è possibile, ma è necessario scrivere un’apposita sezione nella configurazione dell’IDE; il punto è che non volevo essere vincolato a troppi tricks, dovendo sempre cambiare file a mano perdendomi le modifiche con l’update dell’IDE, così regalai il 328 ad un amico (che aveva un Arduino Diecimila dotato di ATMEGA168) e mi procurai dalla Polonia un ATMEGA8 vergine.

L'ATMEGA8 e la selva di componenti

L'ATMEGA8 e la selva di componenti

Il problema a questo punto è stato di trovare un modo per programmare l’ATMEGA8 in modo tale che potesse accettare i segnali giunti attraverso l’interfaccia seriale.

La DB9, l'alimentazione e il 7805

La DB9, l'alimentazione e il 7805

Cercando su internet, mi imbattei in un howto, scritto direttamente dai creatori di Arduino, che spiega dettagliatamente la procedura per la programmazione del chip tramite ICSP. Non essendo io un elettronico, spendere diverse decine di euro per un programmatore di microchip Atmel mi è sembrato inopportuno, quindi, sempre seguendo la succitata guida, ho optato per costruire un programmatore parallelo, come spiegato qui.
Lo schema di funzionamento è piuttosto semplice.

Schema del programmatore ICSP via Parallela

Schema del programmatore ICSP via Parallela

Utilizzando un cavo riciclato da un vecchio computer, si è trattato di fare sei sole saldature a stagno, una bella colata di colla a caldo per proteggere il tutto dai cortocircuiti e una scocca di plastica, per far apparire il tutto un po’ più professionale :-) .

La mia versione del programmatore ICSP

La mia versione del programmatore ICSP

Seguendo i passi descritti nei documenti di Arduino, ed utilizzando la comoda funzione di programmazione già pronta nell’IDE, l’intero procedimento è filato liscio. L’ultimo scoglio è stato quello di recuperare un cavo seriale adatto; Arduino Serial ha bisogno di un cavo DB9-DB9 dritto, non vanno quindi bene i cavi comunemente in dotazione ai modem (che in realtà sono cavi incrociati, chiamati null-modem). Scavando in vari scatoloni pieni di rottami sono riuscito a recuperare un cavo adatto e, mediante il tester, ho verificato che i piedini fossero connessi 1-1.

Seriale dritto DB9-DB9 femmina-femmina

Seriale dritto DB9-DB9 femmina-femmina

Purtroppo la mia mania di smanettamento mi ha fatto tralasciare un importante particolare: il cavo a mia disposizione è un femmina-femmina. Da una parte va bene perché le porte seriali (quelle che DOS\Windows chiama COM) sono di tipo maschio (quelle con i piedini, per intenderci), ma sull’Arduino saldai un connettore DB9 femmina! :-( Fortunatamente in un cassetto dell’ufficio ho scovato un gender changer DB9; se vi doveste trovare nella stessa situazione, fate attenzione a non utilizzare un changer null modem, altrimenti la scheda e il computer saranno incapaci di comunicare.

DB9 Gender Changer

DB9 Gender Changer

Naturalmente tutti questi pasticci potevano essere evitati facendo un’oculata scelta dei componenti prima di mettersi al saldatore, ma, si sa, smanettone è sinonimo di pasticcione :-D . Comunque, ecco come appare il cavo alla fine.

Cavo seriale dritto DB9-DB9 maschi-femmina

Cavo seriale dritto DB9-DB9 maschi-femmina

Per finire un’indicazione importante: Arduino Serial non resetta la connessione via software, questo si traduce nel fatto che se volete uploadare il vostro codice dall’IDE alla schedina (mentre questa è accesa) dovete operare, manualmente, un piccolo trucco:

  1. Compilate il vostro codice sull’IDE e verificate che tutto sia a posto
  2. Controllate che Arduino Serial sia connesso, alimentato e che l’IDE selezioni la scheda corretta (Arduino NG or older w/ ATmega8)
  3. Tenete premuto il tasto reset sulla scheda Arduino
  4. Avviate la compilazione e l’upload del codice
  5. Quando l’IDE vi restituirà, nella finestra di output/debug, il messaggio: Binary sketch size: #### bytes (of a #### byte maximum)
    rilasciate il tasto reset.

Se eseguirete tale procedura correttamente, la scheda Arduino effettuerà il reboot, il bootloader per qualche secondo ascolterà la porta RS323 in attesa di un nuovo codice, l’IDE spedirà correttamente il binario e tutto funzionerà perfettamente. Nelle nuove versioni di Arduino tutto questo pasticcio non esiste perché quando l’IDE vuole spedire il codice, chiede alla schedina di ripartire e il bootloader dell’ATMEGA si troverà il nuovo firmware in attesa di essere caricato.

Per concludere alcune piccole considerazioni (personali):

  • Arduino Serial, soprattutto utilizzando un ATMEGA8, è molto più limitato e macchinoso da utilizzare di una più recente versione USB.
  • Non costa molto di meno rispetto ad un Arduino USB bello e fatto, quindi se si vuole risparmiare questa è sicuramente la strada sbagliata.
  • Sebbene la piedinatura del Serial sia compatibile con le nuove schede e, di conseguenza, anche con gli shield, il fatto che si vadano ad utilizzare componenti discreti rende lo spazio sopra la board inutilizzabile, meglio mettere eventuali espansioni sotto.
  • Essendo la porta seriale non alimentata, Arduino Serial necessita di un’alimentazione esterna per funzionare (questo vale anche per la fase di programmazione).

Detto questo, se vi chiedete perché, avendo a disposizione dei comodi Arduino 2009 o (recentemente) l’Arduino UNO, mi sono lanciato in questa ennesima follia… beh:

  1. perché si poteva fare :-P
  2. perché voglio provare questo aggeggio su computer veramente vecchi, privi di porte USB :-)

Alla prossima folle autocostruzione.

Simone





Cavo RS232 – RJ45

23 07 2009

Per collegare la Realys Box al PC mi sono procurato un cavo seriale della Cisco DB9 da un lato, RJ45 dall’altro.

Cavo RS232 Cisco

Cavo RS232 Cisco

Con un tester ho verificato la seguente piedinatura:

PIN4 Blu
PIN6 Marrone
PIN3 Verde
PIN5 Giallo
PIN2 Fucsia
PIN8 Nero
PIN5 Arancio

Cisco RJ45 plug

Cisco RJ45 plug

Simone








Iscriviti

Get every new post delivered to your Inbox.