Ich möchte in der Lage sein, Software auf einem Arduino zu aktualisieren, ohne das Gerät physisch zu berühren oder ein Kabel zu verlegen. Kann es gemacht werden?
Wählt ein drahtloses Protokoll aus, das dies am einfachsten macht.
Ich möchte in der Lage sein, Software auf einem Arduino zu aktualisieren, ohne das Gerät physisch zu berühren oder ein Kabel zu verlegen. Kann es gemacht werden?
Wählt ein drahtloses Protokoll aus, das dies am einfachsten macht.
Antworten:
Die beste und einfachste Lösung, die ich gefunden habe, ist die Verwendung des Bluefruit EZ-Link von Adafruit. Sie haben ein Modul, das Sie an die Serial / Power / Reset-Pins anschließen ( Link hier ) oder eine Abschirmung für das Uno ( Link hier ). Sie haben auch eine großartige Beschreibung und Anleitung ( Link hier ), die ziemlich gut ist. Es erscheint im Grunde genommen als serielle Bluetooth-Verbindung in der Arduino IDE und Sie programmieren es wie gewohnt. Es hat den zusätzlichen Vorteil, dass es nicht nur zum Programmieren, sondern auch zum Senden und Empfangen von Daten von Nutzen ist.
Wir haben Remote-Updates auf einem Arduino Pro Mini (ATMega328P) implementiert, indem wir einen "Boot" -Befehl in die normale Firmware eingefügt haben. Wie es funktioniert ist:
Dies erfordert keinen neuen Bootloader oder keine neue Hardware. Für kommerzielle Geräte ist dies jedoch keine gute Lösung. Wenn die hochgeladene Firmware beschädigt ist, kann das Board ohne Hard-Reset nicht in den Bootloader-Modus versetzt werden.
Einige drahtlose Kommunikationsgeräte, wie z. B. XBees, verfügen über GPIO, das per Fernzugriff umgeschaltet werden kann. Wenn Sie dies mit dem Arduino-Reset-Pin verbinden, kann die Karte stattdessen in den Bootloader zurückgesetzt werden.
Das Arduino Yun kann per Fernzugriff neu geflasht werden (entweder über WLAN oder ein Netzwerkkabel): Sie müssen seine IP-Adresse im Menü "Extras> Boards" der Arduino IDE auswählen und dann wie gewohnt die Upload-Taste drücken.
Es ist möglich, einen Bootloader zu schreiben, der im RAM ausgeführt wird (oder sogar in Flash, möglicherweise in einem speziellen Bootblock - abhängig vom Mikrocontroller).
Dieser Bootloader muss in der Lage sein, die drahtlose Kommunikation herzustellen, das Protokoll zu verstehen und den Flash-Speicher zu löschen / schreiben.
Grundsätzlich gibt es zwei Ansätze für das Software-Upgrade:
Welches Protokoll Sie wählen, ist fast irrelevant. Stellen Sie einfach sicher, dass genügend Ressourcen vorhanden sind, um es im RAM / Flash zu halten. Auf einem Arduino Due gibt es zum Beispiel mehr als genug Ressourcen für eine solche Implementierung.
Spark.io-Boards eignen sich auch sehr gut für OTA-programmierbare Arduino-ähnliche Geräte. Ich habe eine und habe festgestellt, dass es ziemlich einfach ist, damit zu arbeiten.