Open Source Arduino Digital RC Fernsteuersender

Der Sketch ArduinoDTX implementiert einen hochwertigen RC Fernsteuersender auf einem Arduino. Im Gegensatz zu traditionellen Fernsteuerungen erfolgt jedoch die Kodierung der Kanalinformationen nicht mit PPM-Signalen, sondern rein digital auf Basis des miniSSC-Protokolls. Zur Kommandoübertragung wird dann nur noch eine transparente serielle Verbindung wie Bluetooth, Wifi oder XBee benötigt. Als Empfänger kommt beispielsweise bei Bluetooth ein PiKoder/SSC RX zum Einsatz.

Der Sketch für den Sender basiert auf dem Open Source Projekt arduinorc von Richard Goutorbe. Damit stehen Leistungsmerkmale wie:

  • bis zu 9 Proportional-Kanäle (Nano, bei Uno maximal 6 Kanäle)
  • bis zu 6 zusätzliche Schaltkanäle
  • 9 Modellspeicher
  • Dual Rate und Exponential Schalter
  • Throttle Cut als Sicherheitsfunktion
  • 2 programmierbare Mixer
  • Justagemöglichkeiten für Endpositionen, Steuerknüppel und Servos
  • Throttle Sicherheitscheck beim Programmstart
  • Optionale Batterieüberwachung mit Alarm
  • Programmierbar unter Windows und Linux über USB-Schnittstelle und Terminalapplikation

Der arduinorc-Sketch wurde zum ArduinoDTx modifiziert, der am Arduino Ausgang D6 nun alle Kanalinformationen im miniSSC-Protokoll ausgibt. Dabei wird jedesmal dann ein Kommando erzeugt, wenn sich die Position eines Steuerknüppels verändert hat. Die PPM-Ausgabe ist komplett entfallen.

Der ArduinoDTx Sketch (.ino-Datei) ist Open Source und wird über ein entsprechendes github Repository unter den Bedingungen der GNU General Public License Version 3 zur Verfügung gestellt.

Digitale Vierkanal-Fernsteuerung

Schematischer Aufbau Arduino Digital RC

Als konkretes Anwendungsbeispiel soll nun eine digitale Fernsteuerung mit vier Kanälen realisiert werden. Der Aufbau des Prototypen ist im Bild oben dargestellt. Die zwei Thumb-Joysticks belegen die Anschlüsse Pot 1/2 und Pot 3/4 gemäß des oben dargestellten Schaltbildes. Die Verbindung zu den Analogpins des Arduino wird über ein Prototyp-Shield hergestellt. Dieses nimmt praktischerweise auch den Mode-Schalter und die LED mit ihrem Vorwiderstand von 270R auf.

Die Fernsteuerung ist für Batterieversorgung ausgelegt. Um auch beim Einsatz von Akkus mit einer Nennspannung von 1,2 V die erforderliche Mindestbetriebsspannung des Arduino von 6 V zu erreichen, wurde ein Batteriehalter für 5 AA – Zellen vorgesehen. Die beiden seitlichen Brettchen dienen zum Abstützen der Handflächen und erleichtern die Bedienung ganz erheblich.

Die USB-Schnittstelle des Arduino ist bei diesem Aufbau sehr gut zugänglich, so dass Firmware geladen werden kann und die spezifische Anwendungsparametrierung möglich ist.

Inbetriebnahme und Test

Testaufbau Arduino Digital RC

Die Inbetriebnahme beginnt mit dem Download des aduinodtx Sketch (.ino-Datei), der über ein entsprechendes github Repository zur Verfügung gestellt wird. (Hinweis: zur Übersetzung des Sketches wird die Arduino Library “TimerOne” benötigt).

Nach dem erfolgreichen Upload des Sketches in den Arduino, kann die Funktion der Fernsteuerung am einfachsten mit dem im Bild dargestellten Aufbau einer drahtgebundenen Fernsteuerung getestet werden. In der Standardkonfiguration der Software werden durch die Pots 1 – 4 die entsprechenden Servokanäle 1 – 4 angesteuert.

Sind spezifische Anpassungen und Modelldefinitionen vorgesehen, dann sind diese gemäß der arduinorc-Beschreibung vorzunehmen: Alle Kommandos zur Programmierung der Fernsteuerfunktionen des arduinorc sind weiterhin verfügbar (Kommando Dokumentation).

Erweiterung auf Bluetooth

Bluetooth Shield Konfiguration für Arduino Digital RC

Die digitale Fernsteuerung kann mit einem ITEAD-Bluetooth Shield und einem PiKoder/SSC RX  als Empfänger mit einfachen Mitteln zu einer drahtlosen Fernsteuerung ausgebaut werden. Da die Übertragung transparent geschieht, sind keine Anpassungen der Arduino-Software gegenüber der drahtgebundenen Version vorzunehmen und es steht der volle Funktionsumfang der Fernsteuerung zur Verfügung.

Der prinzipielle Aufbau des Senders ist im Bild dargestellt. Vor der erstmaligen Inbetriebnahme ist die Verbindung zwischen den beiden Bluetooth-Modulen zu konfigurieren. Das PiKoder/SSC RX User Manual, das von der PiKoder/SSC RX Seite heruntergeladen werden kann, beschreibt die notwendigen Schritte im Detail.

Erweiterung auf WLAN

Die digitale Fernsteuerung kann mit einfachen Mitteln auch auf WLAN hochgerüstet werden. Die Beschreibung hierzu finden Sie im Beitrag WLAN Modellfernsteuerung mit Arduino

Weitere Anwendungsbeispiele

Um größere Reichweiten zu erzielen, kann die digitale Fernsteuerung alternativ auch auf XBee umgestellt werden. Der Aufbau wird in einem weiteren Beitrag Modellfernsteuerung mit Arduino über XBee erklärt.

WLAN Modellfernsteuerung mit Arduino

Der Open Source Arduino Sketch arduinodtx implementiert die Bedieneroberfläche und die Bedienelemente für einen leistungsfähigen Modellfernsteuerungssender mit einem seriellen Kommandoausgang (PiKoder/SSC kompatibel). Für die Kommandoübertragung zum PiKoder wird ein transparenter serieller Kommunikationskanal benötigt.

Soll WLAN als Übertragungsweg genutzt werden, dann kann ein solcher Kanal senderseitig mit einem ESP8266-01 Modul realisiert werden; als Empfänger kommt ein PiKoder/SSC wRX zum Einsatz.

In diesem Fall werden neben den Basiskomponenten wie Steuerknüppeln, Schalter, etc., die zum Aufbau des arduinodtx-basierten Fernsteuersenders erforderlich sind, ein Logic Level Umsetzer von 5 auf 3,3 Volt, zwei Jumper zur Umschaltung der seriellen Kommunikationsschnittstelle (UART-Multiplexer) und ein ESP8266-01 Modul benötigt wie im Beitragsbild dargestellt. Die Verdrahtung entnehmen Sie dem folgenden Schaltbild (die Signale mit gleicher Bezeichnung müssen verbunden werden, Signale in blauer Schrift sind mit den entsprechenden Arduino-Signalen zu verbinden):

Der Aufbau ist relativ einfach und sollte problemlos auf einem Prototyp-Board erfolgen können.  

Im nächsten Schritt ist der ESP8266-01 als Access Point mit seriellem Ausgang zu programmieren – die Beschreibung hierzu finden Sie im Blog ESP8266-01 Sketch für den PiKoder/SSC wRX. Wollen Sie den ESP8266-01 im “eingesetzten Zustand” programmieren, dann müssen Sie die dargestellte Schaltung um einen Programmierteil erweitern:

Bitte beachten Sie auch die Jumperstellung für D0/D1. Zusätzlich sollte bei jeder direkten Kommunikation mit dem ESP8266-01 der Arduino “stillgelegt” werden (RESET Leitung auf GND legen), so dass die Datenübertragung nicht gestört wird.

Mit dem erfolgreichen Abschluss der Programmierung des ESP8266-01, dem Umstecken der Jumper, Aufwecken des Arduino und einem Reboot ist die Modellfernsteuerung betriebsbereit.