Atualizações pelo ar?

8

Eu gostaria de poder atualizar o software em um arduino sem tocar fisicamente no dispositivo ou amarrar um cabo. Isso pode ser feito?

Escolherá o protocolo sem fio que facilita isso.

Johannes Ernst
fonte
Dê uma olhada no Moteino .
Gerben
Parecendo muito legal.
Johannes Ernst
Eu pedi um par de Moteinos, e espero que consiga fazer melhorias nos próximos dias.
Johannes Ernst

Respostas:

6

A melhor e mais fácil solução que encontrei é usar o Bluefruit EZ-Link da Adafruit. Eles têm um módulo que você conecta nos pinos Serial / Power / Reset ( link aqui ) ou uma blindagem para o uno ( link aqui ). Eles também têm uma ótima descrição e um guia de instruções ( link aqui ) que é muito bom. Ele basicamente aparece como um link serial bluetooth no arduino IDE e você o programa normalmente. Ele tem o benefício adicional de ser útil não apenas para programação, mas também para enviar e receber dados.

mwwalk
fonte
4

Implementamos atualizações remotas em um Arduino Pro Mini (ATMega328P), colocando um comando "boot" no firmware normal. Como funciona é:

  • O host envia o comando "boot" para o Arduino remoto.
  • O Arduino salta para o carregador de inicialização (endereço de programa 0x3C00 para o Pro Mini)
  • O host envia o novo firmware pelo link usando avrdude (protocolo AVR109)

Isso não requer um novo carregador ou hardware de inicialização. Porém, não é uma boa solução para dispositivos comerciais, como se o firmware carregado estivesse corrompido, a placa não poderá ser colocada no modo carregador de inicialização sem uma reinicialização completa.

Alguns dispositivos de comunicação sem fio, como o XBees, possuem GPIO que pode ser alternado remotamente. Conectá-lo ao pino de redefinição do Arduino permitirá que a placa seja redefinida no carregador de inicialização.

geometrikal
fonte
3

O Arduino Yun pode ser remotamente atualizado (via wifi ou cabo de rede): você terá que selecionar seu endereço IP no menu "Ferramentas> Placas" do Arduino IDE e pressionar o botão de upload como de costume.

Federico Fissore
fonte
2

É possível escrever um gerenciador de inicialização executando na RAM (ou mesmo no Flash, talvez em um bloco de inicialização especial - depende do microcontrolador).
Este carregador de inicialização deve ser capaz de estabelecer a comunicação sem fio, entender o protocolo e apagar / gravar memória Flash.
Existem basicamente duas abordagens para atualização de software:

  1. O carregador de inicialização procura na inicialização um comando "atualização de software". Se for recebido, aguarda a sequência de programação. Se não for recebido, inicia o aplicativo.
  2. O aplicativo pode receber esse comando e, então, fornece controle ao carregador de inicialização.

Qual protocolo você escolhe é quase irrelevante. Apenas verifique se há recursos suficientes para mantê-lo na RAM / Flash. Em um Arduino Due - por exemplo - existem recursos mais que suficientes para qualquer implementação desse tipo.

microfone
fonte
Ah! Você conhecia algum código disponível gratuitamente que implementava esse tipo de coisa em algum lugar?
Johannes Ernst
1

Sim, isso pode ser feito. Lowpowerlab.com possui Moteino, que pode ser programado OTA.

Jose Leon
fonte
1

As placas Spark.io também são muito boas para dispositivos do tipo Arduino programáveis ​​OTA. Eu tenho um e achei bastante fácil trabalhar com ele.

https://www.spark.io/

sdcharle
fonte