Show me what you got!

Es war so Ende 2019 und mein Arbeitsvertrag mit meinem damaligen Arbeitgeber stand kurz vor dem Auslaufen, was ich heute immer noch sehr bereue – Nicht zuletzt wegen der tollen Laborausstattung. Nun panisch wie ich war, nie wieder ein ordentliches Mikroskop zu benutzen, habe ich das Einzige gemacht, was mit einfiel. Ich habe begonnen mir eine Low-Budget Version zu bauen. Jetzt gerade in Zeiten von Homeoffice bin ich super dankbar, dass ich es habe.

Zuerst habe ich mir über die Hardware Gedanken gemacht und da kam es mir sehr gelegen, dass eine damalige Arbeitskollegin ein mega cooles 5,5″ Full HD Amoled Display für ein Raspberry Pi testete. Da ich ein Gerät bauen wollte, das ich einfach in den Schrank stellen kann und immer funktioniert, war mir die Größe ganz recht. Und auch den Preis mit circa 100€ war ich bereit zu investieren.

Ein Raspberry Pi habe ich noch gekauft und eine Kamera hatte ich noch. Für ein ordentliches Mikroskop brauch man jedoch noch ein Objektiv. Nach ein wenig stöbern auf eBay fand ich ein recht günstiges Modell. Es hat ein M12 Feingewinde und neben einem optischen Zoom auch Stellschrauben für den Fokus. Alles was ich brauchte für rund 5€.

In diesem Zuge habe ich noch einen Mikroskopständer aus Aluminum gefunden. Nichts besonderes, aber man kann die Höhe regulieren und er ist schön stabil.

Nach dem alles bestellt und angekommen ist, habe ich angefangen ein paar Ideen im Inventor zu realisieren. Um ganz ehrlich zu sein, ging das auch recht schnell, da die schon gekauften Komponenten recht klare Vorgaben hatten.

Die Baugruppen bestehen auf drei Komponenten, welche ich einfach verschraubt habe, aber fangen wir mal mit dem Kamerahalter an.

  • Displayhalter (orange)
  • Zylinder (blau)
  • Kamerahalter (rot)

Der rote Kamerahalter hat eine Aufnahme für die Rasperberry Kamera, welche ohne Primär-Linse mit vier M2,5×5 Schrauben im Kunststoff verschraubt wird. Ich habe das M12 Feingewinde des Objektivs nachgebaut, sodass man diese direkt von unten in den Halter vor die Kamera schrauben kann.

Der blaue Zyinder dient lediglich dazu die Baugruppe mit dem Stativ zu verbinden. Zum Verbinden habe ich vier M2x5 Senkkopfschrauben genutzt.

Das Flachbandkabel der Kamera wird durch den Zylinder nach oben geführt und in den orangen Displayhalter gefädelt. Fürs bessere Drucken habe ich einfach den orangenen Halter entlang der schrägen Fläche geteilt und vier M4x5 Schrauben zum Verbinden eingeplant.

Zur Spannungsversorgung nutze ich ein 5V 3A Netzteil und eine Micro USB Platine aus Fernost, an die ich einfach ein Kabel angelötet habe, welches lediglich das Pi über die Stiftleiste versorgt. Die Platine kann man mit zwei M2.5×5 Schrauben verschrauben. Das Raspberry Pi wird auf die Rückseite des Displays geschraubt und über vier M3x10 Schrauben am Displayhalter verbunden. Nach dem Aufbau habe ich mich entschieden noch ein kleines Ringlicht zu platzieren. Für gerade mal 15€ gibts die auch bei eBay. Da lohnt das Selbstbauen kaum. Lediglich brauche ich dafür 12 Volt. Ich schäme mich zwar etwas, aber da ich mich erst im Nachgang dazu entschieden habe, habe ich einfach einen MT3608 Step-Up mit Heißklebe ins Gehause geklebt. Als Anschlusskabel habe ich das Kabel vom mitgelieferten 12 Volt Netzteil angeschnitten und angelötet.

Ohhh da fällt mir noch was ganz wichtiges ein….und zwar war es bei meinem Ringlicht so, dass ganz ungewöhnlich Plus auf dem Schirm vom Holstecker liegt. Das ist somit das Schlimmste, was sich diese Chinesen ausdenken konnten. Da sollte man beim Anöten an den Stepdown drauf achten. Bei mir ist jetzt das rote Kabel an Out- und das schwarze an Out+. Ohje, das fühlt sich so falsch an 😀 Schrecklich.

Software

Zu Beginn habe ich erstmal die aktuellste Raspian Version installiert – Ich glaube es war „Jessie“, aber sicher bin ich mir da nicht mehr genau. Darauf habe ich das Display nach der Anleitung von Waveshare konfiguriert. Ich bin nicht mehr ganz sicher, wie das alles ging, aber ich versuche mal alles zusammen zu fassen. Vorweg noch: Ich habe alle Einstellung per SSH gemacht.

cd /boot
sudo nano config.txt

Ganz unten in der Datei habe ich dann

###Ab hier von mir###

max_framebuffer_height=1920
max_usb_current=1
config_hdmi_boost=10
hdmi_group=2
hdmi_force_hotplug=1
hdmi_mode=87
hdmi_timings=1080 1 26 4 50 1920 1 8 2 6 0 0 0 60 0 135580000 3

display_rotate=3 #1: 90; 2: 180; 3: 270
start_x=1
gpu_mem=128
###

eingefügt.

Speichern geht dann wie gewohnt mit STRG+X und Y. Als nächstes habe ich mit

sudo Raspi-Config

die Kamera und das SSH aktiviert, den Hostname zu „microscope“ geändert und das WLAN eingestellt. Um den Touch zu konfigurieren, habe ich damals auch erstmal nur der Anleitung gefolgt und ich meine, dass es direkt funktioniert hat.

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install xserver-xorg-input-libinput
sudo apt install xserver-xorg-input-synaptics
sudo mkdir /etc/X11/xorg.conf.d
sudo cp /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/
sudo nano /etc/X11/xorg.conf.d/40-libinput.conf

in der 40-libinput.conf sucht ihr der Identifier „touchscreen“ und fügt die Zeile Option „CalibrationMatrix“ ein wie unten gezeigt.

Section "InputClass"
        Identifier "libinput touchscreen catchall"
        MatchIsTouchscreen "on"
        Option "CalibrationMatrix" "0 1 0 -1 0 1 0 0 1"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
EndSection

Ähhhh Touch?! Wofür der? Ich hatte mir überlegt, dass ich neben einer Foto Funktion das Raspberry per Touch ausschalten können will . Aber jetzt erstmal Stück für Stück.

Das Raspberry ist weitgehend vorbereitet – also kann ich jetzt über die eigentliche Software des Mikroskops reden. Kopiert euch dafür erstmal die Software von Thingiverse auf das Pi – am besten direkt ins Home Verzeichnis und erstellt dort einen Ordner „Bilder“.

mkdir ~\Bilder

Somit sollte \~ so aussehen.

Bilder/
microscope.py
microscope.service
overlay.png

Um die Software später ausführen zu können, braucht diese Rechte und das geht mit

sudo chmod +x microscope.py

Geschrieben habe ich diese in Phyton, da es dort schon eine fertige Bibliothek für den Touch und die Kamera gab. Ich will aber auch vorweg sagen, dass ich echt kein Softwareentwickler bin und ich wette, das geht alles viel schöner. Egal es funktioniert.

Die eigentliche Magie passiert im State „Show me what you got“. Hier wird zuerst das Kamarabild auf dem Display in Full HD mit 30 FPS im Vollbild angezeigt. Um hinterher per Touch Funktionen auszuführen, wäre es schon praktisch, wenn man Icons hätte die zeigen, wo man hindrücken soll und was passiert. Dafür habe ich ein kleines Overlay in Inkscape gemalt, welches ich in einen anderen Layer über das Kamerabild lege. Links eine Kamera, als Icon für einen Foto, recht ein Shutdown Symbol zum Runterfahen.

Als nächstes wird inerhalb einer while-Schleife abgefragt ob ein Touchevent gestartet wurde. Es werden genau drei Parameter überprüft. Die absolute Position in X und in Y, sowie der Event Code 57 mit dem sich prüfen lässt, ob der Finger auf dem Touchscreen liegt oder nicht.

if event.type == ecodes.EV_ABS:
	if event.code == 00:
		x = event.value
	if event.code == 01:
		y = event.value
	if event.code == 57:
		BtDown = event.value

Da das Display ja bekannterweise 1920×1080 Pixel hat, können wir nun sehr genau sagen, wo wir den Finger auf dem Touchscreen liegen haben. Ich habe also mein Overlay betrachet und in zwei 200×200 Pixel große Zonen erstellt, in denen in meinen Finger haben muss, um das Raspberry beispielsweise auszuschalten.

#Screenshot condition
if BtDown == -1 and x > 0 and x < 200 and y > 1720 and y < 1920: 
#Shutdown condition
if BtDown ==-1 and x > 0 and x < 200 and y > 0 and y < 200: 

Wenn man nun also den Finger vom Touchscreen in einer der beiden Zonen hebt, wird die If Anweisung ausgefüht. Im ersten Fall wird einfach ein Kamarebild im Ordner „/home/pi/Bilder/“ gespeichert und nach der ISO 8601 benannt. Also mit Kalendertag und Urzeit – Ja dafür gibt es eine Norm, das wusste ich zwar auch nicht, aber ich fands so deutsch, dass ich es gleich mal erwähnen wollte.

Im zweiten Fall wird das System einfach mit

os.system('sudo systemctl poweroff')

runtergefahen. Im Groben war das schon mal das Hauptprogramm. Damals habe ich mir aber auch sagen lassen, das die coolen Kinder ihre Programme mit einem Service starten und verwalten. Um das zu machen, muss man aber erstmal einen Service schreiben und den mit

sudo systemctl enable microscope.service

einbinden. Mein Service sieht so aus

[Unit]
Description= microscope.service service nach /etc/systemd/system kopien

[Service]
ExecStart=/home/pi/microscope.py

[Install]
WantedBy=multi-user.target

Wie in der Servicebeschreibung steht, muss diese im Order „/etc/systemd/system“ liegen. Am Besten einfach mit cp hinkopieren – ich bin nicht mehr sicher, ob man sudo für den Ordner braucht. Den Service hab ich auch mit

sudo chmod +x microscope.service

ausführbar gemacht. Zum Schluss braucht es nur noch ein

sudo systemctl enable microscope.service

um den Service bei jedem Raspberrystart automatisch auszuführen. Ab jetzt sollte also nach jedem Starten automatisch auch die Kamera starten.

Mhhhh und wie komme ich jetzt an die Fotos? Am einfachsten binden wir mit Samba unseren Ordner „Bilder“ ins heimische Netzwerk ein. Dafür habe ich auch eine belibige Anleitung im Internet genutzt und bin damit sehr schnell erfolgreich gewesen. Ich meine man brauch diese Pakete

sudo apt-get install samba samba-common-bin​

Danach habe ich die Datei smb.conf mit

sudo nano /etc/samba/smb.conf ​

bearbeitet und Folgedes ergänzt

[Bilder]
comment = Samba-Pi-Freigabe
path = /home/pi/Bilder/
read only = no

Als wirklich letzten Schritt vergibt man noch ein Netzwerkpasswort mit

sudo smbpasswd -a pi​

Nun noch ein paar Bilder. Leider hat meine Tochter gestern beim Fotos machen am Kabel gezogen und das Mikroskop ist auf den Boden gefallen, daher der blaue Fleck obens links. Ich muss sagen ich nutze das Mikroskope recht häufig und kann es nur empfehlen. Selbst kleine Lötaufgaben kann man sehr gut darunter erledigen.

Alle Daten, sowie die Software findet ihr hier. Das Overlay ist auch auch im Download enthalten, aber da es ein PNG ist, im Ordner Images.

https://www.thingiverse.com/thing:4725025

In diesem Sinne, frohes Schaffen

Hinterlasse einen Kommentar

Erstelle eine Website wie diese mit WordPress.com
Jetzt starten