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!


walter_.43
date Enviado: 2021-07-06 21:24:21
Desculpe, não entendi. Bootloader é o programa criado na IDE? Então este tutorial mostra como replicar o programa criado de um arduino para outro?
Isto é muito interessante. Gostaria de saber se é possível enviar a programação de uma Blackboard Uno para uma Blackboard ProMini

Giovanni5
date Enviado: 2021-07-07 07:41:56
walter_.43
A gravação do bootloader é basicamente a gravação de um código sem a comunicação USB, diretamente ao microcontrolador de uma placa. Entretanto não é possível copiar o código de uma placa para outra deste modo. A placa gravadora é apenas utilizada como interface de gravação, e é por isso que é necessário gravar o código "ArduinoISP" à ela. Como a BlackBoard UNO e a BlackBoad Pro Mini possuem o mesmo microcontrolador, a conexão e o procedimento são os mesmos mostrados neste tutorial, apenas lembre-se de alterar o modelo da placa antes de iniciar a gravação.

nairo
date Enviado: 2021-06-17 16:14:35
É possível fazer bootloader em um nano usando outro nano ?? ... ja vi fazer bootloader em um nano usando outro uno

Giovanni5
date Enviado: 2021-06-17 16:17:36
nairo
Sim, é possível, e as conexões são as mesmas, já que todas essas placas utilizam o mesmo microcontrolador (ATmega328P).

lenonizoton
date Enviado: 2021-05-16 14:42:58
Boa tarde, 
No caso do arduino alvo possuir apenas os pinos rx e tx disponíveis para aceesar, como proceder?

Giovanni5
date Enviado: 2021-05-17 08:14:35
lenonizoton
Os pinos RX e TX em placas Arduinos são basicamente exclusivos para a gravação de códigos, então, se apenas estes pinos estão disponíveis, não será possível fazer a regravação do bootloader na placa.

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 .