2505759

Raspberry Pi Zero W: Kamera per WiFi fernsteuern

06.05.2020 | 14:31 Uhr | Swen Hopfe

In diesem Raspi-Projekt soll eine selbstgebaute Fernbedienung in einem Raspi Zero platziert werden, um über WiFi die eigene Fotokamera aus der Ferne auszulösen - praktisch als Ersatz für eine Fernsteuerung per Smartphone und App, wie es sie für Systemkameras schon gibt. Nur mit eigener Programmierung und ordentlichen Tasten, die mit dem Wichtigsten belegt sind. Alles soll sich unkompliziert miteinander verbinden.

Systemkameras haben oft einen Anschluss für einen Fernauslöser. Mit drahtgebundenen Modellen kann man schon verwacklungsfreie Aufnahmen machen. Komfortablere Modelle sind zudem programmierbar und oft in Sender und Empfänger aufgeteilt, so dass man drahtlos über mehrere Meter auslösen kann. Aber immer muss man verkabeln und alles umständlich mitführen.

Da freut man sich, wenn die Kamera vernetzbar ist. Moderne Geräte sind zwar mittlerweile WiFi-fähig, meistens macht es jedoch noch keinen richtigen Spaß, so zu arbeiten. Manchmal kann man sich nur zum eigenen WLAN verbinden und bei einer Direktverbindung von Kamera zu Smartphone-App ist das Setup eher kompliziert.

Warum also nicht ein eigenes Gerät zur WiFi-Fernsteuerung entwerfen, was die Verbindungsaufnahme zur Kamera vereinfacht, zum eigenen Kameramodell perfekt abgestimmt ist, und wesentliche Funktionen einfach per Knopfdruck bereithält...

Unsere „gpremote“ soll auf Basis der gphoto2-Bibliothek arbeiten, die unter Linux Debian auch auf dem Raspberry Pi funktioniert. Nach dem Einschalten der Fernbedienung soll ein Skript starten und die weitere Steuerung übernehmen. In der ersten Ausbaustufe soll unsere Fernsteuerung mindestens ein Sofortbild, eine kleine Fotoserie und eine zeitverzögerte Aufnahme auslösen können.

Kein Problem eigentlich, das Ganze mittels gphoto-Bibliothek und etwas Python-Code zu bewerkstelligen. Wie man auf dem Raspi das Binding zu libgphoto2 installiert, um es in eigenen Python-Skripten verwenden zu können, kann man hier unter https://pypi.org/project/gphoto2/ nachlesen. Viele Kameramodelle von Canon, Nikon und weiteren Herstellern werden unterstützt.

Bevor man diverse Funktionen nutzen kann, muss man zuerst immer eine Verbindung zur Kamera herstellen. Gphoto findet die eigene Kamera, wenn sie über USB am Hostrechner angeschlossen ist, oder man baut eine drahtlose Verbindung auf.

Kameraeinstellung
Vergrößern Kameraeinstellung
© Swen Hopfe

Unser Kameramodell, mit dem auch alles getestet wurde, ist eine Nikon Z6. Die hat einen Modus „Mit Smart-Gerät verbinden“, den gibt es auch bei anderen Modellen, wo man ähnlich vorgehen kann.

Wählt man nun den Accesspoint-Modus, bekommt man standardmäßig immer die gleichen Zugangsdaten angeboten. Die verwendet man im Anschluss für die Konfiguration des Pi, der sich fürderhin nicht mehr mit dem heimischen WLAN, sondern mit der Kamera verbinden soll. Ist das geschafft, findet gphoto nun die Kamera per WiFi ganz ohne Kabel. Da für das weitere Entwickeln nun keine ssh -Verbindung vom PC zum Pi mehr zur Verfügung steht (der ist ja nun mit der Kamera verbunden), sollte die Netzwerkkonfiguration der letzte Schritt sein. Oder man hängt den Pi per HDMI an einen Monitor und schließt eine Tastatur direkt an.

Unser Trick ist, von /etc/wpa_supplicant/wpa_supplicant.conf zwei Kopien im gleichen Verzeichnis anzufertigen, die je nach Betriebsmodus eine Verbindung zum eigenen WLAN oder zur Kamera aufbauen. Später kann man im Menü der Fernbedienung mittels Tastendruck auf „Verbinden“ oder „Trennen“ den Modus umschalten, in dem mit der gerade benötigten Kopie überschrieben wird. Die neuen SSID und WPA-Key werden nach sudo ifdown/ifup wlan0 aktiv, ohne dass der Pi neu booten muss.

Unsere Hardware ist in einem fertigen Gehäuse untergebracht, in dem sich neben dem Pi noch ein OLED-Display, Lipo-Akku mit Ladeelektronik, ein I2C-Bus-Expander und vier Bedientaster nebst diversen passiven Bauelementen befinden. Und klar, für die Steuerung reicht uns ein Pi Zero W, für die angestrebte Kompaktbauweise ideal.

Raspberry Pi Zero W und Display
Vergrößern Raspberry Pi Zero W und Display
© Swen Hopfe

Wie immer sollten anfangs einzelne Module per Breadboard und schrittweise getestet werden. Unser OLED-Display mit SSD1306-Controller hat 128 x 64 Pixel, ist per I2C angebunden und die Adafruit-GFX-Library soll verwendet werden.


Zum 3,7-V-Lipo haben wir einen Baustein gewählt, der sowohl das Step-up für die 5-V-Schaltung übernehmen als auch den Akku laden kann. Die Status-LED ist im Gehäuse nach außen sichtbar gemacht und schaltet von „Laden“ (rot) nach „Aufgeladen“ (blau) um. Am fertigen Gerät kann man später einfach ein 5-V-Netzteil über Micro-USB anschließen und bei verbrauchtem Akku wieder aufladen.

Ladeelektronik
Vergrößern Ladeelektronik
© Swen Hopfe


Alles konnte recht platzsparend und mit geringer Bauhöhe aufgebaut werden. Im Deckel sind entsprechende Öffnungen für die Taster und die Ladekontrollanzeige untergebracht. Das Display sitzt stoßgeschützt unter einer Acrylscheibe, die auf der restlichen Fläche geschwärzt ist.

Um unter der am Pi aufgesetzten Buchsenleiste nur so viele Pins wie unbedingt nötig kontaktieren zu müssen, haben wir einen I2C-Expander vorgesehen. Unsere Schaltung „verbraucht“ damit keine zusätzlichen GPIO-Pins, nur der I2C-Bus wird genutzt. Das macht auch den Weg frei für zusätzliche HATs zur späteren Aufrüstung.

Innenaufbau
Vergrößern Innenaufbau
© Swen Hopfe

Der I2C-Expander funktioniert bidirektional, den Pegel seiner Ports kann man auf dem Bus auslesen. Davon sind bei uns vier mit den Gehäusetastern verbunden. Die sitzen gemeinsam mit dem OLED auf einer kleinen Platine in zweiter Ebene über dem Akku. Da reicht auch eine universelle Lochplatine. Und wie immer sollte man an eine gewisse Reparaturfreundlichkeit vom Aufbau denken, kann ja sein, dass man diverse Teile auch mal wechseln muss.

Bedienplatine mit OLED und Tastern
Vergrößern Bedienplatine mit OLED und Tastern
© Swen Hopfe

In der Praxis hat sich der 2000-mAh-Lipo als durchaus ausreichend erwiesen, wo doch der Pi Zero und das OLED-Display nicht besonders stromhungrig sind. Vorausgesetzt, man trennt das Gerät nach getaner Arbeit vom Akku durch den Ein/Aus-Schalter am Gehäuse. Mit einem Read-only-Filesystem auf der SD-Karte des Pi könnte man auch auf den Menüpunkt „Shutdown“ verzichten und die Bedienung weiter vereinfachen. Das ist bei uns im nächsten Ausbauschritt vorgesehen.

So arbeitet unsere Fernbedienung aktuell nur mit einer einfachen Menüstruktur in zwei Ebenen, die Zahlen in der Tabelle entsprechen den vier Tastknöpfen am Gehäuse:

Einfache Menüstruktur für die Fernbedienung: Zahlen in der Tabelle entsprechen den vier Tastknöpfen am Gehäuse
Vergrößern Einfache Menüstruktur für die Fernbedienung: Zahlen in der Tabelle entsprechen den vier Tastknöpfen am Gehäuse
© Swen Hopfe


Und hier liegt wohl auch das größte Potenzial im Projekt: weiter ausbauen und spannende Funktionen nach eigenen Vorstellungen ergänzen.


Mittels gphoto in einem eigenen Python-Skript, wie in unserer Fernbedienung integriert, ist das mit etwas Vorkenntnis nicht schwer. Wie in der folgenden Beispielsequenz, wo eine Aufnahme ausgelöst und das gerade aufgenommene Kamerabild auf einem am Raspi angeschlossenen Stick unter dem Namen „pcstr“.jpg abgespeichert wird:

camera = gp.Camera()
camera.init()
file_path = camera.capture(gp.GP_CAPTURE_IMAGE)
dfile = pcstr + ".jpg"
target = os.path.join('/media/pi/STICK/images/' + dfile)
camera_file = camera.file_get(file_path.folder, file_path.name, gp.GP_FILE_TYPE_NORMAL)
camera_file.save(target)
camera.exit()

Nachdem Software und Hardware für unsere „gpremote“ stehen, können wir in der Praxis loslegen: 
Kamera mit aktiviertem WiFi-Access einschalten, Fernbedienung einschalten. Die Verbindung (Punkt 2 im Hauptmenü) wird anfangs automatisch hergestellt. So einfach wollte ich es haben.

Ausgabe am OLED-Display
Vergrößern Ausgabe am OLED-Display
© Swen Hopfe


Natürlich gibt das Display auch noch Statusmeldungen aus, sofern sie wirklich notwendig sind. Dass wir nur eine kleine Anzeigefläche zur Verfügung haben, hat sich deshalb bisher nicht als wirklicher Nachteil herausgestellt.

Man hat nun eine Fernbedienung in der Hand, wo man alles aus der Ferne steuern kann, was man eben implementiert hat, ohne an der Kamera selbst „fummeln“ zu müssen. Die kann derweil gut ausgerichtet auf ihrem Stativ stehen bleiben.

Fernsteuerung
Vergrößern Fernsteuerung
© Swen Hopfe


An unserem Eigenbau sind alle Anschlüsse vom Pi von außen erreichbar. So kann man sich später auch zu Wartungszwecken oder mit einem Massenspeicher verbinden.

Wichtig war mir die Herausführung der GPIO-Leiste an der Oberseite, so dass man bei Bedarf zusätzliche HATs aufsetzen kann. Wie ein RTC-Modul zum Beispiel, um etwa draußen auch ohne Internetverbindung Aufnahmen in Echtzeit machen zu können.

Anschlüsse am Gehäuse
Vergrößern Anschlüsse am Gehäuse
© Swen Hopfe

Trotzdem meine eigene Kamera programmierbar und wie die meisten mit einer zeitverzögerten Auslösung ausgestattet ist, macht sich die Fernsteuerung gut. Denn nur so kann ich als Fotograf auch mit Abstand auf diverse Ereignisse reagieren, ohne am Gerät eingreifen zu müssen. Eine einfache und robuste Bluetooth-Fernbedienung hat meine Kamera leider nicht. So hat sich der Eigenbau gelohnt.

Gegenüber der vom Hersteller mitgelieferten Smartphone-App braucht es jetzt nur das Einschalten der Fernbedienung, die sich bei aktiviertem WiFi an der Kamera ohne weiteren Eingriff automatisch verbindet. Eine echte Erleichterung im Gelände. Das Handy bleibt derweil frei für andere Aufgaben.

Ich möchte demnächst weitere Funktionen hinzufügen. Schließlich eignet sich unser Teil auch als Alternative für teure Dockingstationen, um beispielsweise nach einer Fototour alle gerade aufgenommenen Bilder von der Kamera per Funk ins heimische Netzwerk zu übertragen. Da soll in Zukunft noch etwas Arbeit ins Projekt einfließen...

Noch mehr Raspberry Pi:


Fotoslider mit Raspberry Pi

So machen Sie den Raspberry Pi sicherer

Raspberry Pi: Kontrolle per Smartphone-App

Pidoctor: Raspberry Pi überprüfen

Raspberry Pi: Computerschach per Pi-Cam spielen

NFC-Reader mit Raspberry Pi selbst bauen

Raspberry Pi Zero W als smarter USB-Stick

Zeitraffer-Aufnahmen mit dem Raspberry Pi Zero machen

Webcam mit Raspberry Zero Pi W einrichten

Nächtliche Tierfotografie mit NoIR-Cam und Raspberry Pi

PC-WELT Marktplatz

PC-WELT Hacks - Technik zum Selbermachen?

Raspberry Pi erfreut sich gerade unter Bastlern einer großen Beliebtheit. Kein Wunder, denn mit der 35-Euro-Platine lassen sich viele spannende Projekte realisieren. Vom Mediacenter, Netzwerkspeicher, Fotomaschine bis hin zum Überwachungssystem ist alles möglich. Dieser Bereich ist aber nicht nur dem Raspberry Pi gewidmet, sondern bietet auch viele Tipps, Tricks und Anleitungen für andere spannende Bastelprojekte.

2505759