L298N Motortreiber mit RC Fernsteuerempfänger verbinden

Der Servoausgang  eine RC Empfängers stellt zwar alle Informationen bereit, die zur Steuerung eines L298N Motortreibers benötigt werden, aber das Signal muss in geeigneter Weise ausgewertet und neu kodiert werden, da die Ansteuerungslogik des Motortreibers grundsätzlich anders ist als die eines RC Servos.

Diese Aufgabe kann der RCRX2Bridge Baustein übernehmen. Es handelt sich dabei um eine Ein-Chip-Lösung, die jeweils einen Kanal auswertet und damit einen Motor der L296 Brücke ansteuert. Die Schaltung ist sehr einfach und der Baustein mit dem Breakout-Board schnell aufzubauen.

RCRX2Bridge Breakout Board
RCRX2Bridge Breakout Board

 

RCRX2Bridge unterstützt die zwei gängigen, aber unterschiedlichen Ansteuerungen von L298N Brücken: Modelle mit 2/4 Phasen und Modelle mit zwei Logik- und einen Speed-Eingang.

Ansteuerung von Brücken mit zwei Eingängen

Typischer L298N Motortreiber mit zwei Eingängen je Motor
Typischer L298N Motortreiber mit zwei Eingängen je Motor

 

Der RCRX2Bridge Baustein wird eingangsseitig, wie im Beitragsbild dargestellt, mit dem Empfänger verbunden. Die Eingangspins des Motortreibers IN1 und IN2 werden wie im Beitragsbild gezeigt, mit den Ausgangspins des Breakout-Boards verbunden. Soll noch ein zweiter Motor angesteuert werden, dann ist dazu ein zweites RCRX2Bridge -Modul erforderlich.

Ansteuerung von Brücken mit drei Eingängen

Typischer L298N Motortreiber mit drei Eingängen
Typischer L298N Motortreiber mit drei Eingängen

 

Konfiguration des RCRX2Bridge für Motortreiber mit drei Eingängen
Konfiguration des RCRX2Bridge für Motortreiber mit drei Eingängen

Für diesen Anwendungsfall wird der RCRX2Bridge Baustein durch eine Lötbrücke bei “MODE” für die geänderte Logik konfiguriert und dann auch in diesem Fall eingangsseitig, wie im Beitragsbild dargestellt, mit dem Empfänger verbunden.

Die Eingangspins des Motortreibers ENA, IN1 und IN2 werden wie im Bild gezeigt, mit den Ausgangspins des Breakout-Boards verbunden. Soll noch ein zweiter Motor angesteuert werden, dann ist dazu auch hier ein zweites RCRX2Bridge -Modul erforderlich.

 

Der Bausatz für das Breakout-Board mit dem RCRX2Bridge Controller ist im Shop erhältlich.

 

Fernsteuerung mit Gamepad oder Joystick

Überblick

Bereits im vorherigen Beitrag wurde die Möglichkeit vorgestellt, mit einem Joystick oder Gamepad, einem PC und einem PiKoder/SSC bis zu acht Servos über eine USB-Schnittstelle zu steuern. Hier wird nun beschrieben, wie eine drahtlose Modellfernsteuerung mit einem PiKoder – Empfänger, dem PiKoder/SSC RX, realisert werden kann.  Zur Signalübertragung kommt Bluetooth zum Einsatz.

Aufbau

Zunächst ist der PiKoder/SSC RX auf der Ebene des Betriebssystems mit dem PC zu verbinden. Hierzu sucht man zunächst in der Gerätesteuerung nach neuen Bluetoothgeräten.

Nach kurzer Zeit sollte das Bluetooth-Modul des Empfängers angeboten werden. Der PIN lautet “1234”.

Mit der Auswahl “Verbinden” erfolgt die Kopplung (Pairing) auf Systemebene.

Wie die folgende Ansicht aus dem Geräte-Manager zeigt, werden mit der Kopplung systemseitig auch zwei virtuelle serielle Schnittstellen angelegt auf die wir später im Programm zum Verbindungsaufbau zugreifen. 

Damit ist die Einrichtung abgeschlossen und das Programm JoystickRC kann jetzt wie im vorherigen Beitrag beschrieben gestartet werden. 

Servos mit Gamepad oder Joystick steuern

Überblick

Im Bereich der Robotik ergibt sich häufiger die Notwendigkeit mehrere Servos anzusteuern, z.B. bei der Realisierung eines Roboterarms. Hierbei bietet sich die Bedienung mit einem Gamepad oder Joystick an, weil die Vielzahl der Achsen / Freiheitsgrade die effiziente Kontrolle vieler Kanäle ermöglicht.

Dieser Blog beschreibt den Aufbau, um mit der kostenlosen Windows APP JoystickRC acht Servos drahtgebunden, z.B. für einen Roboterarm zu kontrollieren.

Die Abbildung der Achsen und Schalter auf die Servokanäle erfolgt flexibel in der Software. Die eigentliche Impulserzeugung für die Servos übernimmt ein PiKoder Serial Servo Controller (PiKoder/SSC), der über einen USB-Adapter mit dem PC verbunden ist. 

Aufbau

Der Aufbau erfolgt idealerweise mit Hilfe eines PiKoder/SSC –Entwicklungsboards und mit einem Standard USB-Adapter. Die Spannungsversorgung des PiKoder erfolgt über das USB Kabel. Da die USB-Schnittstelle nicht genügend Leistung zur Ansteuerung der Servos liefern kann, sind diese mit einer unabhängigen Spannungsquelle über die Anschlussleiste zu versorgen. Um Ausgleichströme zu verhindern, die den PC beschädigen könnten, darf der Jumper auf der PiKoder-Leiterplatte auf keinen Fall gesteckt sein. Nähere Informationen finden Sie im User Manual der PiKoder.


Anschluss des USB-Kabels an das PiKoder/SSC Entwicklungsboard – bitte beachten Sie, dass der Jumper nicht gesteckt sein darf

Anschluss des USB-Kabels an das PiKoder/SSC Entwicklungsboard – bitte beachten Sie, dass der Jumper nicht gesteckt sein darf

Software

Das Programm JoystickRC ist kostenlos im Microsoft Store erhältlich. Weitere Hinweise zur Bedienung finden Sie auf der Webseite des Programms.

 

Mehrere Joysticks mit Joystick Gremlin zu einem PPM – Signal mischen

Manchmal reicht nur ein Joystick oder ein Gamepad für einen Use Case nicht aus sondern es sollen weitere USB-Geräte wie Ruderpedale und ein Headtracker in das PPM-Signal gemischt werden. 

Wenn die Geräte als Windows Joysticks/Gamepads erkannt werden, dann bietet der Joystick Gremlin in Verbindung mit vJoy die Möglichkeit, Devices zu einem oder mehreren neuen virtuellen Geräten zu kombinieren.

Die Joystick2PPM – Applikationen Joystick2PPM, Joystick2PPM4Arduino, USBtoPPMforCompuFly und JoystickRC4Diddyborg bieten alle verbundenen (auch virtuellen) Joysticks dann beim Programmstart als Eingabegerät an und ermöglichen durch die Virtualisierung die Zuordnung der Achsen der verschiedenen USB-Geräte zu den PPM-Kanälen.

Die Installation von Joystick Gremlin ist im Manual beschrieben und war bei mir problemlos möglich. Danach konfiguriert man virtuelle Devices mit der gewünschten Zuordnung der Achsen und Tasten.

Findet eine der Joystick2PPM-Apps beim Start mehr als ein Device (egal ob physisch oder virtuell), dann wird dem User beim Programmstart eine Auswahl mit allen gefundenen Devices angeboten. 

Wird durch den Benutzer keine Auswahl getroffen, dann wird automatisch der erste Joystick in der Liste verwendet.

 

 

DiddyBorg mit QGroundControl – Joystick fernsteuern

In diesem Blog beschreibe ich, wie ich die Joystick- / Gamepad-Fernsteuerung meines RPI-gesteuerten DiddyBorg zu QGroundControl und MAVLink als Kommunikationsprotokoll weiter entwickelt habe. 

Damit habe ich die Basis geschaffen, um zukünftig in einer Standardumgebung weitere Sensoren zu verarbeiten und Missionen für den DiddyBorg zu planen und durchzuführen.

Softwareinstallation auf dem Raspberry Pi (RPi)

Auf dem RPi installieren Sie zunächst pymavlink, die Python-Version der MAVLink-Libraries. Am einfachsten geht dies mit PIP:

pip install pymavlink

Danach müssen Sie das Modul mavutil.py ersetzen, weil ansonsten aufgrund eines pymavlink-Issues keine Verbindung zwischen dem RPi und QGroundControl zustande kommt. Hierzu suchen Sie den Installationsort der pymavlink-Library mit:

pip list -v  

 

Dann ersetzen Sie das mavutil.py – Modul mit der Version im github-Repository zu diesem Blog. Die neue Version ist rückwärtskompatibel.

Schließlich erstellen Sie ein Verzeichnis, z.B. diddy2QGC in das Sie die Python-Module diddy2QGroundControl.py und ThunderBorg3.py kopieren. In diesem Verzeichnis starten Sie dann später das Python-Skript mit:

 python diddy2QGroundControl.py

 

Softwareinstallation auf dem Desktop

Installieren Sie QGroundControl auf Ihrem Desktop.

Starten der Anwendungen

Stellen Sie sicher, dass sich der RPi und Ihr Desktop im gleichen Netzwerk befinden und starten Sie QGroundControl (QGC) und das Python-Skript (die Reihenfolge ist ohne Bedeutung). 

Der DiddyBorg meldet sich bei der QGC an und Sie finden dann in den Vehicle-Einstellungen die Möglichkeit, Ihren Joystick einzulernen. Bitte beachten Sie dabei, dass diddy2QGroundControl.py im Mode 2 den Roll-Kanal für die Rechts/Links-Steuerung und den invertierten Wert des Pitch-Kanals für die Motorsteuerung verwendet.

 

 

Modernisierte Bedieneroberfläche für CompuFly von Flytron

In diesem Blog stelle ich meine Windows-App USB2PPM4CompuFly für den CompuFly USBtoPPM Converter V2.0 von Flytron vor. Diese Software ersetzt das auf der Flytron Produktseite bereit gestellte CompuFly – Programm.

Die USBtoPPMforCompuFly-App behält die bewährte Bedienung des  CompuFly-Programms weitgehend bei, präsentiert sich aber als komplett neu entwickelte Windows 10/11 App mit einer neueren Oberfläche und neuen Features.

Nach dem Start verbindet sich die App automatisch mit dem Converter und dem ersten angeschlossenen DirectX-fähigen Joystick oder Gamepad. Die verwendete Konfiguration wird bei Beendigung des Programms gespeichert und beim Neustart wieder geladen.

Die Bedieneroberfläche ist intuitiv und selbsterklärend: den Channel Outputs werden Joystick-Achsen bzw. Slider oder Buttons zugeordnet. Achsen und Slider-Kanäle können “getrimmt” werden und zur Anpassung an spezifische Anwendungsfälle steht zusätzlich EPA (Einstellung des Servoweges) zur Verfügung.

Über den Umfang des Open Source Programms Compufly.zip version 1.35 hinaus bietet USBtoPPMforCompuFly eine Schalterfunktion für die Joystick-Buttons an. Hierzu ist ein Button als Eingang für einen Servokanal auszuwählen und die Checkbox “sw” zu aktivieren.

Die USBtoPPMforCompuFly-App beziehen Sie im Microsoft App Store.

 

DiddyBorg mit Gamepad oder Joystick fernsteuern

In diesem Blog stelle ich meine Windows-App JoystickRC4DiddyBorg zur Fernsteuerung des DiddyBorg (von PiBorg) mit einem Joystick oder Gamepad vor. 

Die DiddyBorg-Beispielprogramme, die vom Hersteller PiBorg veröffentlicht wurden, enthalten zwar auch ein Python-Fernsteuerscript mit Joystick, die aber Bluetooth verwendet und daher nur eine recht beschränkte Reichweite aufweist. 

Die hier vorgestellte App verwendet das vorhandene WLAN und UDP als Protokoll, um eine ausreichende Agilität der Fernsteuerung sicher zu stellen. Aus Sicherheitsgründen ist die Time-Out-Logik der Motorsteuerung ThunderBorg aktiviert.

Installation der Software

Der DiddyBorg benötigt als Empfänger ein Python-Script JoystickRC4DiddyBorg, das Sie auf github.com finden. Zusätzlich zum Empfängerprogramm finden Sie im Repository auch eine Version der ThunderBorg – Library für Python 3.x (die  Beispielprogramme für den DiddyBorg basieren noch auf Python 2.x).

Am einfachsten ist es, die beiden Dateien zusätzlich in das Verzeichnis mit den Beispielen zu kopieren – dann sollte das Script ohne weitere Anpassungen von Pfadnamen funktionieren.

Auf der PC – Seite installieren Sie die gleichnamige Windows App JoystickRC4DiddyBorg, die Sie kostenfrei im Microsoft App Store erhalten. 

Bedienung

Starten Sie zuerst das Python-Script auf dem DiddyBorg. Wenn Sie einen Bildschirm angeschlossen haben, dann meldet sich das Programm und gibt an, dass es auf einen  Client wartet.

Wenn Sie die PC App starten, dann sucht diese automatisch nach einem DiddyBorg mit einem aktiven und kompatiblen Empfänger im lokalen WLAN (mit dem sowohl der DiddyBorg als auch der verwendete PC verbunden sein müssen). Kann keine Verbindung hergestellt werden, dann erfolgt eine entsprechende Fehlermeldung. 

Nach dem erfolgreichen Verbindungsaufbau können die Kanäle den verschiedenen Joystickachsen und Tasten zugeordnet werden. Die Kanäle 3 und 4 werden als Taster verwendet und ermöglichen beispielsweise eine schnelle / langsame Drehung (die Funktion der Taster kann im Python-Script nachvollzogen werden). 

Die Zuordnung der Kanäle wird gespeichert und beim nächsten Programmstart wieder hergestellt.

Open Source Android App zur Modellfernsteuerung mit Bluetooth

Übersicht

Mit der “picCAR” App wird ein Android-Tablet oder Smartphone mit Bluetooth zum Fernsteuersender.

Die App basiert ursprünglich auf dem Cxem Car 1 Open Source Projekt. Es wurden verschiedene Anpassungen der Benutzeroberfläche vorgenommen und die Steuerbefehle auf den PiKoder/SSC RX Empfänger umgestellt.

Die App ist “Open Source” und wird über Github bereit gestellt.

Bedieneroberfläche

Bedieneroberfläche picCAR

Die Bedieneroberfläche ist intuitiv und einfach verständlich. Es stehen vier verschiedene Modi zur Verfügung: über Tasten (“Button Control”), virtuellen Joystick, Beschleunigungsmesser und eine Kombination aus Beschleunigungsmesser mit logischem Schieberegler. Die Verbindung zum Empfänger wird aufgebaut, sobald der Bedienmodus ausgewählt wurde.

Der Aufbau des Empfängers ist auf der PiKoder/SSC RX Seite beschrieben. Die App wird von allen PiKoder/SSC Firmwareversionen unterstützt. Soll die Time-out-Funktion der App genutzt werden, dann ist mindestens Release 1.03 zu verwenden.

picCAR User’s Guide (.pdf File, DE)

Der picCAR User’s Guide beschreibt die Funktionen der picCAR APP im Detail.

 

Arduino Fernsteuersender mit iRangeX Multiprotokollmodul

Der vorherige Blog beschreibt den Arduino-PPM-Encoder. Zusammen mit einem Multiprotokollmodul können Sie mit geringem Zusatzaufwand einen vollständigen Fernsteuersender aufbauen.

Dazu adaptieren Sie das Modul über ein Arduino-Prototyp-Shield. Es sind allerdings nicht alle Shields gleich geeignet. Einige Shields haben im unteren rechten Bereich kein Lochraster sondern ein spezifisches Layout wie die rote Leiterplatte im Bild. Sie benötigen aber ein Prototyp-Board mit vollständigem Lochraster wie die blaue Leiterplatte.

Arduino Prototyp Sields

Die elektrische Verbindung zwischen dem Arduino und dem Modul stellen Sie mit einer fünfpoligen Stiftleiste mit extra-langen Stiften her. Stecken Sie die Stiftleiste in die Buchsenleiste auf der Rückseite des Moduls ein. Positionieren Sie das Modul dann auf dem Prototyp-Shield und finden so die korrekte Position für das Modul und die Lötpunkte, die Sie verwenden müssen. 

Um einen sicheren Halt zu gewährleisten, habe ich noch zusätzlich Klettband vorgesehen. Da sich durch diese zusätzliche Zwischenlage die Höhe der Lötstifte nochmal verändert, können Sie die Stifte erst jetzt einlöten.

Die Verdrahtung zur Spannungsversorgung und für das PPM Signal entnehmen Sie dem Bild. Mit dem Aufstecken des Moduls ist der Aufbau abgeschlossen.

 

 

 

 

 

 

 

 

USB2PPM by Arduino

Meine bisherigen Blogs zur Verbindung eines Joysticks mit einer Modellfernsteuerung über USB haben immer einen meiner PiKoder verwendet. Aber natürlich kann auch ein Arduino die PPM-Signalerzeugung übernehmen. 

Zur Umsetzung dieser Idee habe ich einen Arduino Sketch USB2PPM_by_Arduino (Open Source) erstellt, den Sie auf Github finden. Das Programm implementiert einen PPM-Encoder, dessen Parameter und Kanalwerte über serielle Kommandos gesetzt werden.

So können Sie u.a. die Polarität des Ausgangssignals umschalten und die Zahl der PPM-Kanäle im Bereich von eins bis acht wählen, um den Encoder auf Ihren Sender anzupassen.  

Das PPM Signal finden Sie am Pin D8. Zur Verbindung mit dem Schülereingang Ihrer Modellfernsteuerung benötigen Sie dann noch ein entsprechendes Kabel. Möglicherweise ist es auch sinnvoll, ein Arduino – Prototyp – Shield zu verwenden, das eine geeignete Buchse aufnimmt, um eine stabile Verbindung sicher zu stellen. 

Für die Integration der PPM-Encoders in Ihre Anwendung entnehmen Sie die Definition der Kommandos und Nachrichten dem Headerfile protocol.h.  

Außerdem finden Sie im Microsoft Store die Joystick2PPM4Arduino App mit der Sie einen Joystick oder Gamepad (DirectX-fähig) verwenden, um den Arduino-PPM-Encoder anzusteuern. Die App arbeitet mit dem Arduino Uno, Nano und Micro Pro.