Mehr als 50 Programme rund um Foto, Video & Audio. Inkl. Einsatz von WiringPi, ALSA & OpenCV
E-Book, Deutsch, 850 Seiten
Reihe: makers DO IT
ISBN: 978-3-446-45349-4
Verlag: Carl Hanser
Format: PDF
Kopierschutz: 1 - PDF Watermark
Autoren/Hrsg.
Fachgebiete
Weitere Infos & Material
1;Inhaltsverzeichnis;6
2;Vorwort;18
3;1 Die Welt des Raspberry Pi;22
3.1;1.1 Die Modelle des Raspberry Pi;22
3.1.1;1.1.1 Energieversorgung;26
3.1.2;1.1.2 Der Raspberry Pi Zero W;27
3.1.3;1.1.3 Raspberry Pi 2 und Pi 3;31
3.2;1.2 SD-Karten und microSD-Karten;34
3.3;1.3 Von Wheezy zu Stretch – Downloads für Raspbian;35
3.3.1;1.3.1 Die Release Notes als Chronik;36
3.4;1.4 Über NOOBS zur Raspbian SD-Karte;37
3.4.1;1.4.1 NOOBS aus dem Internet holen und entpacken;38
3.4.2;1.4.2 NOOBS auf die leere (micro)SD-Karte kopieren;40
3.5;1.5 NOOBS auf dem Raspberry Pi;41
3.5.1;1.5.1 Wohin mit dem Bild?;41
3.5.2;1.5.2 Energie für NOOBS;42
3.6;1.6 Der NOOBS Recovery-Modus;48
4;2 Der Raspberry Pi und Linux;52
4.1;2.1 Das Abbild von Raspbian für die SD-Karte;53
4.1.1;2.1.1 Die Abbilddatei mit einem Linux-PC übertragen;57
4.1.2;2.1.2 Der Win32 Disk Imager;57
4.2;2.2 Die Grundkonfiguration des Raspbian Desktops;59
4.2.1;2.2.1 Tastaturlayout und Spracheinstellung;60
4.2.2;2.2.2 Konfiguration von Autologin, Hostname und Bootmodus;68
4.2.3;2.2.3 Passwortänderung;69
4.2.4;2.2.4 Freigabe für SSH und Abfrage der IP-Adresse;70
4.3;2.3 Der Raspberry Pi Desktop als Bedienoberfläche;71
4.3.1;2.3.1 Die Lage der Panelleiste ändern;72
4.3.2;2.3.2 Der Aufbau der Panelleiste;72
4.3.3;2.3.3 Programmstart über Tastaturkürzel;73
4.3.4;2.3.4 Eine symbolische Desktop-Verknüpfung hinzufügen;74
4.3.5;2.3.5 Eine neue Desktop-Datei erzeugen;75
4.3.6;2.3.6 Ein Programm der Anwendungsstartleiste hinzufügen;77
4.3.7;2.3.7 Miniprogramme im Panel;78
4.3.8;2.3.8 Das Konsolenkommando lxpanelctl;80
4.4;2.4 Der Main Menu Editor Alacarte;80
4.5;2.5 Das Erscheinungsbild anpassen mit LxAppearance;81
4.6;2.6 Der Raspbian Desktop auf dem PC oder Mac;83
4.7;2.7 Nützliche Programme ohne und mit grafischer Oberfläche;85
4.8;2.8 Autostart mit und ohne GUI;92
4.8.1;2.8.1 Die versteckte Datei .bashrc;93
4.8.2;2.8.2 Die Datei rc.local;95
4.9;2.9 Die Verwendung von LXTerminal in Desktop-Dateien;97
4.10;2.10 Pakete – Installation und Verwaltung;99
4.10.1;2.10.1 Der vorinstallierte Paketmanager pi-packages;100
4.10.2;2.10.2 Der Paketmanager Synaptic;101
4.10.3;2.10.3 Paketverwaltung über Konsolenkommandos;102
4.11;2.11 Die Bildschirmauflösung mit und ohne den RPi-Desktop einstellen;110
4.11.1;2.11.1 Über HDMI zum Fernseher;114
4.11.2;2.11.2 Über den HDMI/VGA-Adapter zum Monitor;115
4.11.3;2.11.3 Einstellung der Auflösung mit raspi-config;117
4.12;2.12 Audioumschaltung und Bluetooth-Lautsprecher;119
4.13;2.13 Systembackup im laufenden Betrieb;122
5;3 Betriebssysteme, Partitionen, Backup und Restore;124
5.1;3.1 SD-Karte, USB-Stick, Festplatte – was erkennt der Raspberry Pi?;126
5.2;3.2 SD-Karten mit Betriebssystem;129
5.2.1;3.2.1 Hinein in die Box;129
5.2.2;3.2.2 Der passende Aufkleber;130
5.2.3;3.2.3 Binäre Einheiten und die Kapazität von SD-Karten;130
5.3;3.3 SD-Karten identifizieren mit sd-label.sh;131
5.4;3.4 Hinweise zu Backup und Restore;134
5.5;3.5 Formatierung von SD-Karten;136
5.6;3.6 Das USB Image Tool;138
5.7;3.7 Direktkopie der SD-Karte mit piclone;140
5.8;3.8 Der Partitionsmanager GParted;142
5.9;3.9 Eine bootfähige SD-Karte mit sd-restore.sh erzeugen;145
5.10;3.10 Backup von SD-Karten mit sd-back.sh;150
5.10.1;3.10.1 Nullen vor dem Backup;154
5.11;3.11 Ein Blick in das Abbild der SD-Karte;156
5.12;3.12 Festplatten am Raspberry Pi;158
5.12.1;3.12.1 Der Einhängepunkt und die Systemkonsole;162
5.12.2;3.12.2 Einhängen der Partition über /etc/fstab;163
6;4 Programmieren mit dem Pi;164
6.1;4.1 Dateien und Programme zum Buch;165
6.2;4.2 Paketinstallation über die Skriptdateien zum Buch;167
6.3;4.3 Die Skriptdateien zum Buch – was ist wo?;169
6.4;4.4 Die Shell als Kommandointerpreter;171
6.4.1;4.4.1 Umgebungsvariablen;174
6.4.2;4.4.2 vcgencmd;175
6.5;4.5 Strings in Bash, C und C++;177
6.6;4.6 Programmieren mit Bash;178
6.6.1;4.6.1 Eingabe, Ausgabe und if else;178
6.6.2;4.6.2 Feldtrenner und float-Werte;181
6.6.3;4.6.3 Formatierte Ausgabe mit printfcalc.sh;183
6.6.4;4.6.4 Ausgabekommandos für ASCII-Dateien;183
6.6.5;4.6.5 Bash-Arrays mit numerischem Index;184
6.6.6;4.6.6 Assoziative Bash-Arrays mit Wortindex;186
6.6.7;4.6.7 Funktionen, Parameter und Exit-Codes;187
6.6.8;4.6.8 Ausgabeumleitung und Rückgabewerte;188
6.6.9;4.6.9 Ein Bash-Skript mit Funktionen und Indexsuche;191
6.6.10;4.6.10 Indexelemente sortieren und finden mit assosort.sh;194
6.6.11;4.6.11 Ausgabespalten neu anordnen mit dosdir.sh;195
6.6.12;4.6.12 Die Ausgabe Einlesen und die IFS-Trennzeichen;197
6.6.13;4.6.13 Filtern mit cut und grep;200
6.6.14;4.6.14 Farben in der Konsolenausgabe;207
6.6.15;4.6.15 Zeichen entfernen mit trim.sh;209
6.6.16;4.6.16 Dateinamen oder Pfade extrahieren;210
6.6.17;4.6.17 Die Position einer Zeichengruppe oder eines Strings finden;210
6.6.18;4.6.18 Ein Blick in raspi-config;212
6.7;4.7 Bash in Beispielen;214
6.7.1;4.7.1 Wie copydesk.sh funktioniert;214
6.7.2;4.7.2 Farbige Listings mit colordir.sh;215
6.7.3;4.7.3 Analyse von Partitionsgrößen mit sd-info.sh;217
6.7.4;4.7.4 Feldinhalte aus Audiodateien kompakt anzeigen;220
6.7.5;4.7.5 EXIF-Daten anzeigen mit jhead.sh;222
6.7.6;4.7.6 Metadaten ermitteln mit mediainfo.sh;225
6.7.7;4.7.7 Diagnose der Bildschirmauflösung mit scrreso.sh;229
6.7.8;4.7.8 Eine Bildschirmecke zur Videowiedergabe nutzen (OMXPlayer);231
6.7.9;4.7.9 Prozesse anzeigen mit pgrep_htop.sh;233
6.8;4.8 Skriptdateien mit ASCII-GUI (whiptail/dialog);238
6.8.1;4.8.1 Vom Skript zum Kommando;242
6.8.2;4.8.2 Eine allgemeingültige Dateiauswahl im Skript verwenden;244
6.8.3;4.8.3 Programmauswahl über Checkboxes;246
6.8.4;4.8.4 Bilder als ASCII-Art anzeigen;249
6.8.5;4.8.5 Programmstart mit fotomenu.sh;255
6.8.6;4.8.6 Programmstart über Desktop-Dateien und ASCII-Dialoge;258
6.8.7;4.8.7 Dateiauswahl bei sd-mount.sh;261
6.8.8;4.8.8 Der Programmstarter opencvgui.sh als ASCII-GUI;264
6.9;4.9 C-Programme mit Raspbian nutzen (hello_pi/GPU);266
6.9.1;4.9.1 Videoprojektion auf eine rotierende Teekanne (hello_teapot.c);268
6.9.2;4.9.2 Mathematische Kunst mit hello_triangle2.c;269
6.9.3;4.9.3 Das Skript helloGPU.sh auf einem „großen“ Linux-PC starten;270
6.9.4;4.9.4 Mit make zum eigenen C-Programm;271
6.9.5;4.9.5 Das Skript helloGPU2.sh für weitere GPU-Programme;274
6.9.6;4.9.6 Programme starten mit system und popen;275
6.9.7;4.9.7 Zeit ist relativ;278
6.9.8;4.9.8 Mausklicks, Bewegungen und Scrollevents auswerten;280
6.9.9;4.9.9 Von der Mausbewegung zur Audioausgabe;285
6.10;4.10 Der Qt Creator als Entwicklungsumgebung;289
6.11;4.11 Die Entwicklungsumgebung Code::Blocks;294
6.12;4.12 GTK+ Programmierung;297
6.13;4.13 Die Geany-Entwicklungsumgebung;300
6.14;4.14 Python und IDLE als Entwicklungsumgebung;303
6.15;4.15 Zenity-Dialoge;307
6.16;4.16 GitHub und Raspbian;308
7;5 Elektronik und Programme für den GPIO-Port;310
7.1;5.1 Schaltungen aufbauen;313
7.1.1;5.1.1 Drähte oder Drahtbrücken;316
7.1.2;5.1.2 SMD-Adapter und ICs;318
7.1.3;5.1.3 Widerstände, Widerstandsnetzwerke und Kondensatoren;319
7.1.4;5.1.4 Der LED-Test;321
7.2;5.2 Eine LED per Software schalten (Ein/Aus);322
7.3;5.3 Eine LED per Software dimmen (Pulsweitenmodulation);325
7.4;5.4 Eine LED am Optokoppler;327
7.5;5.5 GPIO-Pins im Read-Modus (Bash);328
7.5.1;5.5.1 GPIO-Pins zyklisch abfragen (Polling);329
7.5.2;5.5.2 GPIO-Pins im Interrupt-Modus (Flankenerkennung);330
7.5.3;5.5.3 Flankenerkennung bei mehreren Schaltern;333
7.6;5.6 WiringPi-Beispiele mit C-Quelltext;336
7.6.1;5.6.1 WiringPi im Interrupt-Modus;337
7.7;5.7 Experimente zur Impulswahl;338
7.7.1;5.7.1 Audiodateien durch Impulswahl abspielen;342
7.7.2;5.7.2 Impulsdiagramme mit GnuPlot;343
7.8;5.8 Von der Helligkeit zur Frequenz;346
7.8.1;5.8.1 Frequenzen messen mit dem Oszilloskop und mit r2f.cpp;347
7.9;5.9 Stufenschalter, Tastenfelder, Encoder und Codierschalter;352
7.10;5.10 Analog/Digital-Wandler für die SPI-Schnittstelle;354
7.10.1;5.10.1 Analoge Messwerte mit spiloop.c erfassen;357
7.11;5.11 Die I2C-Schnittstelle;359
7.12;5.12 Analog/Digital-Wandler für I2C;360
7.13;5.13 Ein LCD-Display am I2C-Bus;365
7.13.1;5.13.1 Ausgaben mit sysinfo.sh;370
7.13.2;5.13.2 PIDs auf dem LCD-Display mit pgrep_menuctrl.sh;372
7.14;5.14 Die C-Library bcm2835 für den GPIO-Port;374
7.15;5.15 Mehr Ampere mit externen Spannungsquellen;376
7.16;5.16 Vom Schaltplan zum Layout;378
7.16.1;5.16.1 EAGLE Light;379
8;6 Sensoren und Software für Infrarot und Ultraschall;384
8.1;6.1 LIRC als Empfänger;385
8.1.1;6.1.1 Kommandos per IR-Fernbedienung auslösen;391
8.1.2;6.1.2 Ein Auswahlmenü auf dem LCD-Display;394
8.2;6.2 Entfernungsmessung per Ultraschall;397
8.3;6.3 Ein Abstandswarner mit ultraloop.c im Qt Creator;402
8.4;6.4 Entfernungsmessung mit Infrarotlicht;407
8.4.1;6.4.1 Distanzmessung über den MCP3426 als A/D-Wandler;409
9;7 Netzwerke und der Fernzugriff auf den Raspberry Pi;410
9.1;7.1 Die automatische Vergabe von IP-Adressen;413
9.2;7.2 Netzwerkkabel, Übertragungsraten und ethtool;422
9.3;7.3 Eine Direktverbindung zum Raspberry Pi;423
9.3.1;7.3.1 Die Link-Local-IP;427
9.4;7.4 Netzwerkkameras;428
9.4.1;7.4.1 Eine Direktverbindung für Netzwerkkameras;430
9.5;7.5 Der SSH-Server und ein Linux-PC als Client;431
9.5.1;7.5.1 SSH und die Weiterleitung des X11-Fensters;436
9.5.2;7.5.2 Fingerabdrücke auf (micro)SD-Karten;438
9.6;7.6 Zwei Schlüssel zum Vergleich – SSH ohne Passwort;439
9.7;7.7 PuTTY als Windows-Client;441
9.8;7.8 Remote-Zugriff mit WinSCP und Krusader als Client;445
9.9;7.9 Der SSH-Fernzugriff per ASCII-GUI;449
9.9.1;7.9.1 Ein Desktop-Icon auf dem Client-PC;449
9.10;7.10 Ein Remote-Desktop mit TightVNC;450
9.11;7.11 Energie sparen mit TMux;453
9.12;7.12 Die ASCII-GUI pgrep_gui.sh;458
9.13;7.13 TMux und die ASCII-GUI pgrep_gui.sh;462
9.13.1;7.13.1 TMux-Skripting;464
9.14;7.14 WLAN-Verbindungen und WLAN-Sticks;466
9.14.1;7.14.1 WLAN-Verbindungen und wpa_gui;470
9.15;7.15 Die Netzwerk-Tools arp-scan und nmap;472
9.16;7.16 Netcat – vom Chatprogramm zum Videoempfänger;474
9.17;7.17 Fünf Wege zum Raspberry Pi;475
9.18;7.18 Über Android zum Raspberry Pi;477
9.18.1;7.18.1 Über F-Droid zu ConnectBot;478
9.19;7.19 Über USB OTG zum Raspberry Pi Zero;481
10;8 Audio und Composite Video am Pi;484
10.1;8.1 Buchsen, Kabel, Signale;484
10.2;8.2 Audiowiedergabe;488
10.3;8.3 Der AlsaMixer;495
10.4;8.4 Audioaufzeichnung und ALSA-Tools;497
10.4.1;8.4.1 SoX mit der Webcam als Audioquelle;500
10.4.2;8.4.2 SoX passt auf – Reaktion auf Geräusche;506
10.4.3;8.4.3 Informationen zur Audiodatei mit soxi;509
10.4.4;8.4.4 Audioaufzeichnung im Remote-Modus;510
10.4.5;8.4.5 Lautsprecherdurchsagen aus sicherem Abstand (remote);513
10.4.6;8.4.6 Externe USB-Soundkarten und das Programm speaker-test;514
10.5;8.5 Sprachsynthese auf dem Linux-PC;518
10.5.1;8.5.1 Sprachausgabe mit eSpeak;519
10.5.2;8.5.2 Sprachausgabe über tts.sh mit eSpeak, SVOX-Pico und Festival;520
11;9 Videodaten – Aufzeichnung und Wiedergabe;524
11.1;9.1 Der OMXPlayer;525
11.1.1;9.1.1 Kommandos für den OMXPlayer (DBUS-Interface);527
11.2;9.2 Videodateien aus dem Internet holen;529
11.3;9.3 Archivierte Videos abspielen mit guiPlay.sh;533
11.4;9.4 Videoplayer und multiplay.sh;541
11.5;9.5 Wiedergabe mit videoselect.sh und avplay;545
11.6;9.6 Wo ist das Videogerät?;546
11.7;9.7 Daten zum Videogerät mit dem V4L-Treiber;549
11.8;9.8 MPEG-Spezifikationen, Codecs und Containerdateien;552
11.9;9.9 Fotografieren und Filmen mit guvcview;553
11.10;9.10 Fotografieren mit fswebcam;557
11.11;9.11 Die libav-tools und avconv (bzw. ffmpeg);563
11.11.1;9.11.1 Der Webcam-Zugriff mit avconv;564
11.11.2;9.11.2 Vertonung mit avconv;566
11.11.3;9.11.3 Bildschirmvideos mit dem Raspberry Pi;567
11.11.4;9.11.4 Videos konvertieren mit WinFF;569
11.12;9.12 Motion auf dem Pi;571
11.12.1;9.12.1 Der Programmstarter motiongui.sh;574
11.12.2;9.12.2 Der Blick auf die Uhr;579
11.12.3;9.12.3 Motion-Parameter geeignet festlegen;581
11.12.4;9.12.4 Namen für Bilder und Videodateien;587
11.12.5;9.12.5 Einblendung von Zeitstempeln und Texten;588
11.12.6;9.12.6 Markierte Bewegungen;589
11.12.7;9.12.7 Bewegungsalarm auf Teilbereichen des Bildes;590
11.12.8;9.12.8 Automatische E-Mails bei Ereignissen;593
11.12.9;9.12.9 Den Videostream anzeigen und weiterleiten;594
11.12.10;9.12.10 Parameteränderung per ASCII-GUI und setvalue.sh;597
12;10 Kameramodule zum Raspberry Pi;598
12.1;10.1 Das 8-Megapixel-Kameramodul mit Sony-IMX219-Sensor;602
12.2;10.2 Fotos mit raspistill;604
12.2.1;10.2.1 EXIF-Daten ermitteln;609
12.2.2;10.2.2 Fotografieren mit fotomenu.sh;610
12.2.3;10.2.3 Der manuelle Belichtungsmodus;612
12.2.4;10.2.4 Fotografieren mit Zeit-/ISO-Automatik;614
12.2.5;10.2.5 Farben und Spezialeffekte;617
12.2.6;10.2.6 Fotos bei sehr wenig Licht und im Signalmodus;621
12.3;10.3 Konverter für Einzelbilder;625
12.4;10.4 Bilder und das FBI;626
12.5;10.5 Videos aufzeichnen mit raspivid;629
12.6;10.6 Videodateien mit MP4Box und avconv verarbeiten;632
12.7;10.7 Der UV4L-Treiber zum Kameramodul des Raspberry Pi;634
12.7.1;10.7.1 Fotografieren mit multicam.sh;638
12.7.2;10.7.2 Filmen mit dd;642
12.8;10.8 Binning bei raspistill und raspivid;643
12.9;10.9 Motion und das Kameramodul;646
13;11 Automatischer Datentransfer;652
13.1;11.1 SFTP-Kommandos per Skript ausführen;653
13.2;11.2 Eine RAM-Disk als Zwischenpuffer;657
13.2.1;11.2.1 Bilder auf der RAM-Disk;658
13.2.2;11.2.2 Die RAM-Disk überwachen;660
13.3;11.3 Datentransfer mit FileZilla;662
14;12 Audiosignale analysieren;664
14.1;12.1 Audacity;666
14.2;12.2 Die Verwendung von libsndfile;668
14.2.1;12.2.1 Die Abtastwerte einer Audiodatei in Textform;670
14.2.2;12.2.2 Ein Blick auf die Dokumentation;671
14.2.3;12.2.3 Ausgabeumleitung für Audiodaten mit sndout.cpp;672
14.3;12.3 Pausenerkennung und Segmentierung;676
14.3.1;12.3.1 Audiosegmentierung und Sprachausgabe mit audiosegm.cpp;677
14.4;12.4 Die Library tinyalsa;682
14.4.1;12.4.1 Abtastraten mit tinypcminfo.c ermitteln;684
14.4.2;12.4.2 Audioaufnahmen mit capaudio.sh und tinycap.c;685
14.5;12.5 Der Pi als Papagei;689
14.6;12.6 Spektrogramme mit sndfile-tools und Audacity;691
14.7;12.7 Vokaltraining mit voxvokal.sh;700
14.8;12.8 Das Audioquiz;704
15;13 OpenCV und der Pi;708
15.1;13.1 Die Konfiguration von OpenCV;709
15.2;13.2 Mit dem Compiler zur ausführbaren Datei;712
15.3;13.3 OpenCV – Dokumentation und Beispielprogramme;716
15.4;13.4 OpenCV, CMakeGUI und Code::Blocks;719
15.5;13.5 Die Qt-Projektdateien zu den Beispielprogrammen;721
15.6;13.6 Das Programm fpsec.cpp auf dem Pi benutzen;724
15.6.1;13.6.1 Fenster und Tastaturcodes von fpsec.cpp;725
15.6.2;13.6.2 Konturbilder vom Webcambild;726
15.6.3;13.6.3 Konturbilder vom Videobild;727
15.6.4;13.6.4 FloodFill auf dem Videobild;728
15.7;13.7 Programmierung mit OpenCV;729
15.7.1;13.7.1 Grundlegende Datentypen und OpenCV-Klassen;729
15.7.2;13.7.2 Fenster, Steuerelemente und cv::waitKey;731
15.7.3;13.7.3 Optimierung von Farb- und Grauwertbildern per Tastendruck;732
15.7.4;13.7.4 Binarisierung von Bildern mit cv::threshold;735
15.7.5;13.7.5 Regionen und Beschriftungen;737
15.8;13.8 Konfiguration für die WITH_QT-Oberfläche;738
16;14 Objektsegmentierung mit OpenCV;740
16.1;14.1 Segmentierung von Textzeilen;740
16.2;14.2 Symbolerkennung mit iconreader.cpp;743
16.3;14.3 Symbolerkennung auf Webcambildern;746
16.3.1;14.3.1 Einsatzzweck, Bedienung und Tastaturcodes;748
16.3.2;14.3.2 Vom Graustufenbild zum Erkennungsresultat;753
16.3.3;14.3.3 Der Alarm und die Statistik;759
16.4;14.4 Die sprechende Lichtschranke;761
17;15 Experimente;762
17.1;15.1 Booten mit Sprachausgabe;762
17.2;15.2 Ein Eingabemodul mit IR-Detektor und LCD-Display;765
17.2.1;15.2.1 Den Schaltungsaufbau planen;768
17.2.2;15.2.2 Lötarbeiten für die Elektronik zum DOGM204 LCD-Display;770
17.2.3;15.2.3 Das LCD-Display testen;771
17.2.4;15.2.4 Das Eingabemodul eichen;773
17.2.5;15.2.5 Die Drehung des Codierschalters auswerten;776
17.3;15.3 Ein Client/Server-Konzept für das Eingabemodul;777
17.3.1;15.3.1 Nur mit Maus und Display?;783
17.4;15.4 Ein Client/Server-Konzept mit menuctrl.sh;786
17.4.1;15.4.1 Fotos mit MenuCtrl;791
17.5;15.5 Über MenuCtrl fswebcam starten/beenden;794
17.6;15.6 Die hello_pi GPU-Programme mit MenuCtrl starten/beenden;795
17.7;15.7 MenuCtrl im Infrarotlicht;797
17.8;15.8 MenuCtrl schon beim Booten starten;802
18;16 Schlusswort;804
19;17 Übersicht der Programme und Skriptdateien zum Buch;806
20;Stichwortverzeichnis;812