Raspberry Pi

Aus Debacher-Wiki
Wechseln zu: Navigation, Suche

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.

Raspberry-1.png

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.



Weitere Programme

  • [Pi Vision], eine Programm um die Kamera lokal zu kontrollieren
  • [RaspiCam] ein Adroid App, die auf den Raspberry und seine Kamera zugreift