Arduino

Upload do arquivo hex com avrdude

Essa dica é bem simples, mas em dado momento será necessário fazê-lo, e provavalmente em um artigo que estou escrevendo aqui. Mas vamos aos conceitos primeiro.

Em um fórum que participo ví uma pessoa com dúvidas quanto ao comportamento do Arduino. Toda a dúvida é válida e não existe pergunta ruim, exceto a que não foi feita. E sua dúvida era se “era necessário manter a IDE do Arduino aberta para que seu programa funcione” e, “se ao reiniciar o Arduino, o programa se perde”. Essas dúvidas surgem por falta de conceitos, mas não é culpa do usuário, pois ninguém se incomoda em passar esse tipo de informação, que é um estágio bem inicial.

Da interface à execução

A IDE do Arduino não é nada além de uma GUI (Graphical User Interface) para que o programa seja desenvolvido para posteriormente ser compilado e então gravado no Arduino. Você pode usar outras IDEs muito melhores que a do Arduino, como a PlatformIO, que dá muito mais flexibilidade ao desenvolvimento.

Quando seu programa está concluido, o primeiro passo é gerar o arquivo binário, que é o programa que será executado no Arduino. Esse programa é chamado de “firmware”. Existem diversos tipos de firmware para diversas plataformas (você pode ver um pouco sobre manipulação de firmwares com sistemas embarcados aqui), mas tudo se resume a um programa binário a ser gravado no alvo.

A última fase do processo de programação é a gravação do firmware no alvo. No caso de hoje, o Arduino. Como exemplo, estou pegando o Arduino UNO, que estou utilizando em um artigo (que pretendo concluir logo, se Deus permitir, porque fácil não está).

Resumindo, o processo para programação de um Arduino se divide nessas fases:

  • Codificação
  • Compilação
  • Gravação

Para compilação, utilizamos o avr-gcc, que gera o binário no formato compreendido pela microcontroladora. Para cada plataforma, arquitetura e sistema, um tipo binário diferente é implementado. Abordei esse assunto de diversas maneiras em outros artigos como esse, ou esse, ou esse também. Não quero discorrer muito a esse respeito para não lhe causar confusão, mantenhamos o foco nessa ideia; para Arduino, utilizamos o avr-gcc para gerar binários compatíveis.

Para a gravação, vamos usar outro programa, que tem a capacidade de se comunicar com a microcontroladora e enviar o código para ela. Mais uma vez, cada plataforma tem um processo diferente, mas não importa se você está fazendo esses processos no Linux, Mac ou Windows, porque tudo que está relacionado ao Arduino nesse processo de compilação é chamado “cross-compiling”, que é quando você gera arquivos binário em uma plataforma (por exemplo, Linux em X86) para outra plataforma (no caso do Arduino, AVR). Utilizaremos então o avrdude para subir o programa para o Arduino.

avrdude

Temos duas opções; baixar apenas o avrdude ou então utilizá-lo a partir do diretório contendo a IDE do Arduino. Se quiser experimentar, o avrdude fica dentro de ~/<diretorio_do_arduino>/hardware/tools/avr/bin/avrdude.

Primeiro passo: testar a comunicação

Nesse teste, você deve estar hábil a se comunicar com a microcontroladora e receber a assinatura 0x1E950F. Para fazer o teste no Arduino UNO, utilizei:

hex com avrdude
hex com avrdude

Onde utilizei o parâmetro ‘-a’ para selecionar o gravador e ‘-p’ para especificar a plataforma. Claro, é necessário dizer a porta em que o Arduino se encontra. No meu caso, /dev/ttyACM0. No Windows, COMx. O resultado deve ser algo como:

Se quiser ver os outros gravadores ou plataformas, basta sufixar o parâmetro com ‘?’.

upload do arquivo hex com avrdude

Estando isso funcionando, você já pode pegar o firmware para gravar. Eu peguei uma versão da grbl (para CNC) que não encontrei para clonar via git. Então baixei o firmware e execute o comando:

Só entrou o novo parâmetro ‘-U’, seguido de ‘flash’ e ‘w’, então o firmware. O primeiro parâmetro informa que será feita a manipulação de memória do dispositivo. ‘flash’ com ‘w’ indica que o avrdude deve escrever no dispositivo e por fim, o nome do firmware que será escrito.

hex com avrdude
hex com avrdude

Pronto, seu Arduino já foi programado a partir do firmware. Isso pode ser útil também quando você tem um programa que não deseja compartilhar o código mas disponibiliza o programa pronto para uso. Por fim, é mais um recurso.

Inscreva-se no nosso newsletter, alí em cima à direita e receba novos posts por email.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do Bit ao Byte – https://www.facebook.com/groups/dobitaobyte/

Próximo post a caminho!