Veröffentlicht am Schreib einen Kommentar

Xstroke Gestenerkennung auf einem Pi mit Touchscreen

Heute möchte ich gern diese Anleitung zur Installation von Xstroke mit Euch teilen. Mit Xstroke können Sie ohne Tastatur mittels Touchscreen in den Anwendungen auf Raspberry Pi schreiben. Man kann Befehle im Terminal ausführen oder Texte verfassen. Wobei das letzte ziemlich viel Zeit in Anspruch nehmen kann ;). Diese tolle Anleitung habe ich übrigens bei Mark Williams (Ozzmaker) gefunden.

Die Anleitung habe ich auf allen bei braspi erhältlichen Touchscreens ausprobiert und es hat wunderbar geklappt. Bitte beachten Sie, dass bei den kapazitiven Touchscreens mit dem Finger geschrieben wird und auf resistiven mit den mitgelieferten Eingabestiften. Verwenden Sie bitte keine spitzen Gegenstände, diese können den Touchscreen zerkratzen und unbrauchbar machen.

Xstroke installieren

Die Installation von Xstroke ist ganz einfach. Sie brauchen nur ein paar Abhängigkeiten zu installieren, Xstroke herunterladen und kompilieren.

Legen wir los: 

Mit diesem Befehl installieren wir die für das Kompilieren notwendigen Komponenten: 

sudo aptget y install buildessential libxftdev libxpmdev libxtstdev

Jetzt wird das Xstroke Archiv heruntergeladen… 
wget http://mirror.egtvedt.no/avr32linux.org/twiki/pub/Main/XStroke/xstroke-0.6.tar.gz
… und entpackt
tar xfv xstroke-0.6.tar.gz
Dann wechseln wir in das entpackte Verzeichnis:
cd xstroke-0.6/
und lassen das Configure-Befehl laufen:
./configure

Mit dem folgenden Befehl nehmen wir ein paar Anpassungen am Makefile vor, sonst wird das Kompilieren nicht gelingen: 

sed -i ‘/^X_LIBS = / s/$/ -lXrender -lX11 -lXext -ldl/’ Makefile

Anschließend wird der make-Befehl ausgeführt:

make

und die Software installiert:

sudo make install

Wenn die Installation erfolgreich verlief, ist Xcode nun installiert. Sollten Sie Fehler angezeigt bekommen, prüfen Sie bitte, ob alle oben angegebenen Abhängigkeiten installiert wurden. 

Menüverknüpfungen

Nun installieren wir ein paar Menüverknüpfungen, damit das Programm schnell gestartet und gestoppt werden kann. 

Dafür laden wir diese Menüeinträge erstmal von ozzmaker.com herunter:

wget http://www.ozzmaker.com/piscreen/xstrokekill.desktop
wget http://www.ozzmaker.com/piscreen/xstroke.desktop

und kopieren sie in das entsprechende Verzeichnis:

sudo cp xstrokekill.desktop xstroke.desktop /usr/share/applications/

Führen Sie anschließend noch einen Neustart durch:

sudo reboot

Nun haben Sie unter Menu -> Accessories zwei neue Einträge:

Xstroke 
Xstroke Kill

Hier noch die Tabelle mit den Gesten, die Xstroke erkennt:

(Das Bild ist von: lady ada)

Das war’s, nun können Sie mit dem mitgelieferten Eingabestift mittels Gesten im Terminal oder in einem Editor arbeiten. 

Viel Spaß!

P.S. Hier ist ein Demo mit Xstroke auf dem 3,5″ Touchscreen im Acryl-Gehäuse:

Veröffentlicht am Schreib einen Kommentar

Einrichtung und Kalibrierung des 3,5″ Displays aus dem Set Acryl-Gehäuse mit Touchscreen

In diesem Beitrag geht es um die Einrichtung und Konfiguration des Touchscreens, der dem Set Acryl-Gehäuse mit Touchscreen beiliegt. Um den Touchscreen (Anzeige und Touch-Funktion) nutzen zu können, muss man vorher den richtigen Treiber installieren und eine Kalibrierung des Touchscreens durchführen. Um diese zwei Punkte geht es weiter unten.

BITTE BEACHTEN SIE: Die Installation und die Einrichtung des Touchscreens geschieht auf eigene Gefahr. Es wird empfohlen einen Systemabbild Ihres System einzurichten, bevor Sie fortfahren. Oder verwenden Sie hierfür ein Testsystem auf einer separaten microSD-Karte.

ACHTUNG: Die Einrichtung des Touchscreen-Treibers mit NOOBS und Berryboot funktioniert derzeit nicht! Wenn Sie es trotzdem versuchen, kann Ihr System unbrauchbar werden.

ALLE IM FOLGENDEN BESCHRIEBENEN SCHRITTE WERDEN IM TERMINAL AUSGEFÜHRT

1. Die Installation des Treibers

a) Als erstes schalten Sie bitte den Anzeigemodus Ihres Raspberry Pi auf die Display-Anzeige um: 

sudo raspi-config

Treffen Sie die folgende Auswahl: 

  • Boot Option -> Desktop / CLI -> Desktop Autologin (kann unterschiedlich heißen, je nach Version von Raspbian)

b) Nach dem Reboot, wechseln Sie in das home-Verzeichnis:

cd ~

Bitte laden Sie nun den aktuellen Treiber herunter:

wget http://www.waveshare.com/w/upload/0/00/LCD-show-170703.tar.gz

Falls Sie keine Netwerkverbindung am Raspberry Pi haben, laden Sie sich den unteren Treiber auf einen USB-Speicher und schließen Sie diesen an den Pi. Nun kopieren Sie den tar-Archiv in Ihr home-Verzeichnis

cp …/LCD-show-170703.tar.gz ~

Wechseln Sie in Ihr home-Verzeichnis

cd ~

und entpacken Sie den Archiv: 

tar -xvf LCD-show-*.tar.gz

Wechseln Sie anschließend in das entpackte Verzeichnis:

cd LCD-*

Nun wird der Treiber installiert. Bitte beachten Sie: Für diesen Schritt ist die Netzwerkverbindung zwingend notwendig, denn sonst können die notwendigen Pakete nicht geladen werden.

Machen Sie den Treiber ausführbar:

chmod +x LCD35-show

und führen Sie diesen aus:

./LCD35-show

c) Das System startet nun selbst neu und danach sollte der Touchscreen funktionieren.

2. Die Kalibrierung des Touchscreens

a) Für die Kalibrierung wird das Programm xinput_calibrator verwendet. Bitte installieren Sie das Programm mit diesem Befehl:

sudo apt-get install -y xinput-calibrator

b) Für diesen Schritt brauchen Sie eine Tastatur. Denn die Benutzung des Touchscreens ist auf dieser Etappe noch nicht fehlerfrei möglich. Also, schließen Sie die Tastatur an Ihr Raspberry und rufen Sie das Menü:

Menu -> Preferences -> Calibrate Touchscreen

Anschließend erscheinen auf dem Bildschirm nach einander die gekreuzten Punkte, die Sie der Reihe nach antippen sollten (Bitte verwenden Sie hierfür den mitgelieferten Stift). Die Kalibrierung ist nach dem vierten Punkt abgeschlossen.

Jetzt erscheinen in einem Terminal-Fenster die neuen Kalibrierungs-Angaben. (Bitte merken Sie sich diese, wir brauchen Sie für den nächsten Schritt. Ich habe hiervon einfach ein Foto mit meinem Smartphone gemacht.)

Doing dynamic recalibration: 
Setting new calibration data: 3919, 208, 236, 3913

Diese Angaben werden in die entsprechende Konfigurationsdatei eingetragen. Geben Sie hierfür den Befehl ein:

sudo nano /etc/X11/xorg.conf.d/99-calibration.conf

Es werden nun die alten Kalibrierungs-Angaben angezeigt: 


Section "InputClass"
Identifier	"calibration"
MatchProduct	"ADS7846 Touchscreen"
Option	"Calibration"	"160 3723 3896 181"
Option	"SwapAxes"	"1"
EndSection

Ersetzen Sie nun die alten Angaben durch die neuen, die Sie vorhin angezeigt bekommen haben: 

Section "InputClass"
Identifier	"calibration"
MatchProduct	"ADS7846 Touchscreen"
Option	"Calibration"	"3919 208 236 3913"
Option	"SwapAxes"	"1"
EndSection

Speichern Sie nun Ihre Angaben mit Strg+X und wählen Sie Y zum Speichern der Änderungen.

c) Nach dem Neustart, wird die neue Kalibrierung aktiviert. Führen Sie für den Neustart den folgenden Befehl aus:

sudo reboot

Bemerkung: Sollte der Touchscreen immer noch nicht wie gewünscht funktionieren, führen Sie die Kalibrierung erneut durch.

Veröffentlicht am Schreib einen Kommentar

Anschließen und Betreiben einer Raspberry Pi Kamera

Eine Raspberry Pi Kamera ist eine tolle Sache und lässt neue Möglichkeiten zu. Man kann die Kamera unter anderem zur Bewegungserkennung oder Überwachung Ihrer Räume einsetzen. In diesem Tutorial zeige ich, wie man eine Raspberry Pi Kamera einrichtet, damit Fotos und Videos macht und einen Video-Stream über das Netzwerk von einem anderen System abrufen kann. 

Die Raspberry Pi Kamera hat einen festen Fokus und liefert eine Auflösung von 5 Megapixel. Videos können in 1080p, 720p oder 640×480 mit maximal 30 Bildern pro Sekunde aufgenommen werden. Die Fotos haben eine maximale Auflösung von 2592 × 1944 Pixel. 

Raspberry Pi Kamera einrichten

Der Anschluss für die Kamera befindet sich bei allen Modellen hinter dem Ethernet Anschluss und wird CSI genannt (bei den Zero-Modellen ist die Schnittstelle gegenüber dem MicroSD-Slot angebracht). Trennen Sie den Raspberry Pi vom Strom. Heben Sie die Verschluss-klemme des CSI-Moduls etwas an und stecken Sie das Kabel hinein (achten Sie darauf, dass die blanken Pins in die gegenüberliegende Richtung bezüglich der Klemme zeigen), zum Befestigen drücken Sie die Klemme einfach wieder etwas zurück. 

raspi-csi

Starten Sie den Raspberry Pi und stellen Sie die Verbindung mit dem Pi via SSH oder mittels Tastatur und Monitor. Melden Sie sich mit pi (oder Ihren eigenen Benutzernamen) und raspberry (oder das von Ihnen bestimmte Passwort) an. Führen Sie das folgende Kommando zum Aktualisieren des Systems aus:

 

sudo apt-get -y update && sudo apt-get -y upgrade

sudo rpi-update

Starten Sie anschließend das Konfigurations-Tool raspi-config, um die Kamera zu aktivieren.

Navigieren Sie hierfür zu dem Punkt 5 “Enable Camera” und aktivieren Sie die Schnittstelle.

raspi-config

Damit ist die Einrichtung abgeschlossen. Starten Sie jetzt den Pi neu.

Fotos mit der RasPi Cam aufnehmen

Für die Aufnahme von Fotos mit dem Raspberry Pi kann man das in Raspbian bereits vorinstallierte Tool raspistill verwenden. Die Software bietet eine Vielzahl von Optionen. Wenn man sich in der grafischen Raspbian-Umgebung befindet, wird sogar ein Vorschau-Fenster eingeblendet.

Zum Testen der Kamera-Funktion können Sie ein Testbild mit den Optionen -o (Festlegen des Dateinamens) und -v (Verbose Ausgabe) machen.

 

raspistill -v -o test.jpg

Nun wird im aktuellen Verzeichnis ein test.jpg abgelegt. Falls etwas nicht geklappt hat, wird das Programm mittels der -v Option einen Fehler ausgeben (z.B. wenn die Kamera nicht via raspi-config aktiviert wurde o.ä.).

Fotos im Jpeg-Format aufnehmen

 

raspistill -o test.jpg

Fotos im  PNG-Format aufnehmen

Mit dem Parameter -e können verschiedene Formate wie jpg, bmp, gif und png erzeugt werden.

 

raspistill -o test.png –e png

Aufnahme von Fotos ohne Vorschau-Fenster (-n)

 

raspistill -o test.jpg -n

Aufnahme auf Tastendruck (Enter)
Wenn man test.jpg durch test%02d.jpg ersetzt, wird bei jedem Tastendruck ein neues Foto mit dem Dateinamen test01.jpg, test02.jpg usw. erstellt. Die Serie kann mit STRG+C unterbrochen werden.

 

raspistill -t 0 -k -o test%02d.jpg

Zeitverzögertes Foto (3 Sekunden), die Angabe erfolgt in Millisekunden 

 

raspistill -o test.jpg -t 3000

Aufnahme von Fotos mit anderer Auflösung (640×480), die Parameter w und h geben die Weite und die Höhe in Pixeln an

 

raspistill -o test.jpg -w 640 -h 480

Fotos mit reduzierter Qualität aufnehmen (-q)
Dadurch kann Speicherplatz eingespart werden, es sind Werte von 0 bis 100 möglich.

 

raspistill -o image.jpg -q 20

 Raspberry Pi Kamera LED abschalten

Wenn Sie durch die rote Aufnahme-LED gestört werden, können Sie diese ausschalten. Dazu ist ein neuer Eintrag in der Datei /boot/config.txt mit anschließendem Neustart notwendig. Tragen Sie hierzu einfach die folgende Zeile in eure config.txt in einem beliebigen Editor ein.

 

disable_camera_led=1

Raspberry Pi Kamera über das Netzwerk Streamen

Um das Video von der Kamera in einem Web-Browser betrachten zu können, wird ein Python-Skript benötigt. Diesen findet man auf der offiziellen PiCamera-Documentation-Seite – Web streaming.
 
 
Erstellen Sie einen Python-Skript “rpi_camera_web_streaming.py

 

 

nano rpi_camera_web_streaming.py

Kopieren Sie den unten angegebenen Code in den neu erstellten Skript: 

import io
import picamera
import logging
import socketserver
from threading import Condition
from http import server

PAGE="""\
<html>
<head>
<title>picamera MJPEG streaming demo</title>
</head>
<body>
<h1>PiCamera MJPEG Streaming Demo</h1>
<img src="stream.mjpg" width="640" height="480" />
</body>
</html>
"""

class StreamingOutput(object):
    def __init__(self):
        self.frame = None
        self.buffer = io.BytesIO()
        self.condition = Condition()

    def write(self, buf):
        if buf.startswith(b'\xff\xd8'):
            # New frame, copy the existing buffer's content and notify all
            # clients it's available
            self.buffer.truncate()
            with self.condition:
                self.frame = self.buffer.getvalue()
                self.condition.notify_all()
            self.buffer.seek(0)
        return self.buffer.write(buf)

class StreamingHandler(server.BaseHTTPRequestHandler):
    def do_GET(self):
        if self.path == '/':
            self.send_response(301)
            self.send_header('Location', '/index.html')
            self.end_headers()
        elif self.path == '/index.html':
            content = PAGE.encode('utf-8')
            self.send_response(200)
            self.send_header('Content-Type', 'text/html')
            self.send_header('Content-Length', len(content))
            self.end_headers()
            self.wfile.write(content)
        elif self.path == '/stream.mjpg':
            self.send_response(200)
            self.send_header('Age', 0)
            self.send_header('Cache-Control', 'no-cache, private')
            self.send_header('Pragma', 'no-cache')
            self.send_header('Content-Type', 'multipart/x-mixed-replace; boundary=FRAME')
            self.end_headers()
            try:
                while True:
                    with output.condition:
                        output.condition.wait()
                        frame = output.frame
                    self.wfile.write(b'--FRAME\r\n')
                    self.send_header('Content-Type', 'image/jpeg')
                    self.send_header('Content-Length', len(frame))
                    self.end_headers()
                    self.wfile.write(frame)
                    self.wfile.write(b'\r\n')
            except Exception as e:
                logging.warning(
                    'Removed streaming client %s: %s',
                    self.client_address, str(e))
        else:
            self.send_error(404)
            self.end_headers()

class StreamingServer(socketserver.ThreadingMixIn, server.HTTPServer):
    allow_reuse_address = True
    daemon_threads = True

with picamera.PiCamera(resolution='640x480', framerate=24) as camera:
    output = StreamingOutput()
    camera.start_recording(output, format='mjpeg')
    try:
        address = ('', 8000)
        server = StreamingServer(address, StreamingHandler)
        server.serve_forever()
    finally:
        camera.stop_recording()

Videos aufnehmen

Auch für die Aufnahme von Videos über die Raspberry Pi Kamera gibt es unter Raspbian ein zentrales Tool – raspivid übernimmt hier alle wichtigen Aufgaben.

Ein Video in 1080p aufnehmen (1920 x 1080)
Mit dem Parameter -t gibt man die Aufnahmezeit in Millisekunden an, für eine dauerhafte Aufzeichnung wird der Wert auf 0 gesetzt.

 

raspivid -o testvideo.h264 -t 50000

Ein Video in 720p aufnehmen (1280 x 720)

 

raspivid -o testvideo.h264 -t 50000 -w 1280 -h 720

Video mit anderer Framerate aufzeichnen (zb. 15 Frames/Sekunde)

 

raspivid -o testvideo.h264 -t 50000 -f 15

Veröffentlicht am Schreib einen Kommentar

Einstieg in die Raspberry Pi Welt

In diesem Artikel geht es um den richtigen Start mit dem Raspberry Pi. Es handelt sich hierbei um das richtige und nötige Zubehör für den Pi. Ich wünsche Euch viel Spaß!

Dank seiner kompakten Größe, geringer Stromkosten und vieler Anschlussmöglichkeiten eignen sich die Raspberry Pi Boards perfekt für den Dauerbetrieb. Selbstverständlich ersetzt der Pi trotz einer grafischen Oberfläche keinen vollwertigen PC, da die Leistung für viele alltäglichen Aufgaben mit komplexen Programmen einfach nicht ausreicht. Aber der Pi ist nicht dafür entwickelt worden, sondern für spannende Experimente und für den einfachen Einstieg in die Hintergründe eines Rechners.

Welche Modelle von Raspberry Pi gibt es eigentlich? (Auszug von Chip)

Modell Raspberry Pi 3 Raspberry Pi 2 (B) Raspberry Pi 1 (A+) Raspberry Pi Zero / W
SOC CM2837 BCM2836 BCM2835 BCM2835
CPU ARMv8 Cortex-A53 ARMv7 Cortex-A7 ARMv6 1176JZF-S ARMv6 1176JZF-S
CPU-Takt 4x 1200 MHz 4x 900 MHz 700 MHz 1000 MHz
CPU-Kerne 4 4 1 1
Arbeitsspeicher 1024 MB 1024 MB 256 MB 512 MB
USB 4x 4x 1x 1x (micro-USB)
Audio HDMI + Klinke (3,5mm) HDMI + Klinke (3,5mm) HDMI + Klinke (3,5mm) Mini-HDMI
LAN 10/100 MBit 10/100 MBit
WLAN ja nur W-Modell
Bluetooth ja nur W-Modell
Speicher microSD microSD microSD microSD
Größe 85,6mm × 56mm 85,6mm × 56mm 65mm × 56mm 65mm x 30mm

 

In diesem Einstieg beziehe ich mich nun auf das aktuellste Modell Raspberry Pi 3 .

Einige der bei uns angebotenen Starter Kits haben bereits alle nötigen Komponenten im Lieferumfang. Falls man jedoch seinen Starter-Set selbst zusammenbauen möchte, hier ein paar Tipps für die richtige Wahl:

MicroSD-Karte

Eine MicroSD-Karte ist sehr wichtig, denn ohne eine MicroSD-Karte mit einem entsprechenden Betriebssystem kann das Raspberry Pi nicht betrieben werden. Empfehlenswert ist eine MicroSD-Karte mindestens in der Class 10 mit mindestens 8GB Kapazität, noch besser wären 16GB. Möglich sind max. 32GB. Mit den Karten von SanDisk (beispielsweise: SanDisk Ultra 16GB) war ich stets zufrieden.

Stromversorgung

Das ist ein besonders wichtiger Punkt. Hier ist es wichtig ein gutes Netzteil mit konstanter Leistung zu kaufen. Leider sind sehr viele Billig-Netzteile meist nicht ausreichend für den Dauerbetrieb und können Ihrem Raspberry Pi unter Umständen auch schaden. Empfehlenswert ist das offizielle Netzteil der Raspberry Pi Foundation. Generell ist der Stromanschluss über einen MicroUSB-Anschluss realisiert. Das heißt, hat man bereits einen MicroUSB-Ladekabel parat, beispielsweise von einem alten Handy etc., braucht man dann nur ein passendes Netzteil. Zu beachten ist aber auch hier die ausreichende Qualität und der Leistungsausgang von mind. 2A (bei Raspberry Pi 3 wären 2,5A besser).

WLAN-Adapter

Das ist das schönste an den neuen Raspberry Pi modellen (Pi 3 und Pi Zero W) – diese sind ab Werk sowohl mit einem WLAN-Modul als auch mit einem Bluetooth-Modul ausgestattet. Man braucht also nun keine zusätzlichen Adapter mehr zu kaufen.

Falls man sich beim Kauf jedoch für ein älteres Modell entscheidet, so gibt es hier viele gute Adapter. Einen guten Namen hat sich der Hersteller Edimax. Mein Raspberry Pi 2 läuft prima damit.

HDMI Kabel

Einen HDMI Kabel benötigt man meist nur für die Ausgabe der grafischen Oberfläche auf einem Monitor, z.B. wenn man unbedingt darauf zugreifen möchte oder wenn man den Raspberry Pi in Projekten verwendet, die eine grafische Ausgabe benötigen. Hier gibt es keine Einschränkungen bei der Produktwahl. Es gibt genug HDMI-Kabel für wenig Geld zu kaufen. Möchte man den Pi an einem PC-Monitor mit VGA-Eingang anschließen, benötigt man einen HDMI-zu-VGA-Adapter. Einen solchen finden Sie hier.

Gehäuse

Kauft man den Pi einzeln und nicht im Set, wird bloß ein Board geliefert. Betrieben kann es auch so, schick aussehen tut der Pi in jedem Fall :). Aber wenn man dem Pi eine Verkleidung geben möchte, so findet man eine Menge an Gehäusen auf dem Markt für wenig Geld. Schaut hier vorbei, vielleicht findet Ihr etwas passendes da. Ich finde das offizielle Gehäuse der Raspberry Pi Foundation sehr funktionell und schick. Empfehlenswert für einen dauerhaften Betrieb des Pi ist der Einsatz von Kühlkörpern (für Raspberry Pi 3). Meist handelt es sich um passive Kühlkörper, die die Wärme schlicht ableiten.

Das war es, schon könnt ihr mit dem Pi starten und viele spannenden Projekte realisieren. Solltet Ihr Fragen haben stehe ich stets zur Verfügung. (Photo by Akane Sayama)