Wassertropfen fotografieren mit dem Raspberry Pi als Steuergerät

Fast neun Jahre sind inzwischen vergangen, seit ich das letzte Mal mit der Tropfenfotografie experimentiert habe. Es war also höchste Zeit, das inzwischen leicht verstaubte Gerät wiederzubeleben. Um es etwas interessanter zu machen, wollte ich aber nicht einfach da weitermachen, wo ich 2012 aufgehört habe, sondern die Steuerung irgendwie verbessern. Das Timing der Wassertropfen wurde damals über einen Laptop gesteuert, der per USB mit dem Arduino verbunden war. Die Software hatte ich in Java geschrieben und für das GUI verwendete ich spezielle Klassen der NetBeans Entwicklungsumgebung. Schon damals kam mir das etwas umständlich vor, aber zu dieser Zeit war es die einfachste Möglichkeit, eine grafische Oberfläche für die Tropfensteuerung zu entwickeln. Die Suche nach einer neuen Hardware und Software hat mich einiges an Zeit gekostet. Wer diese Odyssee überspringen möchte, kann auch gleich bei der finalen Lösung weiterlesen.

Suche nach geeigneter Hardware/Software

HC-06 Bluetooth Modul

Heutzutage verwendet man für so ziemlich alles das Smartphone, daher war meine erste Überlegung, eine App zu schreiben, in der man die Timings eingeben kann. Die Verbindung mit dem Arduino könnte per Bluetooth erfolgen. Also habe ich mir für ein paar Euro das Bluetooth Modul HC-06 gekauft, das mit nur vier Drähten mit dem Arduino verbunden wird. Bei den ersten Tests sind aber schon Probleme aufgetreten. Ich habe es mit mehreren Smartphones versucht, wobei das Pairing bei den wenigsten reibungslos funktionierte. Einige wollten sogar gar nicht. Damit war diese Variante gleich mal ausgeschieden. 

Aber wenn es schon nicht über Bluetooth funktioniert, dann wollte ich zumindest ein Display im Gehäuse haben und die Werte für die Wassertropfen direkt am Steuergerät zum Beispiel über einen Drehwinkelgeber eingeben. HD44780 LCD Modul mit I2C Schnittstelle Auf diese Art und Weise wird es auch bei meinem 3D-Drucker gemacht und funktioniert dort recht gut. Allerdings gibt es da auch nicht allzu viel einzustellen. Zunächst habe ich das Display bestellt, das man für unter 10 Euro bekommt. Es handelt sich um ein kleines LCD Modul mit 4x20 Zeichen und HD44780 Controller inklusive einer kleinen Zusatzplatine, damit das Display einfach über die I2C Schnittstelle angesteuert werden kann. Das Display war schnell angeschlossen, aber die Enttäuschung ließ nicht lange auf sich warten. Egal wie ich den Kontrast eingestellt habe, es waren immer einige Pixel nicht sichtbar. Inzwischen war ich schon einigermaßen frustriert und habe daher das Display auch gleich wieder zurückgeschickt. 

Die Idee mit einem eigenen Display wollte ich aber noch nicht aufgeben. Am besten gleich mit Touch-Eingabe. Dafür ist ein Arduino aber viel zu schwach. Zufällig hatte ich noch einen Raspberry Pi 3 Model B+ herumliegen, es fehlte also nur noch ein passendes Display. Nach etwas Recherche habe ich mich für das offizielle 7" Touchscreen Display entschieden, da es den DSI Anschluss des Raspberry Pi verwendet. Dadurch erspart man sich eine umständliche Verkabelung über den HDMI Port. Jetzt musste ich mir nur noch überlegen, mit welcher Software ich die grafische Benutzeroberfläche für die Tropfensteuerung schreiben will. Da ich aus der Java Welt komme, habe ich es zunächst mit JavaFX versucht. Leider ist JavaFX inzwischen nicht mehr Teil des Java SDK und läuft daher nicht von Haus aus auf dem Raspberry Pi. Es gibt aber das LibericaJDK von BellSoft, das JavaFX enthält und auch für die ARM Architektur des Raspberry Pi verfügbar ist. Aber auch hier kam schnell die Ernüchterung. Der Fullscreen Modus arbeitete nicht richtig, was auch diese Variante für mich unbrauchbar machte. Ich hatte aber noch eine zweite Java Option. Android auf Raspberry Pi Es gibt Portierungen von Android für den Raspberry Pi, womit ich quasi wieder dort angekommen wäre, womit ich am Anfang gestartet habe, nur eben direkt auf dem Raspberry Pi. Die ROMs kann man sich auf KonstaKANG.com herunterladen und müssen einfach nur auf die SD-Karte kopiert werden. Das wäre eigentlich die perfekte Lösung gewesen, da ich schon früher Android Apps entwickelt habe. Nur leider gab es wieder ein Problem. Der Raspberry Pi bootet zwar erfolgreich mit Android, aber die ganze Software war extrem langsam. Ich habe alle verfügbaren Android Versionen durchprobiert, aber es war immer das Gleiche. Offensichtlich ist die Hardware des Raspberry Pi 3 mit Android etwas überfordert, und sonderlich stabil war die Software auch nicht. Also wieder nichts.

Die Lösung: Python & Kivy

Es war an der Zeit, nach einer ganz anderen Lösung zu suchen. Also habe ich mich wieder im Internet schlau gemacht und bald gemerkt, dass Python die gängigste Sprache in Bastlerkreisen ist. Hätte ich vorher gewusst, dass das Pi in Raspberry Pi für Python Interpreter steht, wäre ich wohl schneller draufgekommen. Jetzt fehlte nur noch ein GUI Framework. Hier hat man unter Python eine recht breite Auswahl. Nach einigen Experimenten mit PyQT und Tkinter bin ich schließlich bei Kivy gelandet. Kivy ist ein sehr schlankes Open-Source GUI-Toolkit um grafische Benutzeroberflächen mit Toucheingabe zu erstellen. Das Toolkit basiert direkt auf OpenGL ES 2, was den großen Vorteil hat, dass kein grafischer Desktop benötigt wird. Das Raspberry Pi OS Lite Image genügt also zur Erstellung von grafischen Benutzeroberflächen. Allerdings werden einige zusätzliche Pakete benötigt, die man noch installieren muss. Mit diesen Schritten habe ich es bei mir auf dem Raspberry 3 B+ zum Laufen gebracht:

sudo apt-get update
sudo apt-get upgrade

sudo apt-get install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev \
 pkg-config libgl1-mesa-dev libgles2-mesa-dev \
 python-setuptools libgstreamer1.0-dev \
 gstreamer1.0-plugins-{bad,base,good,ugly} \
 gstreamer1.0-{omx,alsa} python-dev

sudo apt install python3-pip

pip3 install kivy[base]

sudo apt-get install libmtdev1 xclip xsel

sudo apt-get install python3-rpi.gpio

Ein weiterer Vorteil von Kivy ist die Plattformunabhängigkeit. Das erleichtert die Entwicklung enorm, da man die Software sehr komfortabel am PC mit PyCharm als Entwicklungsumgebung schreiben kann. Von dieser IDE gibt es eine kostenlose Community Edition, die für die Entwicklung völlig ausreicht. Die Python Skripte müssen dann nur noch auf den Raspberry Pi kopiert und dort gestartet werden. Das Remote-Ausführen auf dem Raspberry Pi ist leider der Professional Edition vorbehalten.

Es folgten drei Monate intensives Lernen, Programmieren und Testen. Vor allem die Erweiterung des Kivy Frameworks hat besonders viel Zeit gekostet. Jetzt ist die Software aber soweit, dass ich sie als fertig bezeichnen würde. Oberfläche der Tropfensteurung

Folgende Features bietet die Tropfensteuerung:

  • Kinderleichte Bedienung mit benutzerfreundlicher Touch-Oberfläche
  • Steuert bis zu 3 Ventile 
  • Steuert bis zu 3 Blitze
  • Einstellbare Verzögerung der Blitze
  • Beliebige Anzahl von Tropfen    
  • Jedes Ventil, Kamera und Blitze können getrennt ein-/ausgeschaltet werden
  • Extrem genaue Timings, einstellbar auf zehntel Millisekunden
  • Laden und Speichern von beliebig vielen Einstellungen mit automatischem Zeitstempel im Namen
  • Eingabe über Bildschirmtastatur oder Buttons mit Slow- und Fast-Modus
  • Funktioniert mit Nikon, Canon und Fuji Kameras

Hier noch einige Screenshots der Applikation:

Das Layout wurde ganz speziell dafür entwickelt, Wassertropfen bzw. Tropfen auf Tropfen zu fotografieren. Die Bedienung sollte dabei so einfach wie möglich sein, und ich denke, dass dieses Ziel auch erreicht wurde. Es stehen aber schon einige Features auf der To-Do-Liste, die in Zukunft noch integriert werden.

Selbstverständlich muss das Programm auch einen Namen haben. Nach etwas Recherche habe ich mich für DropWise entschieden. Irgendwie klingt es nett und mir gefällt die Mehrdeutigkeit...

Die Elektronik

Die Schaltung zur Ansteuerung der Ventile ist im Grunde die Gleiche wie bei meiner alten Lösung. Die Ventile werden von je einem BD139 NPN Universaltransistor angesteuert, der einen maximalen Kollektorstrom von 3 Ampere verträgt. Das ist mehr als genug für die Ventile. Ein Optokoppler dient als galvanische Trennung zwischen dem Raspberry Pi und den Transistoren. Zusätzlich dient eine Freilaufdiode als Schutz vor Überspannung bei Abschaltung der Ventile.

In meiner ersten Variante wurden die Blitze noch per Funkauslöser von der Kamera ausgelöst. Diesmal werden die Blitze direkt von der Elektronik angesteuert. Dadurch können die Blitze bequem aus der Applikation heraus an- und abgeschaltet werden. Die Schaltung ist so ausgelegt, dass jeder beliebige Blitz verwendet werden kann, der per Kurzschluss ausgelöst wird.

Etwas aufwändiger ist die Stromversorgung. Der Arduino hat den Vorteil, dass er wie die Ventile mit 12 Volt betrieben wird. Daher reicht ein einfaches 12 Volt Netzteil zum Betrieb der Tropfensteuerung aus. Der Raspberry Pi benötigt aber eine Spannungsversorgung von 5 Volt. Dazu ist ein LM2596T-ADJ Step-down Schaltspannungsregler in die Schaltung integriert, der die Spannung im Gegensatz zu einem linearen Spannungsregler mit sehr geringen Verlusten umwandeln kann. Die Schaltung dazu schaut wie folgt aus:LM2596T-ADJ Step-down Converter

Die gesamte Schaltung der Tropfensteuerung habe ich in KiCAD entworfen und gemeinsam mit Freerouting das Platinenlayout erstellt. Die fertige Platine wird dann einfach auf den Raspberry aufgesteckt und versorgt diesen über den GPIO Stecker mit Strom.

Nach dem Zusammenlöten aller Bauteile darf natürlich ein abschließender Test mit Kamera, Blitz und den Ventilen nicht fehlen. Das Video sollte man mit Ton anschauen, damit man das Klicken der Kamera und der Ventile hört :)

Die gesamte Elektronik samt Raspberry Pi und Display benötigt übrigens nur 2,64 Watt. Um den Verbrauch zu senken, wurde die Helligkeit des Displays etwas gesenkt und am Raspberry sowohl der HDMI Ausgang als auch der USB/LAN Chip deaktiviert. Mit einem Raspberry Pi 3 A+ hätte ich das einfacher und günstiger haben können, aber den kannte ich zu diesem Zeitpunkt noch nicht.

Das Gehäuse

DropWise braucht noch ein Gehäuse. Die Suche nach etwas Passendem verlief ergebnislos. Aber dank 3D-Drucker ist das nicht wirklich ein Problem. Den Anfang machte ein Modell aus Karton, damit man sich das Gerät ungefähr vorstellen kann und ein Gefühl für die Haptik bekommt. Aus dem Karton-Modell wurde in Fusion 360 das CAD-Modell. Das Gehäuse für die Steuerung besteht aus einer Front, dem eigentlichen Gehäuse und der Bodenplatte. Die Herausforderung dabei war, das Gehäuse so zu konstruieren, dass es vom 3D-Drucker mit möglichst wenig Einzelteilen gedruckt werden kann. Und einigermaßen gut ausschauen sollte es nebenbei auch noch. Das Ergebnis kann man auf den Fotos sehen. Zuletzt wurde noch alles verkabelt und zusammengeschraubt. 

Zubehör

Tropfenwanne

Für die Wassertropfenfotografie reicht im Grunde ein Backblech für den Anfang völlig aus. Es kann aber passieren, dass man das Backblech gerade in diesem Moment zum Kochen braucht und außerdem ist es anfällig für Rost. Zumindest ist mir das passiert. Eine andere recht einfache Lösung für eine Tropfenwanne ist ein sogenannter Eurobehälter, den man in jedem Baumarkt bekommt. Diese Kiste aus Kunststoff kann man einfach auf die gewünschte Höhe zurechtsägen und bei Bedarf abschließend lackieren. Natürlich gibt es noch andere Möglichkeiten wie zum Beispiel Plexiglas, aber für meine Bedürfnisse reicht die einfache Kiste. 

Wenn die Wanne dann unter den Ventilen liegt, muss die Kamera noch fokussiert werden, bevor die Wassertropfen fotografiert werden können. Dazu verwende ich eine größere Maschinenschraube, die ich an der Stelle in die Wanne stelle, wo die Wassertropfen landen. Dabei kann man gleich Kamera und Blitze testen. Die Kamera muss dazu auf manuellen Fokus gestellt werden. Wenn dann das Foto wie folgt aussieht, ist die Kamera perfekt fokussiert.Fokussierung mit einer Maschienenschraube

Ventile

Ventil für WassertropfenfotografieFür die neue Tropfensteuerung verwende ich dieselben Ventile, die ich schon bei meinen ersten Wassertropfen Fotos benutzt habe. Sie funktionieren auch 9 Jahre später noch wunderbar. Es handelt sich dabei um stromlos geschlossene Ventile mit einer Betriebsspannung von 12 Volt und einer Leistung von 5 Watt. Ich habe sie damals bei magnetventile-shop.de bestellt, die genaue Artikelnummer ist  21JN1R0V23. Den Gerätestecker habe ich auch gleich mitbestellt. Die Schlauchanschlüsse sind sehr russisch gelöst, das heißt ich wickle einfach recht viel Teflon Dichtband um den Schlauch und drehe ihn dann in das Ventil. Da in den Schläuchen sehr wenig Druck vorhanden ist, funktioniert das wunderbar. 

Mariottesche Flasche

Die Mariottesche Flasche dient dazu, den Wasserdruck auf einem konstanten Niveau zu halten. Das ist nötig, damit die Timings der Wassertropfen unabhängig vom Wasserstand in der Flasche gleichbleiben. Auch hier habe ich wieder meine alten Flaschen wiederverwendet. Es handelt sich dabei um ganz normal 0,5 Liter PET Flaschen.Mariottesche Flasche für Wassertropfenfotografie

In den Verschluss ist ein Loch gebohrt, in das ein kurzes Stück Alurohr gesteckt und mit Heißkleber fixiert ist. Auf der Unterseite der Flasche ist ein weiteres Loch gebohrt, in dem der Schlauch steckt, der zu den Ventilen führt. Dieser Schlauch ist auch mit Heißkleber fixiert. Mehr braucht man für eine Mariottesche Flasche nicht.

Fotos

Am Ende dürfen natürlich einige erste Beispiele für Tropfen-auf-Tropfen Fotos nicht fehlen. Im Moment ist nur ein Ventil in Betrieb, die Erweiterung auf mehrere Ventile folgt noch. Die ersten Testfotos sind mit reinem Wasser gemacht. 

Wassertropfen fotografieren mit DropWise

Wassertropfen fotografieren mit DropWise

Wassertropfen fotografieren mit DropWise

Bei den folgenden Bildern ist das Wasser mit etwas Guarkernmehl eingedickt worden. Man erkennt sofort, dass das Wasser etwas ruhiger geworden ist.

Wassertropfen fotografieren mit DropWise

Wassertropfen fotografieren mit DropWise

Wassertropfen fotografieren mit DropWise

Wassertropfen fotografieren mit DropWise

Wassertropfen fotografieren mit DropWise

Wassertropfen fotografieren mit DropWise

Wassertropfen fotografieren mit DropWise

Wassertropfen fotografieren mit DropWise

Es werden sicher noch viele weitere Fotos folgen. Ich werde den Beitrag dann bei Bedarf aktualisieren. 

Bei Fragen oder Verbesserungsvorschlägen würde ich mich über einen Kommentar sehr freuen.

Konversation wird geladen