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.

Der ESP8266-01 kann zum Flashen nur über einen USB-Serial-Umsetzer mit dem PC verbunden werden, da er nicht über eine USB-Schnittstelle verfügt. Hierbei ist zusätzlich zu beachten, dass das Modul eine Spannungsversorgung und Signalpegel von 3,3 Volt benötigt; der direkte Anschluss von 5 Volt zerstört die Leiterplatte! Da diese Kombination bei USB-Serial-Umsetzern nicht ganz alltäglich ist, wird üblicherweise ein Umsetzer mit 3,3 Volt Signalpegel und einem 5 Volt Spannungsausgang gewählt wie beispielsweise der bei Ebay erhältliche PL2303TA und eine zusätzliche Spannungsanpassung mit einem 3,3 Volt Regler vorgesehen.

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.

Modellfernsteuerung mit Tablet oder Smartphone 2.0

Benutzen Sie Ihr Android Tablet oder Smartphone als Fernsteuerung: mit Touch-Kommandos oder durch Bewegen des Tablets kann beispielsweise ein Roboter oder ein Modellauto über Bluetooth ferngesteuert werden. Als Basis dient die Android App picCAR, die als Open Source released wurde und in ablauffähiger Version im Play Store erhältlich ist.  

Diese App unterstützt in der aktuellen Version 1.3 nun zusätzlich zur bisherigen Robotersteuerung ( = Richtungsänderung über Geschwindigkeitsänderung der Antriebsmotoren)  auch „normale“ Fahrzeuge, bei denen ein Kanal zur Lenkung und ein Kanal zur Geschwindigkeitsregelung verwendet wird.

Foto_hoch

Das Tablet oder Smartphone steuert einen PiKoder/SSC über BlueTooth an. Der Einbau und die Verdrahtung des PiKoder/SSC ist schnell vorgenommen.

Detail Einbau PiKoder

Nähere Informationen zum Aufbau des Empfängers finden Sie auf der PiKoder Bluetooth-Fernsteuerseite.

Android Based Robotics

Auf der Suche nach einer geeigneten Plattform für eigene Roboter-Experimente bin ich auf Android Based Robotics gestoßen. Die Idee, die Sensoren, die Kamera und die Rechnerperformance eines Android Smartphone zur Steuerung eines Roboters zu verwenden, hat mich angesprochen.

Die Ansteuerung der Roboterhardware, wie beispielsweise der Motoren, erfolgt über ein IOIO Board, das ja speziell dazu entwickelt wurde, über ein Android Smartphone Aktoren zu steuern.  Die Verbindung zwischen IOIO und Phone wird über Bluetooth realisiert.

Ansicht_02

Der Aufbau der Hardware ist nicht besonders schwierig und erfolgte in meinem Fall auf einer Pertinaxplatte. Das aktuelle PCB-Release des IOIO-Boards hat nur noch einen micro-USB Port, so dass der zur Kommunikation verwendete USB BT Dongle über das mitgelieferte (rote) Kabel adaptiert werden musste.

Die gesamte Verdrahtung kann wesentlich vereinfacht werden, wenn eine Prototyp-Leiterplatte, wie im Bild gezeigt, eingesetzt wird.

Android_Based_Robotics_02

Das komplette Android Based Robotics Projekt ist Open Source; allerdings war der verfügbare Source Code hinsichtlich der Entwicklungsumgebung und verwendeten Libraries für die Videoverarbeitung und IOIO Ansteuerung nicht auf dem neuesten Stand. Ein aktualisierter Stand des ABR_client ist bei github verfügbar.

Modellfernsteuerung mit Joystick

Die Möglichkeit, ein Modell mit Joystick zu steuern, gibt es schon viele Jahre.  Üblicherweise wird hierzu der Joystick mit einem Notebook mit einer entsprechenden Steuersoftware verbunden, die dann wiederum über eine serielle Schnittstelle – heutzutage ein USB Port – einen Fernsteuersender mit einem PPM-Signal über die Schüler-Buchse ansteuert.

Für das Notebook sind zwei „Open Source“-Programme erhältlich: das im Titelbild dargestellte „Flytron Compufly Joystick Interface“ und eine neuere Java-Version „Joystick-to-ppm“.

USB2PPM Java

Für die Verbindung zwischen USB Port und Fernsteuersender steht nun neben dem Original „Flytron USBtoPPM Converter“ eine „Single Chip“ – Selbstbaulösung „USB2PPM“ zur Verfügung, die beide Programme unterstützt.

USB2PPM_CompuFly_config

Der sehr einfache Aufbau dieser Lösung ist deshalb möglich, weil der verwendete, moderne PIC-Microcontroller 16F1455 bereits über eine USB-Schnittstelle und einen sehr genauen internen Oszillator (0,25% Genauigkeit) verfügt und damit nur eine entsprechende Firmware erforderlich ist.

Weitere Informationen und Bezugsquellen befinden sich auf der USB2PPM-Webseite.

Modellfernsteuerung mit Tablet oder Smartphone über Bluetooth

Benutzen Sie Ihr Android Tablet oder Smartphone als Fernsteuerung: mit Touch-Kommandos oder durch Bewegen des Tablets kann beispielsweise ein Roboter über Bluetooth ferngesteuert werden. Als Basis dient die Android App picCAR, die als Open Source released wurde und in ablauffähiger Version im Play Store erhältlich ist.  Diese App steuert einen PiKoder/SSC direkt an. Nähere Informationen zum Aufbau des Empfängers finden Sie auf der PiKoder Bluetooth-Fernsteuerseite.

Servosteuerung mit Raspberry Pi über I2C

Dieser Beitrag beschreibt die Ansteuerung von Modellbauservos durch den Raspberry Pi über den I2C-Bus. Hierbei wird, wie auch im vorherigen Beitrag, ein PiKoder/SSC PRO als I2C Slave eingesetzt, der die präzise Erzeugung der Impulse zur Servoansteuerung übernimmt.

Die erforderlichen Verbindungen zwischen dem Raspberry Pi und und dem PiKoder/SSC PRO sind im nachfolgenden Bild dargestellt. Der Raspberry Pi übernimmt die Spannungsversorgung.

Belegung Connector Raspberry Pi

Die Ansteuerung der Servos erfolgt über Python-Programme (Version 2.x). Das folgende Beispiel zeigt den prinzipiellen Ablauf:

# Control of RC servos by I2C with PiKoder/SSC PRO
#
# Please refer to www.pikoder.com for more information #
# Imports
import smbus, os
import time
import subprocess
#
# Init variables
ServoPosition = 0
ReturnCode = 0
bus = smbus.SMBus(1)
#
# Main Loop
while 1:
    try:
        bus.write_byte_data(0x40,0x1,ServoPosition)
        ReturnCode = 0
        ServoPosition = (ServoPosition + 20) % 255
    except IOError as err:
        ReturnCode = err.errno
        subprocess.call('i2cdetect','-y','1') print ("Servo position: ", ServoPosition, " - Return code: ", ReturnCode)
    time.sleep(1)

Weitere Informationen zum PiKoder/SSC PRO wie ein ausführliches USER’s Manual und Schaltungsvorschläge finden Sie auf der PiKoder/SSC PRO Webseite.