zurück

USB-Mikroskop & Raspberry Pi

01.03.2020
Digitales USB-Mikroskop von MixMart

Verwendete Bauteile

Einrichtung

Zum grundlegenden Einrichten des Raspberry Pi gibt es eine vorhergehende Seite.
Man schließt zunächst das Mikroskop an einen freien USB-Anschluss des RPi an. (Hinweis: Es empfiehlt sich, vorher das Mikroskop mit einem Objekt auf dem PC schoneinmal grob bzgl. der Beleuchtung und Schärfe einzustellen)
Nun wird auf dem RPi die Software "fswebcam" installiert:
$ sudo apt-get install -y fswebcam

Fotos (Einzelbilder) aufnehmen

Zum Testen des Mikroskops und der fswebcam-Software wird nun zunächst einfach ein Einzelfoto gemacht und als Datei auf die SD-Karte gespeichert (im aktuellen Ordner):
$ fswebcam test1.jpg

Erste Testaufnahme mit USB-Mikroskop und fswebcam
Abb.: Erste Testaufnahme mit USB-Mikroskop und fswebcam (Motiv: eine rote SMD-LED)

Auflösung ändern

Man kann nun die Auflösung des resultierenden Fotos noch entsprechend seinen Wünschen anpassen, in dem ein weiterer Parameter übergeben wird:
$ fswebcam -r 800x600 test2.jpg

Einzelbildaufnahme mit höherer Auflösung
Abb.: Einzelbildaufnahme mit höherer Auflösung von 800x600 Pixeln (gleiches Motiv)

Info-Banner verbergen

Wenn einen das kleine Banner am unteren Ende des Bildes stört, dann kann dies mit einem weiteren Parameter im resultierenden Foto entfernt werden:
$ fswebcam -r 800x600 --no-banner test3.jpg

Einzelbildaufnahme ohne Info-Banner
Abb.: Einzelbildaufnahme ohne Info-Banner (gleiches Motiv)

Videos aufnehmen

Zum Aufnehmen von Video-filmen über das USB-Mikroskop benötigt man weitere Software für den RPi:
$ sudo apt-get install ffmpeg
Nun kann man ein erstes Video aufnehmen lassen:
$ ffmpeg -t 30 -f v4l2 -framerate 25 -video_size 640x80 -i /dev/video0 micro.mp4
Der Parameter -t gibt die Anzahl an Sekunden an, die die Aufnahme dauern soll.

Video: Test der roten SMD-LED mit einem Multimeter
Die hier verwendete, gedruckte Unterlage zum Größenvergleich kann als SVG-Datei heruntergeladen werden.

Falls ffmpeg auf dem RPi nicht verfügbar sein sollte, dann kann die Videoaufnahme alternativ auch folgendermaßen gemacht werden:
$ sudo apt-get install libav-tools
$ avconv -t 30 -f video4linux2 -i /dev/video0 micro.avi

Zeitraffer-Aufnahmen

Mit dem RPi-Kamera-Modul habe ich schon Zeitrafferaufnahmen gemacht, hier gibt es mehrere Möglichkeiten.
Hinweis: mit meinem Mikroskop hat es immer wieder Fehlermeldungen beim Speichern der Einzelfotos gegeben, die jedoch mit den zusätzlichen Parametern -p YUYV -d /dev/video0 behoben wurden.

Kurzzeit-Aufnahmen

Für kürzer angelegte Zeitraffer-Aufnahmen (z.B. 1/10s) wird zunächst ein Bash-Script (~/microscope/microscope-loop.sh) mit folgendem Inhalt erstellt:
#!/bin/bash
while :; do
DATE=$(date +%Y%d%m_%H%M%S)
fswebcam-p YUYV -d /dev/video0 -r 800x600 --no-banner tl_$DATE.jpg
sleep 10
done

Dieses Script muss noch ausführbar gemacht werden:
$ chmod +x microscope-loop.sh
und kann dann als Hintergrund-Job ausgeführt werden (damit man nicht die ganze Zeit eingeloggt sein muss) $ nohup ./microscope-loop.sh &

Langzeit-Aufnahmen

Zunächst wird ein Bash-Script (~/microscope/microscope-frame.sh) mit folgendem Inhalt erstellt:
#!/bin/bash
DATE=$(date +"%Y-%m-%d_%H%M%S")
fswebcam-p YUYV -d /dev/video0 -r 800x600 --no-banner ~/microscope/tl_$DATE.jpg

Dieses Script muss noch ausführbar gemacht werden:
$ chmod +x microscope-frame.sh
Jetzt wird Crontab konfiguriert, ein Dienst, der Scripte in regelmäßigen Zeitabständen ausführen kann (hilfreich ist hierbei auch CronGuru):
$ crontab -e
Nun wird folgende Zeile hinzugefügt:
* * * * * ~/microscope/microscope-frame.sh 2>&1
Nun wird jede Minute das Script aufgerufen und damit ein Einzelfoto aufgenommen und entsprechende gespeichert. Natürlich kann man Crontab auch für komplett andere Zeit-Intervalle konfigurieren.

Video aus Einzelbildern erstellen

Um aus den Einzelbildern dann nach der Langzeitaufnahme ein Zeitraffer-Video zu erstellen, bieten sich mehrere Möglichkeiten an (je nachdem, ob ffmpeg verfügbar ist):

ffmpeg

Man wechselt in den Ordner mit den Einzelaufnahmen und führt folgenden Befehl aus:
$ cat *.jpg | ffmpeg -r 30 -f image2pipe -i - timelapse.mkv
wobei hier -r 30 eine Framerate von 30fps angibt.

avconv

Optional wird die Sequenz aus Einzelbilden umbenannt, damit sie später besser weiterverarbeitet werden kann:
$ ls *.jpg | awk 'BEGIN { a=0 }{printf "mv %s img%04d.jpg\n", $0, a++}' | bash
Nun wir das Video aus den einzelnen Fotos erstellt:
$ avconv -i img%4d.jpg -r 30 -vcodec libx264 -vf scale=800x600 timelapse.mp4

Animiertes GIF aus Einzelbildern erstellen

Statt einem Video-Format lässt sich auch ein animiertes GIF (z.B. zum Einbetten in eine Website) erstellen:
$ cat *.jpg | ffmpeg -r 3 -f image2pipe -i - -lavfi "setpts=3*PTS" -y timelapse.gif
Weitere Informationen zur Erstellung animierter GIFs: High quality GIF with FFmpeg

Zeitrafferaufnahme mit dem USB-Mikroskop
Abb.: Kurze Zeitrafferaufnahme mit dem USB-Mikroskop als animiertes GIF 😄