Após desenvolver o programa, é possível compilar gerando um arquivo com a extensão .hex e gravá-lo no Arduino.
Para projetos profissionais é uma maneira de manter seu código fonte seguro, podendo enviar para gravação nas placas sem compartilhar o desenvolvimento da lógica de programação.
Na barra de menus da IDE Arduino, em Sketch \ Exportar Binário compilado, ou com as teclas de atalho Ctrl + Alt + S.
A vantagem de gravar no microcontrolador o arquivo sem o bootloader é que o programa inicializará no ato que o circuito for energizado. A diferença é de um segundo mas, dependendo do projeto, isso pode ser um diferencial.
Gravar o arquivo compilado no Arduino / ESP32:
Para efetuar o upload do arquivo .hex no microcontrolador encontrei algumas - poucas - opções, baseadas em um front para simplificar a utilização do AVRDUDE e ESPTOOL.
Fiz minha própria versão e deixo aqui para compartilhar com vocês.
É possível efetuar o upload do arquivo compilado para as versões de Arduino Uno, Nano, Pro Mini, Mega e Gemma / Digispark (Attiny85). E também para ESP32 (Via Serial e OTA).
Ao selecionar o modelo da placa, os demais campos já serão preenchidos automaticamente.
Atualizado para versão 3.0 em 12/04/2023.
Para mim é útil e, espero, que possa ser útil para vocês também!
Abraços!
O anti virus detecta como virus
ResponderExcluirBom dia!
ExcluirPor segurança o anti-vírus costuma bloquear qualquer arquivo executável. Basta selecionar a opção para liberar a execução.
Abraços!
Olá. Qual o software que vc usou para fazer o frontend? Aqui ele funcionou belezinha.
ResponderExcluirBoa tarde!
ExcluirVisual Basic .NET
Ótimo que funcionou!
Abraços!
Funciona para ESP32?
ResponderExcluirBom dia!
ExcluirSomente para Arduino, por enquanto.
Boa tarde, Ribeiro!
ExcluirAtualizado para ESP32 também.
Abraços!
obrigado pelo front , se funcionar com o mega vai ser uma mão na roda pra atualizar o arduino de impressora 3D com o notebook fraquinho ... só levar o hex compilado e mandar flashear sem ter que ficar recompilando , show !
ResponderExcluirBom dia! Espero que tenha funcionado e ajudado!
ExcluirAbraços!
Olá, sabe me dizer se funciona para o arduíno Pro Micro?
ResponderExcluirBoa tarde! Nessa versão, somente para Arduino Uno, Nano, Pro Mini, Mega e Gemma (Attiny85).
ExcluirAbraços!
Tem algum que funcione com o arduino pro micro para me indicar? Ou teria a possibilidade de andicionar essa opção ao seu front end?
ExcluirValeu mesmo cara, estava procurando um proraminha desses e vc salvou bacana... Obrigado mesmo
ResponderExcluirFeliz por ter ajudado, Luciano! Abraços!
ExcluirEste comentário foi removido pelo autor.
ResponderExcluirTentei usar o frontend para gravar o .hex num arduino nano (old bootloader), não deu certo e agora quando tento gravar pelo modo tradicional (ide do arduino) retorna os seguintes erros:
ResponderExcluirOcorreu um erro enquanto o sketch era carregado
avrdude: verification error, first mismatch at byte 0x00c4
0x7d != 0x09
avrdude: verification error; content mismatch
O que será que aconteceu? Tem como reverter? O duro é que é um dispositivo que está lá no cliente e ele não pode me esperar que eu faça outro pra ele.
Bom dia, Ismael!
ExcluirA IDE Arduino utiliza o programa AVRDUDE para enviar o arquivo compilado para o microcontrolador. O front que deixei disponível, utiliza o mesmo programa que a IDE Arduino, apenas com uma tela amigável que executa o AVRDUDE com as linhas de comando para envio ao microcontrolador.
Alguns problemas que podem estar ocorrendo:
- Dispositivo USB no Windows não foi reconhecido corretamente. Tente utilizando outra porta USB, ou remova o dispositivo através do 'gerenciador de dispositivos do Windows' e adicione novamente.
- Cabo USB com algum mal contato. Durante a transmissão ocorre falha acarretando no erro. Verificar com outro cabo.
- O conversor USB/TTL da placa Nano pode estar queimado. O fonte no microcontrolador segue rodando normalmente (Arduino funciona), mas o circuito da comunicação serial queimou. Nesse caso, é possível utilizar os pinos ICSP para novo upload e seguir utilizando o mesmo arduino no projeto.
- Verificar se realmente é Old Bootloader que está gravado ou se é o Bootloader mais novo. Tentar realizar o upload tanto com novo quanto com antigo.
São algumas das possibilidades que podem estar ocorrendo.
Lembro que o front disponibilizado apenas faz a chamada de execução do AVRDUDE, assim como a IDE Arduino.
Abraços!
Olá, bom dia! Possuo uma dúvida... Há possibilidade de modificar os fuses através do seu software? Pois você informou que "o outro possui o bootloader compilado junto.", selecionei esse arquivo, porém não foi com as configurações que deixei no bootloader...
ResponderExcluirBom dia!
ExcluirNo software não há a possibilidade de alterações nos fuses.
Me recordo que ao exportar o arquivo hex, o software Arduino utiliza o bootloader padrão que possui salvo em seu diretório.
Ah entendi! Alterei no arquivo "Boards" os fuses... No caso o caminho seria: Hardware - Arduíno - avr - boards. Seria esse o padrão de bootloader? Ou teria outro meio de alterar os fuses no diretório do arduíno e depois exportar e utilizar seu software?
ResponderExcluirO caminho acho que seria dessa forma mesmo. Ir no diretório que citou e alterar por lá.
ExcluirAbraços!
ola amigo muito show seu programa parabens deixa te perguntar teria como adicionar tbem para ele gravar junto o arquivo epron obrigado abraços.
ResponderExcluirBom dia, Marconato!
ExcluirQue bom que gostou e que o programa foi útil! Abraços!!
seu programa consigo enviar usando o modulo cp2102 porem so envia o hex precisaria que enciasse os dois arquivos no USBasp usaria esse comando.. veja se pode me ajudar obrigado..
ResponderExcluirREM Writing Flash + EEPROM + Fuses (L=F7, H=D9, E=FC)
avrdude -c USBasp -P usb -p m328p -e -U flash:w:"master.hex":a -U eeprom:w:"master.eep":a -U lfuse:w:0xF7:m -U hfuse:w:0xD9:m -U efuse:w:0xFC:m
Marconato, vou verificar a possível alteração para adicionar o arquivo junto. Abraços!
ExcluirBom dia, Fellipe. Tudo bem? Tenho interesse comercial no desenvolvimento de uma solução semelhante, mas exclusiva para ESP32 e que carregue o firmware e o filesystem. O que me diz?
ResponderExcluirBoa tarde! Quer me passar por e-mail mais detalhes do que precisa? Abraços! fellipe.couto@yahoo.com.br
ExcluirOlá, você poderia me fornecer o fonte? Aqui não funcionou.
ResponderExcluirOlá! Qual erro é exibido pra você? É necessário ter o pacote Microsoft .Net Framework instalado no computador. Vários utilizam e não possuem problemas. Me passa o erro que tento dar uma investigada no problema. Abraços!
Excluirfunciona com nodeMCU ESP8266 ?
ResponderExcluirna verdade tentei, mas da erro
Boa tarde! ESP8266 não. Habilitado para ESP32.
ExcluirOlá Fellipe, existe a possibilidade de implementar para o ESP8266 ? acredito que por ser também muito utilizado poderia ser uma boa o desenvolvimento para ele. Eu infelizmente não possuo o conhecimento para tal :'(
ExcluirOlá! Bom dia! Obrigado pelo comentário e sugestão! Concordo e anotado! Vou verificar essa possibilidade para o ESP8266. Abraços!
ExcluirA atualização para OTA ajudou demais. Tu mandou muito bem! Abraços
ResponderExcluirBom dia, Rodrigo! Feliz que pude ajudar! Abraços!
ExcluirOla amigo, funciona para Leonardo ou Pro Micro?
ResponderExcluirOi Geraldo! Pro Micro ou Leonardo são com Atmega32U4. Não está incluído no programa o upload para esse microcontrolador.
ExcluirBom dia . agradeço a pessoas como vc que ajudam a outros profissionais!! Tenho um projeto com um comportamento estranho:
ResponderExcluir1 - Carrego o cod bin pelo HexArduino - não funciona
2 - vou ao Arduino, carrego a sketch, funciona.
3 - Carrego arquivo vazio no ESP pelo Arduino( ou seja limpo o ESP32) - passa a não funcionar
4 - Carrego o arquivo bin pelo HexArduino e funciona.
como fazer para que o carregamento do BIN pelo HexArduino funcione sem que tenha que carregar pela sketch antes?
E vc tem um preço bom para comprar de vcs o ESP32 numas 100 pçs?
Desde já agradeço.
Boa tarde! Estranho esse comportamento e por essas informações não estou conseguindo identificar. Por eliminação, efetuou os mesmos testes com outro ESP32? Para testarmos a possibilidade de alguma falha física no hardware. Nunca tive problemas com o HexArduino e não tenho informações de outra pessoa que tenha tido problemas.
ExcluirCom relação a venda, não possuo essa quantidade de estoque. Disponibilizo a venda dos que eventualmente sobra de outros projetos, que acabam não sendo usados.
Abraços!
Olá. Muito obrigado pelo retorno.
ResponderExcluirQuase não faço perguntas em fóruns porque nenhum gestor responde. Por isso muito obrigado. Sim , testei em vários ESP. E é estrando, o HEX dá como finalizado, mas não roda. Carrego no Ard ele funciona. Carrego outra coisa pra "limpar" o ESP e carrego o prog anterior com o HEX e funciona. Lendo um tutorial do flash_download_tool_3.9.5 , descobri que existem 3 arquivos que o Ard não salva na pasta do programa , mas sim em um arquivo TEMP, e que são necessários no momento da gravação. Com esse programa e e localizando os outros 3 arquivos, consegui gravar e bem mais rápido que no Ard. Ard=2 a 4 min , Flash = 10s. https://elcereza.com/flash-download-tool-como-gravar-binarios-no-esp32/ .
Precisava gravar 100 ESP. Gravei 1 e testei funcionou, procedi as gravações e mandei para a montagem das placas. Quando voltaram nada funcionava, estou tendo que gravar agora nas placas via adaptador e fios. Acho que justamente os ESP que peguei para fazer as primeiras gravações testes, eu já os havia gravado uma vez no Ard e por isso funcionaram e me induziram a proceder as gravações. A única explicação que tenho é que o Ard quando grava , deixa alguma biblioteca lá dentro e que daí o HEX consegue gravar. Devido a característica do Arc, ou do meu programa, que daí o HEX consegue gravar com eficiência. Novamente obrigado pela conversa.
Agradeço vc tbm pelo retorno sobre o ocorrido! Vou precisar realizar alguns testes. Até o momento, já fiz muitas - muitas mesmo - gravações em ESP32 utilizando o HexArduino e nunca tive problemas. E tbm já tive conhecimentos de muitas outras pessoas que utilizam e nunca tiveram esse problema. Vou dar uma pensada e tentar realizar testes. Valeu!!
ExcluirSó pra complementar. Não estou criticando, só quero cooperar. Agradeço muito sua disponibilidade em ajudar. Para talvez detectar algum erro meu: Estou usando um adaptador PL2303, não estou usando um ESP32 implantado na placa e sim apenas o módulo, pode ser que haja alguma icompatibilidade com o driver do PL2303...
ResponderExcluirBeleza! tranquilo! Todo conteúdo é bom e ajuda sempre! :) Vou tentar efetuar testes por aqui tbm. Abraços!
ExcluirFuncionou perfeitamente para o ESP32 DEVKIT. Obrigado.
ResponderExcluirBoa! Abraços!
Excluir