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!


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.

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