Aggiornamenti over-the-air?


8

Vorrei poter aggiornare il software su un arduino senza toccare fisicamente il dispositivo o stringere un cavo. Si può fare?

Sceglierà il protocollo wireless che lo rende più semplice.


Dai un'occhiata a Moteino .
Gerben,

Molto carino
Johannes Ernst,

Ho ordinato un paio di Moteinos e spero che potrò provare gli aggiornamenti nei prossimi giorni.
Johannes Ernst,

Risposte:


6

La soluzione migliore e più semplice che ho trovato è utilizzare Bluefruit EZ-Link di Adafruit. Hanno un modulo da collegare ai pin Serial / Power / reset ( link qui ) o uno schermo per l'uno ( link qui ). Hanno anche un'ottima descrizione e guida pratica ( link qui ) che è abbastanza buona. Fondamentalmente appare come un collegamento bluetooth seriale nell'IDE di Arduino e lo programmate come al solito. Ha l'ulteriore vantaggio di essere utile non solo per la programmazione, ma anche per l'invio e la ricezione di dati.


4

Abbiamo implementato aggiornamenti remoti su un Arduino Pro Mini (ATMega328P) inserendo un comando "boot" nel normale firmware. Come funziona è:

  • L'host invia il comando "boot" ad Arduino remoto.
  • Arduino passa al boot loader (indirizzo del programma 0x3C00 per Pro Mini)
  • L'host invia il nuovo firmware sul collegamento utilizzando avrdude (protocollo AVR109)

Ciò non richiede un nuovo boot loader o hardware. Tuttavia, non è una buona soluzione per i dispositivi commerciali, poiché se il firmware caricato è danneggiato la scheda non sarà in grado di essere messa in modalità boot loader senza un hard reset.

Alcuni dispositivi di comunicazione wireless, come XBees, hanno GPIO che può essere attivato da remoto. Collegandolo al pin di ripristino di Arduino, invece, sarà possibile ripristinare la scheda nel boot loader.


3

L'Arduino Yun può essere lontanamente reflashed (sia via WiFi o cavo di rete): dovrete selezionare il relativo indirizzo IP sotto "Strumenti> Boards" menù del Arduino IDE e quindi premere il pulsante di caricamento, come al solito.


2

È possibile scrivere un bootloader in esecuzione nella RAM (o anche in Flash, magari in un blocco di avvio speciale - dipende dal microcontrollore).
Questo bootloader deve essere in grado di stabilire la comunicazione wireless, comprendere il protocollo e cancellare / scrivere la memoria Flash.
Esistono fondamentalmente due approcci per l'aggiornamento del software:

  1. Il bootloader cerca l'avvio per un comando "aggiornamento software". Se viene ricevuto, attende la sequenza di programmazione. Se non viene ricevuto, avvia l'applicazione.
  2. L'applicazione è in grado di ricevere tale comando e quindi dà il controllo al bootloader.

Quale protocollo scegli è quasi irrilevante. Assicurati solo che ci siano abbastanza risorse per tenerlo in RAM / Flash. Su un Arduino Due - per esempio - ci sono risorse più che sufficienti per una tale implementazione.


Ah! Ti capita di conoscere un codice liberamente disponibile che implementa quel genere di cose da qualche parte?
Johannes Ernst,

1

Sì, si può fare. Lowpowerlab.com ha Moteino che può essere programmato OTA.


1

Le schede Spark.io sono anche molto belle per i dispositivi simili a Arduino programmabili OTA. Ne ho uno e l'ho trovato abbastanza facile da lavorare.

https://www.spark.io/

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.