Raspberry Pi Zero mit Kamera

Für den Raspberry Pi gibt es mehrere, preisgünstige Kameras. Einen Überblick habe ich hier dokumentiert. Für den Zero W steht eine sehr kleine Kamera zur Verfügung. Wie man diese mit dem Raspberry Pi Zero W nutzen kann, beschreibt dieser Artikel.

Raspberry Pi Zero mit Camera ung Kabel

Das Bild zeigt den Raspberry Pi Zero W mit angeschlossener Kamera, eingelegter microUSB Karte und der Stromversorgung über den microUSB Anschluss.

Als Betriebssystem nutze ich Raspberry Pi OS Lite (32-bit), Debian Bookworm, ohne Desktop Umgebung, 29.11.2024, das mit dem Raspberry Pi Imager auf die SD Karte geschrieben wird. Sinnvoll ist es die Einstellungen zu bearbeiten und den User mit Passwort sowie die WLAN Einstellungen zu hinterlegen. Das hat den Vorteil, dass man den Zero ohne Monitor und Tastatur betreiben kann.

Für meinen Einsatzzweck (Einbau in einen Nistkasten) ist es wichtig, dass die Kamera keinen Infrarot Filter besitzt.

Beim Start des Zero blinkt die grüne LED. Dauerhaftes Leuchten zeigt an, dass der Zero einsatzbereit ist. Über den Router findet man einfach die IP Adresse heraus, die der DHCP Dienst des Routers dem Zero gegeben hat. Mit einem SSH Client (ich nutze PuTTY, Version 0.82) greife ich auf den Zero zu und melde mich mit vergebenem User und Passwort an.

Software, Bibliotheken und Tools


In einer Linux Umgebung ist es immer sinnvoll die Pakete auf den aktuellen Stand zu bringen. Dafür steht das Kommandozeilen-Programm apt zur Verfügung. apt steht für Advanced Packaging Tool und ist in einer Raspberry Pi Umgebung die Standard Paketverwaltung. Mit apt können Pakete installiert und deinstalliert werden. Man kann nach Paketen suchen und Informationen zu den jeweiligen Paketen anzeigen lassen.

Für die meisten Befehle benötigt man root-Rechte und startet apt daher mit sudo. Nur das Suchen in Paketen kann ohne root-Rechte durchgeführt werden.

Zuerst muss die aktuelle Paketliste eingelesen werden:

sudo apt update

Mit dem folgenden Befehl werden alle Pakete akualisiert:

sudo apt upgrade

Im Upgrade Prozess muss die Installation mit Y (für Yes) bestätigt werden. Wer ohne diese Sicherheitsfrage den Upgrade starten möchte, ruft den Upgrade mit einem zusätzlichen Parameter auf:

sudo apt upgrade -Y

Hinweis: der Upgrade nimmt sich Zeit! Mit der oben aufgeführten Version sind es zwei Monate nach dem Release Datum schon 27 Minuten!

Mit dem folgenden Befehl nimmt man ein Bild von der Kamera auf und speichert es im aktuellen Verzeichnis unter dem Namen Bild1.jpg ab.

rpicam-still -o Bild1.jpg

Hinweis: im Internet findet man noch häufig den Befehl raspistill um ein Bild von der Kamera auszulesen. Dieser Befehl ist veraltet und führt beim Ausführen zu einer Fehlermeldung -bash: raspistill: command not found. raspistill wurde durch libcamera ersetzt und in der aktuellen Bookworm Version beginnen die Tools mit rpicam-. Symbolische Links sorgen dafür, dass die libcamera Befehle auch in der aktuellen Version noch funktionieren. libcamera-still verweist auf rpicam-still (libcamera-vid auf rpicam-vid).

Und wie kann ich mir das Bild jetzt ansehen?

Betreibt man den Raspberry Pi ohne Desktop Oberfläche, muss das gespeicherte Bild erst auf den PC übertragen werden. Ist PuTTY auf dem PC installiert, um damit über SSH auf den Raspberry Pi zuzugreifen, steht auch ein weiteres Tool zur Verfügung: psftp. Nach Aufruf von psftp und Anmeldung mit Benutzer und Passwort kann das Bild mit folgendem Befehl auf den PC kopiert werden:

get Bild1.jpg D:\temp\Testbild.jpg

Video erstellen

Ein Video erstellt man mit:

rpicam-vid -o Video1.h264

Die direkte Erzeugung eines .mp4 Videos ist mit rpicam-vid nicht möglich. VLC auf einem PC kann das .h264 Video wiedergeben.

Programmierung


Um die Kamera über Phyton anzusprechen, wird eine Bibliothek (Library) benötigt. Mit dem folgenden Befehl lässt sich die Paketverwaltung nach picam durchsuchen:

apt search picam

Suche in der Paketverwaltung nach picam

Es sind also zwei Pakete verfügbar: python3-picamera2 und python3-picamzero. Ist eine der beiden Pakete bereits installiert?

dpkg -l python3-picam*

Das Ergebnis: dpkg-query: no packages found matching python3-picam*. Also muss noch ein Paket installiert werden. Aber welches? Angeblich ist die picamzero Bibliothek für Anfänger geeignet. Für die ersten Tests sollte das ausreichen.

sudo apt install python3-picamzero

ca. 251 MB müssen heruntergeladen, entpackt und installiert werden. Das dauert (bei mir ca. 21 Minuten). Überprüfung:

dpkg -l python3-picam*

Suche in der Paketverwaltung nach picam

Überraschenderweise sind beide Bibliotheken installiert!

Der Code um ein Bild aufzunehmen und abzuspeichern besteht aus lediglich 3 Zeilen. Ein bekannter, vorinstallierter Editor auf dem Raspberry Pi ist nano. Editor öffnen:

sudo nano foto.py
Der Name der Datei ist frei wählbar, nur picamzero.py darf nicht verwendet werden.
.py ist die übliche Erweiterung für Python Code und sollte auch beibehalten werden.


Die folgenden drei Zeilen eingeben:

from picamzero import Camera
cam = Camera()
cam.take_photo("foto.jpg")

Code mit [Strg]+X abspeichern. Gestartet wird das Programm mit python foto.py. Der Code wird ausgeführt und im aktuellen Verzeichnis sollte sich anschließend eine Datei mit dem Namen foto.jpg befinden. Das kann einfach mit dem ls Befehl überprüft werden.

Alternativ kann man auch die picamera2 Bibliothek ansprechen.

from picamera2 import Picamera2
cam = Picamera2()
cam.start()
cam.capture_file('/home/pi/Foto3.jpg')

Was unterscheidet die beiden Programme? Das Programm, das mit der picamzero Bibliothek arbeitet, erstellt ein Foto in der vollen Auflösung 2.592 x 1944 Pixeln, während das zweite Programm die Auflösung auf 640 x 480 Pixeln reduziert. Um auch hier die volle Auflösung zu erreichen, ist weiterer Code erforderlich.

from picamera2 import Picamera2
cam = Picamera2()
myconfig = cam.create_still_configuration(main={"size": (2592, 1944)})
cam.configure(myconfig)

cam.start()
cam.capture_file('/home/pi/Foto3.jpg')

Zum Ändern der Bildgröße, Drehen des Bildes oder um Videos aufzunehmen empfiehlt sich ein Blick in die englischsprachige Dokumentation von picamzero.