Raspberry Pi Zero GPIO-Pins über Raspberry Pi Desktop steuern
Wie in meinem Beitrag “Wie man Raspberry Pi Desktop unter VirtualBox einrichtet” schon geschrieben, bietet das Raspberry Pi Desktop Betriebssystem eine Möglichkeit die GPIO-Pins eines per USB angeschlossenen Raspberry Pi Zero mit dem Tool GPIO-Expander zu steuern. In diesem Beitrag zeige ich dir, wie du eine LED am Zero über den GPIO-Expander ansteuerst.
Beitragsaktualisierung 16.07.2023
Den Aufbau habe ich mit Raspberry Pi Desktop, Stand July 2022 betrieben auf einer virtuellen Maschine in der VirtualBox (Version 7) getestet. Die Einrichtung der virtuellen Maschine habe ich in meinem Beitrag “Raspberry Pi Desktop in einer virtuellen Maschine unter VirtualBox einrichten” beschrieben. Außerdem habe ich am Ende des Beitrags beschrieben, wie du dir das Testskript mittels Terminal laden kannst.
Der GPIO-Expander
Das Tool bietet die Möglichkeit, einen Raspberry Pi Zero bequem vom Rechner aus zu steuern. Hierzu muss der RasPi nur per USB-Kabel am PC angeschlossen werden. Hierzu ist keine SD-Karte und kein Betriebssystem notwendig. Dies ist für viele GPIO-Projekte durchaus interessant und lässt den Aufbau und die Tests dieser Projekte vereinfacht durchführen. Die ganzen Möglichkeiten findest du in der Beschreibung der verwendeten Bibliothek. ²
Der Aufbau
Für diesen kleinen Testaufbau benötigst du folgende Bauteile:
- einen Raspberry Pi Zero, entweder du besorgst dir ein Starterpaket oder den Raspberry Pi Zero mit aufgelöteten Pinleisten;
- ein Breadboard, ein LED, einen 330-Ohm-Widerstand, zwei Jumper Kabel, solltest du noch keine Bauteile haben, empfiehlt sich zum Beispiel dieses Einsteigerpaket von Elegoo;
- ein USB Verbindungskabel mit USB-A-Stecker auf Micro-USB-B Stecker.
Die fritzing-Projektdatei habe ich für dich zum Download bereitgestellt.
Vorbereitung für Raspbian Desktop
Wie immer, für ein neues Projekt solltest du zuerst einmal dein Betriebssystem auf den neusten Stand bringen. Solltest du die neuste Version des Raspbian Desktop verwenden, kannst du den Schritt der Installation von usbbootgui auslassen.
1 2 |
sudo apt-get update sudo apt-get install usbbootgui |
Zugriff auf den Pi Zero
Der Zero verfügt über einen USB-OTG-Anschluss. Über diesen kann man die erforderliche Boot-Firmware über das USB-Kabel an den Zero senden. Hierzu verbindest du den Zero mit dem USB-Anschluss deines Rechners. Wenn du das Raspbian Desktop über die VirtualBox verwendest, solltest bzw. musst den Zero über Geräte-USB der VirtualBox dem Raspbian zuweisen. Im ersten Schritt erkennt das System deinen Zero und es öffnet sich das USB-Boot-GUI. Hier wählst du nun “GPIO expansion board” aus. Bei mir kam es bei der Bespielung des Zeros immer wieder zu Abbrüchen der USB-Verbindung und ich musste diese in der Gerätesteuerung der VirtualBox dem Raspbian Desktop zuweisen.
Nach dem Bespielen des Pi Zero kannst du die Verbindung über das Terminal mit folgendem Befehl testen:
1 |
ping6 fe80::1%usb0 |
Zugriff auf die GPIOs
Um sich bei jedem Neustart des Betriebssystems die Festlegung der Umgebungsvariablen zu sparen, tragen wir diese in die Bash-Konfiguration des aktuellen Benutzers ein. Hierzu gibst du im Terminal folgenden Befehl ein.
1 |
sudo leafpad .bashrc & |
Am Ende der geöffneten Textdatei trägst du folgende Zeilen ein.
1 2 3 |
#gpiozero Umgebungsvariablen export GPIOZERO_PIN_FACTORY=pigpio export PIGPIO_ADDR=fe80::1%usb0 |
Für einen einfachen Test kannst du nun die von pigpio bereitgestellte Befehlszeilenschnittstelle mit folgenden Befehlen nutzen. Die Kommentare habe ich nur zum Verständnis hinzugeschrieben.
1 2 |
pigs w 17 1 # Pin 17 einschalten pigs w 17 0 # Pin 17 ausschalten |
GPIO Steuerung mit Python3
Um die LED-Ansteuerung mit Python einfach zu testen, starte im Terminal Python mit python3 und gib folgende Befehle ein:
1 2 3 |
from gpiozero import LED led = LED(17) led.blink() |
Mit STRG+C kannst du das Skript abbrechen.
Damit du dir den Code für später speicherst, erzeuge eine Textdatei mit einem Texteditor wie zum Beispiel Nano oder Leafpad.
Den Editor öffnest du über die Terminalbefehle sudo nano ledtest.py oder sudo leafpad ledtest.py.
Schreibe oder kopiere in die Textdatei folgende Befehlszeilen.
1 2 3 4 5 6 7 8 |
from gpiozero import LED from signal import pause print("Die LED müsste nun blinken\nDas Skript kannst du mit STRG+C abbrechen.") led = LED(17) led.blink() pause() |
Du kannst natürlich auch zum Schreiben die IDLE3 verwenden. Allerdings funktioniert die Bibliothek nicht über die grafische Benutzeroberfläche. Daher musst du das Skript über das Terminal starten. Verwende hierzu den Befehl python3 ledtest.py.
Wenn du dir das Abtippen oder Kopieren des Codes sparen möchtest, steht dir der Code als Textdatei zum Download bereit.
Gib im Terminal folgenden Befehl ein, dieser lädt die Textdatei herunter und speichert diese als Python-Datei ab.
1 |
wget -O ledtest.py https://webnist.de/downloads/ledtest.txt |
Danach kannst du diese mit python3 ledtest.py aufrufen oder in Thonny bearbeiten.
Informationen zur gpiozero Bibliothek:
1 python-gpiozero, die GitHub-Seite der Bibliothek
² Gpiozero Documentation, PDF-Beschreibung von Ben Nuttall
3 Gpiozero Docs, die Online Beschreibung der Bibliothek
Kleiner Hinweis, alle Kommentare werden moderiert.
Dies bedeutet, der Kommentar wird vor der Veröffentlichung durchgelesen und von mir geprüft. Auch behalte ich mir vor, jeden Kommentar zu löschen, der nicht direkt auf das Thema abzielt oder nur den Zweck hat, Leser oder Autoren herabzuwürdigen.