Pages: [1] 2 3 ... 7   Go Down
Author Topic: Economica stand alone programmabile USB  (Read 12785 times)
0 Members and 1 Guest are viewing this topic.
MC
Offline Offline
God Member
*****
Karma: 14
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-mr-green)
  • 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.31 KB - downloaded 106 times.)
« Last Edit: July 06, 2012, 10:02:32 am by niki77 » Logged

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Riva del Garda, TN / Forlì
Offline Offline
Edison Member
*
Karma: 8
Posts: 2246
Il piu' modesto al mondo
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

bello, appena mi ritorna la 2009 programmo l'atmega col nuovo firmware e butto tutto si breadboard, però vorrei la versione a 16MHz prima smiley-sad-blue
se non chiedo troppo non sarebbe possibile anche un bootloader per 8MHz se la vusb regge? sarebbe comodo per piccole applicazioni in cui non si voglia troppo "sbatti"...
Logged

Il nuovo forum italiano sull'elettronica: http://www.electroit.tk/ <--- Nuovamente online!

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 115
Posts: 7265
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se non ricordo male, o Leo o Lesto ci hanno sbattuto la testa più volte e poi hanno abbandonato il progetto.
A questo punto meglio una Leonardo minimale che contiene già la gestione della USB. Purtroppo il chip è solo SMD.  smiley-sad
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

MC
Offline Offline
God Member
*****
Karma: 14
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bello, appena mi ritorna la 2009 programmo l'atmega col nuovo firmware e butto tutto si breadboard, però vorrei la versione a 16MHz prima smiley-sad-blue
se non chiedo troppo non sarebbe possibile anche un bootloader per 8MHz se la vusb regge? sarebbe comodo per piccole applicazioni in cui non si voglia troppo "sbatti"...

Purtroppo ad 8mhz non penso si riesca a farla funzionare... troppo poco.
Il fw si trova compilato anche a 16 e 20mhz, se vuoi provarlo ci fai sapere come va, ma prima di addentrarti a fare esperimenti penso che sia utile avere una base di partenza a 12 che funziona, dopodichè cambi il quarzo e riprogrammi il bootloader con la versione adeguata.  smiley-wink
Logged

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 336
Posts: 23142
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Se non ricordo male, o Leo o Lesto ci hanno sbattuto la testa più volte e poi hanno abbandonato il progetto.
A questo punto meglio una Leonardo minimale che contiene già la gestione della USB. Purtroppo il chip è solo SMD.  smiley-sad
Io ci ho sbattuto la testa. Ma usavo un chip intermedio programmato con il firmware Avr-cdc.
Non ho mai provato l'USBaspLoader.
Logged


Offline Offline
Edison Member
*
Karma: 28
Posts: 2031
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se non ricordo male, o Leo o Lesto ci hanno sbattuto la testa più volte e poi hanno abbandonato il progetto.
A questo punto meglio una Leonardo minimale che contiene già la gestione della USB. Purtroppo il chip è solo SMD.  smiley-sad
Vabbè ci sono gli adattatori per gli smd , smd to dip.
Quote
Release 2009-08-22
Fixed a bug in the 12.8 MHz module: End Of Packet detection was made in the center between bit 0 and 1 of each byte. This is where the data lines are expected to change and the sampled data may therefore be unstable. We therefore check EOP only if bits 0 and 1 have both been read as 0 on D-.
Fixed a bit-stuffing problem in the 16 MHz module: If bit 6 was stuffed, the unstuffing code in the receiver routine was ca. 1 cycle too long. If multiple bytes had the unstuffing in bit 6, the error summed up until the receiver was out of sync.
Updated bits in Configuration Descriptor’s bmAttributes according to USB 1.1 (in particular bit 7, it is a must-be-set bit now).
Included option for faster CRC routine (thanks to Sławomir Fraś for the code).
Improved documentation about USB-IDs.
a quanto pare i bug per il 16mhz sono stati risolti dal 2009 almeno cosi vedo dal sito "ufficioso"
http://www.obdev.at/products/vusb/download.html
Logged

"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

Riva del Garda, TN / Forlì
Offline Offline
Edison Member
*
Karma: 8
Posts: 2246
Il piu' modesto al mondo
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

bello, appena mi ritorna la 2009 programmo l'atmega col nuovo firmware e butto tutto si breadboard, però vorrei la versione a 16MHz prima smiley-sad-blue
se non chiedo troppo non sarebbe possibile anche un bootloader per 8MHz se la vusb regge? sarebbe comodo per piccole applicazioni in cui non si voglia troppo "sbatti"...

Purtroppo ad 8mhz non penso si riesca a farla funzionare... troppo poco.
Il fw si trova compilato anche a 16 e 20mhz, se vuoi provarlo ci fai sapere come va, ma prima di addentrarti a fare esperimenti penso che sia utile avere una base di partenza a 12 che funziona, dopodichè cambi il quarzo e riprogrammi il bootloader con la versione adeguata.  smiley-wink
riesci a postare il firmware anche per 16MHz? (più che altro è perchè non ho quarzi da 12MHz a casa  smiley-lol )
a 8MHz sarebbe comunque carino tentare, ci sarebbe un buon risparmio energetico, si tradurrebbe nell'avere una scheda davvero piccola (se poi in smd sarebbe grande quanto una moneta da 2€)...
invece trovo scomodo il fatto che il bootloader faccia partire il firmware dopo la programmazione: se io ho ancora il jumper che porta a massa il pin ed io il pin lo ho in uscita come segnale alto creo un corto....
Logged

Il nuovo forum italiano sull'elettronica: http://www.electroit.tk/ <--- Nuovamente online!

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 336
Posts: 23142
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il firmware in formato sorgente è scaricabile dal sito del progetto USBaspLoader:
http://www.obdev.at/products/vusb/usbasploader.html
Logged


MC
Offline Offline
God Member
*****
Karma: 14
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il firmware in formato sorgente è scaricabile dal sito del progetto USBaspLoader:
http://www.obdev.at/products/vusb/usbasploader.html


...E già compilato per varie frequenze sul sito della Objective Development.
Logged

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Offline Offline
Edison Member
*
Karma: 28
Posts: 2031
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il firmware in formato sorgente è scaricabile dal sito del progetto USBaspLoader:
http://www.obdev.at/products/vusb/usbasploader.html

lo avevo postato anche io ma nessuno mi pensa   smiley-sad-blue
Logged

"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

0
Offline Offline
Edison Member
*
Karma: 24
Posts: 2319
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

grazie niki77, molto interessante!
Logged

Riva del Garda, TN / Forlì
Offline Offline
Edison Member
*
Karma: 8
Posts: 2246
Il piu' modesto al mondo
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il firmware in formato sorgente è scaricabile dal sito del progetto USBaspLoader:
http://www.obdev.at/products/vusb/usbasploader.html

lo avevo postato anche io ma nessuno mi pensa   smiley-sad-blue
scusa non avevo visto  smiley-sad-blue

beh allora aspetto l'arduino e vedo se va...

in caso come è possibile integrare poi la comunicazione seriale? (o è meglio apra un nuovo topic?)
Logged

Il nuovo forum italiano sull'elettronica: http://www.electroit.tk/ <--- Nuovamente online!

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 336
Posts: 23142
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

lo avevo postato anche io ma nessuno mi pensa   smiley-sad-blue
Non l'avevo notato. Hai messo il link dopo 50 righe di quote, si è perso un po'  smiley-razz
Logged


Offline Offline
Edison Member
*
Karma: 28
Posts: 2031
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

lo avevo postato anche io ma nessuno mi pensa   smiley-sad-blue
Non l'avevo notato. Hai messo il link dopo 50 righe di quote, si è perso un po'  smiley-razz
hahaha scherzavo , domani provo a realizzarlo anche io su bread e vediamo come va  smiley-mr-green
Logged

"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 8
Posts: 2955
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ma la metaboard no vi piaceva? infondo cos'ha in più, solo lo stadio di alimentazione...
Logged

Pages: [1] 2 3 ... 7   Go Up
Jump to: