Raspberry Pi
Rechtzeitig für die Weihnachtsferien habe ich mir einen Raspberry Pi geleistet. Das Gerät ist klein, leise und preiswert. Für etwa 100 Euro bekommt man folgende Komponenten:
- Rechner (39,95€)
- Gehäuse (6,99€)
- Netzteil (6,49€)
- Kameramodul (29,95€)
- Edimax WLAN-Stick (7,80€)
- Speicherkarte 8GB (8,83€)
- Monitorkabel, entweder HDMI auf HDMI oder HDMI auf DVI (ca. 8€)
Ich habe mir das Standard-Image (Raspbian Wheezy: 2014-12-24-wheezy-raspbian.zip) besorgt, entpackt und mittels dd auf die 8GB Speicherkarte kopiert (absolutes Minimum sind 4GB). Ich bin dabei nach der Anleitung unter http://www.chip.de/downloads/Raspbian-wheezy-fuer-Raspberry-Pi_56691903.html bzw. http://www.datenreise.de/raspberry-pi-inbetriebnahme-howto/ vorgegangen.
Originalquelle für die Software ist http://downloads.raspberrypi.org/raspbian_latest
Zum dd noch eine kleine Ergänzung. Ziel ist nicht die Partition auf der Speicherkarte, sondern die Karte als Ganzes. Bei mir wurde beim Einlegen der Speicherkarte ein Gerät unter /dev/sdd erkannt. Dann also:
umount /dev/sdd1 dd if=2014-12-24-wheezy-raspbian.img of=/dev/sdd bs=1M
Die Karte in den Pi eingelegt und mich gemäß Anleitung durch das Konfigurationsscript gehangelt, welches beim ersten Boot gestartet wird. Dabei habe ich eingestellt, dass der Pi in die grafische Oberfläche starten soll. Wichtig war mir auch den ssh-Server zu aktivieren. Natürlich habe ich auch die Kamera in dem Menü aktiviert.
Das Konfigurationstool kann man auch später über
sudo raspi-config
jederzeit erneut aufrufen.
Auf der kleinen Kiste habe ich dann in der Konsole folgende Pakete nachinstalliert:
- apt-get install iceweasel (nur für den Fall, dass ich den Firefox mal benutzen möchte)
- apt-get install joe
- apt-get install synaptic
- apt-get install xrdp
- apt-get install unclutter
Wichtig dabei sind mir der Editor joe und der xrdp-Server über den ich dann mit jedem RDP-Client von anderen Rechnern aus auf die grafische Oberfläche des Pi zugreifen kann.
Damit hat man ein sofort lauffähiges System. Etwas Arbeit hat man nur mit den zusätzlichen Komponenten.
Edimax WLAN-Stick
Das kleine Gerät ist recht unproblematisch. Man muss nichts weiter tun, um es zu aktivieren. Sowie es eingesteckt ist verfügt der Rechner über ein zusätzliches Netwerkdevice wlan0. Dieses Device muss nun natürlich auf die Netzwerkeinstellungen hin konfiguriert werden.
Dazu gibt es zwei Möglichkeiten: 1. Systemweit über die Datei /etc/network/interfaces 2. In der grafischen Oberfläche für den Benutzer pi
WLAN Systemweit
Für die Konfiguration muss man mit seinem Lieblingseditor die Datei /etc/network/interfaces erweitern:
auto lo iface lo inet loopback iface eth0 inet dhcp auto wlan0 allow-hotplug wlan0 iface wlan0 inet dhcp wpa-ap-scan 1 wpa-scan-ssid 1 wpa-ssid "<wlan-ssid>" wpa-psk "<wlan-schlüssel>"
Die ersten drei Zeilen für das kabelgebundene Netzwerk sollten bereits vorhanden sein, es muss nur der zweite Teil ergänzt werden. Anschließend muss man natürlich das Netzwerk neu starten.
service networking restart
Will man mehrere WLAN-Netzwerke konfigurieren können, so greift man besser zu WPA-Supplicant
auto lo iface lo inet loopback iface eth0 inet dhcp allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp
und konfiguriert die eigentlichen Netzwerke dann in der Datei etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="MeinNetz" psk="sehrgeheim" proto=RSN key_mgmt=WPA-PSK pairwise=CCMP auth_alg=OPEN disabled=0 } network={ ssid="ENTERPRISE" proto=RSN key_mgmt=WPA-EAP pairwise=CCMP auth_alg=OPEN eap=MD5 identity="benutzer" password="passwort" }
Es ist also auch eine Radius-Authentifizierung möglich.
WLAN für pi
Auf dem Desktop findet sich das Icon für WiFi Config, mit einem Doppelklick lässt sich das Tool starten.
Hier lässt man die Netzwerke scannen und verbindet dann mit einem der gefundenen Netze, dabei wird dann auch das Kennwort abgefragt. Das war es dann auch schon. Nun noch die Einstellungen speichern, der entsprechende Menüpunkt findet sich unter File, und schon ist das WLAN einsatzbereit.
Das Kamera-Modul
Das Kamera-Modul kommt mit einem dünnen Flachbandkabel, welches genau in den zugehörigen Steckplatz auf der Platine passt. Es gibt zwei derartige Steckplätze, richtig ist der direkt neben dem Gehäuse für den LAN-Anschluss. Hier muss man das schwarze Kunststoffteil mit zwei Fingernägeln fassen und leicht hochziehen. Dann kann man das Kabel, mit der Kontaktseite vom Netzwerkanschluss weg, in den Steckplatz einführen und drückt dann zu Arretierung das schwarze Plastikteil wieder herunter.
Was sofort funktioniert ist das lokale Aufnehmen von Bildern, z.B. mittels:
raspistill -o /tmp/test.jpg
Was ich aber unbedingt haben wollte ist ein Videostream ins Netz, der auf einem beliebigen Browser zu betrachten ist. Da scheint es eine Reihe von Problemen zu geben, zumindest legen das die vielen verzweifelten Posts nahe. Man sollten bei allen Texten zur Kamera darauf achten, dass man möglichst Texte aus dem Jahr 2014 benutzt, da in dieser Zeit viel an Anpassungen vorgenommen wurde.
Kernel-Modul bcm2835-v4l2
Es gibt jetzt auch ein Kernel-Modul für die Kamera http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=62364&start=75#p467475 . Man muss nur das gesamte System aktualisieren und v4l-utils installieren.
sudo apt-get update sudo apt-get upgrade sudo apt-get install v4l-utils
Dann steht das Modul bcm2835-v4l2 zur Verfügung.
sudo modprobe bcm2835-v4l2
Nach dem Post http://www.raspberrypi.org/phpBB3/viewtopic.php?f=43&t=62364&start=50#p464153 sollte man aber vorher einmal auf raspistill zugreifen, damit die Kamera richtig initialisiert wird.
raspistill -o test.jpg
Ansonsten kann das System hängen bleiben.
Das Modul erzeugt ein /dev/video, so dass die meisten üblichen Programme damit arbeiten können sollten.
motion
Motion ist eine Software, mit deren Hilfe man einen Rechner mit (USB-)Kamera zu einer Art Alarmanlage machen kann http://www.lavrsen.dk/foswiki/bin/view/Motion/WebHome. Die Software ist in den Repositories enthalten, diese Version arbeitet aber nicht ordentlich mit der PiCam zusammen. Bei mir kam es immer nach wenigen Minuten dazu, dass der Videostream immer dunkler wurde, bis nichts mehr zu erkennen war und auch keine Bilder mehr aufgenommen wurden.
Ich bin etwas nach der Anleitung unter http://www.maketecheasier.com/raspberry-pi-as-surveillance-camera/ bzw. http://rbnrpi.wordpress.com/project-list/setting-up-wireless-motion-detect-cam/ vorgegangen, um eine angepasste Version von Motion zu installieren.
Zuerst noch ein paar Module installiert, zumindest ohne libjpeg62 startet das angepasste Modul nicht.
sudo apt-get install -y libjpeg62 libjpeg62-dev libavformat53 libavformat-dev libavcodec53 libavcodec-dev libavutil51 libavutil-dev libc6-dev zlib1g-dev libmysqlclient18 libmysqlclient-dev libpq5 libpq-dev
Dann das angepasste Paket mittels
wget https://www.dropbox.com/s/xdfcxm5hu71s97d/motion-mmal.tar.gz
herunterladen und entpacken.
Das Archiv beinhaltet zwei Dateien
motion motion-mmalcam.conf
Die erste Datei ist das ausführbare Programm und die zweite Datei eine passende Konfigurationsdatei. Ich habe diese Datei in mmotion-mmalcam.conf umbenannt und nach /usr/local/bin verschoben
mv motion motion-mmal mv motion-mmal /usr/local/bin/
Dann habe ich für den Benutzer motion, der mit dem normalen Paket angelegt wird, ein Homeverzeichnis angelegt und die Konfigurationsdatei hineingelegt.
mkdir /home/motion mv motion-mmalcam.conf /home/motion/ chown -R motion.motion /home/motion
In dieser Konfigurationsdatei habe ich dann die Pfade auf das neue Homeverzeichnis eingestellt:
process_id_file /home/motion/motion.pid logfile /home/motion/motion.log target_dir /home/motion
und zusätzlich folgende Änderungen vorgenommen
# Start in daemon (background) mode and release terminal (default: off) daemon on # Restrict control connections to localhost only (default: on) webcontrol_localhost off
Dann habe ich mir noch ein kleines Startscript erstellt, welches das Modul lädt (s.o.) und dann motion als Benutzer motion startet.
#!/usr/bin/sh /usr/bin/raspistill -o /tmp/test.png /sbin/modprobe bcm2835-v4l2 /usr/bin/sudo -u motion /usr/local/bin/motion-mmal -c /home/motion/motion-mmalcam.conf
Danach hat man dann auf Port 8081 einen Videostream und auf Port 8080 die Konfigurationseinstellungen.
Die restlichen Texte sind vermutlich nicht mehr notwendig
mjpg-streamer
Erfolg hatte ich dann mit dem mjpg-streamer und der Anleitung von http://www.forum-raspberrypi.de/Thread-tutorial-bewegungserkennung-mit-dem-raspberry-camera-modul-und-motion .
cd ~ git clone https://github.com/jacksonliam/mjpg-streamer.git cd mjpg-streamer/mjpg-streamer-experimental/
dort habe ich laut Beschreibung das Makefile angepasst:
# In der nun folgenden Zeile die # entfernen vor dem Wort PLUGINS #PLUGINS += input_file.so
und dann kompiliert:
make
normalerweise würde jetzt make install folgen, aber dann wäre diese Software nicht mit in der Paketverwaltung. Ich habe mir also das Paket checkinstall installiert (weitere Hinweise zur Nutzung des Programmes finden sich unter http://wiki.ubuntuusers.de/Programme_kompilieren ) und dann stattdessen aufgerufen
sudo checkinstall --install=no
Als Ergebnis habe ich dann ein Debian-Archiv erhalten, welches ich über die Paketverwaltung installiert habe und auch jederzeit wieder deinstallieren kann.
sudo dpkg -i mjpg-streamer_2013.12.20.01-1_armhf.deb
Dann noch zwei Ergänzungen
sudo mkdir /usr/www sudo chmod 777 /usr/www
Dann konnte ich das Script start_mjpg_streamer.sh von der Seite einrichten:
#!/bin/bash export LD_LIBRARY_PATH="/usr/local/lib" mjpg_streamer -i "input_raspicam.so -fps 1 -ex night -x 1024 -y 768" -o "output_http.so -p 8082 -w /usr/www" exit 0
In der Vorlage war leider ein falscher Pfad für LD_LIBRARY_PATH angegeben, zum Glück konnte ich einfach in der Paketverwaltung nachschauen, wohin das Modul input_raspicam.so installiert wurde, welches hier benötigt wird.
UV4L
Momentan finde ich die Software Userspace Video4Linux sehr vielversprechend, da die ein Modul für die Kamera vom Pi erstellt haben. Die Dokumentation für dieses Projekt ist nachvollziehbar und die Installation sehr einfach (http://www.linux-projects.org/modules/sections/index.php?op=viewarticle&artid=14). Man muss nichts compilieren, sondern nur ein Repository zur Paketverwaltung hinzufügen.
Zuerst holt man sich die Keys
wget http://www.linux-projects.org/listing/uv4l_repo/lrkey.asc && sudo apt-key add ./lrkey.asc
Dann ergänzt man die Datei /etc/apt/sources.list um folgende Zeile
deb http://www.linux-projects.org/listing/uv4l_repo/raspbian/ wheezy main
Danach kann man die Paketverwaltung aktualisieren:
sudo apt-get update
und dann die Pakete installieren:
sudo apt-get install uv4l uv4l-raspicam
In dem Artikel unter http://www.linux-projects.org/modules/sections/index.php?op=viewarticle&artid=16 finden sich dann unfangreiche Hinweise zur Nutzung der Software.