Kameraslider mit Pi

Für Effektaufnahmen gibt es Slider, die Kameras über eine gewisse Strecke bewegen. Während die Kamera fährt, werden Videos oder Einzelbilder gemacht.

Für den Hobbyfotografen sind das mehr oder weniger einfache Anordnungen. Welche mit Motortrieb und Fernsteuerung gibt es auch, entsprechend teuer in der Anschaffung. Warum also nicht ein eigenes Gerät schaffen, wo ein Raspberry Pi die Ansteuerung der Motoren und der Kamera übernimmt?

Zuerst über die benötigte Hardware Gedanken gemacht, wählen wir einen Pi mit großem Formfaktor. Die klassische Platine bringt gleich genug USB-Anschlüsse mit, um weitere Peripherie, wie Tastatursender und einen Speicherstick stecken zu können.

Auf der GPIO-Leiste lässt sich ein geeignetes LCD-Display mit Touchfunktion aufsatteln und in einem gemeinsamen Gehäuse unterbringen. Damit steht ein Bedienpanel zur Verfügung, worüber später vorrangig alle Eingaben erfolgen sollen.
In welchem Release der Pi daher kommt, ist in unserem Projekt nicht ganz so wichtig. Damit wir aber mit einer aktuellen Betriebssystem-Version arbeiten können, sollte es mindestens ein Raspberry Pi 3 sein.

Steppermotoren bieten den Vorteil, dass sie taktbar sind und man deshalb recht gut weiß, wieviel Umdrehung sie aktuell gemacht haben, denn wir wollen ja beständig unter Kontrolle haben, an welchem Punkt Schlitten und Kopf gerade stehen. Überdies lassen sie sich langsam drehen. Für unseren Slider sollen zwei etwas höhere NEMA17-Motoren zum Einsatz kommen, die noch relativ kompakt und gleichzeitig kräftig genug sind.

Bei den NEMA-Steppern sind wesentliche Parameter bezüglich Befestigung und Wellendurchmesser standardisiert, so dass man sich im Anschluss diverses Zubehör, wie Ritzel, Riemen und Umlenkrollen beschaffen kann.

Damit soll nun also ein käuflicher Slider umgerüstet werden, in dem er den Motortrieb und eine intelligente Logik bekommt, die sich eben auch auf die eigenen Bedürfnisse abstimmen lässt. Dazu haben wir uns einen rein manuell zu schiebenden Schlitten von „Neewer“ zugelegt, Produkte anderer Hersteller tun es selbstredend auch. Die Vorrichtung sollte nur stabil genug sein und möglichst reibungsarm laufen. Unser Modell trägt bis acht Kilogramm, der Kopf ist an vier ordentlichen Rollen gelagert.

Wenn schon eine Motoraufrüstung, dann aber auch über zwei Achsen. Für den Lineartrieb hat das Gestell einen Zahnriemen bekommen, der vom ersten Stepper angetrieben wird. Der Kamerakopf sitzt direkt auf dem zweiten Steppermotor und wird dadurch zusätzlich schwenkbar.

Gut, dass sich das Aluminium problemlos bearbeiten lässt, so können mit etwas Handwerkszeug alle erforderlichen Bohrungen für die Befestigung der Motoren gesetzt werden. Durch die Umrüstung verkürzt sich der ursprüngliche Fahrweg von 80cm auf 60cm, immer noch genug für den angestrebten Einsatzzweck.

Nun zur Elektronik. Für die Motoransteuerung soll das bekannte „CNC-Shield“ genutzt werden, gut geeignet auch, wenn man es nicht auf einen Arduino aufsteckt und an der Oberseite direkt verkabelt. Man kann vier Motortreiber unterbringen und sich den Entwurf einer eigenen Platine sparen.

Alles sollte nicht direkt am Gestell befestigt, sondern ausgelagert werden. So ist zusammen mit allen anderen Komponenten ein separater Controller entstanden, den wir später auch zur Ansteuerung von weiteren Geräten benutzen wollen, wie etwa unser Motorstativ für Sternfotografien oder überall dort, wo Steppermotoren gesteuert werden sollen.
Unser fertiger Aufbau bietet eine Vielzahl von Ein- und Ausgängen, die wir auf vier Buchsen im RJ-Format gelegt haben. Zur Verbindung mit dem Slider kann man Netzwerk- oder DSL-Kabel mit jeweils acht Kontakten anschließen und der „Kabelsalat“ hält sich in Grenzen.

Auf der Grundplatte sitzen nun der Raspberry Pi mit Touchdisplay oben auf, nebst einem Akku für den netzunabhängigen Betrieb. Denn für die Aufnahmen will man ja auch im Gelände unterwegs sein. Der Einfachheit halber ist der Akku eine Powerbank, die einen 5V- und einen zusätzlichen 12V-Anschluss hat. Damit sparen wir uns einen extra Spannungswandler. Die höhere Spannung wird für den Betrieb der Stepper benötigt.

Da das Touchdisplay schon einen großen Teil der GPIO-Leiste des Pi einnimmt und für Takt und Richtungssteuerung der Motoren die meisten noch freien Pins gebraucht werden, soll noch ein I2C-Expander zum Einsatz kommen. So können über den I2C-Bus zusätzliche acht Signale verarbeitet werden. Die stehen unserem Slider oder anderen Geräten am Controller dann als Ausgänge oder Eingänge zur Verfügung.

Die Kontaktierung der 3V3- und I2C-Pins war dann etwas „tricky“, denn hier muss man unter die Buchsenleiste für das LCD-Display ran. Der fertige Aufbau sollte trotzdem so übersichtlich wie möglich sein, dazu haben wir unter der Grundplatte unseres Controllers noch einen Zwischenboden eingezogen, welcher viel von der Verkabelung aufnimmt. Alles wichtige geschieht dann im Anschluss in der oberen Etage.

Controller und Slider sind nun mittels zwei Leitungen über etwa 2m Weg verbunden und lassen sich per Steckverbindung an beiden Seiten trennen. In der aktuellen Konfiguration nutzt unser Slider neben der Motorleitung eine zusätzliche Leitung für den Endanschlag.

Die ist schließlich notwendig, um einen automatischen Lauf ordentlich zu implementieren. Ein Mikrotaster begrenzt den Weg nach rechts auf der Transportschiene, wodurch man eine „Nullung“ des Systems vornehmen kann, damit der Schlitten auch immer eine definierte Ausgangsposition erhält. Das Signal vom Endanschlag wird an den I2C-Expander auf dem Controller weitergeleitet, der dann den Motor für den linearen Antrieb bei Bedarf stoppen kann.

Damit alles zusammenspielt, ist also noch eine clevere Software auf dem Pi notwendig. Alles ist in einem Python-Script realisiert. Wie immer hab‘ ich angestrebt, die Bedienung einfach und zugleich komfortabel zu machen. Die Applikation auf Basis „tkinter“ bietet eine grafische Oberfläche auf dem Touchscreen, wo man neben Standardfunktionen auch mehrere „Bewegungsprogramme“ per Button ablaufen lassen kann. Unser Pi läuft also mit X-Desktop, nach dem Booten wird unser „foto.py“-Skript im Vollbildmodus gestartet.

In der mittigen Textbox wird man über den Ablauf der Aktionen informiert. Die Button sollten noch groß genug sein, um sie auch unter widrigen Bedingungen noch per Finger bedienen zu können. Per Fingertipp lassen sich Nullung und Standardfunktionen auslösen und vorgefertigte Programme können abgefahren werden.

Die sind dann auch das, was der Hobbyfotograf so braucht, dafür haben wir den Slider motorisiert. Was man da im Speziellen so haben möchte, sollte man vorher erörtern und obliegt der eigenen Kreativität. Nun ist die Toucheingabe nur eine Steuerungsmöglichkeit in unserem Projekt. An USB ist außerdem eine kabellose Minitastatur angeschlossen, wo man per Tastendruck entsprechende Shortcuts auslöst. Zur Bedienung kann man mit einer Funktastatur als Fernbedienung also auch ein paar Meter vom Geschehen entfernt sein.

Manchmal findet man durchaus preiswerte und für das eigene Projekt geeignete Tastaturen, so wie bei unserem Modell, mit am Abend beleuchtbaren Tasten und der Möglichkeit, NiMH-Akkus zu nutzen, die man über einen MicroUSB-Anschluss an der Tastatur wieder aufladen kann (Deshalb auch das Kabel im Bild). Wenn sie im Gelände leer ist, also auch über den sowieso mitgeführten Powerpack ladbar.

Ist man noch in Reichweite vom heimischen Netzwerk, bietet sich eine weitere Steuermöglichkeit. Dazu loggt man sich per SSH auf dem Pi des Sliders ein und startet die gleiche App im Terminal über ein kleines Shellscript, was die graphische Ausgabe beendet. Man bekommt nun eine Textkonsole und kann anschließend per Tastatureingaben am Netzwerk-PC arbeiten. Den Remote-Zugriff vom Arbeitsplatz aus, nutzt man natürlich auch, um Wartung an der Python-Software vorzunehmen. Unmittelbar nach dem Start sieht die Textausgabe im Terminal so
aus:

In der Version für das Terminal gibt es etwas mehr Optionen als in der graphischen Oberfläche, um auch die Motoren und Inputs testen zu können und diverse Fahrten zu forcieren. Und wo wir schon einen Pi zur Visualisierung und Ansteuerung der Motortreiber ein Board haben, soll der damit nicht unterfordert sein, also auch mit der Kamera selbst kommunizieren und direkt Aufnahmen auslösen.

„Gphoto2“ ist eine gängige Lösung für Linuxsysteme und funktioniert auch unter Raspbian. Die Library „Libgphoto2“ lässt sich in Python ansprechen und hat einen guten Funktionsumfang zusammen mit Canon- oder Nikon-Kameras. Unsere Nikon-Kamera ist dabei mit einem zusätzlichen USB-Kabel mit dem Pi verbunden. Es empfiehlt sich ein längeres Kabel, damit genug Spielraum bei der Schlittenfahrt und den Kopfbewegungen da ist.

Die Library gestattet auch eine direkte Anbindung per WiFi. Wenn das die eigene Kamera unterstützt, muss dort zuerst die Pairingfunktion aktiviert werden, dann wählt man auf dem Raspian-Desktop des Pi das durch die Kamera aufgespannte WLAN-Netzwerk, und man kann auf die Kabelverbindung verzichten. Dadurch hat man dann aber keinen Remote-Zugriff per ssh mehr und muss alles direkt am Pi bedienen. So steuern wir also die Bewegung von Schlitten und Kopf mit gleichzeitiger Aufnahmefunktion an den festgelegten Stellen, wo die geschossenen Aufnahmen auf einem am Pi angesteckten USB-Stick abgelegt werden.

Formatiert man seinen Stick mit „fat32“ mit einem bestimmten Volume-Label, dann wird der durch Raspbian im Media-Verzeichnis unter bekanntem Pfad gemounted, den man anschließend der Capture-Funktion von „gphoto“ übergeben kann. Fertige Fotos hat man dann günstigerweise nicht erst auf der SD-Karte, sondern kann sie mit dem Speicherstick abziehen.

Und damit nicht zuletzt auch alles in die Fotografiewelt passt, hat unser Slider Standardverschlüsse bekommen, damit die Kamera einfach vom Stativ auf den Slider wechseln kann, ohne etwa einen anderen Fuß aufschrauben zu müssen. Mit Systemfüßen lässt sich auch schnell ein neues Oberteil aufspannen, wie etwa mit einer Action-Cam oder dem eigenen Smartphone.

Wer Interesse an den Projektquellen hat, kann sich die wie gewohnt unter dem entsprechenden GitHub-Verzeichnis, hier unter https://github.com/swenae/fotoslider anschauen und gerne in eigene Projekte integrieren.

Nun kann es also ins Gelände gehen. Um den Controller noch variabler zu machen, hat er zuletzt ein kleines Breadboard bekommen, auf dem man fix noch was stecken kann. Meine Favoriten sind derzeit Panorama-Aufnahmen, die man aus drei Bildern vom Schlitten zusammensetzt, nebst 360Grad-Aufnahmen, wo die Kamera im Vollkreis jeweils um einige Grad (mit der Objektivbrennweite der eigenen Kamera abzustimmen) geschwenkt und jeweils ein Bild erzeugt wird.

Ich bin froh, dass es dafür nun eine stabile Lösung gibt, welche die Aufnahmen quasi per Knopfdruck besorgt. Den Rest erledigt die Bildbearbeitung zu Hause…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.