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.
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.
Risposte:
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.
Abbiamo implementato aggiornamenti remoti su un Arduino Pro Mini (ATMega328P) inserendo un comando "boot" nel normale firmware. Come funziona è:
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.
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.
È 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:
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.
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.