Estou trabalhando no Arduino Nano (32Kb de memória flash, dos quais 2Kb são usados pelo gerenciador de inicialização, 2Kb SRAM, 1Kb EEPROM) .
O microcontrolador recebe a entrada de um dispositivo elétrico via módulo RS485 e lança os dados lidos em um servidor remoto usando o módulo GPRS A6 . O produto deve interagir com o servidor remoto, postando dados em intervalos.
Concluí a parte de integração e o dispositivo funciona bem, coletando dados e postando no servidor (a cerca de 10-15 km de distância). O único desafio que estou enfrentando é que, se houver 100 desses dispositivos e precisar atualizar o firmware, usando o servidor remoto (ou qualquer outro mecanismo adequado), como devo proceder?
Eu já passei por muitos posts que sugerem o uso de outro Arduino como ISP, essa poderia ser minha última abordagem (pois aumentaria o custo final do produto).
A atualização de firmware over the air ainda não está clara, como na comunidade Stack Exchange para microcontroladores low-end. Qualquer discussão pode ser uma grande ajuda para muitos.
fonte
Respostas:
Resposta curta: é possível.
Resposta longa: é complicado. É por isso que tantas implementações muito ruins estão por aí.
No mínimo, você tem duas etapas em qualquer processo de atualização remota / remotamente.
Obviamente, esse é o mínimo absoluto. Se você estiver trabalhando em iterações, também é um primeiro passo muito válido. Se você tiver mais de um dispositivo, poderá associar o firmware correto ao dispositivo correto . Se você quiser reduzir a chance de bloquear o dispositivo, desejará uma maneira de verificar o estado do dispositivo antes e depois da atualização , também desejará proteger o transporte e torná-lo o mais confiável possível e, naturalmente, tenha uma estratégia de fallback em caso de erro de atualização .
São mais cinco etapas que levam você a um produto confiável. Existem práticas recomendadas para essas coisas, mas elas dependem do ambiente do seu projeto. Talvez seja algo barato e a taxa de falha de 5% nas atualizações esteja correta, talvez seja um marcapasso e até um erro no total seja inaceitável, pois leva a um cenário fatal. Você precisará encontrar soluções para os princípios básicos que se encaixam no seu produto.
Além disso, existem dezenas de coisas diferentes a considerar. Você vai ter clientes? Você tem que informá-los? Eles têm alguma influência no tempo / instalação da atualização? Seus dispositivos estão em diferentes países? As restrições legais se aplicam? Os padrões normativos se aplicam? Quantos dispositivos você está atualizando? 1? Uma dúzia? Centenas? Milhões?
Se você atualizar cinco dispositivos, o processo poderá ser bastante falador. Se você estiver atualizando milhões, pode ficar muito caro. E sim, isso afeta o que listei acima como etapa um, transmitindo o firmware. Talvez você crie um marca-passo e um custo de processo de centenas de mensagens por atualização seja bom, considerando a alternativa.
Essas são apenas as perguntas que escrevi em dois minutos, portanto essa lista certamente não é exaustiva. Meu argumento é que sem informações sobre o cenário, não podemos realmente ajudá-lo adequadamente.
fonte