Raspberry Pi Advanced: Unterschied zwischen den Versionen

Aus Hackerspace Ffm
Wechseln zu: Navigation, Suche
(Streaming mit geringer Latenz von der Raspberry Cam)
(Streaming mit geringer Latenz von der Raspberry Cam)
Zeile 63: Zeile 63:
 
* Netzwerklatenz spielt eine wichtige Rolle, WLAN-Adapter dauernd anpingen und zunächst Ping optimieren, teilweise war dieser schon gruselig selbst ohne Last. Abhilfe: Andere WLAN-Adapter und der Befehl <pre>sudo iwconfig wlan0 power off</pre> um den Stromsparmodus abzuschalten.
 
* Netzwerklatenz spielt eine wichtige Rolle, WLAN-Adapter dauernd anpingen und zunächst Ping optimieren, teilweise war dieser schon gruselig selbst ohne Last. Abhilfe: Andere WLAN-Adapter und der Befehl <pre>sudo iwconfig wlan0 power off</pre> um den Stromsparmodus abzuschalten.
 
* Streaming geht am schnellsten, wenn natürlich möglichst wenig umcodiert wird, raspicam liefert aber H264, das ist oft nicht so kompatibel, Streaming im Browser mag eher MJPG. Mit mjpg-streamer und einem Phyton Skript geht es flott http://petrkout.com/electronics/low-latency-0-4-s-video-streaming-from-raspberry-pi-mjpeg-streamer-opencv/ - das bringt auch ein Webinterface mit, aber hier musste ich die Qualität herunter stellen, damit auch die Latenz besser wurde (trotz lokalem Netz, wo es klemmt ist mir noch nicht klar): <pre>./mjpg_streamer -o "output_http.so -w ./www" -i "input_raspicam.so -x 640 -y 480 -fps 10 -q 8"</pre>. Mehr als 10fps waren kontraproduktiv, -q 8 gibt schon deutlich schlechtere Qualität, aber es läuft dann auch im Browser. Ausserhalb vom Browser ging weit mehr Rate und Qualität.
 
* Streaming geht am schnellsten, wenn natürlich möglichst wenig umcodiert wird, raspicam liefert aber H264, das ist oft nicht so kompatibel, Streaming im Browser mag eher MJPG. Mit mjpg-streamer und einem Phyton Skript geht es flott http://petrkout.com/electronics/low-latency-0-4-s-video-streaming-from-raspberry-pi-mjpeg-streamer-opencv/ - das bringt auch ein Webinterface mit, aber hier musste ich die Qualität herunter stellen, damit auch die Latenz besser wurde (trotz lokalem Netz, wo es klemmt ist mir noch nicht klar): <pre>./mjpg_streamer -o "output_http.so -w ./www" -i "input_raspicam.so -x 640 -y 480 -fps 10 -q 8"</pre>. Mehr als 10fps waren kontraproduktiv, -q 8 gibt schon deutlich schlechtere Qualität, aber es läuft dann auch im Browser. Ausserhalb vom Browser ging weit mehr Rate und Qualität.
* Direkt wegschaufeln von H264 über netcat, dann empfangen mit <pre>nc\nc.exe 192.168.1.76 5001  | mplayer\mplayer.exe -fps 30 -demuxer h264es -</pre>
+
* Direkt wegschaufeln von H264 über netcat <pre>raspivid -hf -w 1280 -h 1024 -t 999999999 -fps 20 -b 5000000 -o - | nc -l  -p 5001</pre>, dann empfangen mit <pre>nc\nc.exe 192.168.1.76 5001  | mplayer\mplayer.exe -fps 30 -demuxer h264es -</pre>
 
* WLAN auf geringere codierung festnageln (b statt g oder n)
 
* WLAN auf geringere codierung festnageln (b statt g oder n)
  
 
== Hackerspace Raspberry ==
 
== Hackerspace Raspberry ==
 
Ein Raspberry ist nun im Hackerspace installiert. Er dient zunächst als Samba-Fileaustausch-Server, erreichbar ist er unter der internen IP 192.168.178.122. Es können auch Nutzeraccounts eingerichtet werden für Mitglieder des Hackerspaces, die auch aus dem Internet zu erreichen sind. Der Raspberry ist zum spielen (aber nicht kaputt-spielen!) freigegeben, Nutzer können daher auch recht schnell sudo-Rechte bekommen. Octoprint wurde weitgehend installiert (Phyton-Serial muss vermutlich noch auf 250kBaud gepatcht werden, Autostart für Octoprint fehlt auch noch, Kamera ist auch noch nicht installiert).
 
Ein Raspberry ist nun im Hackerspace installiert. Er dient zunächst als Samba-Fileaustausch-Server, erreichbar ist er unter der internen IP 192.168.178.122. Es können auch Nutzeraccounts eingerichtet werden für Mitglieder des Hackerspaces, die auch aus dem Internet zu erreichen sind. Der Raspberry ist zum spielen (aber nicht kaputt-spielen!) freigegeben, Nutzer können daher auch recht schnell sudo-Rechte bekommen. Octoprint wurde weitgehend installiert (Phyton-Serial muss vermutlich noch auf 250kBaud gepatcht werden, Autostart für Octoprint fehlt auch noch, Kamera ist auch noch nicht installiert).

Version vom 26. Dezember 2014, 02:13 Uhr

Hier einige Notizen zu erweiterten Raspberry Themen.

GPIO Zugriffe

Der Raspberry verfügt über einen IO-Connector, der digitale Ein- und Ausgänge mit 3.3V Pegeln bereitstellt. Bestimmte Pinne können dabei auch als serielle, SPI oder I2C Schnittstelle verwendet werden. Auch PWM-Ausgänge stehen zur Verfügung. Was es beim Raspberry nicht gibt, sind analoge Eingänge.

Für den Zugriff auf die seriellen Schnittstellen können Kerneltreiber verwendet und angesprochen werden, was den Vorteil hat, das dies auch ohne Root-Rechte klappt. Aber auch ohne den Kernel können die GPIO-Pinne und Schnittstellen angesprochen werden - dann muss aber die Anwendung immer als root laufen.

Eine gute Anlaufstelle für den Zugriff auf die IO-Pinne findet sich hier.

WiringPi Library

Ich empfehle die Verwendung der wiringPi library, die nach der Installation auch den Shell-Befehl gpio mitbringt, mit der schon sehr viel gemacht werden kann, auch aus Skripten heraus. Etwas konfus ist, dass diese Library verschiedene Pinnummerierungen unterstützt, hier muss also aufgepasst werden.

Die Installation dieser Library ist hier beschrieben, in Kurzform muss das hier gemacht werden (dazu sollte man sich im Home-Verzeichniss befinden):

sudo apt-get install git-core
git clone git://git.drogon.net/wiringPi
cd wiringPi
git pull origin
./build

Ausprobieren kann man die Lib dann hiermit:

gpio -v
gpio readall

WiringPi Library unter Python

Installieren mit
sudo apt-get install python-dev python-pip
sudo pip install wiringpi2
um damit eine LED via PWM an GPIO 18 zu dimmen:
#!/usr/bin/python

import wiringpi2 as gpio
import time

#set up gpio
gpio.wiringpiPiSetupGpio ()
gpio.pinMode (18,2)

while True:
  gpio.pwmWrite (18,0)
  for n in range (0,1024):
  gpio.pwmWrite (18,n)
  time.sleep (0.01)

Weitere Nutzer einrichten

Weitere Benutzer können per
sudo adduser NAME
hinzugefügt werden. Soll dieser auch sudo/admin-Rechte bekommen, danach noch das hier hinterher werfen:
sudo adduser NAME adm
sudo adduser NAME sudo

Um den Login ohne Passworteingabe zu ermöglichen, muss der Public-Key (generiert z.B. unter Windows mit puttygen via copy'n'paste) in die Datei .ssh/authorized_keys im jeweiligen Home-Verzeichnis hinzugefügt werden.

Streaming mit geringer Latenz von der Raspberry Cam

Learnings:

  • Netzwerklatenz spielt eine wichtige Rolle, WLAN-Adapter dauernd anpingen und zunächst Ping optimieren, teilweise war dieser schon gruselig selbst ohne Last. Abhilfe: Andere WLAN-Adapter und der Befehl
    sudo iwconfig wlan0 power off
    um den Stromsparmodus abzuschalten.
  • Streaming geht am schnellsten, wenn natürlich möglichst wenig umcodiert wird, raspicam liefert aber H264, das ist oft nicht so kompatibel, Streaming im Browser mag eher MJPG. Mit mjpg-streamer und einem Phyton Skript geht es flott http://petrkout.com/electronics/low-latency-0-4-s-video-streaming-from-raspberry-pi-mjpeg-streamer-opencv/ - das bringt auch ein Webinterface mit, aber hier musste ich die Qualität herunter stellen, damit auch die Latenz besser wurde (trotz lokalem Netz, wo es klemmt ist mir noch nicht klar):
    ./mjpg_streamer -o "output_http.so -w ./www" -i "input_raspicam.so -x 640 -y 480 -fps 10 -q 8"
    . Mehr als 10fps waren kontraproduktiv, -q 8 gibt schon deutlich schlechtere Qualität, aber es läuft dann auch im Browser. Ausserhalb vom Browser ging weit mehr Rate und Qualität.
  • Direkt wegschaufeln von H264 über netcat
    raspivid -hf -w 1280 -h 1024 -t 999999999 -fps 20 -b 5000000 -o - | nc -l  -p 5001
    , dann empfangen mit
    nc\nc.exe 192.168.1.76 5001  | mplayer\mplayer.exe -fps 30 -demuxer h264es -
  • WLAN auf geringere codierung festnageln (b statt g oder n)

Hackerspace Raspberry

Ein Raspberry ist nun im Hackerspace installiert. Er dient zunächst als Samba-Fileaustausch-Server, erreichbar ist er unter der internen IP 192.168.178.122. Es können auch Nutzeraccounts eingerichtet werden für Mitglieder des Hackerspaces, die auch aus dem Internet zu erreichen sind. Der Raspberry ist zum spielen (aber nicht kaputt-spielen!) freigegeben, Nutzer können daher auch recht schnell sudo-Rechte bekommen. Octoprint wurde weitgehend installiert (Phyton-Serial muss vermutlich noch auf 250kBaud gepatcht werden, Autostart für Octoprint fehlt auch noch, Kamera ist auch noch nicht installiert).