Raspberry Pi Roboter per Infrarot Fernbedienung steuern

GPIO, Projekte

Raspberry Pi Roboter per Infrarot Fernbedienung steuern (Teil 3)

Nachdem unser Roboter bereits Fahren und einer Linie zu folgen gelernt hat, wollen wir ihn nun auch noch fernsteuern lassen. Dafür werden wir zunächst eine Infrarot Fernbedienung nutzen und später evtl. noch zusätzlich einen Xbox 360 Controller. Neben dem Steuern der Fahrfähigkeit sollen sich auch die Modi (Linie folgen, Autopilot, etc.) einstellen lassen.

In diesem Teil der Raspberry Pi Roboter Tutorials programmieren wir den IR Empfänger und legen die Befehle zum Fernsteuern an. Im Video dazu ist die Fernsteuerung zusätzlich gezeigt.

 

 

Zubehör

Neben den vorherigen Bauteilen brauchen wir für dieses Tutorial noch einen IR Fernbedienung und Infrarot Diode (hier als Kit verfügbar). Meist sind die Jumper Kabel schon dabei und die Diode kann direkt angeschlossen werden. Solltest du die Dioden einzeln kaufen (oder noch verfügbar haben), wirf bitte einen Blick ins Datenblatt, um bei der nachfolgenden Verkabelung auf Nummer sicher zu gehen.

Die IR Diode mit Fernbedienung kannst du im übrigen auch zur generellen Fernsteuerung deines Raspberry Pi’s verwenden, sei es in einem Multimediasystem wie KODI oder einfach nur um Skripte zu starten.

 

 

Anschluss des IR Empfängers

Der Anschluss des Infrarot Empfängers am Raspberry Pi ist sehr einfach, da das Modul lediglich drei Pins hat. Solltest du einen Empfänger inkl. PCB verwenden (siehe oben), so werden die Anschlüsse benannt sein. Ansonsten müsstest du im Datenblatt nach der richtigen Belegung schauen, da diese ggf. abweichen kann.

Im Prinzip wird der VCC Pin an einen freien 5V Pin des Raspberry Pi’s angeschlossen, der GND Pin an Masse / GND vom Pi und der mit IN / DATA beschriftete Pin kommt an GPIO 26.

Raspberry Pi Roboter Infrarot IR Steuerung

Bisherige Schaltung des Raspberry Pi Roboters (inkl. IR Empfänger)

 

Vorbereitung

Für die Nutzung des Infrarot Empfängers brauchen wir das Programm Lirc. Die Installation und Einstellung von Lirc habe ich bereits in einem vorherigen Tutorial gezeigt. Ich gehe davon aus, dass dieses umgesetzt wurde, da wir im folgenden ein eingerichtetes Lirc brauchen. Im unteren Abschnitt (Infrarot Raspberry Pi Universalfernbedienung – Programme starten) geht es um das Erstellen der lircrc Datei. Um den Roboter zu steuern und die Befehle später in unserem Skript zu erkennen, müssen wir eine solche Datei erstellen.

Sobald du also Lirc installiert und getestet hast, erstellen wir im Ordner, worin sich die restlichen Roboter Skripte befindet, diese Datei:

cd robot/
sudo nano lircrc

Folgender Inhalt wird in die Datei geschrieben. Du kannst natürlich auch eine andere Belegung wählen, diese habe ich genommen:

Gleich werden wir auf die Codes der Fernbedienung warten. Dazu wird die Zeichenkette unter „config“ dem Programm übergeben. Du kannst hier später auch noch weitere Tasten belegen, um bspw. später noch andere Aktionen aufrufbar zu machen. In meinem Fall wird mit der Play/Pause Taste der Modus zum Folgen einer Linie gestartet.

Um Lirc gleich auch per Python nutzen zu können, installieren wir anschließend noch eine entsprechende Bibliothek:

sudo apt-get install python-lirc

Solltest du Python 3 nutzen, so lautet das Paket python3-lirc.

 

 

Code zum Infrarot Signale empfangen

Wir erweitern unsere zuvor erstellte Roboter Klasse. Dazu erstellen wir die Funktion IRControl() nach Ende der Funktion lineFollowModeOn(self).

 

Den kompletten (bisherigen) Code kannst du außerdem hier ansehen. Gespeichert wird im Nano Editor wie immer mit STRG+O und geschlossen mit STRG+X.

 

Hintergrundprozess zum Steuern des Roboters

Nun wollen wir das ganze auf Funktionalität testen. Dazu haben wir zwei Möglichkeiten. Die einfachere ist, dass wir lediglich den folgenden Python Code in der Konsole eingeben (nach sudo python). Die andere Variante ist ein Skript mit dem entsprechenden Code zu erstellen und dieses nach dem Booten im Hintergrund zu starten. Das ist z.B. vor allem auf  Raspberry Pi Zero wichtig, falls man keinen WLAN Adapter angeschlossen hat. Tipp: Sofern du auch ein „großes“ Raspberry Pi 3/2B hast, kannst du den Code erst über SSH oder FTP auf den Pi spielen und anschließend nur noch die Micro SD Karte in den Zero stecken.

Der Code für die Test-Datei ist recht simpel (sudo nano test.py):

Entweder starten wir die Datei nun einfach (sudo python test.py) oder wir lassen sie bei einem Neustart automatisch öffnen.

Dazu nutzen wir am einfachsten crontab:

crontab -e

Ans Ende schrieben wir nun folgende Zeile:

@reboot ~/robot/test.py

Die Datei wird ab jetzt beim Neustart aufgerufen und du kannst den Raspberry Pi Roboter per Infrarot Fernbedienung fernsteuern.

Im nächsten Tutorial werden wir dem Roboter einen „Autopiloten“ verpassen, sodass dieser sich automatisch dorthin bewegt, wo kein Gegenstand im Weg ist. In Teil 6 der Reihe ist außerdem noch eine Steuerung per Xbox 360 Controller gezeigt.

, , , , , , , , , ,


9 Kommentare

  1. Hans sagt:

    Hallo,

    wenn ich mir z.B.
    „Icstation HX1838 IR Infrared Receiver Remote Control Kit for Arduino Raspberry Pi“ bestellen will, kriege ich immer die Anzeige:
    This item does not ship to Garding, Germany.

    Wo bestellt Ihr denn das ganze Zubehör? Das Problem hatte ich schon drei mal.
    Für einen Tip… Danke.

    Beste Grüße
    Hans

  2. Hans sagt:

    Danke Felix,

    die habe ich wieder nicht gefunden, merke ich mir aber jetzt.
    So langsam trudeln alle Zubehörteile ein.

  3. Hans sagt:

    Hallo,

    bei ersten Test’s ist er mir fast vom Tisch gefallen, auf dem Fussboden lief er gut bis er sich in den Kabeln verheddert hat, es sind noch Bildschirm, Maus, Hdmi und Strom angeschlossen).
    Jetzt bin ich bis „Teil 3, per Infrarot Fernbedienung steuern“ gekommen,
    mir ist nicht klar was ich wie anschliessen soll, den Receiving Head (das kleine Ding mit drei Beinen) oder das Remote Modul (das ist doch PCB?), oder Beides?
    Diese Teile sind inzwischen angekommen:

    IR Remote Control(not contain battery).
    HX1838 remote module.
    1838 Universal Receiving Head.
    3Pin 20cm Dupont cable.

    Danke für Hilfe.
    Gruß
    Hans

  4. Bernd sagt:

    Hallo Felix,
    Bin jetzt bei Teil 3.
    Wenn ich „pi@pibernd:~/robot $ sudo python test.py“ starte und z.B. Taste „Vorwaerts“ druecke, faehrt er ein Stueck zeigt im Terminal „FORWARD“ an und springt gleich wieder zurueck zu „pi@pibernd:~/robot $ “
    Haste du eine Idee?

    Gruss Bernd

    • Felix sagt:

      Hallo Bernd,
      klingt als ob die Funktion irgendwo beendet wird. Kannst du mal nach jedem 2. oder 3. Befehl eine print setzen, um zu schauen, was das letzte ist, was ausgeführt wird?

  5. Bernd sagt:

    Sorry, aber da musst du mir sagen in welcher Datei ich dass machen soll.
    Bin noch am lernen. Im terminal sieht es so aus.
    pi@pibernd:~/robot $ sudo python test.py
    BACKWARD
    pi@pibernd:~/robot $ sudo python test.py
    FORWARD
    pi@pibernd:~/robot $ sudo python test.py
    RIGHT
    pi@pibernd:~/robot $

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Blog abonnieren

Abonniere Tutorials-RaspberryPi, um kein Tutorial mehr zu verpassen!