Ardupilot Mega Rover mit Smartphone fernsteuern

Überblick

In den typischen Anwendungen des Ardupilot Mega erfolgt die manuelle Kontrolle des Modells mit einer Modellfernsteuerung: der Empfänger bedient die Eingänge des APM mit PWM Signalen um sowohl die Bewegungen des Modells zu kontrollieren, als auch zur Auslösung von Sonderfunktionen und zur Umschaltung zwischen verschiedenen Flugmodi.

Wenn man den konventionellen Fernsteuerempfänger durch einen PiKoder-Empfänger wie den WLAN Empfänger PiKoder/SSC wRX ersetzt, dann kann der Ardupilot, beispielsweise in der Rover Konfiguration, über ein Smartphone gesteuert werden. Als Bedieneroberfläche können für diesen Anwendungsfall entweder die Android – Fernsteuerapps udpRC oder picCAR zum Einsatz kommen oder die im vorherigen Beitrag beschriebene Browser Oberfläche.

Realisierung

Zunächst wird der APM mit dem Mission Planer mit der ROVER – Konfiguration geladen; eine weitere Anpassung der Parameter war in meinem Fall nicht erforderlich.

Im folgenden Bild ist der sehr einfache Hardwareaufbau dargestellt.

Der PiKoder – Kanal 1 wird mit dem APM Eingang 1 (Steering) und der PiKoder – Kanal 2 mit dem Eingang 3 (Throttle) verbunden. An der Ausgangsseite wird die Standard-Rover-Verdrahtung verwendet (Lenkservo an Kanal 1, ESC mit BEC an Kanal 3). In dieser Konfiguration übernimmt der Ardupilot die Spannungsversorgung des Empfängers.

Der Ardupilot reagiert nicht auf PWM-Signale, die den typischen Bereich von ca. 1.000 – 2.000 µs unter- bzw. überschreiten. Von daher sind die Minimal- und Maximalwerte der Impulswerte des PiKoder/SSC, wie im folgenden Bild dargestellt, anzupassen.

Hierzu kommt das PiKoder Control Center (PCC) zum Einsatz wie im User’s Manual für den PiKoder/SSC wRX beschrieben.

Damit ist der Aufbau abgeschlossen; die Funktion der Apps ist in den Bedienungsanleitungen beschrieben.

Ausblick

Die Implementierung weiterer Konfigurationen und Funktionen ist inzwischen erfolgt und in die Android App udpRC4UGV eingeflossen, die in der Fortsetzung dieses Blogs beschrieben wird.

Da sowohl die Apps Open Source sind und das Empfänger-Protokoll offen gelegt ist, können natürlich auch eigene Modifikationen und Erweiterungen vorgenommen werden.

Modellfernsteuerung mit Webbrowser – verbesserte Bedieneroberfläche

Vor einigen Tagen bin ich auf das ESP8266 MikroE Buggy Projekt gestoßen.

In diesem Projekt wird ein Webserver auf dem ESP8266 implementiert – ähnlich wie in meinem Blog Modellfernsteuerung mit Webbrowser. Damit kann dann ebenfalls eine Betriebssystem-neutrale Fernsteuerung realisiert werden. Besonders interessant an diesem Projekt ist allerdings die einfache HTML5 Oberfläche, mit der ein Joystick realisiert wird.

 

Die Software ist Open Source und so konnte ich das Programm für den Einsatz in einem PiKoder/SSC wRX umstellen. Zusätzlich habe ich den Code so verändert, dass ein normales Fahrzeug mit einem Motor- und einem Richtungskanal gesteuert werden kann. Der angepasste Source Code steht in einem github Repository zur Verfügung.

Die Programmierung des ESP8266 ist ebenfalls im Blog zur Modellfernsteuerung mit Webbrowser beschrieben. Eine zusätzliche Besonderheit des ESP8266 MikroE Buggy Projekts besteht darin, dass das Arduino Filesystem benutzt wird. Die Installation und Benutzung ist hier beschrieben.

 

 

Servo Tester digital und präzise

Übersicht

Der hier vorgestellte Servo Tester ist mit einem Controllerbaustein versehen und ermöglicht so gegenüber einem einfachen Aufbau mit RC-Gliedern eine stabile Impulserzeugung (Impulsbreite: 1 ms – 2 ms). Hierzu wird der interne Oszillator heran gezogen, der im gewählten Bereich der Versorgungsspannung mit einer Genauigkeit von 1% spezifiziert ist.

Weiterhin zeichnet sich der Servotester dadurch aus, dass im Gegensatz zu anderen einfacheren digitalen Geräten der Versorgungsspannungsbereich von 4,8 V – 6 V abgedeckt wird; damit kann der Servotester auch mit dem BEC-Anschluß eines Fahrtreglers verbunden werden. Die Polarität des Impulses zur Servoansteuerung kann hardwaremäßig eingestellt werden.

Darüber hinaus ermöglicht der Servo Tester den Einsatz von Servos für andere Einsatzzwecke wie z.B. zum Drehen und Schwenken von Überwachungskameras.

Schaltung

Die Schaltung basiert auf dem PIC12F675, der den Servotester steuert. Die Versorgungsspannung des Controllers wird durch einen entsprechenden Regler auf 3,3 V abgesenkt; damit wird einerseits die höchste Genauigkeit des internen Oszillators erreicht und andererseits kann so der große Versorgungsspannungsbereich des Testers gewährleistet werden.

Allerdings erfordert dieser Ansatz einen Treibertransistor Q1, der die Pegelanpassung zur Ansteuerung des Servos vornimmt. Die Versorgungsspannung des Servos ist direkt durch geschleift, so dass Servos oder Motorregler entweder mit der bereits im Modell vorhandenen Batterie / BEC-Versorgung durch den Fahrtregler oder mittels einer zusätzlichen Spannungsversorgung getestet werden können (in dieser Konfiguration ist sicherzustellen, dass keine Versorgung über den Servostecker erfolgt).

Über den Jumper JP3 wird die Polarität des Steuerimpulses für das Servo eingestellt. Bitte beachten Sie, dass es sich bei der LED um eine Bi-Color-LED handelt.

Bedienung

Die Bedienung ist einfach und intuitiv. Der Servotester verfügt über zwei verschiedene Betriebsarten: der Manual-Mode, bei dem die Steuerung des Servos per Drehknopf P1 erfolgt und die Neutralstellung eingestellt werden kann und dem Exercise-Mode, in dem das Servo automatisch zwischen den Anschlägen hin- und her gefahren wird. Der Wechsel zwischen den beiden Betriebsarten erfolgt durch die Betätigung des Tasters S1. Über die LED kann jeweils erkannt werden, in welchem Modus sich der Servotester befindet.

Nach dem Einschalten befindet sich das Gerät im Manual-Mode und die Servoposition wird durch Drehung des Potentiometers P1 eingestellt. Im Impulsbereich außerhalb des Fensters von 1,45 ms und 1,55 ms leuchtet die LED grün. Um die Neutralstellung definiert anzufahren, wechselt die Farbe der LED innerhalb dieses Fensters auf gelb bzw. beide Farben der LED leuchten und bei Erreichen der Neutralstellung von 1,5 ms wird schließlich rot angezeigt; es muss also kein Taster gedrückt werden und beide Hände sind frei, um ggf. Justagearbeiten durchführen zu können.

Im Exercise Mode stehen zwei Geschwindigkeiten zur Auswahl. Die LED blinkt in dieser Betriebsart rot und zeigt über ihre Blinkfrequenz an, welche Geschwindigkeit gewählt wurde (0,25 s entsprechend 2 x blinken/Sekunde oder 15 s (entsprechend einmal 2 s an, dann 2 s aus) von Endausschlag zu Endausschlag). Die Umschaltung der Geschwindigkeit erfolgt durch Verdrehung des Potentiometers: wird eine Impulslänge größer als 1,5 ms eingestellt, dann wird der Exercise Mode mit hoher Geschwindigkeit gewählt, ansonsten erfolgt die langsame Ansteuerung des Servos.

Software Download

Die Firmware für den Servotester (Release 1.0) kann hier herunter geladen werden und für private, nicht kommerzielle Zwecke ohne Einschränkungen genutzt werden.

Servotester Bausatz und Komponenten

Im Store finden Sie einen kompletten Bausatz, die unbestückte Leiterplatte und bereits programmierte Controller.

Empfänger mit bis zu 64 Kanälen für digitale Fernsteuerung oder Roboter

Für die Fernsteuerung im Funktionsmodellbau und bei komplexeren Robotern ergibt sich häufiger die Notwendigkeit für mehr als die üblichen 8 oder 12 Fernsteuerkanäle. Eine digitale Fernsteuerung mit einem Notebook, Tablet oder Smartphone als WLAN- oder Bluetooth- Sender, der anstelle des traditionellen PPM-Impulsrahmens kanalbezogene Kommandos verwendet, bietet vielfältige Möglichkeiten zur Realisierung einer eigenen, modellspezifischen Bedieneroberfläche.

Auf der Modellseite kann ein PiKoder/SSC zum Einsatz kommen, der die Kommandos dann in entsprechende Servosignale umsetzt. Für Einsatzfälle mit bis zu acht Kanälen stehen bereits kombinierte Empfänger- und Controller-Bausteine zur Verfügung (PiKoder/SSC wRX für WLAN und PiKoder/SSC RX für Bluetooth). Dieser Beitrag beschreibt, wie Empfänger mit mehr als acht Kanälen realisiert werden.

Die serielle Schnittstelle des PiKoder/SSC verfügt mit dem miniSSC-Interface über ein Kommando, das ein Daisy-Chaining von PiKodern zur Ansteuerung von bis zu 255 Servokanälen erlaubt. Die Grundzüge des Verfahrens sind in der PiKoder/SSC Application Note „Daisy Chaining“ beschrieben.  In dieser Konfiguration übernehmen PiKoder/SSC, die im Modell verteilt und über einen Datenbus miteinander und dem UART des Empfängers verbunden sind, lokale Steueraufgaben.

Der Empfängerbaustein wird sinnvollerweise auf einer gesonderten Busplatine untergebracht, die zusätzlich noch eine Spannungsanpassung auf 3,3 Volt, die vom WLAN-Empfänger und den PiKoder/SSC benötigt wird, Bustreiber, um auch längere Verbindungswege realisieren zu können und eine Logik, die verhindert, dass eventuelle irrtümliche TX-Signale der PiKoder zu einer Zerstörung von Pins führen, aufnimmt. Die folgenden Bilder zeigen den Aufbau der Busplatine auf einer Prototypleiterplatte, den Schaltplan sowie die Pinbelegungen.

Aufbau des Prototypen

Schaltplan

Anschlussbelegungen Prototyp

Die Busplatine kann alternativ mit einem WLAN- oder einem Bluetooth-Empfänger versehen werden. Die nachfolgenden Bilder zeigen beide Konfigurationen.

Busplatine mit WLAN Empfänger …

… oder alternativ mit Bluetooth bestückt

Die PiKoder/SSC werden über vier-adrige Verbindungskabel mit der Busplatine verbunden und mit Spannung versorgt. Die Programmierung der PiKoder/SSC für diese Konfiguration ist in der oben genannten AN beschrieben.

Ergänzung: Die Busplatine ist inzwischen auch als Bausatz erhältlich. Nähere Informationen finden Sie auf der PiKoder-Webseite.

ESP8266-01 Sketch für den PiKoder/SSC wRX

Der PiKoder/SSC wRX verwendet das ESP8266-01 als Access Point (AP) zur Realisierung einer transparenten seriellen Kommunikation. Diese Anforderung lässt sich mit der Konfiguration über AT-Befehle realisieren. Allerdings ist dieser Weg unnötig kompliziert und aufgrund der zahlreichen Eingaben Fehler trächtig. Hinzu kommt, dass sich das Parametrierungsergebnis nur schwer verifizieren lässt und für Änderungen eine Neuprogrammierung des ESP8266 erforderlich ist.

Wesentlich einfacher ist es, den ESP8266-01 mit einem Sketch zu laden, der hinsichtlich der seriellen Kommunikation die identische Funktion realisiert und zusätzlich mit einigen effektiven Kommandos die Einstellung der benötigten AP-Parameter ermöglicht.

Der benötigte Sketch udpRC_ESP8266-01 ist Open Source und steht in einem github-Repository zum Download bereit. Die Firmware wird über das Arduino IDE, wie im Beitrag Modellfernsteuerung mit Webbrowser beschrieben, in den ESP geflasht.

Die Bedienung ist denkbar einfach. Beim ersten Start überprüft das Programm den Speicher des ESP8266, ob bereits ein gültiger Parametersatz vorliegt. Ist dies nicht der Fall, dann werden die Defaultwerte abgelegt. Nach einem erneuten Start ist der Controller dann mit Defaultwerten einsatzbereit.

Der Screenshot zeigt die Bedienung und die verfügbaren Kommandos. Nach dem Reset meldet sich der ESP8266-01 mit einigen unlesbaren Zeichen, die die Betriebsbereitschaft anzeigen.

Mit dem Kommando ‚$?<cr><lf>‘ wird der aktuelle Parametersatz abgefragt und ausgegeben. Die SSID des AP wird mit dem Kommando ‚$s=‘ gefolgt von <cr><lf> geändert und zur Veränderung des Passwords wird ‚$p=‘ eingesetzt. Die neuen Parameter werden zwar direkt abgespeichert aber erst nach einem Neustart verwendet. Nach erfolgreicher Parametrierung können die geänderten Einstellungen jederzeit mit ‚$?<cr><lf>‘ abgefragt werden.

Modellfernsteuerung mit Arduino über XBee

Durch die Kombination der Arduino-basierten digitalen Open Source Fernsteuerung arduinodtx mit einem intelligenten Servocontroller wie dem PiKoder/SSC, einem XBee Shield und einem XBee Modul entsteht eine hochwertige Modellfernsteuerung.

Hierbei wird eine transparente Übrertragung eingesetzt, so dass keine Anpassungen an der Arduino Software oder der PiKoder/SSC Firmware erforderlich sind; es steht der volle Funktionsumfang der Fernsteuerung zur Verfügung.

Der prinzipielle Aufbau des Senders mit der Jumperstellung für das Arduino XBee Shield ist im Bild unten dargestellt, die Verdrahtung der Steuerknüppel entspricht dem Aufbau auf der arduinodtx Webseite.

xbee-digital-rc_404p

Der Aufbau des kompletten Empfängers bestehend aus dem XBee-Breakout Adapter, dem PiKoder/SSC und einem Spannungswandler zur Erzeugung der benötigten 3,3 Volt Versorgungsspannung sowie die Programmierung der XBee Module ist in der PiKoder/SSC Application Note #3: XBee Communication detailiert beschrieben.

complete-receiver-unit

Prototyp Empfängeraufbau

Modellfernsteuerung mit Webbrowser

Ein Fernsteuermodell, dessen Empfänger als Access-Point konfiguriert ist und einen Webserver anbietet, kann mit einem Webbrowser von einem Smartphone aus ferngesteuert werden.

Als Hardwareplattform zur Implementierung dieses Konzepts bietet sich der PiKoder/SSC wRX an (s.u.): der ESP8266-01 realisiert den Access Point und den Webserver, der PiKoder/SSC übernimmt die zeitkritische Ansteuerung der Modellservos.

pikoder_ssc_wrx-catalogue-image-png

PiKoder/SSC wRX

In der Standardkonfiguration des PiKoder/SSC wRX wird der ESP8266-01 als transparente Brücke verwendet. Da zur Modellfernsteuerung mit dem Browser ein Webserver benötigt wird, ist der Wifi-Controller mit neuer Firmware zu laden. Hierzu kommt das IDE des Arduino zum Einsatz, das inzwischen auch generische ESP8266 Boards unterstützt.

Der benötigte Sketch ist Open Source und wird über das github Repository makerprojects/httpRC verteilt. Laden Sie den Sourcecode herunter und öffnen den Sketch mit dem Arduino IDE. Am Anfang des Programms finden Sie Hinweise zu den benötigten Boardeinstellungen. [Update 28.12.2018: Der httpRC Sketch wurde komplett überarbeitet. Die zugehörige Beschreibung finden Sie hier.]

usb-connector-ebay

USB-Serial Umsetzer

Da man zum Flashen außerdem noch einen Reset-Taster und einen Programmiertaster benötigt, baut man sich zweckmäßigerweise einen entsprechenden Adapter auf einer Lochrasterplatine auf.

programmieradapter-esp8266

Programmieradapter für den ESP8266-01

Der Schaltplan für den eigentlichen Programmierteil ist in der folgenden Schaltung dargestellt.

esp8266_flash_prog_board_sch

Die Erzeugung der ebenfalls benötigten 3,3 Volt kann genauso wie beim PiKoder/SSC wRX mit einem Standard-Lowdrop-Spannungsregler LF 33 CV erfolgen (s. Schaltplanauszug; die 5 Volt vom USB-Serial-Adapter werden rechts angeschlossen, der Ausgang ist auf der linken Seite.

spannungsanpassung

Leider startet die Programmierung des ESP8266 nicht automatisch wie man dies vielleicht vom Arduino gewöhnt ist, sondern ist manuell einzuleiten. Hierzu werden der RST und der PROG Taster gleichzeitig gedrückt und der RST-Taster bei noch gedrücktem PROG-Taster losgelassen. Wenn danach dann auch der PROG-Taster losgelassen wird, befindet sich das Modul im Programmiermodus. Nun kann das Upload gestartet werden und nach der erfolgreichen Programmübersetzung wird die neue Firmware aufgespielt. Bevor das Modul eingesetzt werden kann, ist ein weiterer Reset erforderlich.

Modellfernsteuerung über WLAN mit Smartphone

Dieser Beitrag zeigt, wie einfach es ist, ein ferngesteuertes Modellauto – hier einen Crawler – auf eine Fernsteuerung mit dem Smartphone und WLAN umzurüsten. Durch die Verwendung des Pretzelboardes als Empfänger beschränkt sich der Hardware-Bauaufwand auf eine Prototyp-Leiterplatte zur elektrischen und mechanischen Adaption des Boardes. Der benötigte Sketch sowie die Android App stehen im Beitrag zum Download bereit.

Aufbau Empfänger

Die Schaltung des Empfängers kann durch den Einsatz des Pretzel Boardes sehr einfach gehalten werden. Die Spannungsversorgung  erfolgt über den Fahrtregler, der normalerweise auch den „traditionellen“ Empfänger mit 5 Volt versorgt (BEC – Battery Elimination Circuit) und ausreichend Leitung bereitstellt.

Achtung: bitte immer sicherheitshalber nachmessen, um eine Zerstörung des Pretzelboardes durch zu hohe Spannung zu vermeiden!

Schematic Receiver Crawler

Von daher wird der Empfänger zweckmäßigerweise unter Verwendung einer Lochrasterplatine, die über zwei Buchsenleisten das Pretzelboard aufnimmt und zwei dreipolige Stiftleisten für den Anschluss des Lenkservos und den Fahrtregler (ESC) realisiert.

Einbau Empfänger

Der Empfänger wird mechanisch mit Klettband an einer geeigneten Stelle im Modell befestigt.

Schließlich ist der Controller Sketch „UDP_RC.ino“ zu laden, der über github bereit gestellt wird.

Installation Android App „udpRC4NanoESP“

Die als Sender benötigte Android App „udpRC4NanoESP“ kann über den folgenden Link im Google Play Store kostenlos bezogen werden.

Start der Fernsteuerung

Zunächst wird der Empfänger eingeschaltet, der nach dem Booten den Hotspot „NanoESP“ anbietet. Das Android Smartphone ist über die Einstellungen mit diesem Hotspot zu verbinden.

Dann wird die udpRC4NanoESP-App gestartet und die gewünschte Bedieneroberfläche im Hauptmenü ausgewählt….

 

WLAN Modellfernsteuerung mit Pretzel Board und Android Smartphone (Vortrag Maker Faire 2016)

Auf der Maker Faire 2016 in Hannover habe ich vorgestellt, dass sich mit dem Pretzel Board und einer geeigneten Android App mit geringem Aufwand eine einfache Modellfernsteuerung über WLAN realisieren lässt.

Der Empfänger kann auf einem Prototypboard aufgebaut werden.

UDP_Receiver-Pretzelboard

Dann wird das Pretzelboard  über das Arduino IDE mit dem nachfolgenden Sketch „udp_RC.ino“ programmiert, der als Open Source bei github verfügbar ist.

Nun wird nur noch die Android App „udpRC4NanoESP“ benötigt, die über den Google Play Store kostenlos bezogen werden kann.

Wer einen dauerhafteren Aufbau des Empfängers realisieren möchte, findet im folgenden Beitrag weitere Informationen.

UMS-85 Monitorprogramm

UMS-85 Mikrocomputer-System mit Intel 8085

Vor einiger Zeit habe ich bei ebay ein UMS-85 Mikrocomputer-System erworben. Das System wurde in der Elektronikzeitschrift ELO aus dem Franzis Verlag Anfang der 80’er Jahre vorgestellt und es gab ein Sonderheft Nr. 70 mit dem Titel „Vom Bit zum Beispiel“, in dem das System beschrieben ist.

Meine Version war mit einem 2708 EPROM (1k bei 8 Bit- Datenlänge) bestückt und funktionsfähig. Allerdings sind mir bei der Beschäftigung mit dem System einige Unschönheiten aufgefallen, die ich beheben wollte.

Da ein 2708 EPROM aufgrund der zahlreichen Programmierspannungen von heute gängigen Programmierern nicht mehr unterstützt wird, habe ich die Systemleiterplatte durch umlöten von zwei Drahtbrücken – wie in der Beschreibung vorgesehen – auf den Einsatz eines 2716 EPROM, das auch vom meinem Programmierer unterstützt wird, hochgerüstet.

Die Übertragung des originalen EPROM Inhalts in das neue, größere  EPROM war problemlos möglich und ich konnte danach mein angepasstes Monitorprogramm einbauen.