Archiv der Kategorie: Programmierung

Low-Level-GPIO-Zugriff geändert mit Kernel 6.6

Mit der Auslieferung des Raspberry Pi 5 im Herbst 2024 hat sich bei einigen Low-Level-Tools der GPIO-Zugriff geändert: Für die Modelle bis einschließlich Raspberry Pi 4 erfolgt der GPIO-Zugriff über chip0 bzw. /dev/gpiochip0. Beim Raspberry Pi musste dagegen chip4 bzw. /dev/gpiochip4 verwendet werden. Scripts, die universell auf alten und neuen Geräten laufen sollten, brauchten eine entsprechende Fallunterscheidung.

Mit Kernel 6.6.47, der mittlerweile standardmäßig als Update unter Raspberry Pi OS installiert wird, ändert sich wieder alles! Auch beim Raspberry Pi 5 muss nun /dev/gpiochip0 verwendet werden. Eine Referenz aller internen GPIO-Nummern gibt cat /sys/kernel/debug/gpio.

Die Änderung betrifft unter anderem:

  • Python: gpiozero, lgpio, gpiod
  • Bash: gpioset, gpioget
  • C: lgpio, libgpiod, wiringpi

Scripts, die mit diesen Modulen bzw. Bibliotheken verfasst wurden, müssen geändert werden (Umstellung von GPIO-Chip 4 auf GPIO-Chip 0). Im Folgenden habe ich diesbezüglich Anleitungen für diverse Fälle zusammengefasst.

13.9.2024: Mit dem neuesten Update von Raspberry Pi OS wird ein Link von /dev/gpiochip4 auf /dev/gpiochip0 eingerichtet, wodurch die Auswirkungen des veränderten Kernels in den meisten Fällen nicht mehr spürbar sind.

ls -l /dev/gpiochip*

crw-rw---- 1 root gpio 254,  0 13. Sep 08:39 /dev/gpiochip0
crw-rw---- 1 root gpio 254, 10 13. Sep 08:39 /dev/gpiochip10
crw-rw---- 1 root gpio 254, 11 13. Sep 08:39 /dev/gpiochip11
crw-rw---- 1 root gpio 254, 12 13. Sep 08:39 /dev/gpiochip12
crw-rw---- 1 root gpio 254, 13 13. Sep 08:39 /dev/gpiochip13
lrwxrwxrwx 1 root root       9 13. Sep 08:39 /dev/gpiochip4 -> gpiochip0

Von gpiozero gibt es mittlerweile eine aktualisierte Version, die das richtige Chip-Device erkennt.

Low-Level-GPIO-Zugriff geändert mit Kernel 6.6 weiterlesen

GPIO Reloaded II: Bash

Das ist der zweite Teil einer Mini-Serie zur GPIO-Nutzung am Raspberry Pi 5:

  • GPIO Reloaded I: Python (gpiozero, lgpio, gpiod, rpi-lgpio)
  • GPIO Reloaded II: Bash (gpiod, gpioget, gpioset, pinctrl)
  • GPIO Reloaded III: Kamera (rpicam-xxx, Picamera2)

Zu den wichtigsten Neuerungen beim Raspberry Pi 5 zählt nicht nur der viel schnellere SoC (System-on-a-Chip), sondern auch ein eigener I/O-Controller, der als eigener Chip realisiert ist (RP1). Dieser I/O-Chip bringt mit sich, dass etablierte Mechanismen zur GPIO-Steuerung nicht mehr funktionieren. Besonders stark betroffen sind Kommandos, die im Terminal oder in Bash-Scripts aufgerufen werden.

Achtung, Update: Beginnend mit Kernel 6.6 hat sich der Low-Level-GPIO-Zugriff beim Raspberry Pi 5 verändert und erfolgt nun — wie bei älteren Modellen — via /dev/gpiochip0. Siehe auch https://pi-buch.info/low-level-gpio-zugriff-geaendert-mit-kernel-6-6/.

GPIO Reloaded II: Bash weiterlesen

GPIO Reloaded I: Python

Dieser Artikel ist der Auftakt einer Mini-Serie, die sich mit der Script-Programmierung des Raspberry Pi 5 beschäftigt. Geplant sind drei Artikel:

  • GPIO Reloaded I: Python (gpiozero, lgpio, gpiod, rpi-lgpio)
  • GPIO Reloaded II: Bash (gpiod, gpioget, gpioset, pinctrl)
  • GPIO Reloaded III: Kamera (rpicam-xxx, Picamera2)

Hinter den Kulissen hat sich mit der Vorstellung des Raspberry Pi 5 mehr geändert, als es in den ersten Testberichten den Anschein hatte. Schuld daran ist der neue I/O-Chip RP1, der unter anderem für die Kommunikation mit der GPIO-Leiste und der Kamera zuständig ist. Der RP1 bringt natürlich viele Vorteile mit sich (u.a. die Möglichkeit, zwei Kameras anzuschließen und größere Bild- bzw. Videomengen zu verarbeiten); er führt aber auch dazu, dass über Jahre etablierte Module und Kommandos nicht mehr funktionieren. Ja, die Raspberry Pi Foundation hat vorgearbeitet und empfiehlt schon eine Weile alternative Werkzeuge. Aber aus Bequemlichkeit blieben viele Programmierer bei langjährig bewährten Tools. Damit ist jetzt Schluss. Wer den Pi 5 als Maker-Tool nutzen will, muss umlernen.

Achtung, Update: Beginnend mit Kernel 6.6 hat sich der Low-Level-GPIO-Zugriff beim Raspberry Pi 5 verändert und erfolgt nun — wie bei älteren Modellen — via /dev/gpiochip0. Siehe auch https://pi-buch.info/low-level-gpio-zugriff-geaendert-mit-kernel-6-6/.

GPIO Reloaded I: Python weiterlesen

Raspberry Pi Pico: MicroPython-Programmierung

In meiner Kurzvorstellung des Raspbery Pi Pico habe ich Ihnen gezeigt, wie Sie auf dem Micro-Controller MicroPython installieren und über eine Konsolen-App (z.B. minicom) interaktiv nutzen können. Das ist ein wichtiger erster Schritt, um den Pico auszuprobieren. Letztlich wollen Sie aber Programme entwickeln, die dauerhaft am Pico laufen. Dazu reicht die interaktive Anwendung des Python-Interpreters nicht aus.

Dieser Beitrag zeigt, wie Sie mit Thonny ein »richtiges« MicroPython-Programme entwickeln und dieses auf dem Pico so speichern, dass es beim nächsten Start des Micro-Controllers automatisch ausgeführt wird.

Raspberry Pi Pico: MicroPython-Programmierung weiterlesen

Sense HAT mit Python steuern

Das [Sense HAT](https://amzn.to/2NTbySV ist ein Erweiterungsboard für den Raspberry Pi. Es stellt die folgenden Funktionen zur
Verfügung:

  • eine Matrix von 8×8 RGB-Leuchtdioden, die in verschiedenen Farben leuchten können
  • einen Mini-Joystick
  • diverse Sensoren für Beschleunigung, Rotation, Magnetismus, Temperatur,
    Luftfeuchtigkeit und Luftdruck

Das Board kostet beinahe so viel wie ein Raspberry Pi — aber es eröffnet auch faszinierende neue Möglichkeiten, anschauliche Beispiele mit schönem visuellen Feedback zu realisieren.

Raspberry Pi 3 B+ mit aufgestecktem Sense HAT

Sense HAT mit Python steuern weiterlesen

Trådfri-Beleuchtungssystem von IKEA mit Linux steuern

Trådfri ist das schwedische Wort für „drahtlos“ und damit eine passende Bezeichnung für ein „smartes“ Beleuchtungssystem. Im einfachsten Fall kombiniere ich ein Leuchtmittel mit einem Aktor. Davon gibt es drei:

Eine Fernbedienung, einen Dimmer und einen Bewegungsmelder. Will ich  zusätzlich meine Leuchtmittel bequem vom Smartphone steuern, benötige ich  noch ein Gateway. Das Gateway ist eine kleine Steuerzentrale, die am  Ethernet hängt und ihre Kommandos an die Leuchtmittel funkt. Als  Protokoll kommt dabei ZigBee Light Link zum Einsatz.

Kompatible Leuchten gibt es mit den Sockeln E14, E27 und GU10, außerdem  werden LED-Panele angeboten, die an die Wand gehängt oder in Möbel  integriert werden können. Bei den meistenLeuchtmittel kann nicht nur die Helligkeit, sondern auch die Lichtfarbe von kalt- bis warmweiß angepasst werden. In der App, die es für Android und iOS gibt, lassen sich Lichtstimmungen abspeichern und schnell wieder abrufen.

Alles nett, aber nicht automatisch genug, und natürlich möchte ich das ganze System nicht per App steuern. Statt dessen möchte ich, dass das Beleuchtungssystem sich dynamisch dem Umgebungslich anpasst, also bei einsetzender Abenddämmerung etwa langsam heller wird. Wann es dunkel wird, weiß der Linux-PC, der die Daten der Photovoltaik auswertet (und natürlich tut’s ansonsten auch ein simpler Helligkeitssensor). Eben jener Linux-PC soll nun dem Ikea-Gateway Kommandos geben, die dieses wiederum an die Leuchten durchreicht.

Trådfri-Beleuchtungssystem von IKEA mit Linux steuern weiterlesen

Update der Adafruit-Code-Sammlung

Sicherlich sind Sie bei einigen Erweiterungsboards, Sensoren oder A/D-Wandlern über die umfangreiche Code-Sammlung von Adafruit gestolpert. Diese bietet für eine Vielzahl an Bauteilen sehr einfach zu handhabende Python-Bibliotheken an.

In den ersten drei Auflagen unseres Buches haben wir auch immer mal wieder auf diese Bibliotheken zurückgegriffen.

Vor einiger Zeit hat Adafruit jedoch die Sammlung aktualisiert und sie kann nicht mehr wie gehabt genutzt werden. Damals konnten Sie die gesamte GitHub-Repo https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code auf Ihren Raspberry Pi klonen und dort die benötigten Dateien auswählen.

Update der Adafruit-Code-Sammlung weiterlesen

Dropbox-Upload mit Python, API v2

Dieser Beitrag zeigt, wie Sie mit einem kleinen Python-Script Dateien vom Raspberry Pi in Ihr Dropbox-Konto hochladen. Die in der zweiten und dritten Auflage unseres Buchs beschriebene Vorgehensweise wird ab 28.6.2017 nicht mehr funktionieren, weil Dropbox voraussichtlich mit diesem Datum die alte API v1 deaktivieren wird. Ab dann muss die neue API v2 verwendet werden, die dieser Beitrag behandelt.

Update 19.8.2017: Das Paket requests muss aktualisiert werden, damit das Dropbox-Modul funktioniert (Quelle).

Dropbox-Upload mit Python, API v2 weiterlesen

Raspberry Pi und der Amazon Dash Button

Auch ich kam am Amazon Dash Button nicht vorbei. Heute hab ich den kleinen Knopf in der Post gehabt und habe direkt meine Schnapsidee umgesetzt: Wieso den Knopf nicht kurzerhand umfunktionieren und als schnurlosen Taster für den Raspberry Pi nutzen?

Gesagt, getan! Erstaunlicherweise funktionierte mein Plan auf Anhieb.

Raspberry Pi und der Dash Button: Ein gutes Team
Raspberry Pi und der Dash Button: Ein gutes Team

Raspberry Pi und der Amazon Dash Button weiterlesen