Se vi siete imbattuti nell’errore “avrdude: stk500_getsync() Errore durante il caricamento dello sketch“, durante il caricamento di un qualsiasi sketch, è semplicemente perchè il chip ATmega328P della vostra board non ha il bootloader aggiornato. In questo post vedremo come Aggiornare bootloader ATmega328P Nano con Arduino Uno e connettore ISP.
Aggiornare bootloader ATmega328P Nano con Arduino Uno e connettore ISP
Come anche spiegato sul sito di Arduino, è stato migliorato il bootloader per quanto riguarda la programmazione dell’ATmega328P tramite Arduino IDE. l’unico problema è che, per poter essere compatibile con l’IDE, bisogna aggiornare il bootloader.
Resta comunque possibile caricare gli sketch sui microcontrollori non aggiornati selezionando, dall’IDE, Strumenti -> Processore -> ATmega328P (old bootloader)
Questo è il messaggio di errore che viene visualizzato in fase di caricamento di uno sketch su un microcontrollore con l’ATmega328P non aggiornato:
Materiale occorrente
In questa guida vedremo come aggiornare una board Arduino Nano tramite Arduino UNO Rev3 utilizzando i connettori ISP presenti su entrambe le schede:
- Arduino Nano ATmega328P CH340G: lo abbiamo già utilizzato per altri progetti (acquistabile su Amazon – eBay)
- Arduino UNO Rev3: (acquistabile su Amazon – eBay)
- Jumper Wire: cavetti (acquistabili su Amazon – eBay)
- Arduino IDE: ambiente di sviluppo per programmare il micro controllore Arduino (per l’installazione e la configurazione vi rimando a questi post)
Per comodità chiameremo la board Arduino Nano, quella con il bootloader da aggiornare, Target e Arduino UNO Rev3 Programmer.
Collegamenti
Il connettore ISP ha una piedinatura standard ma può essere saldato sulle varie schede in modo differente.
Questa è la piedinatura:
Per questioni di spazio le indicazioni dei 6 piedini non vengono stampate tutte ma viene indicato solo il piedino 1 (MISO). Una volta individuato il piedino 1 basta guardare lo schema dell’immagine precedente per individuare la disposizione degli altri piedini del connettore.
Sulla board Arduino Nano, utilizzata in questa guida, il piedino 1 è evidenziato con il numero 1
Sulla board Arduino UNO Rev3 il piedino 1 è contrassegnato con un cerchietto bianco
N.B. sulla board Arduino UNO sono presenti due connettori ISP, quello che andremo ad utilizzare per aggiornare il bootloader è quello collegato al chip ATmega, come evidenziato nell’immagine seguente
Procediamo con il collegamento dei piedini dei connettori ISP, tra le due schede, in questo modo:
COLLEGAMENTO PIEDINI | ||
---|---|---|
Arduino Nano (Target) | Arduino UNO Rev3 (Programmer) | Jumper Wire |
1 MISO (ISP) | 1 MISO (ISP) | Blu |
2 VCC (ISP) | 2 VCC (ISP) | Rosso |
3 SCK (ISP) | 3 SCK (ISP) | Verde |
4 MOSI (ISP) | 4 MOSI (ISP) | Giallo |
5 RESET (ISP) | D10 | Viola |
6 GND (ISP) | 6 GND (ISP) | Nero |
Prestare attenzione al piedino 5 RESET, del connettore ISP, della board Target (Arduino Nano) che deve essere collegata sul piedino D10 della board Programmer e non al piedino 5 RESET presente sul connettore ISP.
Questo è lo schema di collegamento realizzato con Fritzing (Arduino UNO Rev3 Programmer a sinistra e Arduino Nano Target a destra)
Aggiornare bootloader ATmega328P Nano con Arduino Uno e connettore ISP
Aggiornamento chip
Una volta effettuati i collegamenti tra le due board, colleghiamo la scheda Programmer (Arduino UNO Rev3) al nostro PC tramite cavo USB e avviamo Arduino IDE.
Selezioniamo da Strumenti -> Scheda -> Arduino/Genuino Uno la voce relativa alla board che stiamo utilizzando come Programmatore
Selezioniamo la porta su cui è collegata la scheda Programmer da Strumenti -> Porta -> COM7 (N.B.: il nome della porta potrebbe essere differente)
Impostiamo la board Programmer in modo da poterla utilizzata come programmatore da Strumenti -> Programmatore -> Arduino as ISP
Selezioniamo lo sketch che si occuperà di effettuare il flash del bootloader da File -> Esempi -> ArduinoISP
Carichiamo il codice ArduinoISP sulla board Arduino Programmer cliccando sul pulsante Carica
Al termine della carica dello sketch vedremo un messaggio in basso all’IDE che ci conferma l’avvenuta carica
A questo punto, tenendo sempre collegata al PC la scheda Programmer (Arduino UNO Rev3), configuriamo l’IDE per poter permettere il flash del bootloader sulla board Target.
Selezioniamo la board Target da Strumenti -> Scheda -> Arduino Nano
e il processore da Strumenti -> Processore -> ATmega328P
Per avviare il flash del bootloader clicchiamo su Strumenti -> Scrivi il bootloader
L’operazione di flash del bootloader durerà qualche secondo. Se tutto è andato correttamente ci verrà mostrato un messaggio dell’avvenuta scrittura
Ora non ci resta che testare se il bootloader appena aggiornato funziona.
Scolleghiamo le due schede, colleghiamo Arduino Nano al pc e avviamo l’IDE, selezioniamo il processore da Strumenti -> Processore -> ATmega328P, e proviamo a caricare il codice blink come mostrato in questo post.
Se avete riscontrato delle anomalie durante l’aggiornamento del bootloader, o degli errori nel post, non esitate ad utilizzare i commenti per segnalarmeli.
A presto 😉
Ciao ho provato a seguire la tua guida ma mi da errore.
avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x14
avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x01
avrdude: stk500_initialize(): (a) protocol error, expect=0x14, resp=0x10
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
avrdude: stk500_disable(): unknown response=0x12
Errore durante la scrittura del bootloader
Ora se provo ad alimentare il nano da solo mi si accende il led L e non riesco a caricare nessuno sketch, anche segnando “ATmega328P (Old Bootloader)”. Cosa posso fare?
Ciao TDARIO, premetto che ho aggiornato 3 Arduino Nano CH340G con questa procedura senza problemi.
Dal messaggio di errore sembra un problema di collegamento tra i due connettori ISP.
Hai provato a rifare la procedura controllando bene i collegamenti?
Qual’è la versione dell’IDE che stai utilizzando (io ho utilizzato la 1.8.5) e su quale sistema operativo?
Sono riuscito a risolvere sotto windows, con il Mac non ne voleva di scrivere il bootloader. Grazie.
Bene. In effetti ho testato la procedura solo su Windows 10.
Non appena ne avrò l’occasione proverò a trovare una soluzione funzionante anche su Mac.
A presto.
sei un grande nella tua semplicita di espressione hai reso possibile anche a me di recepire il procedimento per il boot di nano che non ho mai fatto scuole di elettronica faccio l’artigiano GRAZIE Giuseppe
Ciao Giuseppe,
grazie a te per aver visitato il mio blog.
Mi fa piacere che questo post ti sia stato utile. Cerco di fare del mio meglio per rendere ‘semplici’ le guide che pubblico.
A presto 😉