Kamera und Routenlogger


Auf der Langstreckenfahrt von Dötlingen nach Salzburg sollten auf einer Website die Streckendaten auf einer OpenStreet-Landkarte gezeigt werden. Daneben sollte es während der Fahrt jede Minute ein aktuelles Bild von der Strecke geben.

Zur Realisierung werden einige Dinge benötigt. Ich habe dafür folgendes genommen:

- Raspberry Pi
- RaspiCam
- GPS-Empfänger (hier Holux M-214)
- USB-Switch
- Spannungsversorgung
- USB-Stick
- eine Website

auf dem Raspberry Pi wird die Standardinstallation durchgeführt. Die Datenübertragung vom Raspi zur Website läuft mit SSH.





Während der Fahrt werden die Daten des GPS-Empfängers mit dem Programm gpxlogger regelmäßig aufgezeichnet. Damit der gpxlogger funktioniert, muß der GPS-Dämon gestartet werden. Das funktioniert normalerweise Out-of-the-Box. Der M-241 benötigt noch einen Startparameter:

stty 38400 < /dev/ttyUSB0

eventuell muß der Dämon neu gestartet werden. Mit folgendem Befehl:

gpsd -n -N -D 2 /dev/ttyUSB0
 


Damit die Koordinaten im Bild erscheinen (unten rechts) hilft ein kleines python-Script mit dem modul gps. Außerdem werden die Koordinaten auch als EXIF-Daten im Foto hinterlegt.

Mit folgendem Befehl wird das Foto erstellt und die EXIF-Daten hinterlegt:

raspistill -o /var/tmp/bild.jpg -w 1280 -h 720 -hf -vf -q 7 -n -ex auto -x GPS.GPSLongitude=$dlg/1,$mlg/1,$islg/100 -x GPS.GPSLatitude=$dbg/1,$mbg/1,$isbg/100




Die Daten werden in der RAM-Disk des Raspi gespeichert. Danach werden die Texte ins Foto importiert. Dazu benötigt man das Programm ImageMagick:


convert /var/tmp/bild.jpg -fill 'rgba(128,128,128,0.5)' -draw 'rectangle 480,615 1280,720' -gravity SouthEast -font DejaVu-Sans-Mono-Bold -pointsize 32 -fill $black -draw "text 10,0 \"$t2\"" -bordercolor $black -fill $white -draw "text 13,3 \"$t2\"" -fill $black -draw "text 10,32 \"$t1\"" -fill $white -draw "text 13,35 \"$t1\"" -fill $black -draw "text 10,64 \"$t0\"" -fill $white -draw "text 13,67 \"$t0\"" /var/tmp/ausgabe.jpg

Zur Datenübertragung wurde ein Medion-USB-Stick eingesetzt.


Die Raspicam wurde mit doppelseitigem Klebeband ans Gehäuse geklebt.

Es gab allerdings ein grundsätzliches Problem. Die Stromversorgung in einem Auto ist zur Versorgung des Raspi ungeeignet.
Zu Anfang habe ich von www.pimodules.com ein UPiS Advanced eingesetzt. Auch nach dem Update auf die Firmware 1.06 Beta funktionierte das System nicht sicher. Wahrscheinlich lag es dabei an zu hohem Stromverbrauch des USB-Sticks.

Ab 60° schaltet die UPiS automatisch ab. Leider wird es wahrscheinlich auf dem Armaturenbrett auch wärmer.

Dann wurde ein Akkupack für Mobiltelefone eingesetzt. Eigentlich sollte es möglich sein, während der Nutzung das Akkupack zu laden. Das mag sein, nur leider wird die Stromversorgung beim starten des Autos komplett auf Null gezogen. Und das mag der Raspi gar nicht.

Doch die Lösung ist nah: dazu benötigt man ein 12V Netzteil für einen Laptop. Wichtig beim Laptop: Während er abgeschaltet ist, muß am USB-Anschluß die Stromversorgung bestehen bleiben.

Nach der Aufzeichnung ist noch etwas Arbeit notwendig, um aus den Einzelbildern einen Zeitrafferfilm zu bekommen.

Zuerst einmal kommen alle Bilder, die für den Film benötigt werden in einen Ordner. Dort wird neu sortiert, weil der Konverter seltsamerweise Probleme mit den Namen und Nummerierungen hat.

#!/bin/bash
a=1
for i in *.JPG; do
  new=$(printf "IMG%04d.jpg" ${a}) #04 pad to length of 4
  mv ${i} ${new}
  let a=a+1
done


Danach wird mit folgendem Befehl ein mp4-Film daraus:


avconv -r 7 -i IMG%04.jpg -r 25 -g 15 -qscale 5 film.mp4

Noch ist der Film zu groß. Mit


avconv -i film1.mp4 -c:v libvpx -qmin 10 -qmax 42 -maxrate 500k -bufsize 1000 -threads 2 film1.webm

Ist die Grösse annehmbar. Und die Datei sollte auch mit HTML5 funktionieren.

Keine Kommentare:

Kommentar posten