Raspberry Pi programmieren mit C/C++ und Bash - Harald Schmidt - E-Book

Raspberry Pi programmieren mit C/C++ und Bash E-Book

Harald Schmidt

0,0

Beschreibung

So realisieren Sie Ihre Foto-, Video- und Audioprojekte mit dem Raspberry Pi, C/C++ und Bash

Haben Sie bereits Programmiererfahrung und möchten hardwarenahe Projekte realisieren? Sie wollen den Raspberry Pi nutzen, sind aber ein Linux-Neuling? In diesem Buch erfahren Sie alles, was Sie wissen müssen, um Projekte rund um Foto, Video & Audio mit dem Raspberry Pi, C/C++ und Bash erfolgreich in die Tat umzusetzen – mit und ohne zusätzliche Elektronik.

Folgende Themen erwarten Sie:
- Raspbian-Konfiguration, Bedienoberfläche, Backup & Restore
- Programmstart über Desktop-Icons, Programmieren mit Bash/C/C++, Skriptdateien mit ASCII-GUI, Entwicklungsumgebungen
- Schaltungen für den GPIO-Port, Einsatz von Sensoren & WiringPi
- Netzwerke & Fernzugriff: SSH-Server, Linux-PC als Client, PuTTY als Windows-Client, Zugriff über LAN/WLAN
- ALSA, Audiorecord, Audacity, Audiosignalanalyse, Sprachsynthese, Vokalerkennung
- Fotografieren & Filmen mit Webcam/Kameramodul, Videoplayer mit/ohne GPU-Nutzung
- Objekterkennung mit OpenCV & Motion
- Auf der Verlagswebsite: sämtliche Codebeispiele aus dem Buch
- Website zum Buch: www.progpi.de
- E-Book komplett in Farbe mit klickbaren Weblinks und Querverweisen, Syntax-Highlighting in der EPUB-Version

Beispielanwendungen liefern Ihnen Ideen für eigene Projekte – sei es ein Entfernungssensor mit LCD-Anzeige oder eine Kamera-Fernsteuerung. Das Grundlagenwissen aus diesem Buch ist nahezu auf jede Linux-Distribution anwendbar.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 1024

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Harald Schmidt

Raspberry Pi programmieren mit C/C++ und Bash

Mehr als 50 Programme rund um Foto, Video und Audio

Die Autoren:

Harald Schmidt, München

Alle in diesem Buch enthaltenen Informationen, Verfahren und Darstellungen wurden nach bestem Wissen zusammengestellt und mit Sorgfalt getestet. Dennoch sind Fehler nicht ganz auszuschließen. Aus diesem Grund sind die im vorliegenden Buch enthaltenen Informationen mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autoren und Verlag übernehmen infolgedessen keine juristische Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieser Informationen – oder Teilen davon – entsteht.

Ebenso übernehmen Autoren und Verlag keine Gewähr dafür, dass beschriebene Verfahren usw. frei von Schutzrechten Dritter sind. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Buch berechtigt deshalb auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen­ und Markenschutz­Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften.

Bibliografische Information der Deutschen Nationalbibliothek: Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

Dieses Werk ist urheberrechtlich geschützt. Alle Rechte, auch die der Übersetzung, des Nachdruckes und der Vervielfältigung des Buches, oder Teilen daraus, vorbehalten. Kein Teil des Werkes darf ohne schriftliche Genehmigung des Verlages in irgendeiner Form (Fotokopie, Mikrofilm oder ein anderes Verfahren) – auch nicht für Zwecke der Unterrichtsgestaltung – reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden.

© 2018 Carl Hanser Verlag Münchenwww.hanser-fachbuch.de

Lektorat: Julia Stepp Herstellung: Isabell Eschenberg Umschlagrealisation: Stephan Rönigk

ISBN 978-3-446-45342-5 E-Book-ISBN 978-3-446-45349-4E-Pub-ISBN 978-3-446-45790-4

Verwendete Schriften: SourceSansPro und SourceCodePro (Lizenz) CSS-Version: 1.0

Inhalt

Titelei

Impressum

Inhalt

Widmung

Vorwort

1 Die Welt des Raspberry Pi

1.1 Die Modelle des Raspberry Pi

1.1.1 Energieversorgung

1.1.2 Der Raspberry Pi Zero W

1.1.3 Raspberry Pi 2 und Pi 3

1.2 SD-Karten und microSD-Karten

1.3 Von Wheezy zu Stretch – Downloads für Raspbian

1.3.1 Die Release Notes als Chronik

1.4 Über NOOBS zur Raspbian SD-Karte

1.4.1 NOOBS aus dem Internet holen und entpacken

1.4.2 NOOBS auf die leere (micro)SD-Karte kopieren

1.5 NOOBS auf dem Raspberry Pi

1.5.1 Wohin mit dem Bild?

1.5.2 Energie für NOOBS

1.6 Der NOOBS Recovery-Modus

2 Der Raspberry Pi und Linux

2.1 Das Abbild von Raspbian für die SD-Karte

2.1.1 Die Abbilddatei mit einem Linux-PC übertragen

2.1.2 Der Win32 Disk Imager

2.2 Die Grundkonfiguration des Raspbian Desktops

2.2.1 Tastaturlayout und Spracheinstellung

2.2.2 Konfiguration von Autologin, Hostname und Bootmodus

2.2.3 Passwortänderung

2.2.4 Freigabe für SSH und Abfrage der IP-Adresse

2.3 Der Raspberry Pi Desktop als Bedienoberfläche

2.3.1 Die Lage der Panelleiste ändern

2.3.2 Der Aufbau der Panelleiste

2.3.3 Programmstart über Tastaturkürzel

2.3.4 Eine symbolische Desktop-Verknüpfung hinzufügen

2.3.5 Eine neue Desktop-Datei erzeugen

2.3.6 Ein Programm der Anwendungsstartleiste hinzufügen

2.3.7 Miniprogramme im Panel

2.3.8 Das Konsolenkommando lxpanelctl

2.4 Der Main Menu Editor Alacarte

2.5 Das Erscheinungsbild anpassen mit LxAppearance

2.6 Der Raspbian Desktop auf dem PC oder Mac

2.7 Nützliche Programme ohne und mit grafischer Oberfläche

2.8 Autostart mit und ohne GUI

2.8.1 Die versteckte Datei .bashrc

2.8.2 Die Datei rc.local

2.9 Die Verwendung von LXTerminal in Desktop-Dateien

2.10 Pakete – Installation und Verwaltung

2.10.1 Der vorinstallierte Paketmanager pi-packages

2.10.2 Der Paketmanager Synaptic

2.10.3 Paketverwaltung über Konsolenkommandos

2.11 Die Bildschirmauflösung mit und ohne den RPi-Desktop einstellen

2.11.1 Über HDMI zum Fernseher

2.11.2 Über den HDMI/VGA-Adapter zum Monitor

2.11.3 Einstellung der Auflösung mit raspi-config

2.12 Audioumschaltung und Bluetooth-Lautsprecher

2.13 Systembackup im laufenden Betrieb

3 Betriebssysteme, Partitionen, Backup und Restore

3.1 SD-Karte, USB-Stick, Festplatte – was erkennt der Raspberry Pi?

3.2 SD-Karten mit Betriebssystem

3.2.1 Hinein in die Box

3.2.2 Der passende Aufkleber

3.2.3 Binäre Einheiten und die Kapazität von SD-Karten

3.3 SD-Karten identifizieren mit sd-label.sh

3.4 Hinweise zu Backup und Restore

3.5 Formatierung von SD-Karten

3.6 Das USB Image Tool

3.7 Direktkopie der SD-Karte mit piclone

3.8 Der Partitionsmanager GParted

3.9 Eine bootfähige SD-Karte mit sd-restore.sh erzeugen

3.10 Backup von SD-Karten mit sd-back.sh

3.10.1 Nullen vor dem Backup

3.11 Ein Blick in das Abbild der SD-Karte

3.12 Festplatten am Raspberry Pi

3.12.1 Der Einhängepunkt und die Systemkonsole

3.12.2 Einhängen der Partition über /etc/fstab

4 Programmieren mit dem Pi

4.1 Dateien und Programme zum Buch

4.2 Paketinstallation über die Skriptdateien zum Buch

4.3 Die Skriptdateien zum Buch – was ist wo?

4.4 Die Shell als Kommandointerpreter

4.4.1 Umgebungsvariablen

4.4.2 vcgencmd

4.5 Strings in Bash, C und C++

4.6 Programmieren mit Bash

4.6.1 Eingabe, Ausgabe und if else

4.6.2 Feldtrenner und float-Werte

4.6.3 Formatierte Ausgabe mit printfcalc.sh

4.6.4 Ausgabekommandos für ASCII-Dateien

4.6.5 Bash-Arrays mit numerischem Index

4.6.6 Assoziative Bash-Arrays mit Wortindex

4.6.7 Funktionen, Parameter und Exit-Codes

4.6.8 Ausgabeumleitung und Rückgabewerte

4.6.9 Ein Bash-Skript mit Funktionen und Indexsuche

4.6.10 Indexelemente sortieren und finden mit assosort.sh

4.6.11 Ausgabespalten neu anordnen mit dosdir.sh

4.6.12 Die Ausgabe Einlesen und die IFS-Trennzeichen

4.6.13 Filtern mit cut und grep

4.6.14 Farben in der Konsolenausgabe

4.6.15 Zeichen entfernen mit trim.sh

4.6.16 Dateinamen oder Pfade extrahieren

4.6.17 Die Position einer Zeichengruppe oder eines Strings finden

4.6.18 Ein Blick in raspi-config

4.7 Bash in Beispielen

4.7.1 Wie copydesk.sh funktioniert

4.7.2 Farbige Listings mit colordir.sh

4.7.3 Analyse von Partitionsgrößen mit sd-info.sh

4.7.4 Feldinhalte aus Audiodateien kompakt anzeigen

4.7.5 EXIF-Daten anzeigen mit jhead.sh

4.7.6 Metadaten ermitteln mit mediainfo.sh

4.7.7 Diagnose der Bildschirmauflösung mit scrreso.sh

4.7.8 Eine Bildschirmecke zur Videowiedergabe nutzen (OMXPlayer)

4.7.9 Prozesse anzeigen mit pgrep_htop.sh

4.8 Skriptdateien mit ASCII-GUI (whiptail/dialog)

4.8.1 Vom Skript zum Kommando

4.8.2 Eine allgemeingültige Dateiauswahl im Skript verwenden

4.8.3 Programmauswahl über Checkboxes

4.8.4 Bilder als ASCII-Art anzeigen

4.8.5 Programmstart mit fotomenu.sh

4.8.6 Programmstart über Desktop-Dateien und ASCII-Dialoge

4.8.7 Dateiauswahl bei sd-mount.sh

4.8.8 Der Programmstarter opencvgui.sh als ASCII-GUI

4.9 C-Programme mit Raspbian nutzen (hello_pi/GPU)

4.9.1 Videoprojektion auf eine rotierende Teekanne (hello_teapot.c)

4.9.2 Mathematische Kunst mit hello_triangle2.c

4.9.3 Das Skript helloGPU.sh auf einem "großen" Linux-PC starten

4.9.4 Mit make zum eigenen C-Programm

4.9.5 Das Skript helloGPU2.sh für weitere GPU-Programme

4.9.6 Programme starten mit system und popen

4.9.7 Zeit ist relativ

4.9.8 Mausklicks, Bewegungen und Scrollevents auswerten

4.9.9 Von der Mausbewegung zur Audioausgabe

4.10 Der Qt Creator als Entwicklungsumgebung

4.11 Die Entwicklungsumgebung Code::Blocks

4.12 GTK+ Programmierung

4.13 Die Geany-Entwicklungsumgebung

4.14 Python und IDLE als Entwicklungsumgebung

4.15 Zenity-Dialoge

4.16 GitHub und Raspbian

5 Elektronik und Programme für den GPIO-Port

5.1 Schaltungen aufbauen

5.1.1 Drähte oder Drahtbrücken

5.1.2 SMD-Adapter und ICs

5.1.3 Widerstände, Widerstandsnetzwerke und Kondensatoren

5.1.4 Der LED-Test

5.2 Eine LED per Software schalten (Ein/Aus)

5.3 Eine LED per Software dimmen (Pulsweitenmodulation)

5.4 Eine LED am Optokoppler

5.5 GPIO-Pins im Read-Modus (Bash)

5.5.1 GPIO-Pins zyklisch abfragen (Polling)

5.5.2 GPIO-Pins im Interrupt-Modus (Flankenerkennung)

5.5.3 Flankenerkennung bei mehreren Schaltern

5.6 WiringPi-Beispiele mit C-Quelltext

5.6.1 WiringPi im Interrupt-Modus

5.7 Experimente zur Impulswahl

5.7.1 Audiodateien durch Impulswahl abspielen

5.7.2 Impulsdiagramme mit GnuPlot

5.8 Von der Helligkeit zur Frequenz

5.8.1 Frequenzen messen mit dem Oszilloskop und mit r2f.cpp

5.9 Stufenschalter, Tastenfelder, Encoder und Codierschalter

5.10 Analog/Digital-Wandler für die SPI-Schnittstelle

5.10.1 Analoge Messwerte mit spiloop.c erfassen

5.11 Die I2C-Schnittstelle

5.12 Analog/Digital-Wandler für I2C

5.13 Ein LCD-Display am I2C-Bus

5.13.1 Ausgaben mit sysinfo.sh

5.13.2 PIDs auf dem LCD-Display mit pgrep_menuctrl.sh

5.14 Die C-Library bcm2835 für den GPIO-Port

5.15 Mehr Ampere mit externen Spannungsquellen

5.16 Vom Schaltplan zum Layout

5.16.1 EAGLE Light

6 Sensoren und Software für Infrarot und Ultraschall

6.1 LIRC als Empfänger

6.1.1 Kommandos per IR-Fernbedienung auslösen

6.1.2 Ein Auswahlmenü auf dem LCD-Display

6.2 Entfernungsmessung per Ultraschall

6.3 Ein Abstandswarner mit ultraloop.c im Qt Creator

6.4 Entfernungsmessung mit Infrarotlicht

6.4.1 Distanzmessung über den MCP3426 als A/D-Wandler

7 Netzwerke und der Fernzugriff auf den Raspberry Pi

7.1 Die automatische Vergabe von IP-Adressen

7.2 Netzwerkkabel, Übertragungsraten und ethtool

7.3 Eine Direktverbindung zum Raspberry Pi

7.3.1 Die Link-Local-IP

7.4 Netzwerkkameras

7.4.1 Eine Direktverbindung für Netzwerkkameras

7.5 Der SSH-Server und ein Linux-PC als Client

7.5.1 SSH und die Weiterleitung des X11-Fensters

7.5.2 Fingerabdrücke auf (micro)SD-Karten

7.6 Zwei Schlüssel zum Vergleich – SSH ohne Passwort

7.7 PuTTY als Windows-Client

7.8 Remote-Zugriff mit WinSCP und Krusader als Client

7.9 Der SSH-Fernzugriff per ASCII-GUI

7.9.1 Ein Desktop-Icon auf dem Client-PC

7.10 Ein Remote-Desktop mit TightVNC

7.11 Energie sparen mit TMux

7.12 Die ASCII-GUI pgrep_gui.sh

7.13 TMux und die ASCII-GUI pgrep_gui.sh

7.13.1 TMux-Skripting

7.14 WLAN-Verbindungen und WLAN-Sticks

7.14.1 WLAN-Verbindungen und wpa_gui

7.15 Die Netzwerk-Tools arp-scan und nmap

7.16 Netcat – vom Chatprogramm zum Videoempfänger

7.17 Fünf Wege zum Raspberry Pi

7.18 Über Android zum Raspberry Pi

7.18.1 Über F-Droid zu ConnectBot

7.19 Über USB OTG zum Raspberry Pi Zero

8 Audio und Composite Video am Pi

8.1 Buchsen, Kabel, Signale

8.2 Audiowiedergabe

8.3 Der AlsaMixer

8.4 Audioaufzeichnung und ALSA-Tools

8.4.1 SoX mit der Webcam als Audioquelle

8.4.2 SoX passt auf – Reaktion auf Geräusche

8.4.3 Informationen zur Audiodatei mit soxi

8.4.4 Audioaufzeichnung im Remote-Modus

8.4.5 Lautsprecherdurchsagen aus sicherem Abstand (remote)

8.4.6 Externe USB-Soundkarten und das Programm speaker-test

8.5 Sprachsynthese auf dem Linux-PC

8.5.1 Sprachausgabe mit eSpeak

8.5.2 Sprachausgabe über tts.sh mit eSpeak, SVOX-Pico und Festival

9 Videodaten – Aufzeichnung und Wiedergabe

9.1 Der OMXPlayer

9.1.1 Kommandos für den OMXPlayer (DBUS-Interface)

9.2 Videodateien aus dem Internet holen

9.3 Archivierte Videos abspielen mit guiPlay.sh

9.4 Videoplayer und multiplay.sh

9.5 Wiedergabe mit videoselect.sh und avplay

9.6 Wo ist das Videogerät?

9.7 Daten zum Videogerät mit dem V4L-Treiber

9.8 MPEG-Spezifikationen, Codecs und Containerdateien

9.9 Fotografieren und Filmen mit guvcview

9.10 Fotografieren mit fswebcam

9.11 Die libav-tools und avconv (bzw. ffmpeg)

9.11.1 Der Webcam-Zugriff mit avconv

9.11.2 Vertonung mit avconv

9.11.3 Bildschirmvideos mit dem Raspberry Pi

9.11.4 Videos konvertieren mit WinFF

9.12 Motion auf dem Pi

9.12.1 Der Programmstarter motiongui.sh

9.12.2 Der Blick auf die Uhr

9.12.3 Motion-Parameter geeignet festlegen

9.12.4 Namen für Bilder und Videodateien

9.12.5 Einblendung von Zeitstempeln und Texten

9.12.6 Markierte Bewegungen

9.12.7 Bewegungsalarm auf Teilbereichen des Bildes

9.12.8 Automatische E-Mails bei Ereignissen

9.12.9 Den Videostream anzeigen und weiterleiten

9.12.10 Parameteränderung per ASCII-GUI und setvalue.sh

10 Kameramodule zum Raspberry Pi

10.1 Das 8-Megapixel-Kameramodul mit Sony-IMX219-Sensor

10.2 Fotos mit raspistill

10.2.1 EXIF-Daten ermitteln

10.2.2 Fotografieren mit fotomenu.sh

10.2.3 Der manuelle Belichtungsmodus

10.2.4 Fotografieren mit Zeit-/ISO-Automatik

10.2.5 Farben und Spezialeffekte

10.2.6 Fotos bei sehr wenig Licht und im Signalmodus

10.3 Konverter für Einzelbilder

10.4 Bilder und das FBI

10.5 Videos aufzeichnen mit raspivid

10.6 Videodateien mit MP4Box und avconv verarbeiten

10.7 Der UV4L-Treiber zum Kameramodul des Raspberry Pi

10.7.1 Fotografieren mit multicam.sh

10.7.2 Filmen mit dd

10.8 Binning bei raspistill und raspivid

10.9 Motion und das Kameramodul

11 Automatischer Datentransfer

11.1 SFTP-Kommandos per Skript ausführen

11.2 Eine RAM-Disk als Zwischenpuffer

11.2.1 Bilder auf der RAM-Disk

11.2.2 Die RAM-Disk überwachen

11.3 Datentransfer mit FileZilla

12 Audiosignale analysieren

12.1 Audacity

12.2 Die Verwendung von libsndfile

12.2.1 Die Abtastwerte einer Audiodatei in Textform

12.2.2 Ein Blick auf die Dokumentation

12.2.3 Ausgabeumleitung für Audiodaten mit sndout.cpp

12.3 Pausenerkennung und Segmentierung

12.3.1 Audiosegmentierung und Sprachausgabe mit audiosegm.cpp

12.4 Die Library tinyalsa

12.4.1 Abtastraten mit tinypcminfo.c ermitteln

12.4.2 Audioaufnahmen mit capaudio.sh und tinycap.c

12.5 Der Pi als Papagei

12.6 Spektrogramme mit sndfile-tools und Audacity

12.7 Vokaltraining mit voxvokal.sh

12.8 Das Audioquiz

13 OpenCV und der Pi

13.1 Die Konfiguration von OpenCV

13.2 Mit dem Compiler zur ausführbaren Datei

13.3 OpenCV – Dokumentation und Beispielprogramme

13.4 OpenCV, CMakeGUI und Code::Blocks

13.5 Die Qt-Projektdateien zu den Beispielprogrammen

13.6 Das Programm fpsec.cpp auf dem Pi benutzen

13.6.1 Fenster und Tastaturcodes von fpsec.cpp

13.6.2 Konturbilder vom Webcambild

13.6.3 Konturbilder vom Videobild

13.6.4 FloodFill auf dem Videobild

13.7 Programmierung mit OpenCV

13.7.1 Grundlegende Datentypen und OpenCV-Klassen

13.7.2 Fenster, Steuerelemente und cv::waitKey

13.7.3 Optimierung von Farb- und Grauwertbildern per Tastendruck

13.7.4 Binarisierung von Bildern mit cv::threshold

13.7.5 Regionen und Beschriftungen

13.8 Konfiguration für die WITH_QT-Oberfläche

14 Objektsegmentierung mit OpenCV

14.1 Segmentierung von Textzeilen

14.2 Symbolerkennung mit iconreader.cpp

14.3 Symbolerkennung auf Webcambildern

14.3.1 Einsatzzweck, Bedienung und Tastaturcodes

14.3.2 Vom Graustufenbild zum Erkennungsresultat

14.3.3 Der Alarm und die Statistik

14.4 Die sprechende Lichtschranke

15 Experimente

15.1 Booten mit Sprachausgabe

15.2 Ein Eingabemodul mit IR-Detektor und LCD-Display

15.2.1 Den Schaltungsaufbau planen

15.2.2 Lötarbeiten für die Elektronik zum DOGM204 LCD-Display

15.2.3 Das LCD-Display testen

15.2.4 Das Eingabemodul eichen

15.2.5 Die Drehung des Codierschalters auswerten

15.3 Ein Client/Server-Konzept für das Eingabemodul

15.3.1 Nur mit Maus und Display?

15.4 Ein Client/Server-Konzept mit menuctrl.sh

15.4.1 Fotos mit MenuCtrl

15.5 Über MenuCtrl fswebcam starten/beenden

15.6 Die hello_pi GPU-Programme mit MenuCtrl starten/beenden

15.7 MenuCtrl im Infrarotlicht

15.8 MenuCtrl schon beim Booten starten

16 Schlusswort

17 Übersicht der Programme und Skriptdateien zum Buch

Widmung

Meinem Patenonkel Josef Schmidt gewidmet

Vorwort

Der Raspberry Pi ist zum Computer mit Kultstatus geworden. Das mag einerseits an der umfangreichen Literatur liegen, die für dieses Gerät verfügbar ist. Ganz sicher ist dafür aber auch das von der Raspberry Pi Foundation getragene Konzept verantwortlich, auch die Hardware als Open Source zu betrachten. So konnte ein kleiner Computer entstehen, der sich als Steuerungscomputer für Elektronikbastler einsetzen lässt und dabei nur wenig Energie verbraucht.

Softwarebasis des Pi sind Betriebssysteme, die ihre Wurzeln in Linux haben. Am bekanntesten ist dabei vielleicht Raspbian, das aus einer Debian-Linux-Distribution entwickelt wurde. Dessen Bedienoberfläche ist einfach aufgebaut und ähnelt der klassischen Oberfläche von Windows XP.

Pi ist aber auch ein Benutzername (pi@raspi3) – und mit dessen Augen werden Sie in diesem Buch spannende Blicke auf Ihren Mini-PC und seine Umgebung werfen. Dieses Buch führt Sie zugleich auch in die Welt zweier recht unterschiedlicher Programmiersprachen ein:

Bash: für Ablaufsteuerungen und als Programmstarter mit Benutzeroberfläche

C/C++: für alle Fälle, in denen man tiefer einsteigen will und in denen Geschwindigkeit wichtig ist

Sie werden noch sehen, dass sich diese Programmiersprachen nicht widersprechen, sondern wunderbar ergänzen, denn letztlich ist auch Linux eine Kombination daraus.

Da wir Menschen hauptsächlich über das Sehen, Hören und Sprechen kommunizieren, ist es angemessen, auch einen Computer in dieser Hinsicht zu erweitern. Der Schwerpunkt der für dieses Buch erstellten Programme liegt deshalb in diesen Bereichen.

Was erwartet Sie in diesem Buch?

Kapitel 1 erklärt, welche Modelle des Raspberry Pi existieren und wie Sie Raspbian Jessie/Stretch konfigurieren und erstmals starten. Zahlreiche Verweise auf andere Kapitel und Abschnitte erleichtern Ihnen den Einstieg.

Kapitel 2 bringt Ihnen Linux und Raspbian näher. Raspbian ist derzeit das beliebteste Betriebssystem auf dem Raspberry Pi. Sie lernen viele Details der grafischen Oberfläche kennen, aber auch die Verwendung der Konsole und vieler interessanter Programme werden erklärt.

Kapitel 3 erklärt den praktischen Umgang mit der (micro)SD-Karte als Boot-Medium des Raspberry Pi. Sie erfahren einiges über Backup und Restore und wie einfach es ist, in die "Computerproduktion" einzusteigen, denn Raspbian Jessie hat mit PiClone ein hübsches Backupprogramm bekommen.

Kapitel 4 erklärt die Verwendung vieler Linux-Kommandos. Sie erhalten eine Einführung in Bash, welche Sie dazu befähigt, kleine effektive Werkzeuge bzw. Skriptdateien zu bauen. Selbst wenn Sie daran nur begrenzt Interesse haben sollten, erfahren Sie, wie Sie viele der Programme zum Buch durch Anklicken von Desktop-Icons ganz einfach starten können. Mit Bash können Sie sehr leicht ASCII-Dialoge aufbauen, die als einfacher und informativer Programmstarter verwendbar sind. Auch C/C++ Programme lassen sich so ganz ohne Vorkenntnisse über Compiler starten. In diesem Kapitel lernen Sie außerdem die GPU-Programme von Raspbian kennen – von der rotierenden Teekanne bis zum mathematischen Kunstwerk.

Kapitel 5 führt Sie in die Welt der Elektronik ein. Die Namen Faraday, Ohm und Tesla sollten Ihnen bekannt sein. Sie müssen aber kein Elektronikexperte sein, um funktionsfähige Schaltungen aufzubauen und anzusteuern. Lassen Sie eine LED blinken. Verwenden Sie einen lichtgesteuerten Widerstand, Optokoppler oder eine antike Wählscheibe. Nutzen Sie einen A/D-Wandler und die zugehörige Software am Raspberry Pi. Auch ein LCD-Display lässt sich verwenden.

Kapitel 6 erklärt die Verwendung einer IR-Fernbedienung am Raspberry Pi. Zusätzlich werden Entfernungen mit preisgünstigen Sensoren für Ultraschall und Infrarot gemessen.

Kapitel 7 bietet Ihnen Grundwissen zu Netzwerken. Wie werden IP-Adressen vergeben? Wie entsteht eine Direktverbindung zwischen dem Raspberry Pi und einem anderen PC? Wie gelingt ein Netzwerkzugriff? Nutzen Sie SSH, PuTTY, TMux und weitere Programme.

In Kapitel 8 lernen sie ALSA kennen – das Linux-Soundsystem. Dabei geht es weniger darum, aus dem Pi eine Stereoanlage zu machen, als den Minicomputer zum Lauschen und Zuhören zu bringen.

In Kapitel 9 erfahren Sie, wie Sie Videodateien abspielen und Ihre Webcam nutzen können: zum Fotografieren oder Filmen – auf Wunsch auch ereignisgesteuert.

Kapitel 10 zeigt die Verwendung der Kameramodule zum Raspberry Pi. Fotografieren und filmen Sie bei unterschiedlichen Lichtverhältnissen oder in Kombination mit einer Webcam.

Kapitel 11: Was geschieht mit den gewonnenen Daten? Auf der RAM-Disk ablegen, übertragen oder löschen? Cronjobs helfen bei der Organisation.

Kapitel 12 wendet sich nochmal dem Thema Audio zu, jetzt aber mit C/C++ Programmen, die es ermöglichen, Audiosignale zu analysieren. Lernen Sie Audiotools und Libraries kennen. Benutzen Sie den Raspberry Pi als Papagei, und lassen Sie sich von einem selbst gebauten Audioquiz überraschen.

In Kapitel 13 lernen Sie die Bildverarbeitung mit OpenCV kennen. Viele Open-Source-Programme werden mit Tools wie CMakeGUI konfiguriert und direkt aus dem C++ Quelltext erzeugt. Bei mehr als 100 OpenCV-Beispielprogrammen ist garantiert etwas Passendes für Sie dabei! Ergänzend wird das ebenfalls von mir verfasste Buch "OpenCV Basiswissen" empfohlen.

Kapitel 14 erläutert die Objekterkennung mit OpenCV – von der Kontrastspreizung und einfachen Segmentierung von Textzeilen bis hin zur anspruchsvolleren Symbolerkennung. Erleben Sie eine sprechende Lichtschranke!

In Kapitel 15 wird MenuCtrl als Client-/Server-Software vorgestellt. Schrittweise wird eine Platine aufgebaut, die als Eingabegerät mit LCD-Display verwendet wird. So entsteht eine autarke Hardware und Software (gegebenenfalls für den Akkubetrieb), bei der auf Tastatur, Maus und Monitor verzichtet werden kann.

Nach dem Schlusswort in Kapitel 16 folgt in Kapitel 17 eine Übersicht der Programme und Skriptdateien zum Buch.

Hinweise zur Arbeit mit diesem Buch

Die Programme zum Buch, weitere Zusatzmaterialien sowie einen elektronischen Anhang mit ergänzende Informationen können Sie sich hier herunterladen: http://downloads.hanser.de/978-3-446-45342-5

Käufer der gedruckten Ausgabe dieses Buches erhalten das E-Book kostenfrei zum Buch. Die erste Seite des Buches enthält einen Zugangscode für das E-Book. Das E-Book ist komplett in Farbe und enthält in der EPUB-Version auch ein farblich hervorgehobenes Syntax-Highlighting.

Für den Raspberry Pi hat sich die Kurzbezeichnung Raspi eingebürgert. Wenn in diesem Buch vom Raspberry Pi oder Raspi gesprochen wird, sind damit alle bisher erschienenen Modelle gemeint. Wenn nur vom Pi gesprochen wird, ist sowohl der Raspberry Pi als auch der Banana Pi gemeint – auch wenn dieser Mini-PC nicht den Schwerpunkt des Buches bildet.

Im Buch sind viele Links zu Webseiten angegeben. Autor und Verlag können nicht für die dauerhafte Gültigkeit garantieren.Oft führt eine Suche nach Schlüsselwörtern zur genannten Webseite ebenfalls zu guten Treffern. Manchmal ist auch nur der Server vorübergehend nicht erreichbar.

Autor und Verlag haften nicht für eventuelle Schäden, die durch die Benutzung der im Buch beschriebenen Hardware oder Software entstehen könnten. Die Informationen wurden allerdings mit größtmöglicher Sorgfalt zusammengestellt, und es sind Warnhinweise zum Umgang mit Elektronik und elektrischen Spannungen enthalten.

Danksagungen

So wie das Raspbian-Betriebssystem eine bestimmte Zeit benötigt hat, um zum heutigen Entwicklungsstand zu gelangen, geht es einem manchmal auch als Autor. Deshalb möchte ich ganz besonders Herrn Frank Baur danken, der mich in zahlreichen Fachgesprächen immer wieder auf neue Ideen gebracht hat. Zur grafischen Umsetzung dieses Buches hat Frau Barbara Schmitz mit guten Tipps beigetragen. Meinem Bruder Erhard Eugen danke ich für zahlreiche Tests der Software, die er als völliger Laie auf dem Gebiet der Programmierung erfolgreich gemeistert hat. Ein ganz großer Dank gebührt auch Frau Julia Stepp vom Hanser Verlag, die die Entstehung dieses Buches über einen recht langen Zeitraum geduldig begleitet hat.

1. Die Welt des Raspberry Pi

1Mit "RASPBIAN" ist die Abbilddatei bzw. die Downloadmöglichkeit gemeint, während „Raspbian“ ein schon funktionsfähiges Betriebssystem beschreibt.