Aus Raspberry Pi Geek 08/2022

Mit Pigpio auf die GPIO des Raspberry Pi zugreifen

© kozini / 123RF.com

…es lebe der König!

Martin Mohr

Die vielen Raspberry-Pi-Fans ans Herz gewachsene Bibliothek WiringPi pflegt deren Entwickler nicht mehr weiter – da kommt die Alternative Pigpio gerade recht.

Solange es den Raspberry gibt, diente WiringPi als Bibliothek, um auf die GPIO zuzugreifen. Mit dem dazugehörigen Tool Gpio war es möglich, über die Kommandozeile schnell etwas auszuprobieren. Sehr viele RasPi-Projekte bauen auf dieser Bibliothek auf. Im August 2019 veröffentlichte Gordon, der einzige Entwickler des Projekts, die letzte Version von WiringPi. Er erklärte sehr ausführlich auf seiner Webseite, warum er die Entwicklung der Bibliothek einstellte. Der mittlerweile gelöschte Beitrag steht noch im Webarchiv zur Verfügung [1]. Lesen Sie dazu den Kasten “Die zwei Seiten von Open Source”.

Möchten Sie weiterhin die GPIO des RasPi verwenden, gilt es, nach einer Alternative zu WiringPi zu suchen. Die Bibliothek Pigpio scheint auf den ersten Blick alles zu bieten, was wir für unsere Projekte benötigen. Im Folgenden werfen wir einen genaueren Blick auf die Bibliothek, um zu sehen, ob der erste Eindruck stimmt.

Die zwei Seiten von Open Source

Die Open-Source-Community stellt der Allgemeinheit viele Softwareprojekte bereit. Open Source lebt von Enthusiasten, die in ihrer Freizeit Projekte weiterentwickeln. Allzu oft passiert es aber, dass diese Entwickler keine Anerkennung für ihre Arbeit bekommen. Im Gegenteil: Viele erwarten von ihnen den professionellen Support eines Unternehmens, und man beschimpft sie auch noch, wenn sie einen Bug nicht sofort fixen. So kommt es, dass immer wieder Projekte in der Versenkung verschwinden, weil die Entwickler nicht mehr unter solchen Bedingungen arbeiten möchten.

Ein anderes Phänomen betrifft Entwickler, die eine Bibliothek oder ein Tool bei Github hochladen und es nach einiger Zeit einfach verwaisen lassen. Üblicherweise merkt man erst nach einiger Zeit, dass eine bestimmte Bibliothek nicht mehr mit der aktuellen Version der darunter liegenden Programmiersprache zusammenarbeitet. Der Autor stolperte schon öfter über Python-Bibliotheken, die ihre Entwickler nie auf Python 3 portierten. Seltsamerweise entfernen die Verantwortlichen häufig veraltete Projekte auch nicht aus dem Internet. Zu allem Übel führt das dazu, dass eine Unmenge von Anleitungen nicht mehr funktionieren. Gerade Anfänger, für die der Raspberry Pi den Einstieg in die Programmierung darstellt, legen dann schnell frustriert den Mini-Rechner zur Seite.

Pigpio

Mit der Pigpio greifen Sie, ähnlich wie mit WiringPi, auf die GPIO des Raspberry Pi zu. Es gibt hier allerdings einige Unterschiede, die Sie beachten müssen. Als Erstes fällt an der Bibliothek Pigpio auf, dass sie einen laufenden Daemon benötigt, um zu arbeiten. Der Daemon verbraucht laufend ein wenig der CPU-Zeit des RasPi, was aber für die meisten Projekte kein Problem darstellt. Andererseits bringt das Verwenden eines Daemons aber einige Vorteile mit sich – dazu später noch mehr.

Sowohl WiringPi als auch Pigpio basieren auf C-Code. Ähnlich wie bei WiringPi gibt es für Pigpio ein Tool, um über die Kommandozeile auf die GPIO-Ports zuzugreifen. Dabei gilt es, zu beachten, dass Pigpio anders als WiringPi, die BCM-Bezeichnungen der Pins (Abbildung 1) verwendet – soweit kein Problem, es erfordert jedoch etwas Umgewöhnung.

Abbildung 1: Pigpio verwendet die BCM-Bezeichnungen der GPIO-Pins.

Abbildung 1: Pigpio verwendet die BCM-Bezeichnungen der GPIO-Pins.

Um die Bibliothek in unterschiedliche Programmiersprachen einzubinden, gibt es für sie zahlreiche Wrapper, darunter solche für Java, Node.js, Ruby und Perl. Das Python-Modul ist Bestandteil der Bibliothek selbst. Die komplette Dokumentation der Bibliothek mit vielen Beispielen finden Sie auf der Homepage des Projekts [2].

Installation

Pigpio installieren Sie unter Raspberry Pi OS über die Paketverwaltung. Die dazugehörigen Kommandos finden Sie in Listing 1. Listing 2 zeigt die Kommandos, mit denen Sie den Daemon mithilfe von Systemctl starten (Zeile 1), stoppen (Zeile 2) und dem Autostart hinzuzufügen (Zeile 3).

Listing 1

Installation

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install pigpio

Listing 2

Daemon

$ sudo systemctl start pigpiod
$ sudo systemctl stop pigpiod
$ sudo systemctl enable pigpiod

Der Daemon akzeptiert beim Start eine Reihe von Parametern. Eine Übersicht dazu samt Beschreibung findet sich auf der Homepage von Pigpio [3]. Wenn Sie die Parameter des Daemons dauerhaft verändern möchten, erledigen Sie das in dessen Systemd-Service-Unit (Datei pigpiod.service in /lib/systemd/system/).

Pigs

Bei dem Programm Pigs handelt es sich um ein einfaches Tool, mit dem Sie über den Daemon auf die GPIO zugreifen. Es lassen sich damit nicht nur simple Funktionen wie Digital-in und -out ansprechen, sondern auch I2C, SPI und UART. Die komplette Bandbreite an PWM-Funktionen implementiert das kleine Werkzeug ebenfalls. Es besitzt eine Unzahl an Parametern, die es erlauben, wirklich alle Funktionen der einzelnen GPIO-Ports anzusprechen. Listing 3 zeigt einige Beispielkommandos, die verdeutlichen, wie Pigs prinzipiell arbeitet. Eine Übersicht aller Parameter finden Sie auf der Homepage [4] des Projekts.

Listing 3

Pigs-Funktionen

### GPIO10 auf 1 setzen
$ pigs w 10 1
### GPIO10 auf 0 setzen
$ pigs w 10 0
### PWM Basisfrequenz für
### GPIO4 auf 8 kHz stellen
$ pigs pfs 4 8000
### GPIO4 PWM auf 0% setzen
$ pigs p 4 0
### GPIO4 PWM auf 50% setzen
$ pigs p 4 127
### GPIO4 PWM auf 100% setzen
$ pigs p 4 255
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben