CONTACT INFORMATION
Monday to Friday from 8:00 to 17:30
+55 11 3522-7626 / vendas@robocore.net
Back
to top

Gravando Bootloader no Arduino

This tutorial is not available in English



Este tutorial é baseado no tutorial: Using an Arduino as an AVR ISP (In-System Programmer)

Veremos neste tutorial como utilizar um Arduino como AVR ISP. O que isso significa? Basicamente que poderemos gravar o bootloader no ATMega que está em uma Placa Arduino. ISP (In-System Programmer) é a capacidade de alguns dispostivos de lógica programável, como o Arduino, de ser programado quando já estão em um sistema, ou seja, não precisam que seu chip seja programado anteriomente a instalação do sistema.

Para este tutorial é necessário o uso de dois Arduinos:
· Arduino de Interface: será conectado ao computador
· Arduino alvo: placa a ser gravado o Bootloader


Para utilizar sua placa Arduino para gravar o bootloader em um AVR, você precisará seguir os seguintes passos:

· Primeiramente vamos carregar um programa no Arduino de Interface (a placa que já tem bootloader) e somente depois será feito o circuito para gravar o BootLoader no outro Arduino.
Conecte a placa de interface ao computador, abra a IDE do Arduino e acesse: Arquivo > Exemplos > ArduinoISP.
Nota: caso esteja na versão 1.0 da IDE você deve alterar uma linha no código. Ache na função heartbeat() a linha delay(40) e mude para delay(20).


· Selecione a Placa Programadora (que está conectada ao computador).
Vá em: Ferramentas > Placa: > "Modelo do seu Arduino".


· Selecione a Porta COM correspondente ao seu Arduino.
Vá em: Ferramentas > Porta: > "COMx".



· Faça o Upload do Programa no seu Arduino.



· Conecte as Placas Arduino como abaixo.
	· Os pinos 5V, GND, 11, 12 e 13 de ambas as placas devem estar interligados
· O pino 10 da placa que você gravou o programa anteriormente deve estar ligado ao pino de Reset da placa que você deseja gravar o bootloader
Nota: Caso não funcione no Arduino UNO, adicione um Capacitor de 10uF entre o Reset e o Ground.
Nota²: A conexão só funcionará em placas onde os sinais do SPI são indicados por esses pinos descritos. Para placas onde isso não é possível como a Leonardo(32u4) os sinais de SPI devem ser conectados no conector ISP.(Confira no final do tutorial a conexão).


· Selecione o Modelo do Arduino a ser gravado o Bootloader.
Vá em: Ferramentas > Placa: > "Modelo do seu Arduino".


· Mude o Programador para "Arduino as ISP".
Vá em: Ferramentas > Programador: > Arduino as ISP.


· Grave o BootLoader na Placa.
Vá em: Ferramentas > Gravar BootLoader.



· Pronto, está gravado o BootLoader conforme a imagem abaixo.



Abaixo segue a pinagem do Header do ICSP, uso obrigatório na Leonardo(ATMega32u4) e opcional caso esteja utilizando Arduino Uno/BlackBoard(ATMega328), onde:
  • VCC no VCC
  • GND no GND
  • D10 no RST
  • D11 no MOSI
  • D12 no MISO
  • D13 no SCK




Para fazer comentários é necessário estar logado. Efetuar login.

Você ainda nao é cadastrado? Cadastre-se agora!


guistriquer
date Enviado: 2020-05-21 16:34:13
Eu tenho um arduino MEGA e um arduino Uno, quero deixar o uno com bootloader ativado, quais conexções devo usar para ligar o Uno no MEGA nesse caso?

Francois
date Enviado: 2020-05-21 17:44:27
guistriquer
Você quer gravar usar a placa Mega para gravar o bootloader na placa Uno? A base do procedimento é igual: grave o programa "ArduinoISP" na placa gravadora; conecte os sinais de SPI (SCK <> SCK, MISO <> MISO, MOSI <> MOSI), a alimentação (5V e GND) e o pino de reset (D10 da gravadora no Reset da gravada); selecione o modelo da placa que será gravada; selecione o programador e execute a gravação do bootloader pela IDE.

guistriquer
date Enviado: 2020-05-21 17:48:27
guistriquer
Pergunta... um tanto idiota (sou leigo). o bootloader deve estar ativado na placa gravadora?

guistriquer
date Enviado: 2020-05-21 17:54:45
guistriquer
desculpe minha ignorancia, não querendo abusar da sua boa vontade mas ja abusando... pode me dizer quais são as conexões SPI? onde ligo elas? qual é o pino reset do Uno?

Francois
date Enviado: 2020-05-21 17:55:04
guistriquer
O bootloader é o firmware que permite que você grave os códigos na placa pela porta USB. Ele não precisa estar gravado na placa gravadora, pois o importante é que a placa esteja com um programa nela que permita o carregamento do bootloader na placa gravada. Todavia, o bootloader na gravadora te ajuda para programá-la com o código "ArduinoISP".
Lembrando que as placas Arduino são vendidas já com o bootloader, pois são gravadas pela porta USB.

guistriquer
date Enviado: 2020-05-21 17:55:46
guistriquer
desculpe minha ignorancia, não querendo abusar da sua boa vontade mas ja abusando... pode me dizer quais são as conexões SPI? onde ligo elas? qual é o pino reset do Uno?

Francois
date Enviado: 2020-05-21 18:07:41
guistriquer
Segue um link sobre a conexão SPI nos Arduinos: https://www.arduino.cc/en/Reference/SPI
Na segunda tabela é possível observar quais são os pinos associados aos diferentes modelos. Por exemplo, o pino 51 da placa Mega é o sinal MOSI. A partir daí, você consegue fazer as conexões de SPI entre as duas placas (SCK <> SCK, MISO <> MISO, MOSI <> MOSI). Já para o reset, o pino correspondente está indicado com o texto RESET ou RST ao lado dele.

www.ezequieljs
date Enviado: 2020-04-25 11:19:35
Cara valeu fico muito grato, o meu queimo apenas a entrada usb agora estou programando ele só assim. Mais nao deu com o programador arduinoisp ai mudei para o arduinoisp.org e deu tudo certo.

Giovanni5
date Enviado: 2020-04-27 08:31:11
www.ezequieljs
A gravação de código por bootloader é uma opção para estes casos, porém é necessário usar uma placa da plataforma Arduino dedicada para isso. Uma solução mais indicada para esses casos é a utilização do módulo FTDI (https://www.robocore.net/loja/arduino/placa-ftdi), que foi desenvolvido justamente para converter a comunicação USB do computador em Serial UART das placas Arduino, sendo muito recomendado para a gravação de código destas placas.

odiloluckemeier
date Enviado: 2019-09-04 13:24:28
Eu tenho dois arduino leonardo, um com bootloader e outro sem, eu consigo fz bootloader no outro usando o mesmo modelo de arduino pq daí vou usar um leonardo pra fz bootloader em outro leonardo ???

Giovanni5
date Enviado: 2019-09-04 13:36:16
odiloluckemeier
Sim, é possível gravar o bootloader de uma placa Leonardo para outra placa Leonardo, porém é obrigatório o uso dos pinos ICSP. Caso você tenha dúvidas sobre como realizar essa gravação, você pode utilizar a discussão a seguir como base para esse procedimento, https://forum.arduino.cc/index.php?topic=332158.0 . Caso tenha dúvidas sobre a montagem, um dos comentários possui, em anexo, uma imagem demonstrando como fazer a conexão corretamente.

eduardo8
date Enviado: 2019-08-29 09:09:11
Obrigado pela resposta. Só mais uma pergunta: as duas placas precisam estar sendo alimentadas pela entrada USB?

Giovanni5
date Enviado: 2019-08-29 09:13:08
eduardo8
Não é necessário, já que a placa que gravará o bootloader já está alimentando a outra placa através dos pinos 5 V e GND, como na imagem do tutorial.

eduardo8
date Enviado: 2019-08-28 17:33:32
Ola, tentei seguir o procedimento, mas depois de tudo conectado e ligar o cabo USB no micro, os dois Arduino acendem mas apagam (em fade) logo em seguida. Alguma dica?

Giovanni5
date Enviado: 2019-08-29 09:05:21
eduardo8
Reveja a ligação elétrica montada e se algum componente esquenta durante esse apagar dos LEDs, é possível que haja alguma ligação em curto que está causando o desligamento das placas. Além disso, certifique-se que ambas as placas estão funcionando corretamente.

christopher.ferreira
date Enviado: 2019-08-17 18:12:37
Para carregar o bootloader em um Arduino nano, sigo as mesmas instruções?

Giovanni5
date Enviado: 2019-08-19 09:24:42
christopher.ferreira
Sim, as conexões para gravação do bootloader em uma placa da plataforma Arduino Nano são as mesmas

anajulia.floriano
date Enviado: 2019-08-06 03:42:28
O que fazer se durante a gravação do bootloader ocorre um erro de device signature (avrdude: Device signature = 0x000000) como se o programador (UNO) não estivesse reconhecendo a placa a ser programada? (Todas as conexões foram checadas várias vezes)

Giovanni5
date Enviado: 2019-08-06 11:40:44
anajulia.floriano
Você está tentando gravar o bootloader de uma placa da plataforma Arduino UNO para outra placa UNO? Para gravar o bootloader em outras placas através de uma placa UNO, o procedimento é diferente.  Caso você esteja gravando o bootloader em um ATMEGA328 conectado em uma protoboard, por exemplo, é necessário criar um circuito para a gravação. Caso seja o seu caso, a gravação de ATMEGA fora da placa, talvez o tutorial a seguir possa te auxiliar com esse problema, https://arduino-projects-free.blogspot.com/2018/04/atmega328p-pu-avrdude-device-signature.html .

lourivalspires
date Enviado: 2019-04-26 08:37:05
PAra grava o bootloader em um ARDUINO MEGA a partir de ARDUINO UNO as ligações são as mesma ?

Giovanni5
date Enviado: 2019-04-26 10:27:36
lourivalspires
Para gravar o Bootloader para placas da plataforma Arduino MEGA através de placas Arduino UNO, é necessário alterar a conexão, conectando os pinos 13, 12 e 11 da placa UNO, aos pinos, 52, 50 e 51 da placa MEGA, respectivamente. Você pode observar o circuito de montagem com o link a seguir, http://arduino-er.blogspot.com/2016/06/arduin-uno-as-isp-to-burn-bootloader-to.html.