Aggiornare bootloader ATmega328P Nano con Arduino Uno e connettore ISP

Aggiornare bootloader ATmega328P Nano con Arduino Uno e connettore ISP

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)

Aggiornare bootloader ATmega328P Nano con Arduino Uno e connettore ISP 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

Aggiornare bootloader ATmega328P Nano con Arduino Uno e connettore ISP 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 AmazoneBay)
  • Arduino UNO Rev3: (acquistabile su AmazoneBay)
  • Jumper Wire: cavetti (acquistabili su AmazoneBay)
  • 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.

Aggiornare bootloader ATmega328P Nano con Arduino Uno e connettore ISP target e programmer

Collegamenti

Il connettore ISP ha una piedinatura standard ma può essere saldato sulle varie schede in modo differente.
Questa è la piedinatura:

Aggiornare bootloader ATmega328P Nano con Arduino Uno e connettore ISP piedinatura isp

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

Aggiornare bootloader ATmega328P Nano con Arduino Uno e connettore ISP connettore arduino nano

Sulla board Arduino UNO Rev3 il piedino 1 è contrassegnato con un cerchietto bianco

Aggiornare bootloader ATmega328P Nano con Arduino Uno e connettore ISP connettore arduino uno

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

Aggiornare bootloader ATmega328P Nano con Arduino Uno e connettore ISP dettalio connettore arduino uno

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 collegamenti fritzing


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

Aggiornare bootloader ATmega328P Nano con Arduino Uno e connettore ISP scheda programmer

Selezioniamo la porta su cui è collegata la scheda Programmer da Strumenti -> Porta -> COM7 (N.B.: il nome della porta potrebbe essere differente)

Aggiornare bootloader ATmega328P Nano con Arduino Uno e connettore ISP porta programmer

Impostiamo la board Programmer in modo da poterla utilizzata come programmatore da Strumenti -> Programmatore -> Arduino as ISP

Board Programmer

Selezioniamo lo sketch che si occuperà di effettuare il flash del bootloader da File -> Esempi -> ArduinoISP

selezione sketch ArduinoISP

Carichiamo il codice ArduinoISP sulla board Arduino Programmer cliccando sul pulsante Carica

Carica sketch ArduinoISP

Al termine della carica dello sketch vedremo un messaggio in basso all’IDE che ci conferma l’avvenuta carica

Aggiornare bootloader ATmega328P Nano con Arduino Uno e connettore ISP carica ArduinoISP completata

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

Selezione board target

e il processore da Strumenti -> Processore -> ATmega328P

Selezione processore target

Per avviare il flash del bootloader clicchiamo su Strumenti -> Scrivi il bootloader

Aggiornare bootloader ATmega328P Nano con Arduino Uno e connettore ISP scrittura bootloader

L’operazione di flash del bootloader durerà qualche secondo. Se tutto è andato correttamente ci verrà mostrato un messaggio dell’avvenuta scrittura

Conferma scrittura bootloader

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.


Aggiornare bootloader ATmega328P Nano con Arduino Uno e connettore ISP

Problemi e soluzioni

Come segnalato nei commenti del post se viene utilizzato un sistema operativo diverso da Windows, in fase di aggiornamento del bootloader, si potrebbe verificare questo errore

Per risolverlo dovrebbe essere sufficiente inserire un condensatore elettrolitico da 10uf collegando il piedino positivo del condensatore al PIN Reset, e il piedino negativo al PIN GND di Arduino UNO (Programmer).

Se riscontrate delle anomalie durante l’aggiornamento del bootloader non esitate ad utilizzare i commenti per segnalarli.

A presto 😉

27 commenti su “Aggiornare bootloader ATmega328P Nano con Arduino Uno e connettore ISP”

  1. 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?

    1. 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?

      1. Sono riuscito a risolvere sotto windows, con il Mac non ne voleva di scrivere il bootloader. Grazie.

      2. 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.

  2. 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

    1. 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 😉

  3. Ciao ho seguito la tua guida ma mi da questo errore:

    avrdude: Yikes! Invalid device signature.
    Double check connections and try again, or use -F to override
    this check.
    Errore durante la scrittura del bootloader

    Come posso risolvere?
    Grazie in anticipo!

    1. Ciao Filippo,
      scusami se ti rispondo solo ora.
      Premetto che ho testato la procedura descritta nel post su 3 Arduino Nano CH340G senza problemi (utilizzando come board Programmer un Arduino UNO Rev 3 originale e come sistema operativo Windows 10).
      Per quanto riguarda l’errore che stai riscontrando prova a controllare i collegamenti: potrebbe capitare che i jumper utilizzati non siano tutti funzionanti. Assicurati che non siano danneggiati, magari utilizzando un tester, e prova a ripetere tutta la procedura del post (compreso i collegamenti tra le due board).

  4. Ciao, inserendo un condensatore elettrolitico di 10uF (microfarad) tra il PIN RESET ed il PIN GND di Arduino UNO (il pin con segno (-) del condensatore va messo nel GND), ho risolto il problema segnalato da TDARIO che avevo pure io usando un MacBook Air con OSX.

  5. Buona sera ho un problema con un kit preso su amazon:
    KEYESTUDIO Kit Robot Mini Tank con Evitare di ostacolo a ultrasuoni, Scheda R3, Modulo Bluetooth Lultimo Gioco Intelligente ed Educativo per Bambini for Arduino Uno
    Il software IDE non mi carica i programmi resta fermo in STO CARICANDO…..poi dopo un paio di minuti
    mi esce la scritta :Errore durante il caricamento dello sketch.
    cosa posso fare per far funzionare tutto?
    grazie mille
    Ronny

    1. Ciao Ronny,

      per provare a risolvere il problema sarebbe meglio avere altre informazioni:
      – che versione di Arduino IDE stai utilizzando (e su quale sistema operativo: Windows, Linux, ecc..)?
      – l’errore ti viene visualizzato solo in fase di caricamento da Arduino IDE alla scheda Arduino o anche se effettui una verifica del codice dall’IDE?
      – gli sketch hanno bisogno di librerie particolari da installare prima di caricarli sulla board?
      – hai già provato a caricare gli sketch su un’altra scheda Arduino?

      Riesci a postare l’errore completo che mostra l’IDE?

  6. Ti ringrazio molto del tutorial, semplice ed efficacie, ho sistemato tante schede nano che avevo incasinato con tentativi di bootloader 🙂

    CI sai dare anche un consiglio sul come programmare l atmega 328p SMD in modalità standalone ?

    grazie ancora

    Francesco

  7. Grazie e complimenti per il tutorial , avevo 5 schedine nano nuovissime con bootloader indecifrabile , recupero perfetto !
    Giorgio

  8. Thank you very much for your instructions on how-to burn the bootloader on a non-Windows machine. That helped me a lot. I thought my Ender 3 board was dead.

    1. Ciao Mauro,
      non ho provato personalmente ad aggiornare il bootloader su una board Arduino Nano con chip FTDI, ma non dovrebbero esserci problemi.
      FTDI e CH340G sono due adattatori USB che permettono la comunicazione seriale (trovi altre info su Wikipedia a questo link).
      Nella guida, la board Arduino Nano, viene collegata tramite il connettore ISP (ICSP) bypassando così il chip CH340G.

  9. Ciao a tutti, il mio problema è diverso ma pensavo di aggiornare il bootloader per vedere come si comporta. Praticamente il mio nano non fa il suo dovere dopo un blackout, devo obbligatoriamente premere il reset (attenzione mi riferisco al nano economico) ma ripeto non ho problemi o errori in fase di caricamento…
    grazie

  10. Ciao Lele, una domanda, è possibile riprogrammare arduino uno atmega328p con uno stesso arduino? ne ho uno in cui i led ON e L restano accesi ma non accetta nessuno sketc, mentre l’altro ovviamente è perfettamente funzionante, tutto questo è possibile utilizzare i collegamenti che sono fatti per arduino nano?
    grazie Claudio

  11. Ciao, io ho IDE 1.8.5 ma non c`e’ la voce “Processore ATmega328P(old bootleader) ma solo ATmega328P, posso usare questo per aggiornare un Arduino nano?. IN attesa Saluti.

    1. Ciao Sergio,
      l’aggiornamento del bootloloader dovresti riuscire a farlo senza problemi.
      Prova comunque prima ad aggiornare le librerie, e le schede, o ad aggiornare la versione dell’IDE passando ad una più recente.

      1. Ciao, il bootleader lo ho aggiornato con successo, pero` non riesco ad installare il driver CH431 per il NANO, mi dice sempre “driver install failure”. In gestione dispositivi non me lo riconosce e se faccio aggiorna DRIVER mi dice che il miglior drive e` gia installato. Se disinstallo il driver e poi cerco di caricare il CH431 mi scrive “the drive is successfully preinstaller in advance”. A questo punto non so piu` cosa fare. HO Win 8.1 PRO. Saluti.

  12. Ciao Lele,
    ho un Arduino nano cinese.
    Sono in W10 con IDE aggiornato alla 2.0.3
    Ho seguito la procedura, chiarissima, come descritta.
    Il programmatore pare non riesca a cancellare il vecchio bootloader e mi invia questo messaggio:
    avrdude: Expected signature for ATmega328P is 1E 95 0F
    Double check chip, or use -F to override this check.
    Impossibile cancellare il chip: errore durante il caricamento: exit status 1
    Come posso risolvere?
    grazie

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *