Kamera und Routenlogger (Update)

Als es vor zwei Jahren (2014) zum ersten Mal auf Tour Richtung Österreich ging, hatte ich mit einem Raspi1 und einer Kamera eine mobile Webcam dabei, die einerseits Livebilder ins Netz geschickt hatte, andererseits aber auch die Positionsdaten lieferte.

Grundsätzlich funktionierte es. Aber es gab Probleme mit der Stromversorgung und auch die GPS-Antenne machte einem das Leben nicht gerade leicht.

Das der Banana Pi M3 von sich aus schon in der Lage ist, ein LiIon-Akkupack zu laden hat den Ausschlag gegeben, das Experiment erneut zu wagen. Die Ergebnisse sind ermutigend.

Gebaut ist die Technik für das 3. Zoe-Treffen in Velden und für die Wave2016.


Für das Livebild gibt es folgende Seite im Netz:

http://www.fbas.tv/gpscam

Sollte die Kamera aktuell in Betrieb sein, sieht man das an der eingeblendeten Uhrzeit.


Folgende Komponenten wurden eingesetzt:


- Ein Banana Pi M3 mit zusätzlichem Akkupack, das einfach unten an die Platine gelötet werden kann.





- Ein Holux M1000 GPS-Empfänger. Die Bluetooth-Schnittstelle wird allerdings nicht genutzt.
- eine beliebige Webcam. Hier ist es eine von Logitech.

- Für die Kommunikation ins Netz habe ich einen Accesspoint von TP-Link eingesetzt. Den M7350. Er unterstützt sowohl 4G/LTE wie auch 2,4 oder 5 GHz WLAN. Alternativ kann man natürlich auch sein Smartphone einsetzen. Ich persönlich halte es für sinnvoller, diese Aufgabe einem separaten Gerät anzuvertrauen. Bis zu 10 Geräte können sich gleichzeitig anmelden.

Zur Kontrolle des Signals setze ich ein Tablet ein. Dieses ist einerseits über den Accesspoint direkt mit dem Banana Pi verbunden. Damit prüfe ich ob überhaupt der BananaPi alles so macht, wie er es soll, denn selbst hat der weder Monitor noch Tastatur angeschlossen. Wer das will, kann das natürlich auch machen. Ausserdem gehe ich mit dem Tablet auf die Website, damit ich auch das sehe, was in die Öffentlichkeit geht.

Das Ergebnis sieht dann z.B. so aus:

Zentral das aktuelle "Webcam" Bild. Maximal werden 4 Bilder pro Minute gesendet. Leider ist das eher ein theoretischer Wert. Man kann sich freuen, wenn man alle Minute ein neues Bild bekommt. Links unten wird die nähere Umgebung angezeigt, in der man sich gerade befindet. An der Seite dann ein größerer Kartenauschnitt mit dem bisherigen Streckenverlauf der letzten ca. 50 Minuten. Außerdem einige Informationen über Datum, Uhrzeit, Koordinaten, Höhe (sollte man nicht all zu ernst nehmen) und Geschwindigkeit. Die Angaben zur BPi sind hautpsächlich für mich interessant. Die Batteriekapaziät bezieht sich auf den Banana Pi und nicht aufs Fahrzeug. Leider habe ich keine zuverlässige Schnittstelle um folgende Werte vom Fahrzeug zu beziehen: aktuelle Akkukapazität, voraussichtliche Restreichweite und bisher gefahrene Strecke. An letzterem arbeite ich, weil man es aus den Koordinaten berechnen kann.

Zentrales Problem ist die Stromversorgung. Dafür haben ich einen 4x5V USB Adapter für den Zigarettenanzünder besorgt, der außerdem noch zwei 12V Steckdosen anbietet. Damit versorge ich den BananaPi, den Access Point und auch das Tablet.

Die Kamera und auch der GPS-Empfänger können direkt am Banana Pi angeschlossen werden. Da er eine WLAN-Antenne an Board hat, wird kein zusätzlicher USB-Stick benötigt. 

Wichtig bei der Konfiguration des BananaPi ist die Netzanbindung. Nur der TP-Link AccessPoint darf sich automatisch mit dem Kleinstrechner verbinden. Sonst kann es immer mal wieder zu Problemen mit der Datensynchronisation geben.

Die Daten werden per SSH-FS an den Server geschickt. Das hat den Vorteil, das nicht für jede neue Übertragung eine Anmeldung durchgeführt werden muß.

Doch komme ich zuerst einmal auf die Bildaufnahme. Die hat sich zum usrpünglichen Projekt enorm verändert. Sie wird nicht von einem Webcam-System erstellt sondern von einem System, das ursprünglich für Videostreams ausgelegt war und ist. Nämlich ffmpeg. Der Vorteil ist, das ich weitere Streams erstellen kann, z.B. mit echtem Livebild. Leider ist das bei mobiler Übertragung beinahe unmöglich, weil das Signal einfach zu schlecht ist.

Mit folgendem Script wird das Bild erzeugt:

#!/bin/bash
PIDFILE="/var/tmp/ffmpeg.pid"
 

if [ -e "${PIDFILE}" ] && (ps -u $(whoami) -opid= | grep -P "^\s*$(cat ${PIDFILE})$" &> /dev/null); then
    echo "ffmpeg laeuft"
    exit 99
fi
ffmpeg -s 1280x720 -r 1 -i /dev/video0 -vf fps=0.01 -y -updatefirst 1 -q:v 10 /var/tmp/bild.jpg > /var/tmp/ffmpeg.log &
echo $! > "${PIDFILE}"
chmod 644 "${PIDFILE}"


Mit diesem Script wird außerdem sicher gestellt, das im Fehlerfall das Script neu gestartet wird. Es wird minütlich über die crontab aufgerufen.

Regelmäßig wird auch geprüft, ob der GPS-Dämon läuft:

#!/bin/bash
PIDFILE="/var/tmp/readgps.pid"
ALTER=`/usr/local/bin/gpscam/alter /var/tmp/h`
if [ $ALTER -gt 120 ]
then
  sudo service gpsd restart
fi
if [ -e "${PIDFILE}" ] && (ps -u $(whoami) -opid= | grep -P "^\s*$(cat ${PIDFILE})$" &> /dev/null); then
    echo "readgps.py laeuft"
    exit 99
fi
/usr/local/bin/gpscam/readgps.py > /var/tmp/readgps.log &
echo $! > "${PIDFILE}"
chmod 644 "${PIDFILE}"


Da es passieren kann, das der GPS-Dämon noch läuft, obwohl keine aktuellen Daten empfangen werden, wird hier geprüft, wie alt die letzte Höhenangabe ist. Sollte sie älter als zwei Minuten sein, wird der Dämon neu gestartet.


Keine Kommentare:

Kommentar posten