Manual
do
Maker
.
com
Estive fazendo uns testes com um bootloader na esperança de fazer algo realmente útil e diferente, mas o resultado foi apenas bootloaders corrompidos. E recuperados, claro. Por conta disso, acabei modificando todo o artigo e deixando apenas duas coisas importantes, que são os dois modos de gravar bootloader no Arduino, ambos experimentados para fazer os testes de gravação do bootloader na placa MBZ Pro Mega RF Edition.
O Arduino possui um bootloader. O CI Atmega328 vem virgem. Se estiver adquirindo uma placa da MaxBlitz (como a da imagem de destaque), o bootloader padrão já vem gravado. Se ainda não tem a placa da MaxBlitz, dê uma passada no site e confira; é uma placa barata, incrível e você terá o prazer de montar sua própria standalone.
Eu não sabia, mas após iniciar as experimentações vi que o atual bootloader utilizado no Arduino UNO é o optiboot. Os bootloaders oficiais estão disponíveis dentro do diretório da sua IDE do Arduino, se quiser dar uma conferida, discorro a respeito mais adiante.
Na definição de placas também é possível ver os fuses utilizados, além do bootloader da respectiva placa. No caso do Arduino UNO:
uno.name=Arduino/Genuino Uno
uno.vid.0=0x2341
uno.pid.0=0x0043
uno.vid.1=0x2341
uno.pid.1=0x0001
uno.vid.2=0x2A03
uno.pid.2=0x0043
uno.vid.3=0x2341
uno.pid.3=0x0243
uno.upload.tool=avrdude
uno.upload.protocol=arduino
uno.upload.maximum_size=32256
uno.upload.maximum_data_size=2048
uno.upload.speed=115200
uno.bootloader.tool=avrdude
uno.bootloader.low_fuses=0xFF
uno.bootloader.high_fuses=0xDE
uno.bootloader.extended_fuses=0xFD
uno.bootloader.unlock_bits=0x3F
uno.bootloader.lock_bits=0x0F
uno.bootloader.file=optiboot/optiboot_atmega328.hex
uno.build.mcu=atmega328p
uno.build.f_cpu=16000000L
uno.build.board=AVR_UNO
uno.build.core=arduino
uno.build.variant=standard
Podemos gravar o bootloader de duas maneiras; utilizando um Arduino como ISP ou utilizando um USBASP conectado ao ICSP da placa que receberá o bootloader em seu Atmega.
Apenas para complementar o raciocínio, esse procedimento não é exclusivo para a placa MBZ Pro Mega RF, nem para esse bootloader. É um procedimento genérico, que daria outro artigo, inclusive. Também não precisa ter medo extremo, eu perdi o bootloader durante os testes que estava fazendo com um bootloader personalizado e com um esforço pra cá e outro pra lá, acabei conseguindo regravar; várias vezes. Em suma, se tudo der errado quando estiver fazendo experimentações, volte o bootloader padrão.
Não quis desenhar e também não procurei muito, me desculpe a preguiça e por "chupinhar" a imagem abaixo, mas tenho muitas outras coisas a fazer (relacionadas aos artigos e à vida pessoal) e por isso resolvi agilizar da melhor maneira possível.
O wiring do adaptador USBASP fica assim:
Mas como irei gravar o bootloader na MBZ Pro Mega RF Edition, desconsiderei a ordem dos headers. Da direita e conecte-os em seus correspondentes, conforme a lindíssima imagem abaixo:
Ainda, vou facilitar a relação entre o USBASP e o ICSP da placa na tabela abaixo. Considere os pinos da fileira superior da esquerda para a direita como sendo 1, 2, 3. Então volte para a segunda fileira, da esquerda para a direita como sendo os pinos 4, 5, 6. Desse modo use como referência a seguinte relação: Pino 4 = GND, Pino 6 = 5V.
Agora olhe para a tabela e tudo deve ficar claro:
USBASP | MBZ Pro Mega RF Edition (pino) |
VCC | 6 |
MOSI | 5 |
/RES | 1 |
SCK | 2 |
GND | 4 |
MISO | 3 |
Por fim, o exemplo de conexão é como se fosse ligado ao cabo que vai ao USBASP. Ao encaixar o cabo ao adaptador, as posições se invertem. Para evitar que alguém conecte errado e para reforçar o entendimento, eis uma foto dos jumpers conectados diretamente ao USBASP:
Mas depois de conectar e desconectar 10 vezes, já não é mais tão empolgante. Daí faz todo o sentido utilizar os conectores paralelos de 3 posições, vendido pelo nosso parceiro MASUGUX. Esses conectores estão disponíveis para compra através desse link. Se quiser jumpers e headers no mesmo pacote, o link é esse outro. A partir de então, a conexão com a placa é feita em segundinhos. Repare na imagem de destaque, nos jumpers do USBASP.
Nesse modo, utilizaremos um Arduino para gravar o bootloader invés de utilizar um adaptador USBASP.
Coloque os jumpers primeiramente em GND e 5V do Arduino UNO que será utilizado como ISP ao 5V e GND do MBZ Pro Mega RF. Agora siga a tabela, essa é bem fácil:
Arduino UNO | MBZ Pro Mega RF |
5V | 5V |
GND | GND |
10 | RST |
11 | 11 |
12 | 12 |
13 | 13 |
Conecte o Arduino UNO (que será o master, pois através dele o bootloader será gravado na MBZ Pro Mega RF) à porta USB do computador. Se for uma gravação de bootloader padrão (como exemplificado abaixo para USBASP), abra a IDE do Arduino, selecione a porta, selecione a placa Arduino UNO . Na Opção Programador, selecione Arduino como ISP. Em Arquivo > Exemplos selecione ArduinoISP. Faça o upload para preparar a placa para funcionar como ISP.
Após ter gravado o sketch ArduinoISP, coloque um capacitor 10uF (foi o que eu tinha) entre o reset e o GND do Arduino UNO (que é o master). A listra branca do capacitor vai em direção ao GND.
No menu Ferramentas, clique em Gravar bootloader após já ter subido o sketch para que o UNO funcione como ISP. Agora repare que a gravação será feita na MBZ Pro Mega RF.
Se estivesse fazendo a gravação em um Arduino Mega por exemplo, após subir o sketch de ArduinoISP, o próximo passo seria trocar a placa para Arduino Mega na IDE do Arduino e então gravar o bootloader.
Se quiser, pode utilizar esse modo para gravar o programa no Arduino, mas remova primeiro o capacitor.
Se deseja apenas gravar um bootloader padrão em um CI novo, basta seguir esse procedimento, abrindo a IDE do Arduino como root, porque o usuário padrão não tem permissão para escrever no USBASP.
Na IDE do Arduino, selecione a placa Arduino UNO para a MBZ Pro Mega, selecione a porta serial e seleciona a programadora USBASP. Ainda no menu Ferramentas, clique na opção gravar bootloader.
Feito!
Inscreva-se no nosso canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.