Arduino standalone: caricare bootloader e sketch su ATmega328

Dopo aver letto come realizzare un Arduino stand alone su breadboard con un ATmega328 adesso dobbiamo vedere come caricare o meglio fare l’upload del bootloader e di uno sketch.

Innanzitutto dobbiamo sapere che per caricare uno sketch sul nostro ATmega328 non abbiamo necessariamente bisogno del bootloader precaricato perché adoperando un programmatore adatto per il nostro microcontrollore possiamo tranquillamente fare l’upload del nostro sketch, ma ci sono dei pro e dei contro, fare l’upload di uno sketch senza bootloader, la cosa positiva è che andiamo a risparmiare un po’ di memoria quindi i nostri sketch possono arrivare a qualche KB in più, di contro però perdiamo la possibilità di poter usare la seriale..

Per quanto riguarda i metodi di upload di uno sketch o del bootloader possiamo distinguere diverse modalità, ad esempio utilizzando un programmatore adatto per il nostro microcontrollore (che non tratteremo in questo articolo), un altro metodo è usare Arduino come programmatore caricando un sketch denominato ArduinoISP e quindi poi procedere con l’upload del bootloader o dello sketch sul microcontrollore.
Dobbiamo tenere ben presente che fare l’upload di uno sketch con la stessa procedura del bootloader lo sketch andrà a sovrascrivere il bootloader, ma possiamo procedere con due metodi diversi per evitare che ciò accada.
Il primo è togliere il microcontrollore dalla scheda Arduino e metterci sù il nostro ATmega328 standalone con il bootloader appena caricato (ma io questa procedura ve la sconsiglio perché andrete solo a danneggiare ATmega328 ed il socket di Arduino).
Un secondo metodo è quello di utilizzare un convertitore USB-Seriale (il metodo che io utilizzo e consiglio).
Ok!! Procediamo perché è molto più facile a farsi che a dirsi!!!

Collegate Arduino al pc e caricate lo sketch ArduinoISP indicato in figura in modo da trasformare temporaneamente il nostroArduino in un programmatore.

arduino_ISP

adesso selezioniamo Arduino as ISP come programmatore.

arduino_select_as_ISP

successivamente indichiamo come board Arduino Uno in modo da caricare il bootloader di Arduino Uno

select_arduino_uno

Ok!! Adesso scolleghiamo il nostro Arduino, chiudiamo l’IDE e procediamo con i collegamenti illustrati in figura tra Arduino ed il nostro ATmega328 stand alone

arduino_standalone_bootloader

Terminati i collegamenti, ricolleghiamo il nostro Arduino al pc e procediamo con il caricamento del bootloader sull’ATmega328 standalone

scrivi_bootloader

Perfetto, il nostro ATmega328 stand alone adesso è bello pronto con il bootloader caricato!!
Ma ricordate cosa abbiamo detto in precedenza????? Per caricare uno sketch e mantenere il bootloader dobbiamo staccare l’ATmega328 di Arduino e collegarci quello con il bootloader appena caricato e poi procedere al caricamento dello sketch come abbiamo sempre fatto!!!!

Adesso vediamo come poter caricare il nostro sketch sull’ATmega328 stand alone tramite un convertitore USB-Seriale mantendo quindi il bootloader e la seriale molto utile:

  • collegare il piedino DTR del convertitore con il piedino di reset dell’ATmega328 standalone tramite un condensatore da 100nF
  • collegare il piedino RX del convertitore con il piedino di TX dell’ATmega328 standalone
  • collegare il piedino TX del convertitore con il piedino di RX dell’ATmega328 standalone
  • collegare rispettivamente Vcc e Gnd

arduino_ftdi_collegamento_condensatore

fatti i collegamenti bisogna reimpostare nell’IDE il programmatore utilizzato di default per il caricamento degli sketch come da immagine:

avrisp

perfetto adesso possiamo caricare il nostro sketch mantenendo il bootloader caricato in precedenza!!!!

Se non avete un convertitore USB-Seriale e non volete rischiare di danneggiare Arduino l’unica cosa da fare per caricare il vostro sketch è utilizzare Arduino come programmatore ma questo comporterà la sovrascrittura del bootloader!!!!
Per procedere al caricamento dello sketch la procedura è identica a quella per il caricamento del bootloader e cioè, su Arduino dev’essere presente lo sketch ArduinoISP, poi bisogna fare i collegamenti, selezionare nuovamente Arduino as ISP come programmatore, e caricare il vostro sketch (ovviamente)
con una semplice accortezza: non dobbiamo cliccare cliccare su Scrivi bootloader ma bisogna cliccare su Carica con un programmatore come indicato in figura.

carica_tramite_un_programmatore
carica_con_programmatore

Errore: avrdude: stk500_getsync()
Quando si utilizza Arduino come programmatore, può succedere che durante il caricamento del bootloader o di un sketch salti fuori un errore di sincronizzazione:
avrdude: stk500_getsync()
Si risolve collegando un condensatore elettrolitico da 10µF tra RESET e GND di Arduino, facendo attenzione a collegare il piedino del condensatore contrassegnato dalla banda su GND e l’altro piedino ovviamente su RESET.

Convertitore USB-Seriale

convertitore_usb-seriale_front

convertitore_usb-seriale_retro

In fine vi consiglio anche di dare un’occhiata all’articolo dove è descritto come realizzare un Arduino stand alone 8 Mhz con il clock interno, senza quarzo esterno.

Per ogni dubbio scrivi pure un commento 😉
Ciao, alla prossima.