SUPORTE TÉCNICO
De segunda à sexta pelo e-mail:
suporte@robocore.net
CENTRAL DE ATENDIMENTO
De segunda à sexta das 8:00 às 17:30
(11) 3522-7626 / vendas@robocore.net
Retornar
ao topo

Gravando Bootloader no Arduino



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!


jorge.cajango
date Enviado: 2021-04-17 00:48:41
Boa!!! Primeiramente, parabenizo-os pela excelência dos tutoriais e cortezia nas respostas.
Construí um pequeno painel de controle de luzes para meu simulador de voo no windows com um Leonardo. Acontece que no gerenciador de dispositivos do SO, o painel de luzes aparece, obviamente, com o nome de "Leonardo". É possível alterar esse nome via bootloader??? E se sim, onde encontro no código "ArduinoISP" onde alterar o referido nome??? Ou seria em outro script??? Desde já, muitíssimo obrigado pela eventual resposta.

Giovanni5
date Enviado: 2021-04-19 08:37:17
jorge.cajango
Aparentemente não é necessário realizar a regravação do bootloader da placa para alterar o nome de como ela é reconhecida no computador, e os usuários "trevorirwin" e "Dak0r" compartilharam duas opções distintas em um tópico no GitHub (https://github.com/MHeironimus/ArduinoJoystickLibrary/issues/14). Infelizmente não testamos essas opções, então não temos como garantir que funcione.

delanorocha
date Enviado: 2021-03-08 09:10:31
Olá, muito bom o site e tutoriais, parabéns.
Se puder me ajudar, estou com um mega2560 que aparece como ultimatepincontrol no windows, no ide não aparece a com nem deixa enviar nada.  Pelo que pesquisei preciso gravar o bootloader nele novamente. Eu tenho um Uno que está funcionando, é possivel gravar o bootloader do uno pro mega? Obrigado

Giovanni5
date Enviado: 2021-03-08 10:14:26
delanorocha
Você pode gravar o bootloader na sua Mega com uma UNO através do circuito da imagem a seguir, https://1.bp.blogspot.com/-369p0vA9eSo/V1NK1rlGftI/AAAAAAAATZI/QyG2WTfzIIc58ZLfBgdYvY4YqGVBFmYhwCLcB/s1600/Uno%2BArduino%2BISP%2Bto%2Bprogram%2BMega.png . Lembre-se de selecionar o modelo da placa que será gravada, antes de iniciar a gravação do bootloader.

delanorocha
date Enviado: 2021-03-08 11:28:25
delanorocha
Olá, obrigado,
Fiz conforme informado, deu Gravação bootloader concluida mas continua como ultimatepincontrol e nao aparece a "com " no ide.

delanorocha
date Enviado: 2021-03-08 11:46:18
delanorocha
Olá, obrigado,
Fiz conforme informado, deu Gravação bootloader concluida mas continua como ultimatepincontrol e nao aparece a "com " no ide.

Giovanni5
date Enviado: 2021-03-08 11:47:48
delanorocha
Como o problema parece estar somente no reconhecimento da placa no computador, pode ser que seja um problema de firmware ou driver do conversor USB/UART da sua placa. Recomendamos que você entre em contato direto com o seu fornecedor, para ter mais informações sobre esse problema e como corrigí-lo.

matheusvictor.avelin
date Enviado: 2021-02-17 15:42:50
Como gravar o bootloader de um Leonardo para o mega

Giovanni5
date Enviado: 2021-02-17 16:00:18
matheusvictor.avelin
A gravação de bootloader pela Leonardo exige o uso do conector ICSP da placa, portanto, para gravar uma Mega, você pode seguir basicamente o circuito do link a seguir, http://angel-soft.de/img/2019/flashing-leonardo-with-ATMega2560-as-programmer-sml.png . Apenas lembre-se que o capacitor entre o reset e o GND não é necessário, e que o reset do ICSP da Leonardo deve ir até o pino de reset da Mega, e não até o pino 10, como na imagem.

jaderaretakis
date Enviado: 2020-11-12 17:15:41
Boa tarde! Fiz um bootloader de um UNO pra um NANO e funcionou normal (gravação com sucesso). Logo em seguida, peguei um segundo Nano e repeti o procedimento (tirei só os fios do primeiro nano do ISP e coloquei no segundo nano “virgem”. Quando coloquei pra gravar, apareceu a mensagem de erro assinatura (Yikes!  Invalid device signature. Double check connections and try again, or use -F to override this check). Já mudei o arquivo avrdude.conf pra 0x1e 0x95 0x14 e NADA. Instalei o miniCore no IDE e gravei por ele e NADA. Alguma ideia?

Francois
date Enviado: 2020-11-12 18:28:14
jaderaretakis
Verifique que as duas placas são idênticas, inclusive o microcontrolador. O problema de assinatura inválida geralmente está associado ao uso de um microcontrolador diferente ou a um microcontrolador queimado.

jaderaretakis
date Enviado: 2020-11-13 14:37:45
jaderaretakis
No caso pra fazer o bootloader a placa do doador tem que ser igual a placa do receptor pra funcionar? Outra coisa, nesse primeiro nano que teve a gravação bem sucedida, percebi q pra ativar uma saída digital dele eu preciso dar um comando LOW ao invés de HIGH como eh o habitual no uno. O nano funciona invertido ou eu fiz alguma coisa errada ?

Francois
date Enviado: 2020-11-13 18:47:54
jaderaretakis
Você pode usar duas placas diferentes para fazer a gravação. O importante é programar o código "ArduinoISP" como "Arduino Uno" na sua placa Uno e depois selecionar o modelo "Arduino Nano" antes de gravar o bootloader na sua placa Nano. Além disso, deve-se prestar atenção nas conexões, pois os pinos de SPI variam entre os modelos.

A placa Nano deveria funcionar como a placa Uno, com o nível HIGH indicando 5 V no pino de saída. Às vezes o circuito externo pode estar invertido, por exemplo para acionar um LED com LOW ao invés de HIGH.

cargretter
date Enviado: 2020-09-22 08:55:19
Bom dia Giovanni. Eu estou utilizando um ATmega2560 em modo stand alone e consegui gravar o bootloader nele utilizando um Arduino Uno (utilizei este tutorial: https://www.instructables.com/id/ATMEGA2560-Standalone-Using-Arduino-UNO/). Após gravar o bootloader, passei um programa blink para testar se funcionou na placa do ATmega2560 e funcionou corretamente. Porém, quando eu tento gravar novamente algum outro programa, ele não reconhece, e então é preciso regravar o bootloader novamente e dai sim consigo gravar um novo programa nele. Você sabe o que esta sendo feito de errado?

Giovanni5
date Enviado: 2020-09-22 13:55:33
cargretter
Você alterou o valor de "high fuse" do bootloader da Mega, como mostrado no tutorial citado? Essa alteração é útil quando a ideia é gravar códigos utilizando sempre a comunicação SPI, como a gravação de bootloader. Entretanto, se a ideia é gravar o microcontrolador por UART, talvez seja melhor manter o valor configurado com o padrão.

AndreFeliciano
date Enviado: 2020-09-07 13:45:06
Giovanni,  ótima explicação. Eu tenho um Arduino Mega com defeito que acredito que seja o conversor USB interno Atmega 8U2. Eu consigo gravar no Mega algum sketch usando o ISP de um Arduino Uno e aproveitar o Mega??

Giovanni5
date Enviado: 2020-09-08 09:08:28
AndreFeliciano
Sim, você ainda consegue gravar códigos na sua Mega utilizando a UNO, porém seria necessário montar o circuito e seguir o processo de gravação de bootloader toda vez que você quiser carregar um código. Além disso não ser nada prático, também requer que você tenha sempre uma UNO disponível. Talvez a melhor opção para o seu caso seja a utilização de um módulo conversor USB/UART, como o módulo FTDI (https://www.robocore.net/loja/arduino/placa-ftdi). Assim você conseguirá carregar os códigos diretamente para a sua Mega sem precisar de uma UNO, e sem esse processo de gravação de bootloader.

AndreFeliciano
date Enviado: 2020-09-08 12:34:11
AndreFeliciano
Obrigado pelo retorno. Uma otima idéia a sua já que não estou conseguindo gravar por esse método. Antes de comprar um eu gostaria de testar para ter certeza. Vou tirar o Atmega do Uno e ligar o conversor USB do Uno para gravar o Mega. Consigo fazer isso?

Giovanni5
date Enviado: 2020-09-08 13:50:28
AndreFeliciano
Sim, você consegue fazer isso, apenas tome cuidado na hora de remover o ATmega328 da UNO, para não danificá-lo. Vale lembrar que, você terá de usar os pinos 0 e 1 (RX e TX) de ambas as placas para esse teste.

AndreFeliciano
date Enviado: 2020-09-08 16:09:22
AndreFeliciano
Valeu. Vou testar ainda hoje e coloco aqui o resultado.

AndreFeliciano
date Enviado: 2020-09-09 09:04:24
AndreFeliciano
Não deu certo. Primeiro eu tentei em um Uno generico, não gravou e nem pela USB grava mais. Vou pesquisar mais.

vitor.leal
date Enviado: 2020-08-11 16:27:30
Tem algum tutorial sobre gravar o bootloader em um atmega328p-pu utilizando o oscilador interno de 8MHz em uma protoboard usando usbasp e/ou avrdude? Ou sobre como remover o bootloader desse chip? Eu instalei o bootloader, rodei o chip em um circuito e ele funcionou bem, mas num segundo teste não rodou mais e também não consigo mais passar códigos para ele. Não sei se é um problema no bootloader, mas gostaria de tentar "reinstalar" ele.

Giovanni5
date Enviado: 2020-08-11 17:20:27
vitor.leal
Para "reinstalar" o bootloader, basta regravá-lo no microcontrolador, pois toda vez que o bootloader é gravado, o antigo é completamente apagado, e você pode fazer isso em modo "standalone" (sem componentes externos), seguindo o tutorial a seguir https://br-arduino.org/2015/05/arduino-bootloader-atmega-standalone.html . Entretanto, vale lembrar que, o oscilador interno do ATmega328P possui uma tolerância muito alta (em torno de 10%), portanto isso pode ser um problema para algumas aplicações.

Giovanni5
date Enviado: 2020-08-11 17:21:18
vitor.leal
Ainda assim é possível calibrá-lo, como comentado no fórum a seguir, https://electronics.stackexchange.com/questions/27763/using-the-atmega328-with-the-internal-oscillator .

redbio
date Enviado: 2020-08-07 22:42:50
Olá boa noite.

Primeiramente parabéns pelo tutorial. Queria saber se dá para instalar o bootloader no uno usando o pro micro? Procurei referências na internet e está difícil. ;-(

Giovanni5
date Enviado: 2020-08-10 08:11:34
redbio
Infelizmente não há uma referência online exatamente sobre isso, porém ainda assim deve ser possível gravar o bootloader de uma placa UNO usando uma Pro Micro. Como base para isso você pode utilizar a imagem a seguir, http://i1.wp.com/hardware-libre.fr/wp-content/uploads/2013/11/pro_mini_ISP.png . Entretanto note que, esta imagem está usando uma UNO para gravar a Pro Micro, para o seu caso, basta conectar o pino 10 da Pro Micro ao pino de reset da UNO, ignorando a conexão inversa (pino 10 da UNO ao pino de reset da Pro Micro).

gilvaneud
date Enviado: 2020-07-17 14:57:23
como gravar bootloader do at mega 2560 para o leonardo ???

Giovanni5
date Enviado: 2020-07-17 15:20:58
gilvaneud
Para gravar o bootloader de uma Mega para uma Leonardo, é necessário utilizar o conector ICSP da placa Leonardo, como comentado acima, e como na imagem a seguir, http://angel-soft.de/img/2019/flashing-leonardo-with-ATMega2560-as-programmer-sml.png .

gustavofulber
date Enviado: 2020-07-14 15:54:35
Boa tarde, ficarei muito grato se  puder me ajudar, tô gravando de um mega para um uno, fiz todos os passos e os revisei, entretando quando vou gravar o bootloader aparece a seguinte mensagem "Yikes! Invalid signature. Double check conections and try again, ir use -F tô overdose this check", alguma ideia de como resolver? Desde já agradeço

Giovanni5
date Enviado: 2020-07-14 16:29:00
gustavofulber
Para gravar o bootloader de uma placa Mega, para uma placa UNO, é necessário montar o circuito da imagem a seguir, https://www.arduino.cc/en/uploads/Tutorial/MegaToUNO.jpg . Vale lembrar que o capacitor entre o pino de RESET e o GND não é obrigatório. Além disso, lembre-se de selecionar o modelo da placa que será gravada, antes de iniciar a gravação do bootloader.

gustavofulber
date Enviado: 2020-07-14 16:45:41
gustavofulber
GOSTARIA DE AGRADECER A SUA EXISTÊNCIA NESSE PLANETA, ESTOU A UMA SEMANA NESSA BAGACA TRAVADO E NAO VOU PRA FRENTE, SE QUISER, TE MANDO UM PEQUENOAGRADECIMENTO MONETARIO, MUITO OBRIGADO

Giovanni5
date Enviado: 2020-07-14 17:01:24
gustavofulber
gustavofulber, ficamos felizes em saber que tenha dado certo, se tiver outras dúvidas/dificuldades entre em contato.