Programmieren Sie viele Arduinos gleichzeitig mit einer drahtlosen Übertragung

9

Ich werde viele Mikrocontroller-basierte Geräte haben, die unabhängig voneinander sind, aber alle werden das gleiche Programm ausführen.

Ich möchte mit einer drahtlosen Sendung gleichzeitig ein Programm auf alle hochladen. Im Idealfall schließt der Benutzer einen USB-Controller an seinen Computer an und lädt ein Programm aus der Arduino-Umgebung hoch, als würde er ein einzelnes Gerät programmieren.

Schauen Sie sich dieses Video an, um eine bessere Vorstellung davon zu bekommen, wovon ich spreche . Dies wurde mit Atmel-Mikrocontrollern erreicht, jedoch mit einem maßgeschneiderten Nicht-Arduino-Bootloader.

Aus einer Google-Suche nach "Arduino Infrarot-Programmierung" ging dieses interessante Projekt hervor . Der Hauptnachteil ist, dass die Reset-Taste noch manuell gedrückt werden muss. Idealerweise möchte ich, dass sich die Geräte standardmäßig in einem stromsparenden Zustand befinden und aufwachen, um ein Programm zu empfangen, wenn sie ein Signal von der Steuerung erfassen. Dennoch kann dies ein guter Ausgangspunkt für mich sein.

Ich wollte nur einige Perspektiven von Leuten bekommen, die mit Arduinos vertraut sind, ob sie denken, dass dies machbar ist, bevor ich einspringe.

MGA
quelle
2
Überprüfen Sie diese Website lowpowerlab.com/blog/category/moteino/wireless-programming
Mikael Patel
Von welcher Plattform laden Sie Ihre Skizzen hoch?
Greenonline

Antworten:

2

TL; DR -

Sie haben die Wahl zwischen BlueTooth oder XBee (unter anderem: IR zum Beispiel?) Für das drahtlose Hochladen. Ich glaube jedoch, dass jeweils nur ein Board hochgeladen werden kann, sodass Sie die Boards einzeln durchlaufen müssen , siehe Programmieren mehrerer ATMegas / Arduinos gleichzeitig .

Beim Hochladen einer Skizze oder bei Verwendung eines Programmiergeräts (für Skizze oder Bootloader) schreibt die Software nicht nur den Code, sondern kommuniziert tatsächlich mit dem Mikrocontroller.

Sie können nicht alle gleichzeitig programmieren. Sie können sie jedoch einzeln automatisch programmieren.


Ihre Frage ist sehr interessant und stellt eine Frage, an die ich sicher nie gedacht hätte, die aber äußerst nützlich und arbeitssparend wäre, insbesondere wenn sich wie ich viele Arduino-gesteuerte Sensorpunkte in der Umgebung befinden Haus. Hier ist eine ziemlich unelegante Lösung, die es wert sein könnte, ausprobiert zu werden.

Drahtlose Upload-Hardware

Wenn Sie BlueTooth verwenden , um Ihre Skizzen drahtlos hochzuladen, ist diese Lösung möglicherweise hilfreich. Wireless-Upload-Programm auf Arduino ohne USB-Kabel . Beachten Sie, dass diese Lösung die Pins D0 und D1 verbindet:

Beachten Sie jedoch, dass es möglicherweise nicht mit einigen Projekten kompatibel ist, bei denen D0 und D1 als Hardware-UART TX, RX verwendet werden müssen. Weil der drahtlose Programmierer die beiden Pins dauerhaft belegen muss.

In diesem Fall wird ein benutzerdefinierter Arduino Wireless Programmer verwendet , auf den Sie sich in Ihrer Frage möglicherweise bezogen haben. Lassen Sie sich jedoch nicht vom Namen täuschen, es handelt sich lediglich um ein Bluetooth-Schutzschild. Es handelt sich im Grunde genommen um ein BT HC-05-Gerät (oder ein ähnliches Gerät), das an ein Arduino angeschraubt ist (siehe auch Bluetooth Wireless Upload) .

Alternativ können Sie anstelle von BlueTooth auch XBee- Geräte verwenden (siehe Drahtlose Programmierung von Arduino) . Der Vorteil der Verwendung von XBees besteht darin, dass Sie die neue Geräteschleife (siehe unten) nicht durchlaufen müssen, die bei Verwendung von BT erforderlich wäre. Stattdessen müssten Sie lediglich die XBee-Netzwerk-IDs durchlaufen.

Darüber hinaus müssten Sie jedoch das Umschalten von BT-Geräten automatisieren, den entsprechenden Port auswählen und nacheinander auf jedes Arduino hochladen, da Sie keine Skizzen senden können . (Wenn ich falsch liege, wird mich bitte jemand korrigieren).

Auswahl des Ports und Hochladen der Skizze

Sie können vor jedem Upload ein Skript zusammen mit der Befehlszeilenversion der Arduino IDE verwenden, um den Port auszuwählen, an den das BT-Gerät angeschlossen ist. Wie Sie dies tun, hängt davon ab, auf welcher Plattform Sie kompilieren. Weitere Informationen finden Sie unter Kompilieren und Herunterladen von Arduino in der Befehlszeile. Dies kann mithilfe der Umgebungsvariablen ARDUINO_COMPORT(siehe möglicherweise veraltete Windows-Befehlszeilenerstellung ) oder der Option arduino cmd line --port <portname>(siehe Manpage ) erfolgen. Die Skizze wird dann mit der Option hochgeladen --upload <filename>. Sie können dies auf einen Schlag tun:

arduino --upload --port <portname> FILE.ino

Beachten Sie, dass Sie unter Windows verwenden sollten arduino_debug.exe.

Oder Sie könnten Ino verwenden , wenn Sie keinen Windows-PC verwenden ... aber das könnte den nächsten Teil, der sich mit der Schleife befasst, komplexer machen, als es sein muss.

Auswahl jedes der Arduinos (dh der BT-Geräte)

Als Nächstes müssten Sie dem Skript eine Schleife hinzufügen, die den PC nacheinander mit jedem BT-Gerät koppelt und anschließend die Arduino IDE für die Portauswahl und das Hochladen aufruft. Leider wäre dies überhaupt nicht plattformunabhängig und würde für jede Plattform, die Sie verwenden, eine andere Lösung erfordern. Schauen Sie sich Bluetooth über die Befehlszeile an , aber für Windows benötigen Sie wahrscheinlich die Blue Tooth Command Line-Toolsuite .

Unter OS X sollten Sie am besten auf die Verwendung von AppleScript zurückgreifen, siehe Verbinden mit einem Bluetooth-Gerät (iPhone) über die Befehlszeile unter MacOSX , da die Cmd-Leitungstools zur Steuerung von BT etwas spärlich erscheinen - es gibt BlueUtil , siehe So steuern Sie Bluetooth drahtlos Radio von der Kommandozeile? aber das scheint nur das BT ein- oder auszuschalten. Wenn Sie AppleScript jedoch mit dem Rest des Arduino IDE-Steuerungsskripts verbinden, werden die Dinge schnell komplexer, obwohl Sie den Arduino-Befehl einfach in AppleScript einfügen könnten, denke ich.

Greenonline
quelle
0

Sie können ESP-LINK verwenden, um das Arduino über WLAN zu programmieren.

Der ESP8266 ist eine einfache, billige Wi-Fi-MCU, die mit Arduino IDE programmiert werden kann.

ESP-LINK ist eine Firmware für den ESP8266, mit der der ESP wie eine serielle Verbindung (USB) zu Arduino funktioniert.

Die Firmware finden Sie hier unter ESP-LINK ESP8266 .

NccWarp9
quelle
0

Man kann so etwas wie verwenden diese . Es ist ein benutzerdefinierter Bootloader, um den Code eines Arduino über ein NRF24L01 + -Funkmodul zu aktualisieren. *

* Es funktioniert nur unter Linux-Maschinen.

Avamander
quelle