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.
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.
Respostas:
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.
Implementamos atualizações remotas em um Arduino Pro Mini (ATMega328P), colocando um comando "boot" no firmware normal. Como funciona é:
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.
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.
É 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:
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.
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.