Das Modell 200 ist die kleine Ausgabe einer Raspberry Video Cam auf Basis eines Raspberry Pi Zero W. Im Vergleich zum ursprünglichen Modell 850, das einen großen Raspberry Pi 3 als Rechner hat. Aber braucht ein Modell 200 eine andere Software als das Modell 850? Nein, braucht es nicht. Allerdings sind meine Anleitungen zur Softwareinstallation inzwischen bald ein Jahr alt und für Raspbian gibt es eine neue Version Stretch. Deshalb fasse ich in diesem Artikel noch einmal alle erforderlichen Installationsschritte aus verschiedenen vorangegangenen Beiträgen zusammen und verweise für umfangreichere Erklärungen auf meine ursprünglichen Artikel. Die folgende Installationsanleitung gilt für alle fremdgetriggerten Kameras, egal ob Modell 200 oder 850.
Zuerst aber wieder ein Oachkatzl-Video, auch wenn es diesmal kein Eichhörnchen ist, sondern eine Rabenkrähe. Mehr davon gibts in meinem YouTube-Kanal.
Zur Wahrung deiner Privatsphäre wird erst eine Verbindung zu YouTube hergestelt, wenn du den Abspielbutton betätigst.
Unter fremdgetriggerter Kamera verstehe ich eine zweite (oder dritte) Kamera in einem Kameraverbund, die selbst keine Objekterkennung besitzt und von einer anderen Kamera gesteuert wird. Mehr dazu in meinem Artikel über die zweite Kamera.
Betriebssystem Raspbian Stretch Lite auf Micro-SD-Karte laden
Download
Die aktuelle Raspbian Version finden wir bei Raspberrypi.org unter diesem Link: https://www.raspberrypi.org/downloads/raspbian/. Nachdem an der Kamera kein Monitor angeschlossen ist, verwenden wir die Lite- und nicht die Desktopversion. Die aktuelle Version zum Zeitpunkt der Erstellung dieses Artikels ist vom 29.11.2017 und der Dateiname der Zip-Datei lautet folglich 2017-11-29-raspbian-stretch-lite.zip
. Spätere Versionen werden einen anderen Dateinamen haben, das muss dann entsprechend berücksichtigt werden.
Micro-SD beschreiben
Als nächstes muss die Zip-Datei entpackt werden, dann kann sie auf die Micro-SD-Karte geschrieben werden. Unter Windows geht das zum Beispiel mit dem Win32 Disk Imager. Wer das noch nie gemacht hat, der kann die Einzelheiten in meinem ausführlichen Artikel nachlesen.
Konfigurieren der Micro-SD
Für eine Headless-Installation ohne Monitor und Tastatur am Raspberry Pi, müssen wir der Micro-SD-Karte etwas an Konfiguration mitgeben – die WLAN-Zugangsdaten zum Beispiel. Dazu bleibt die Micro-SD-Karte im Windows (oder Linux) Rechner und wir legen in der Bootpartition der SD-Karte eine leere Datei mit dem Namen ssh
an. Damit wird der SSH-Dienst aktiviert.
Dann legen wir in der selben Partition eine zweite Datei mit dem Namen wpa_supplicant.conf
an, öffnen sie mit dem Editor unseres Vertrauens und tragen folgenden Text ein:
country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="WLAN SSID"
psk="WLAN Netzwerkschlüssel"
}
Bei SSID und PSK tragen wir die eigenen WLAN-Zugangsdaten ein. Mehr dazu gibt es auch in meinem ausführlichen Artikel. Damit ist das WLAN vorkonfiguriert und wir können die SD-Karte in den Raspberry Pi stecken und diesen mit Strom versorgen.
Grundkonfiguration des Raspberry Pi
Per SSH Kontakt zum Raspberry Pi aufnehmen
Windows-User verwenden als SSH-Client zum Beispiel Putty, Linuxuser rufen SSH auf der Commandline auf. Die Zugangsdaten bei einem jungfräulichen Raspbian lauten:
- Rechnername: raspberrypi
- Username: pi
- Passwort: raspberry
Vom Linuxrechner aus wäre das also
ssh pi@raspberrypi
Wenn es mit dem Rechnernamen nicht funktioniert, kann statt dessen auch die IP-Adresse des Raspberry Pi verwendet werden (Fritzbox befragen).
Grundeinstellungen mit raspi-config
Aufruf innerhalb der SSH-Session mit:
sudo raspi-config
Dann nehmen wir folgende Einstellungen vor:
- User Passwort ändern
- Hostname setzen
- Ländereinstellungen vornehmen (Tastatur, Zeichensatz und Zeitzone)
- Kamera enablen
Fragen dazu beantwortet der ausführliche Artikel. Danach ist ein Reboot fällig.
Software aktualisieren und installieren
Wieder per SSH mit dem Raspberry Pi verbunden, aktualisieren wir als nächstes die installierte Software und die Firmware:
sudo apt-get update
sudo apt-get dist-upgrade
Picamera ist das Python-Modul für den Zugriff auf die Kamera:
sudo apt-get install python3-picamera
Und MP4Box wird benötigt um die Videodateien auf MP4 zu bringen:
sudo apt-get install gpac
Auch dazu gibt es mehr im ausführlichen Artikel.
Verbindung zur Triggerkamera herstellen
Eine fremdgetriggerte Kamera ist abhängig vom Auslösesignal der „Haupt“-Kamera, um ein Video aufzuzeichnen. Dazu müssen wir dem Modell 200 die Möglichkeit geben, das Triggersignal von der Hauptkamera zu lesen. Zu diesem Thema gibt es einen umfangreichen Artikel, so dass ich hier nur kurz die einzelnen Schritte anspreche.
Public Key Schlüsselpaar erzeugen
Wir sind weiterhin per SSH mit dem Raspberry Pi Zero des Modell 200 verbunden und generieren nun ein Schlüsselpaar zur automatischen Anmeldung:
ssh-keygen -t rsa
Auf die Frage nach einer Passphrase drücken wir nur Enter.
Public Key zur Triggerkamera übertragen
Die Haupt- oder Triggerkamera muss nun noch den öffentlichen Schlüssel aus eben generiertem Schlüsselpaar erhalten. Das geht am einfachsten mit folgendem Kommando vom Raspberry Pi Zero aus:
cat ~/.ssh/id_rsa.pub | ssh pi@triggerkamera 'cat >> .ssh/authorized_keys'
Dabei muss das Wort triggerkamera
durch den Namen der Hauptkamera ersetzt werden. Daraufhin wird das Passwort der Hauptkamera abgefragt.
Python Programme installieren
Jetzt kommen die Python-Programme, die die gesamte Kameralogik abbilden. Die wurden bereits in anderen Artikeln besprochen, so dass ich hier nicht nochmal den ganzen Quelltext veröffentliche, sondern nur auf die entsprechenden Seiten verlinke. Alle Python-Programme kommen nach /home/pi/
.
recordremote.py
Das ist das Programm zur Erkennung des Triggersignals und zur Aufzeichnung der Videodaten.
postprocess.py
Dieses Programm steuert MP4Box an um aus den Videoaufzeichnungen ein fertiges MP4-Video zu erzeugen.
freedisk.py
Das ist ein optionales Dienstprogramm, das die SD-Karte auf Füllgrad überwacht und gegebenenfalls die ältesten Videoaufzeichnungen löscht
Automatischer Start der Programme und Reboot
Und nun sorgen wir dafür, dass die Programme beim Boot des Raspberry Pi automatisch starten und richten einen nächtlichen Reboot ein. Zu diesem Thema gibt es den ausführlichen Artikel Autostart und Überwachung.
recordremote.py
beim Bootvorgang automatisch starten.
Dazu editieren wir die Datei /etc/rc.local
mit:
sudo nano /etc/rc.local
und ergänzen vor dem abschließenden exit 0
folgende beiden Zeilen:
cd /home/pi
su pi -c 'python3 -u recordremote.py &> record.log &'
Nächtlicher Reboot und Speicherüberwachung
Beides starten wir über die Crontab für den User Root:
sudo crontab -e
Dort wird folgendes eingetragen:
0 0 * * * /sbin/reboot
*/5 * * * * /usr/bin/python3 /home/pi/freedisk.py
Fast fertig
An sich war es das schon, wir rebooten den RasPi und die Kamera kann ihren Betrieb aufnehmen. Die Programmausgaben finden wir im Homeverzeichnis des Users Pi in der Datei record.log
. Dort werden möglicherweise Timeout-Einträge verzeichnet und zwar immer dann, wenn das Triggerverzeichnis der Hauptkamera nicht innerhalb von 5 Sekunden ausgelesen werden kann. Wenn sonst alles funktioniert, brauchen uns die Timeouts aber nicht zu beunruhigen.
Falls bei der Videoaufzeichnung Frame Drops auftreten, also Sprünge im Filmablauf, weil Bilder oder ganze Sequenzen fehlen, dann können wir weiter optimieren.
Optional: Optimierungen gegen Frame Drops
Auch dazu gibt es ein umfangreiches Kapitel unter Optimierungen gegen Frame Drops.
Zuerst erhöhen wir den Speicheranteil für die GPU auf 384MB und zwar mit
sudo raspi-config
und tragen unter Advanced Options – Memory Split den Wert 384 ein.
Dann verkleinern wir den Disk Cache mit:
sudo nano /etc/sysctl.conf
Dort ergänzen wir folgende Zeilen:
vm.dirty_background_ratio = 2
vm.dirty_ratio = 20
vm.dirty_expire_centisecs = 300
vm.dirty_writeback_centisecs = 300
Und schließlich verringern wir die Qualität der Videoaufzeichnung in dem wir in recordremote.py
die beiden Zeilen:
stream = picamera.PiCameraCircularIO(camera, seconds=(secs_before+10))
camera.start_recording(stream, format='h264')
wie folgt ergänzen:
stream = picamera.PiCameraCircularIO(camera, seconds=(secs_before+10), bitrate=10000000)
camera.start_recording(stream, format='h264', bitrate=10000000)
Danach ist ein Reboot fällig.
Ganz fertig
Das waren alle Schritte um eine abhängige (fremdgetriggerte) Raspberry Video Camera softwareseitig komplett einzurichten. Beginnend mit dem Download des Betriebssystems über die Einrichtung aller Softwarebestandteile bis hin zu optionalen Optimierungsmaßnahmen. Dabei ist es egal, ob es sich um einen Raspberry Pi Zero W handelt oder um den großen Raspberry Pi 3.
Weitere Artikel in dieser Kategorie:
- Raspberry Video Camera – Teil 1: Oachkatzl-Cam
- Raspberry Video Camera – Teil 2: Komponenten & Konzepte
- Raspberry Video Camera – Teil 3: Raspberry Pi Kamera Modul V2.1
- Raspberry Video Camera – Teil 4: Aufnahmeauslöser
- Raspberry Video Camera – Teil 5: Passiver Infrarot Bewegungssensor
- Raspberry Video Camera – Teil 6: Stromversorgung
- Raspberry Video Camera – Teil 7: Spannungsregler 5V
- Raspberry Video Camera – Teil 8: Montage Modell 850
- Raspberry Video Camera – Teil 9: Montage Kamera Modul
- Raspberry Video Camera – Teil 10: SW Installation Betriebssystem und Module
- Raspberry Video Camera – Teil 11: SW Python für die Kamera
- Raspberry Video Camera – Teil 12: SW Trigger per Bewegungssensor
- Raspberry Video Camera – Teil 13: SW Autostart und Überwachung
- Raspberry Video Camera – Teil 14: SW Installation Computer Vision (OpenCV 3.2)
- Raspberry Video Camera – Teil 15: SW Einzelbilder exportieren für die Farberkennung
- Raspberry Video Camera – Teil 16: SW Trigger per Farberkennung
- Raspberry Video Camera – Teil 17: Exkurs – Wie Computer Farben sehen
- Raspberry Video Camera – Teil 18: SW Farbkalibrierung
- Raspberry Video Camera – Teil 19: SW Kombinationstrigger
- Raspberry Video Camera – Teil 20: Exkurs – Farbdarstellung per 2D-Histogramm
- Raspberry Video Camera – Teil 21: Konzept einer selbstlernenden Farberkennung
- Raspberry Video Camera – Teil 22: SW selbstlernende Farberkennung in Python
- Raspberry Video Camera – Teil 23: Verbesserung durch ROI und Aufnahmezeitbegrenzung
- Raspberry Video Camera – Teil 24: Anpassung von Programmparametern
- Raspberry Video Camera – Teil 25: Zweite Kamera
- Raspberry Video Camera – Teil 26: Optimierungen gegen Frame Drops
- Raspberry Video Camera – Teil 27: Was kostet der Spaß?
- Raspberry Video Camera – Teil 28: Kamera Modell 200 mit Raspberry Pi Zero
- Raspberry Video Camera – Teil 29: Stromversorgung für Kamera Modell 200
Hallo, ich finde deine Tutorialreihe schön aufgebaut. Ich werde sicher in nächster Zeit die Tutorials mit meinem rpi3 durch machen.
Hallo
gibt es mit der pi in der frischehaltebox keine termischen probleme ? vor allem im hochsommer
Danke
Das hatte ich zu Anfang auch befürchtet, aber überraschenderweise steckt der RasPi die Sommertemperaturen in der Box klaglos weg.
Prima dann kann ich das nachbaun teile hab ich fast alle da, mal sehen ob ich die zwei marder erwische die sich hier tummeln unterm scheunen dach
Hallo,
gibt es für das Projekt ein Image oder ein Link zu einem Download – Verzeichniß
für die Software?
Oder habe ich was übersehen in ihrer Ausführung?
Für Raspbian an sich gibt es natürlich ein Image, so wie im Artikel oben beschrieben. Der Rest sind Einstellungen und drei Pythonprogramme. Letztere sind verlinkt und der Quelltext braucht lediglich kopiert zu werden.
Super Tutorial und Beschreibung :-) Hatte mir den Bewegungsmelder für ein anderes Projekt bestellt, aber kaum Infos zu den Einstellungsmöglichkeiten gefunden. Danke für die hilfreichen Infos, die haben mir eine Menge Zeit erspart.
Ich habe das Modell 200 nachgebaut, aber als Software das motioneyeOS eingesetzt. Vielen Dank für das tolle Tutorial. Insbesondere finde ich die Idee für das Gehäuse phänomenal. Als nächstes werde ich mal versuchen, das ganze in einer 40 mm-Rohrmuffe einzubauen. Wenn man die Spannungsversorgung lötet, kann man auf den Micro-USB-Stecker verzichten und gewinnt Platz.
Hallo,
kann ich den Raspi auch so konfigurieren, dass ich ihn über usb an meinen Mac anschliesse und als Kamera z.B. in Zoom benutzen?
In dem Fall wäre es wohl viel einfacher, direkt eine USB-Kamera zu verwenden, dann spart man sich den ganzen RasPi. Warum Mac und Raspberry Pi nicht per WLAN verbinden, anstelle USB?
Hallo Herr Karger,
super Tutorial und Beschreibung :-)
Ich bin dabei so etwas für meine Vogelbeobachtung nachzubauen. Allerdings mit einer Netzwerkkamera.
Ich bin noch ein blutiger Anfänger in Python und bekomme es nicht hin die Programme für eine IP-Cam umzuschreiben. Den eigentlichen Stream und das speichern funktioniert schon gut. Nur an der Auslösung mit einem PIR komme ich nicht weiter. Vieleicht könnte ich mal einen Tip bekommen. In Google war meine Suche bisher erfolglos.
Schon mal vielen Dank
Andreas Wolpert
Schwierig ohne nähere Informationen. Was funktioniert denn nicht? Wird keine Bewegung vom Sensor erkannt oder schreibt das PIR-Programm keine Triggerdatei oder wertet das Videoprogramm die Triggerdatei nicht aus? Hier mehr zu motioninterrupt.py und wie Sie das testen können und hier geht es um den Sensor.
Hallo Helmut,
ich wollte mich bei Dir für die Inspiration und Dokumentation Deines Projektes bedanken.
Habe etwas ähnliches bei mir laufen (2x RaspiZero mit Motioneye) und deinen Blog gefunden, da mein Außengehäuse im Dezember nach einem Jahr undicht wurde und ich Ersatz suchte.
Jetzt habe ich mir das Gehäuse mit den 50er HT Rohr gebaut und bin super zufrieden.
Gleichzeitig überlege ich Deinen Softwareansatz zu übernehmen, da MotionEyeOS mit nicht genügend Freiraum gibt.
Vielen Dank und viele Grüße aus Obermenzing