Buongiorno a tutti,
Tempo fà ho avuto la necessità di creare una piccola board per atmega328 capace di poter essere collegata ad una porta usb per emulare il funzionamento di una tastiera USB.
Ho dato una bella guardata in giro su internet e scopiazzando quà è là ho messo insieme una scheda che escludendo i connettori arriva si e no a 10 componenti, ha la porta usb direttamente connessa all'atmega328 , e con un apposito firmware caricato nel bootloader, è capace di essere programmata senza l'aggiunta di programmatore esterno, anche direttamente all'interno dell IDE di Arduino.
Allego anche uno zip contenente vario materiale , tra cui i file di Eagle , il firmware già compilato per il bootloader, i driver per windows e un file di supporto per agevolare la configurazione della board sull'ambiente Arduino.
Dettaglio del file MUCCAS.ZIP
- usbasp-windriver.2011-05-28.zip - Archivio contenente i driver di sistema per alcune versioni di windows
- boards_entry.txt - file con le linee da aggiungere al file boards.txt di arduino
- bootloader_license.txt - file di condizioni di licenza di Objective Development per il firmware del bootloader
- mega328p_12mhz.hex - file hex del bootloader usbasploader
- usb_stick.sch - file dello schema elettrico della scheda
- usb_stick.brd - file del circuito stampato della scheda
nota: MUCCAS (Multipurpose Usb Compatible Compact Atmega Stick)
P.S. - Per un acronimo migliorato ci vorrebbe l'aiuto di leo...
Il firmware in oggetto è USBaspLoader , basato sulla pluricriticata libreria V-USB della Objective Development .
In allegato c'è la versione giusta per poter essere caricata nel chip atmega328p per un clock di 12mhz (in futuro mi riprometto di provare anche a 16mhz, dicono che funzioni ugualmente ma non l'ho provato personalmente), e il file bootloader_License.txt che spiega esattamente le condizioni per l'utilizzo del software .
Colgo l'occasione per specificare che :
DECLINO OGNI RESPONSABILITA' PER UN UTILIZZO INAPPROPRIATO DI QUESTO SOFTWARE O DAL MANCATO RISPETTO DELLE NORME STABILITE DAL PRODUTTORE DELLO STESSO IN MATERIA ILLUSTRATE NEL CONTRATTO DI LICENZA.
Per la costruzione della scheda in oggetto , il passo principale consiste nella creazione del circuito stampato.
Prima di procedere all'assemblaggio , qualora non utilizziate lo zoccolo per l'atmega, è opportuno che procediate alla programmazione del bootloader col firmware fornito, altrimenti poi non avete modo di programmarlo se non dissaldandolo dalla scheda!
Una volta assemblato il tutto e verificate le connessioni si può procedere ad un veloce collaudo di massima in questo modo:
Verifica funzionale (Windows xp):
- Applicare il jumper jp6 (modalità programmazione abilitata)
- Connettere il cavo usb alla scheda e conseguentemente al pc.(non preoccupatevi se già dopo l'inserimento del cavo vi viene notificato un errore di 'Periferica Usb non riconosciuta')
- Premere il pulsante di reset a bordo della scheda.(a questo punto invece se vi viene notificato un errore di 'Periferica Usb non riconosciuta' potete preoccuparvi )
- Il pc a questo punto dovrebbe chiedervi i driver per il dispositivo (li trovate in allegato nello zip)
Installateli, se tutto è andato a buon fine in questo momento la vostra scheda verrà riconosciuta come un UsbAsp (potete controllare su gestione periferiche di windows xp , troverete una voce dell'albero principale denominata LibUSB-Win32 Devices con all'interno un nodo USBAsp)
- Fatto ciò possiamo dire che la scheda è pronta per essere programmata.
Nota: Mi scuso con gli utenti linux ma non ho potuto provare su questo sistema, ho effettuato prove solo su windows xp e windows7, di cui però non ho l'immagine.
Per rendere questa scheda visibile e programmabile dall'ambiente di Arduino si rende necessario aggiungere alcune righe all'interno del file di configurazione delle schede (boards.txt) affinchè l'ambiente sappia cosa e come programmarla.
Creazione entry nel file boards.txt di Arduino:
- Aprire il file boards.txt situato nella cartella ARDUINOFOLDER\hardware\arduino
- Con l'ausilio di un editor di testo e prestando attenzione a non commettere errori incollare il contenuto presente nel file boards_entry.txt (presente all'interno del file zip) alla fine del file e salvate.
Nota: Non è obbligatorio incollare le righe alla fine del file, basta che il contenuto venga incollato alla fine di un blocco già esistente, in maniera tale da avere in tutti i casi l'insieme di righe raccolto tra le due linee di cancelletti (#####) senza aver sputt...to tutto il resto! - Se avete l'IDE di Arduino aperto chiudetelo e riavviatelo, altrimenti non vedrete le modifiche appena effettuate
- Andate sul menu Tools/Boards e vedete se è presente la entry appena creata, se è visibile selezionatela e siete pronti per inviare sketch alla nuova scheda!!
A questo punto non rimane che testare la programmazione, munitevi di breadboard o collegate direttamente un led con resistenza al pin 6 del connettore jp2 (equivalente del pin 13 digitale di arduino, quello dove in genere si trova il led)
Programmazione della scheda:
- Inserire il jumper jp6 nella scheda
- Premere il pulsante reset
- Se non lo avete fatto prima andate su Tools/Boards e selezionate la vostra scheda
- Caricate lo sketch blink e premente il tasto Upload
- Se alla fine dell'upload non ci sono errori ed il led lampeggia avete eseguito tutto con successo!
Nota bene:
Non è necessario rimuovere il jumper a fine programmazione, il bootloader passerà automaticamente al programma caricato alla fine dell'upload.
Se si sconnette la USB, o semplicemente se si resetta la scheda , qualora vi sia il jumper inserito quest'ultima partirà sempre in modalità programmazione.
Quando non serve più programmare rimuovere il jumper jp6, la scheda ripartirà sempre puntando direttamente al programma caricato.
Se ci sono problemi fatemi sapere e proverò ad aiutarvi fin dove mi è possibile.
Saluti.
muccas.zip (410 KB)