Raspberry Pi - Das umfassende Handbuch
von: Michael Kofler, Charly Kühnast, Christoph Scherbeck
Rheinwerk Computing, 2015
ISBN: 9783836237970
Sprache: Deutsch
1089 Seiten, Download: 20785 KB
Format: EPUB, PDF, auch als Online-Lesen
Vorwort | 15 | ||
TEIL I Den Raspberry Pi kennenlernen | 19 | ||
1 Kauf und Inbetriebnahme | 21 | ||
1.1 Kauf | 21 | ||
Raspberry-Pi-Modelle | 22 | ||
Anschlüsse | 24 | ||
Netzteil | 26 | ||
SD-Karte | 27 | ||
Gehäuse | 29 | ||
Tastatur und Maus | 29 | ||
USB-Hub | 30 | ||
WLAN- und Bluetooth-Adapter | 31 | ||
Was Sie sonst noch brauchen | 31 | ||
1.2 Raspberry-Pi-Distributionen | 32 | ||
1.3 NOOBS-Installation | 33 | ||
SD-Karte formatieren | 34 | ||
USB-SD-Card-Reader | 35 | ||
NOOBS | 36 | ||
1.4 Image-Datei auf eine SD-Karte schreiben | 40 | ||
Image-Dateien herunterladen | 40 | ||
Image-Datei unter Windows auf eine SD-Karte übertragen | 41 | ||
Image-Datei unter OS X auf eine SD-Karte übertragen | 42 | ||
Image-Datei unter Linux auf eine SD-Karte übertragen | 44 | ||
Distributionsspezifische Installationsprogramme | 45 | ||
1.5 Installation auf einen USB-Stick | 45 | ||
Vor- und Nachteile | 45 | ||
USB-Stick vorbereiten | 46 | ||
SD-Karte vorbereiten | 46 | ||
Systempartition vergrö\T1\ss ern | 47 | ||
2 Erste Schritte in Raspbian | 51 | ||
2.1 Das Konfigurationsprogramm raspi-config | 52 | ||
Expand Filesystem | 52 | ||
Change User Password | 53 | ||
Enable Boot to Desktop/Scratch | 53 | ||
Internationalisation Options | 53 | ||
Enable Camera | 54 | ||
Add to Rastrack | 54 | ||
Overclock | 55 | ||
Advanced Options | 55 | ||
Neustart | 56 | ||
2.2 Ein- und Ausschalten | 57 | ||
Wenn der Raspberry\unhbox \voidb@x \penalty \@M Pi abstürzt | 57 | ||
2.3 Die Benutzeroberfläche LXDE | 58 | ||
Icons | 59 | ||
Das Panel | 59 | ||
Programme starten | 60 | ||
Optische Gestaltung des Desktops | 61 | ||
Tastenkürzel | 61 | ||
Bildschirmschoner | 63 | ||
2.4 Wichtige Programme | 64 | ||
Der Dateimanager | 64 | ||
LXTerminal | 65 | ||
Leafpad und Gedit (Editoren) | 66 | ||
Internet und Spiele | 68 | ||
Bild- und PDF-Viewer | 71 | ||
Audio- und Video-Player | 71 | ||
Textverarbeitung und Tabellenkalkulation | 74 | ||
Software-Entwicklung | 74 | ||
Screenshots | 75 | ||
2.5 WLAN-Konfiguration | 76 | ||
2.6 Bluetooth-Konfiguration | 78 | ||
2.7 USB-Sticks und -Festplatten | 79 | ||
2.8 Drucker | 80 | ||
3 Arbeiten im Terminal | 83 | ||
3.1 Erste Experimente | 83 | ||
Dateien und Verzeichnisse | 84 | ||
Zugriff auf Systemdateien | 84 | ||
Hardware-Tests | 85 | ||
vcgencmd | 86 | ||
Software-Verwaltung | 86 | ||
Freien Speicherplatz ermitteln | 87 | ||
Online-Hilfe | 88 | ||
3.2 Eingabeerleichterungen und Tastenkürzel | 89 | ||
alias-Abkürzungen definieren | 91 | ||
Textkonsolen | 91 | ||
3.3 Farbspiele | 92 | ||
Den Prompt individuell einrichten | 92 | ||
ls-Farben | 93 | ||
3.4 Die Bourne Again Shell (bash) | 94 | ||
Jokerzeichen | 95 | ||
Ein- und Ausgabeumleitung | 96 | ||
Kommandos im Hintergrund ausführen | 97 | ||
Mehrere Kommandos ausführen | 97 | ||
Rechnen in der bash | 99 | ||
Umgebungsverhalten | 99 | ||
3.5 Arbeiten mit Administratorrechten (sudo) | 100 | ||
sudo-Anwendung | 101 | ||
sudo-Konfiguration | 101 | ||
3.6 Textdateien lesen und ändern | 103 | ||
cat und less | 103 | ||
tail | 104 | ||
grep | 104 | ||
Texteditoren | 105 | ||
nano | 106 | ||
Vi | 107 | ||
jmacs | 108 | ||
3.7 Verzeichnisse und Dateien | 109 | ||
Verzeichnisse | 109 | ||
Linux-Verzeichnisbaum | 110 | ||
Dateien auflisten | 111 | ||
Verborgene Dateien und Verzeichnisse sichtbar machen | 112 | ||
Dateien suchen | 113 | ||
Textdateien inhaltlich durchsuchen | 114 | ||
Links | 115 | ||
3.8 Komprimierte Dateien und Archive | 116 | ||
Komprimieren und dekomprimieren | 117 | ||
TAR-Archive | 118 | ||
ZIP-Archive | 119 | ||
3.9 Prozessverwaltung | 119 | ||
Liste aller laufenden Prozesse | 120 | ||
Prozesshierarchie | 122 | ||
Prozesse abbrechen | 123 | ||
Prozesspriorität einstellen | 123 | ||
Systemdienste steuern | 124 | ||
3.10 Netzwerkkommandos | 125 | ||
Netzwerkstatus ermitteln | 125 | ||
Dateien per FTP und HTTP übertragen | 127 | ||
4 Arbeitstechniken | 129 | ||
4.1 Programme installieren und verwalten | 130 | ||
Programme bzw. Pakete installieren | 130 | ||
Programme bzw. Pakete entfernen | 131 | ||
Informationen über Pakete ermitteln | 131 | ||
4.2 Updates | 133 | ||
Raspbian aktualisieren | 133 | ||
Firmware- und Kernel-Updates | 134 | ||
4.3 SSH | 137 | ||
Voraussetzungen auf dem Raspberry\unhbox \voidb@x \penalty \@M Pi | 137 | ||
Voraussetzungen auf Ihrem Arbeitsrechner | 138 | ||
SSH anwenden | 138 | ||
Grafikprogramme ausführen | 140 | ||
SSH-Login mit Schlüsseln statt Passwörtern | 140 | ||
SSH-Login nach einer Raspberry-Pi-Neuinstallation | 141 | ||
Dateien kopieren mit scp | 142 | ||
Zugriff auf das Raspberry-Pi-Dateisystem im Dateimanager | 144 | ||
Die Kommandos ssh und scp auf dem Raspberry\unhbox \voidb@x \penalty \@M Pi nutzen | 144 | ||
4.4 VNC | 145 | ||
Erste Tests | 145 | ||
VNC-Viewer unter Windows | 146 | ||
VNC-Viewer unter OS X | 147 | ||
VNC-Viewer unter Linux | 147 | ||
Programme mit root-Rechten ausführen | 148 | ||
Start des VNC-Servers automatisieren | 149 | ||
VNC über einen SSH-Tunnel | 151 | ||
4.5 Netzwerkverzeichnisse nutzen | 153 | ||
Grundlagen | 153 | ||
Beispiele | 155 | ||
Verzeichnisse dauerhaft einbinden (/etc/fstab) | 157 | ||
4.6 Netzwerkverzeichnisse anbieten (Samba-Server) | 159 | ||
Ein Verzeichnis mit Passwortschutz freigeben | 161 | ||
Freigabe testen | 163 | ||
Weitere Verzeichnisse freigeben | 164 | ||
Ein Verzeichnis ohne Passwortschutz freigeben | 165 | ||
Absicherung und Grundeinstellungen | 165 | ||
4.7 Internetzugriff auf den Raspberry\unhbox \voidb@x \penalty \@M Pi | 166 | ||
Wo ist das Problem? | 166 | ||
Lösungsvarianten | 168 | ||
Alternativen | 169 | ||
4.8 Dynamisches DNS | 170 | ||
Wozu dient und wie funktioniert dynamisches DNS? | 170 | ||
Dynamisches DNS mit noip.com einrichten | 171 | ||
Port Forwarding einrichten | 172 | ||
Test | 174 | ||
Fehlersuche | 174 | ||
4.9 IPv6 | 176 | ||
IPv6 aktivieren | 176 | ||
gogoc-Installation | 176 | ||
Test | 179 | ||
4.10 FTP-Server einrichten | 179 | ||
vsftpd installieren | 180 | ||
Defaultkonfiguration | 180 | ||
Eigene Konfiguration | 181 | ||
FTP ausprobieren | 181 | ||
4.11 Programme beim Systemstart ausführen | 182 | ||
rc.local | 182 | ||
Autostart-Programme für den Desktop | 183 | ||
Autostart-Dateien für Openbox | 184 | ||
4.12 Programme regelmä\T1\ss ig ausführen (Cron) | 184 | ||
/etc/cron.xxx-Verzeichnisse | 184 | ||
/etc/crontab-Datei | 185 | ||
/etc/cron.d-Verzeichnis | 186 | ||
Benutzerspezifische Crontab-Dateien | 186 | ||
Anacron | 186 | ||
4.13 Monitor zeitgesteuert ein- und ausschalten | 187 | ||
Monitor ein- und ausschalten | 188 | ||
4.14 Backups erstellen | 188 | ||
Backups mit rsync | 189 | ||
Backups mit tar | 190 | ||
Backup einer SD-Karte unter Windows | 190 | ||
Backup einer SD-Karte unter OS X | 191 | ||
Backup einer SD-Karte unter Linux | 192 | ||
4.15 Overclocking | 192 | ||
Aktuelle Taktfrequenz und Temperatur ermitteln | 193 | ||
Overclocking-Parameter in config.txt | 193 | ||
Overclocking mit raspi-config | 194 | ||
4.16 Notfall-Tipps | 195 | ||
Stromversorgung | 195 | ||
SD-Karte | 196 | ||
Display-Probleme | 196 | ||
Status-Leuchtdioden (RPi1-A und RPi1-B) | 197 | ||
Status-Leuchtdioden (RPi1-B+ und RPi2) | 198 | ||
5 Linux-Grundlagen | 199 | ||
5.1 Benutzer und Gruppen | 200 | ||
Benutzer und Passwörter | 201 | ||
Gruppen | 203 | ||
Kommandos zur Benutzer- und Gruppenverwaltung | 204 | ||
sudo | 206 | ||
Auto-Login abstellen | 207 | ||
5.2 Zugriffsrechte | 208 | ||
Zugriffsrechte auf Dateien | 208 | ||
Zugriffsrechte auf Verzeichnisse | 209 | ||
Oktalschreibweise | 211 | ||
Zugriffsrechte einstellen | 212 | ||
Praxisbeispiele | 214 | ||
5.3 Paketverwaltung | 214 | ||
Konfiguration | 215 | ||
Hauptpaketquelle | 215 | ||
Weitere Paketquellen | 216 | ||
Aus welcher Paketquelle stammt ein Paket? | 217 | ||
5.4 Verwaltung des Dateisystems | 217 | ||
Dateisysteme | 217 | ||
Device-Dateien | 218 | ||
Das mount-Kommando | 220 | ||
Die Datei /etc/fstab | 222 | ||
Datenträger partitionieren und formatieren | 223 | ||
5.5 Netzwerkkonfiguration | 225 | ||
Glossar | 225 | ||
Die Datei /etc/network/interfaces | 228 | ||
Statische LAN-Konfiguration | 229 | ||
Manuelle WLAN-Konfiguration | 230 | ||
WLAN-Treiberprobleme (RTL8188eu) | 231 | ||
Nameserver-Konfiguration | 232 | ||
Hostname ändern | 233 | ||
5.6 Bluetooth | 234 | ||
Bluetooth-Geräte erkennen | 234 | ||
Pairing | 234 | ||
Verbindungsaufbau erzwingen | 235 | ||
5.7 Systemstart | 236 | ||
1st-Stage-Bootloader | 236 | ||
2nd-Stage-Bootloader (bootcode.bin) | 237 | ||
Kernelparameter (cmdline.txt) | 238 | ||
Kernelstart | 239 | ||
Init-Systeme | 240 | ||
Die Runlevel des Init-V-Systems | 240 | ||
Systeminitialisierung | 241 | ||
Runlevel 2 aktivieren | 242 | ||
Runlevel wechseln | 242 | ||
Reboot und Halt | 243 | ||
Systemdienste manuell starten und beenden | 243 | ||
Den Start von Systemdiensten aktivieren und deaktivieren | 244 | ||
Eigene Initialisierungsarbeiten durchführen | 244 | ||
Eigene Systemdienste einrichten | 245 | ||
5.8 Systemeinstellungen in config.txt | 246 | ||
HDMI-Einstellungen | 247 | ||
Overclocking | 248 | ||
Video-Decodierung | 248 | ||
Bootvorgang | 249 | ||
Hardware-Parameter | 249 | ||
Speicheraufteilung zwischen CPU und GPU | 250 | ||
Das Kommando vcgencmd | 250 | ||
5.9 Grafiksystem | 251 | ||
Start des Grafiksystems | 252 | ||
Auto-Start des Grafiksystems ein-/ausschalten | 252 | ||
Auto-Login ein-/ausschalten | 253 | ||
Manueller Start des Grafiksystems | 253 | ||
Neue Grafiktreiber und Wayland | 253 | ||
5.10 Kernel und Module | 254 | ||
Kernelmodule | 254 | ||
Module selbst kompilieren | 256 | ||
Den Kernel selbst kompilieren | 256 | ||
5.11 Device Trees | 257 | ||
Device-Tree-Dateien und -Konfiguration | 257 | ||
6 Ubuntu | 261 | ||
6.1 Installation | 262 | ||
Der MATE-Desktop | 263 | ||
6.2 Konfiguration und technische Details | 264 | ||
Die SD-Karte vollständig nutzen | 264 | ||
SSH-Server | 265 | ||
Systemd | 265 | ||
Grundlegende Entwicklungswerkzeuge | 265 | ||
RPi.GPIO | 266 | ||
Kernelmodule | 266 | ||
Zugriff auf die Kamera | 267 | ||
Hardware-Decodierung und Video-Wiedergabe | 268 | ||
7 Windows 10 | 269 | ||
7.1 Installation | 269 | ||
Image-Datei schreiben | 270 | ||
Inbetriebnahme | 271 | ||
7.2 Anwendung | 272 | ||
Fernwartung mit der PowerShell | 272 | ||
7.3 Programmentwicklung mit Visual Studio | 274 | ||
Hello World! | 275 | ||
GPIOs steuern | 277 | ||
Weitere Beispiele | 279 | ||
TEIL II Der Raspberry Pi als Media-Center | 281 | ||
8 Audio-Player mit Smartphone-Fernbedienung | 283 | ||
8.1 MPD-Installation und -Konfiguration | 283 | ||
Netzwerkkonfiguration | 284 | ||
MPD-Installation und -Konfiguration | 284 | ||
Erste Tests mit Xfmpc | 286 | ||
Tonausgabe zwischen HDMI und Analog-Audio umschalten | 287 | ||
MPDroid | 288 | ||
8.2 MPD-Konfigurationsvarianten | 289 | ||
Audio-Dateien auf einem USB-Stick | 289 | ||
Audio-Dateien auf einem NAS | 291 | ||
PulseAudio | 293 | ||
CD-Cover-Abbildungen | 294 | ||
Weboberfläche zur Steuerung | 296 | ||
Musik als Audio-Stream verteilen (Icecast) | 296 | ||
8.3 HiFiBerry | 299 | ||
Perfekter Klang für Audiophile | 299 | ||
HiFiBerry DAC+ | 300 | ||
Konfiguration | 301 | ||
8.4 Volumio | 302 | ||
Installation und Konfiguration | 303 | ||
HiFiBerry und AirPlay | 304 | ||
Interna und Absicherung | 305 | ||
Einschränkungen | 306 | ||
8.5 Pi MusicBox | 306 | ||
Installation | 307 | ||
Konfiguration | 307 | ||
9 Multimedia-Center mit Kodi und OpenELEC | 309 | ||
9.1 OpenELEC-Installation und -Konfiguration | 310 | ||
Standardinstallation auf eine SD-Karte | 310 | ||
Installation auf einen USB-Stick (für Fortgeschrittene) | 311 | ||
OpenELEC-Erstkonfiguration | 312 | ||
Bluetooth | 314 | ||
Netzwerk- und WLAN-Konfiguration | 314 | ||
SSH nutzen | 314 | ||
SSH absichern | 316 | ||
Samba absichern | 317 | ||
Überblick über das OpenELEC-Dateisystem | 317 | ||
Hardware-Decodierung für MPEG-2 und VC-1 aktivieren | 317 | ||
Overclocking | 319 | ||
Audio-Ausgang wählen | 320 | ||
RSS-Newsfeed abstellen | 320 | ||
Kodi-Layout (Skins) | 320 | ||
Screenshots | 320 | ||
Updates | 321 | ||
9.2 Fernbedienung | 321 | ||
CEC-Fernbedienung | 322 | ||
Smartphone-Fernbedienung | 322 | ||
Infrarot-Fernbedienung | 323 | ||
9.3 Kodi-Betrieb | 326 | ||
Das erste Video abspielen | 326 | ||
Video-Dateien eines USB-Sticks abspielen | 328 | ||
Zugriff auf Video-Dateien aus Netzwerkverzeichnissen | 329 | ||
Videos aus dem Internet | 331 | ||
Audio-Dateien abspielen | 331 | ||
Internet-Radios und Spotify | 333 | ||
AirPlay | 333 | ||
10 Multimedia-System mit Plex | 335 | ||
10.1 Kodi oder Plex? | 335 | ||
Plex-Vorteile | 336 | ||
Plex-Nachteile | 336 | ||
Glossar | 337 | ||
10.2 Plex-Server-Konfiguration | 338 | ||
10.3 RasPlex-Installation und -Konfiguration | 341 | ||
Installation | 341 | ||
Konfigurationsprogramme | 343 | ||
WLAN-Konfiguration | 345 | ||
Plex-Login | 345 | ||
SSH und Samba | 345 | ||
Hardware-Decodierung für MPEG-2 und VC-1 aktivieren | 345 | ||
Audio-Ausgang | 346 | ||
Fernbedienung | 346 | ||
Bluetooth-Geräte | 347 | ||
Bildschirmschoner | 347 | ||
Screenshots | 347 | ||
10.4 Plex-Anwendung | 348 | ||
TEIL III Hardware-Grundlagen | 351 | ||
11 Hardware-Einstieg | 353 | ||
11.1 Platinenaufbau | 353 | ||
11.2 Der BCM2836 | 354 | ||
11.3 GPIO-Kontakte | 356 | ||
Der J8-Header | 356 | ||
Nummerierungssysteme bzw. Pin-Namen | 357 | ||
Das 50-mA-Limit | 358 | ||
Welcher Pin für welchen Zweck? | 358 | ||
GPIO-Verbindungen herstellen | 362 | ||
Vorsichtsma\T1\ss nahmen | 363 | ||
11.4 Stromversorgung | 363 | ||
Das Steckernetzteil | 364 | ||
Betrieb mit einer USB-Powerbank | 364 | ||
Betrieb mit AA-Batterien | 366 | ||
Der Linearregler 7805 | 367 | ||
Der Schaltregler LM2596S | 368 | ||
Versorgung über den USB-Port | 370 | ||
11.5 Gehäuse | 371 | ||
The Punnet -- Das kostenlose Papiergehäuse | 371 | ||
Das Legogehäuse | 372 | ||
Multi-Pi -- Das stapelbare Raspberry-Pi-Gehäuse | 372 | ||
Standardgehäuse für den Raspberry Pi 2 | 373 | ||
12 Elektrotechnik-Crashkurs | 375 | ||
12.2 Grundschaltungen | 377 | ||
Darstellung der Schaltpläne | 377 | ||
Reihenschaltung | 378 | ||
Parallelschaltung | 379 | ||
Kombinierte Schaltung | 379 | ||
Spannungsteiler | 381 | ||
12.3 Elektronische Grundbauteile | 382 | ||
Diode | 382 | ||
Leuchtdiode | 382 | ||
Kondensator | 384 | ||
Spule | 384 | ||
Transistor | 385 | ||
Relais | 386 | ||
12.4 Das Multimeter | 387 | ||
12.5 Breadboard oder Platine? | 390 | ||
Breadboards | 390 | ||
Streifen- oder Lochrasterplatinen | 391 | ||
12.6 Löten | 392 | ||
12.7 Breadboardadapter | 394 | ||
Breadboardadapter selbst erstellen | 394 | ||
Cobbler | 396 | ||
13 LEDs | 1 | ||
13.1 Leuchtdioden (LEDs) | 399 | ||
LED im Dauerbetrieb | 399 | ||
LED per Python ein- und ausschalten | 401 | ||
LEDs über Transistoren schalten | 402 | ||
LEDs mit Darlington-Transistoren ansteuern | 403 | ||
LEDs mit einem Taster ein- und ausschalten | 405 | ||
LEDs mit Software-PWM dimmen | 410 | ||
LEDs mit Hardware-PWM dimmen | 412 | ||
RGB-LEDs | 413 | ||
13.2 Optokoppler | 417 | ||
13.3 Elektromotoren | 418 | ||
Der geeignete Motor | 419 | ||
Gleichstrom- und Wechselstrommotoren | 419 | ||
Die H-Brücke | 421 | ||
Der Motortreiber L298 | 423 | ||
Verdrahtung und Software | 424 | ||
Motordrehzahl per Software ändern | 429 | ||
13.4 Schrittmotoren | 431 | ||
Bipolare Ansteuerung | 432 | ||
Unipolare Ansteuerung | 436 | ||
Intelligente Schrittmotortreiber | 438 | ||
13.5 Servomotoren | 441 | ||
Servo-Programmierung mit {\T1\guillemotright }pigpio{\T1\guillemotleft } | 444 | ||
13.6 Relais | 447 | ||
Relaistypen | 447 | ||
14 Bussysteme | 451 | ||
14.1 SPI | 451 | ||
SPI per raspi-config einrichten | 452 | ||
SPI manuell einrichten | 453 | ||
Das digitale Potenziometer | 454 | ||
Daten per SPI senden | 456 | ||
Daten per SPI lesen | 459 | ||
14.2 Der Analog-/Digitalwandler MCP3008 | 460 | ||
14.3 Der Digital-/Analogwandler MCP4811 | 465 | ||
SPI-Bauteile | 470 | ||
14.4 I$^{\protect \unhbox \voidb@x \setbox \z@ \hbox {2}\dimen@ -\wd \z@ \kern -.5\ex@ \copy \z@ \kern \dimen@ \kern .25\ex@ \raise .4\ex@ \copy \z@ \kern \dimen@ \kern .25\ex@ \box \z@ }$C | 471 | ||
Der Portexpander MCP23017 | 473 | ||
I$^{\protect \unhbox \voidb@x \setbox \z@ \hbox {2}\dimen@ -\wd \z@ \kern -.5\ex@ \copy \z@ \kern \dimen@ \kern .25\ex@ \raise .4\ex@ \copy \z@ \kern \dimen@ \kern .25\ex@ \box \z@ }$C in Python | 478 | ||
14.5 UART | 480 | ||
UART aktivieren und säubern | 480 | ||
Zwei Raspberry\unhbox \voidb@x \penalty \@M Pi via UART verbinden | 481 | ||
Minicom | 483 | ||
UART in Python | 484 | ||
Wichtige pySerial-Funktionen | 485 | ||
14.6 Der Audiobus I$^{\protect \unhbox \voidb@x \setbox \z@ \hbox {2}\dimen@ -\wd \z@ \kern -.5\ex@ \copy \z@ \kern \dimen@ \kern .25\ex@ \raise .4\ex@ \copy \z@ \kern \dimen@ \kern .25\ex@ \box \z@ }$S | 486 | ||
14.7 1-Wire | 487 | ||
15 Sensoren | 489 | ||
15.1 PIR-Bewegungssensor | 489 | ||
Programmierung | 491 | ||
15.2 Ultraschallsensor | 493 | ||
Hardware | 493 | ||
Programmierung | 494 | ||
15.3 Wasserstandssensor | 496 | ||
15.4 Bodenfeuchtigkeitssensor | 497 | ||
Automatische Bewässerung | 499 | ||
15.5 Temperatursensoren | 502 | ||
Der Temperatursensor DS1820 | 502 | ||
Temperatur- und Luftfeuchtigkeitssensor DHT22/AM2302 | 505 | ||
15.6 Fotowiderstand | 509 | ||
15.7 Das Multi-Analogsensor-Board PCF8591 | 511 | ||
15.8 Raspberry\unhbox \voidb@x \penalty \@M Pi Camera Board und PiNoIR | 514 | ||
Anschluss | 515 | ||
raspistill und raspivid | 517 | ||
Kamerasteuerung durch Python | 518 | ||
Videos und Bilder am Raspberry\unhbox \voidb@x \penalty \@M Pi anzeigen | 520 | ||
Videostreams und Online-Zugriff | 521 | ||
VLC-Livestream | 523 | ||
FTP-Upload | 523 | ||
PiNoIR | 524 | ||
Infrarot-Scheinwerfer für die PiNoIR | 525 | ||
15.9 Reed-Kontakt | 527 | ||
15.10 Hardware Real Time Clock | 528 | ||
15.11 IR-Empfänger | 533 | ||
15.12 Leitfaden für fremde Sensoren | 534 | ||
16 Erweiterungsboards | 537 | ||
16.1 Das Gertboard | 538 | ||
Inbetriebnahme | 539 | ||
Die drei Taster | 540 | ||
Digitale Ein- und Ausgänge und Leuchtdioden | 543 | ||
Der Open-Collector-Treiber | 545 | ||
Der Motortreiber | 545 | ||
Der Analog/Digital-Wandler | 549 | ||
Der Digital/Analog-Wandler | 551 | ||
16.2 Der ATmega auf dem Gertboard | 553 | ||
Hello World! | 553 | ||
avrdude | 555 | ||
Die Arduino-IDE | 556 | ||
16.3 Logic-Level-Converter | 558 | ||
16.4 RasPiComm | 559 | ||
Der Joystick und die 5-V-Ausgänge | 561 | ||
Die Echtzeituhr | 561 | ||
Die Schnittstellen | 562 | ||
16.5 PiFace Digital 2 | 562 | ||
Der PiFace Digital Emulator | 564 | ||
Die PiFace-Bibliothek | 565 | ||
Interrupts und Events in der PiFace-Bibliothek | 566 | ||
PiFace Rack und die Jumper | 567 | ||
16.6 Quick2Wire Interface Board | 568 | ||
Anschlüsse | 569 | ||
Das Quick2Wire-Port-Expander-Board | 571 | ||
16.7 Unterbrechungsfreie Stromversorgung mit PiUSV | 572 | ||
Inbetriebnahme | 572 | ||
Konfiguration und Steuerung | 574 | ||
16.8 GertDuino | 575 | ||
Die Einrichtung | 576 | ||
Der Arduino Sketch | 578 | ||
Das Python-Programm auf dem Raspberry Pi | 578 | ||
Programme starten | 579 | ||
16.9 Raspberrry-Pi-HATs | 580 | ||
Prototyping HATs | 580 | ||
HATs und das EEPROM | 581 | ||
16.10 Adafruit PWM/Servo-HAT | 585 | ||
PWM-Signale erzeugen | 586 | ||
Servomotoren ansteuern | 588 | ||
16.11 BrickPi | 589 | ||
16.12 GrovePi | 591 | ||
17 Displays | 593 | ||
17.1 7-Segment-Anzeige | 593 | ||
17.2 16$\protect \unhbox \voidb@x \setbox \z@ \hbox {\times }\dimen@ -\wd \z@ \kern -.5\ex@ \copy \z@ \kern \dimen@ \kern .25\ex@ \raise .4\ex@ \copy \z@ \kern \dimen@ \kern .25\ex@ \box \z@ $2-LC-Display | 597 | ||
Pin-Belegung | 598 | ||
Programmierung | 598 | ||
17.3 RaspiLCD | 602 | ||
Der Anschluss an den Raspberry Pi | 602 | ||
Die Ansteuerung mit Python | 604 | ||
Funktionsübersicht | 607 | ||
17.4 PiTFT -- Der Touchscreen für den Raspberry\unhbox \voidb@x \penalty \@M Pi | 609 | ||
Der Zusammenbau | 611 | ||
Die Einrichtung unter Raspbian | 612 | ||
Weiterführende Links | 613 | ||
17.5 Kfz-Rückfahrmonitore | 614 | ||
Darstellung optimieren | 616 | ||
17.6 LS-7T – Der Plug&Play-Touchscreen | 618 | ||
Der Anschluss | 620 | ||
Bildausschnitt anpassen | 620 | ||
Die Kalibrierung des Touchscreens | 621 | ||
17.7 Weitere Display-Boards | 622 | ||
C-Berry | 622 | ||
RPi-Display Plus von Watterott | 623 | ||
SainSmart Mini TFT Display | 623 | ||
HDMIPi | 623 | ||
Displays für den DSI-Anschluss | 624 | ||
TEIL IV Programmierung | 625 | ||
18 Python kennenlernen | 627 | ||
18.1 Python ausprobieren | 628 | ||
Python in einem Terminalfenster ausführen | 628 | ||
IDLE | 629 | ||
18.2 Python-Konzepte interaktiv kennenlernen | 630 | ||
Zahlen | 631 | ||
Zeichenketten | 633 | ||
Listen | 635 | ||
Tupel (Sequenzen) | 637 | ||
Sets (Mengen) | 638 | ||
Dictionaries (Assoziative Arrays) | 639 | ||
18.3 Hello World! | 640 | ||
Texteditoren | 641 | ||
{\T1\guillemotright }Hello World{\T1\guillemotleft } mit LeafPad verfassen und ausprobieren | 641 | ||
{\T1\guillemotright }Hello World{\T1\guillemotleft } in IDLE3 verfassen und ausprobieren | 644 | ||
Noch ein Einführungsbeispiel | 645 | ||
19 Python-Grundlagen | 647 | ||
19.1 Elementare Syntaxregeln | 647 | ||
Anweisungen | 647 | ||
Blockelemente | 648 | ||
649 | |||
print in Python 2 | 650 | ||
input | 650 | ||
Module und {\T1\guillemotright }import{\T1\guillemotleft } | 651 | ||
Kommentare | 652 | ||
Eingebaute Hilfe | 652 | ||
19.2 Variablen und Objekte | 653 | ||
Variablen | 654 | ||
Mutable oder immutable | 655 | ||
Veränderliche Daten kopieren | 656 | ||
Datentypen | 657 | ||
Typumwandlung | 658 | ||
Variablen und Daten vergleichen | 659 | ||
Gültigkeit von Variablen | 660 | ||
Garbage Collection | 661 | ||
Shared References | 662 | ||
19.3 Operatoren | 663 | ||
Zuweisungen | 665 | ||
Extended Sequence Unpacking | 666 | ||
19.4 Verzweigungen (if) | 666 | ||
if-Verzweigungen | 666 | ||
Bedingungen | 667 | ||
if-Kurzschreibweise | 667 | ||
19.5 Schleifen (for und while) | 668 | ||
Schleifen über Zahlenbereiche (range) | 669 | ||
Schleifen über die Zeichen einer Zeichenkette | 670 | ||
Schleifen über Dictionaries | 671 | ||
Schleifen über alle Script-Parameter | 672 | ||
Schleifen über die Zeilen einer Textdatei | 673 | ||
Schleifen über alle Dateien eines Verzeichnisses | 673 | ||
19.6 Zeichenketten | 674 | ||
Unicode | 675 | ||
raw-Zeichenketten | 676 | ||
String-Konvertierung und -Formatierung | 676 | ||
Reguläre Ausdrücke | 678 | ||
19.7 Listen | 680 | ||
map | 680 | ||
reduce | 682 | ||
filter | 682 | ||
zip | 683 | ||
19.8 Umgang mit Fehlern (Exceptions) | 683 | ||
try/except | 683 | ||
Fehler in Funktionen und Methoden | 686 | ||
with/as | 687 | ||
Selbst Exceptions auslösen | 688 | ||
Programmunterbrechungen abfangen | 688 | ||
19.9 Funktionen | 689 | ||
Eigene Funktionen definieren | 690 | ||
Lokale und globale Variablen | 691 | ||
Funktionsparameter | 693 | ||
Optionale Parameter | 694 | ||
Variable Parameteranzahl | 695 | ||
Lambda-Funktionen | 697 | ||
Funktionales Programmieren | 698 | ||
19.10 Objektorientiertes Programmieren | 699 | ||
Eigene Klassen definieren | 700 | ||
Methoden | 701 | ||
Konstruktor | 702 | ||
Klassenvariablen und Namensräume | 703 | ||
Private Klassenvariablen | 705 | ||
Getter- und Setter-Methoden | 705 | ||
Operator Overloading | 706 | ||
Beispiel: Rechteck-Klasse | 707 | ||
Vererbung | 708 | ||
19.11 Systemfunktionen | 711 | ||
Zugriff auf die Programmparameter | 711 | ||
Zugriff auf Standardeingabe und Standardausgabe | 712 | ||
Modul-Metainformationen ermitteln | 712 | ||
Programm beenden | 712 | ||
Andere Programme bzw. Kommandos aufrufen | 713 | ||
Warten (sleep) | 714 | ||
20 Programmieren mit Python | 715 | ||
20.1 Programmieren lernen | 715 | ||
Beispiel 1: die Summe der Zahlen von 1 bis 1000 ausrechnen | 716 | ||
Beispiel 2: die Fakultäten von 1! bis 40! ausrechnen | 717 | ||
Beispiel 3: Palindromtest | 719 | ||
20.2 GPIO-Zugriff | 720 | ||
GPIO-Pins lesen und verändern | 720 | ||
Taster und Schalter | 723 | ||
Software-PWM | 724 | ||
Version des Raspberry-Pi-Modells herausfinden | 725 | ||
20.3 Reset/Shutdown-Taste | 726 | ||
Hard-Reset-Button | 726 | ||
Soft-Reset-Button | 726 | ||
20.4 Kamera | 728 | ||
Fotos aufnehmen | 728 | ||
Videos aufnehmen | 730 | ||
Kameraparameter steuern | 731 | ||
20.5 Dateien bei Dropbox hochladen | 732 | ||
Foto mit Datum- und Zeitinfos hochladen | 734 | ||
20.6 E-Mails versenden | 735 | ||
Eine E-Mail mit Bitmap versenden | 736 | ||
Eine Aufnahme der Raspberry-Pi-Kamera versenden | 737 | ||
20.7 Textdateien lesen und schreiben | 737 | ||
CSV-Dateien | 739 | ||
Messdaten verarbeiten | 740 | ||
20.8 Grafikprogrammierung | 742 | ||
pygame und Python 3 | 742 | ||
Hello World! | 743 | ||
pygame-Zeichenmethoden | 745 | ||
Bilder speichern | 747 | ||
Grafikspielereien | 747 | ||
Temperaturkurve zeichnen | 751 | ||
20.9 Grafische Benutzeroberflächen mit tkinter | 754 | ||
Steuerelemente anordnen | 755 | ||
Ereignisverarbeitung | 760 | ||
Aufräumarbeiten beim Programmende | 761 | ||
LED ein- und ausschalten | 762 | ||
Helligkeit einer Leuchtdiode mit PWM steuern | 763 | ||
Tastenzustand anzeigen | 765 | ||
21 bash-Programmierung | 769 | ||
21.1 Einführung | 769 | ||
Hello World! | 769 | ||
Noch ein Beispiel | 769 | ||
Elementare Syntaxregeln | 770 | ||
Kommandos aufrufen | 771 | ||
In andere Scripts verzweigen | 772 | ||
bash oder Python? | 772 | ||
21.2 Variablen | 773 | ||
Variablen mit read einlesen | 774 | ||
Umgebungsvariablen | 775 | ||
Vordefinierte bash-Variablen | 775 | ||
Felder | 776 | ||
Parametersubstitution | 776 | ||
Zeichenketten bzw. Aufzählungen bilden | 778 | ||
21.3 Schleifen | 1 | ||
if-Verzweigungen | 779 | ||
test | 781 | ||
case | 782 | ||
for | 783 | ||
while und until | 784 | ||
break und continue | 786 | ||
function | 786 | ||
Umgang mit Fehlern | 787 | ||
exit | 788 | ||
Reaktion auf Signale (trap) | 788 | ||
21.4 WiringPi | 789 | ||
gpio-Kommando | 790 | ||
LED ein- und ausschalten | 791 | ||
LED-Helligkeit steuern (PWM) | 792 | ||
LED-Temperatur-Ampel | 792 | ||
22 C-Programmierung | 795 | ||
22.1 Hello World! | 795 | ||
Der GNU-C-Compiler | 795 | ||
make | 796 | ||
22.2 GPIOs steuern | 799 | ||
GPIO-Steuerung mit der WiringPi-Bibliothek | 799 | ||
GPIO-Steuerung mit der bcm2835-Bibliothek | 801 | ||
23 Java-Programmierung | 803 | ||
23.1 Erste Schritte | 803 | ||
Hello World! | 803 | ||
Entwicklungsumgebungen (IDEs) | 804 | ||
Java versus Python | 805 | ||
23.2 GPIO-Steuerung mit Java | 806 | ||
Installation | 806 | ||
Hello Pi4J! | 806 | ||
Mehr DigitalOutput-Steuerungsmöglichkeiten | 808 | ||
Pulse Width Modulation | 808 | ||
Eingaben verarbeiten | 809 | ||
24 PHP-Programmierung | 811 | ||
24.1 Apache installieren und konfigurieren | 812 | ||
Apache-Konfiguration | 813 | ||
24.2 Webverzeichnisse einrichten und absichern | 814 | ||
Eigene Webverzeichnisse definieren | 815 | ||
Beispiel | 816 | ||
Verzeichnisse absichern | 817 | ||
Passwortschutz für Webverzeichnisse | 818 | ||
.htaccess-Datei | 820 | ||
24.3 HTTPS | 820 | ||
24.4 PHP installieren und konfigurieren | 822 | ||
PHP ausprobieren | 822 | ||
24.5 MySQL installieren und administrieren | 823 | ||
MySQL installieren | 823 | ||
MySQL-Konfiguration | 824 | ||
Das mysql-Kommando | 825 | ||
Neue Datenbanken einrichten | 826 | ||
Datenbanken sichern und wiederherstellen | 826 | ||
Administration mit phpMyAdmin | 827 | ||
24.6 Hello World! in PHP | 828 | ||
Fehlersuche | 829 | ||
24.7 GPIO-Programmierung mit PHP | 830 | ||
GPIOs auslesen und verändern | 831 | ||
LED ein- und ausschalten | 831 | ||
Temperatur auslesen | 832 | ||
24.8 Kamerafunktionen mit PHP nutzen | 833 | ||
Apache den Kamerazugriff erlauben | 833 | ||
Ein Echtzeitfoto erstellen und übertragen | 834 | ||
Ein Foto mit frei wählbaren Aufnahmeparametern erstellen | 834 | ||
25 Mathematica und die Wolfram Language | 837 | ||
25.1 Arbeiten mit Mathematica | 837 | ||
Die grafische Benutzeroberfläche von Mathematica | 838 | ||
Rechnen in Mathematica | 839 | ||
Formeleingabe | 840 | ||
Grafik | 841 | ||
Mathematica im Textmodus | 842 | ||
Grafiken im Textmodus anzeigen | 843 | ||
Interna | 844 | ||
25.2 Programmieren mit der Wolfram Language | 844 | ||
Hello World! | 844 | ||
Syntax | 845 | ||
Funktionale Programmierung und symbolische Ausdrücke | 846 | ||
GPIO-Zugriff | 848 | ||
RaspiCam | 849 | ||
Wolfram Language -- Pro und Kontra | 850 | ||
Weitere Informationen und Links | 851 | ||
25.3 Grafische Darstellung von Temperaturdaten | 851 | ||
Temperaturaufzeichnung durch ein bash-Script | 852 | ||
Grafische Verarbeitung durch die Wolfram Language | 852 | ||
TEIL V Projekte | 855 | ||
26 Der Raspberry Pi im Vogelhaus | 857 | ||
26.1 Einbau des Raspberry\unhbox \voidb@x \penalty \@M Pi samt Kameramodul in ein Vogelhaus | 857 | ||
26.2 Kamerapraxis | 860 | ||
Das Kameramodul betriebsbereit machen | 860 | ||
Kamera-LED deaktivieren | 860 | ||
Standbilder mit raspistill aufnehmen | 861 | ||
ISO-Einstellung | 862 | ||
Zeitverzögerung und Zeitrafferfilme | 862 | ||
Videos aufzeichnen mit raspivid | 863 | ||
26.3 Bewegungserkennung mit motion | 864 | ||
Motion konfigurieren | 864 | ||
26.4 Das Vogelhaus im praktischen Einsatz | 867 | ||
Lichtverhältnisse und Bildqualität | 868 | ||
27 Zeitmessung mit Lichtschranken | 871 | ||
27.1 Versuchsaufbau (Hardware) | 871 | ||
Schaltungsaufbau mit IR-Lichtschranken | 871 | ||
27.2 Software | 874 | ||
Die pigpio-Bibliothek | 874 | ||
Programmcode | 875 | ||
28 Das autonome Auto | 877 | ||
28.1 Hardware | 877 | ||
Das Chassis | 877 | ||
Der Liniensensor | 878 | ||
Die Mechanik | 879 | ||
Anschlusspläne | 882 | ||
Die mobile Stromversorgung des Raspberry Pi | 883 | ||
Stromversorgung der Motoren | 884 | ||
Ausrichtung und erste Tests | 884 | ||
28.2 Die Software | 886 | ||
Die Jungfernfahrt | 888 | ||
29 RFID-Türöffner mit Zutrittskontrolle | 891 | ||
29.1 RFID-Hardware | 892 | ||
Die RFID-Technologie | 892 | ||
Reader und Transponder | 892 | ||
Verdrahtung | 894 | ||
29.2 Software | 895 | ||
Die Zugangsdatenbank | 895 | ||
Python-Code zum Auslesen der RFID-Transponder | 896 | ||
Python-Code zum MySQL-Zugriff | 897 | ||
Python-Code zum Hinzufügen der Transpondernummern | 898 | ||
Python-Hauptprogramm | 899 | ||
phpMyAdmin -- der Hausmeister | 900 | ||
29.3 Erweiterungsmöglichkeiten und Tipps | 901 | ||
Den Schrank abschlie\T1\ss en | 901 | ||
LCD-Modul statt bash-Ausgabe | 901 | ||
Sensor statt Zeitsteuerung | 901 | ||
Alarm bei falschem Transponder | 902 | ||
Die Empfangsantenne verstecken | 902 | ||
30 Stromzähler auslesen | 903 | ||
30.1 Stromzähler-Grundlagen | 903 | ||
Lesekopf und Signalwandler | 903 | ||
Die Smart Message Language | 906 | ||
30.2 Einführung in RRDtool | 907 | ||
Die Round-Robin-Datenbank erstellen | 907 | ||
Werte in die Datenbank eintragen | 909 | ||
Graphen erzeugen | 909 | ||
30.3 Zählerdaten speichern und zu Graphen aufbereiten | 912 | ||
31 Hausautomation mit Netzwerksteckdosen | 915 | ||
31.1 Einführung | 915 | ||
Universal-Schaltbox | 915 | ||
31.2 Programmierung | 917 | ||
Die Leistung der Photovoltaikanlage ermitteln | 917 | ||
Das Web-Interface | 920 | ||
Die Heizungssteuerung | 923 | ||
Die Steuerung der schaltbaren Steckdose | 927 | ||
32 Hausautomation mit 433-MHz-Funktechnologie | 929 | ||
32.1 Hardware-Grundlagen | 929 | ||
Funksteckdosen | 929 | ||
Das Sendemodul | 930 | ||
Anschluss des Sendemoduls | 930 | ||
Vorbereitung der Steckdosen | 931 | ||
32.2 Software und Steuerungsbeispiele | 932 | ||
rcswitch-pi | 932 | ||
Die klassische Zeitsteuerung | 933 | ||
Automatische Anwesenheitserkennung | 934 | ||
Überwachung von Analogsensoren | 936 | ||
Fernbedienung per Weboberfläche | 937 | ||
Noch mehr Ideen | 939 | ||
33 Ort und Zeit per GPS empfangen | 941 | ||
33.1 Haben Sie Zeit? Eine Uhr für den Raspberry Pi | 941 | ||
Den NTP-Server installieren und konfigurieren | 942 | ||
Das GPS-Modul in Betrieb nehmen | 944 | ||
Die serielle Konsole deaktivieren | 945 | ||
Den GPS-Dämon installieren und konfigurieren | 946 | ||
Den NTP-Server mit dem GPS-Zeitsignal füttern | 947 | ||
Das GPS-Zeitsignal mit PPS synchronisieren | 948 | ||
33.2 Ortsbestimmung mit dem Raspberry Pi | 950 | ||
Ortsangaben per Python aus dem Datenstrom filtern | 951 | ||
Ortsangaben in ein Foto einbetten | 953 | ||
34 Der Raspberry Pi lernt twittern | 955 | ||
34.1 Voraussetzungen | 955 | ||
Installation der benötigten Werkzeuge | 955 | ||
Twitter-App registrieren | 955 | ||
34.2 Programmierung | 957 | ||
Die Twitter-Software in Python | 957 | ||
Der erste Tweet | 958 | ||
CPU-Temperatur twittern | 959 | ||
Bilder twittern | 961 | ||
35 Monitoring | 963 | ||
35.1 Munin | 963 | ||
Munin-Node: Installation und Konfiguration | 964 | ||
Jäger und Sammler: Munin | 966 | ||
35.2 SmokePing | 969 | ||
Installation von SmokePing | 970 | ||
Konfiguration | 971 | ||
Mehr als Pings | 973 | ||
36 Raspberry Pi-ratensender | 975 | ||
36.1 FM-Transmitter einrichten | 975 | ||
Technischer Hintergrund | 975 | ||
Software-Installation | 975 | ||
MP3-Dateien umwandeln und senden | 976 | ||
Der DJ spricht | 976 | ||
37 WLAN- | 1 | ||
37.1 Einführung | 977 | ||
Glossar | 977 | ||
Voraussetzungen | 978 | ||
Einschränkungen | 979 | ||
37.2 WLAN-Access-Point | 980 | ||
Netzwerk- und Brückenkonfiguration (/etc/network/interfaces) | 982 | ||
WLAN-Authenticator (hostapd) | 983 | ||
hostapd für Realtek-8188-Chipsets | 985 | ||
37.3 WLAN-Router | 986 | ||
Router-Funktionen | 987 | ||
Konfigurationsüberblick | 988 | ||
Netzwerkkonfiguration (/etc/network/interfaces) | 988 | ||
Network Address Translation (NAT) | 989 | ||
Forwarding | 990 | ||
DHCP- und Nameserver (Dnsmasq) | 991 | ||
Inbetriebnahme und Test | 993 | ||
37.4 WLAN-Repeater | 994 | ||
Unveränderliche Zuordnung der WLAN-Schnittstellen | 995 | ||
Konfigurationsüberblick | 996 | ||
Netzwerkkonfiguration (/etc/network/interfaces) | 996 | ||
WLAN-Authenticator (hostapd) und DHCP-Server (Dnsmasq) | 998 | ||
Inbetriebnahme | 998 | ||
37.5 IPv6-Router | 998 | ||
Grundlagen | 998 | ||
Konfigurationsüberblick | 1000 | ||
IPv6 aktivieren | 1000 | ||
IPv6-Tunnel einrichten (SixXs) | 1001 | ||
Netzwerkkonfiguration (/etc/network/interfaces) | 1002 | ||
IPv6-Forwarding erlauben | 1003 | ||
radvd einrichten | 1003 | ||
Inbetriebnahme und Test | 1003 | ||
37.6 Tor-Router | 1005 | ||
Das Problem | 1005 | ||
Das Tor-Netzwerk | 1006 | ||
Sicherheit und Recht | 1007 | ||
Anbindung eines WLAN-Routers an das Tor-Netz | 1008 | ||
Test | 1009 | ||
Nebenwirkungen | 1010 | ||
38 AirPrint-Drucker selbst gemacht | 1011 | ||
38.1 Voraussetzungen | 1011 | ||
CUPS-Installation und -Konfiguration | 1012 | ||
Druckerkonfiguration | 1012 | ||
Druckgeschwindigkeit erhöhen | 1014 | ||
38.2 AirPrint-Konfiguration | 1015 | ||
Netzwerkdruck erlauben | 1015 | ||
AirPrint-Beschreibung des Druckers für Avahi einrichten | 1017 | ||
Praktische Erfahrungen | 1017 | ||
39 Automatische Präsentationssysteme | 1019 | ||
39.1 Einführung | 1019 | ||
Tastensteuerung und Reset | 1020 | ||
Bildschirmschoner und Energiesparfunktion | 1020 | ||
Datenquelle | 1020 | ||
Fertige Lösungen | 1021 | ||
39.2 Werkzeugkasten | 1022 | ||
Bilder anzeigen mit pqiv | 1022 | ||
Bilder optimal aufbereiten | 1022 | ||
MP3-Dateien abspielen | 1023 | ||
Videos abspielen | 1023 | ||
Autostart | 1024 | ||
Bilder von einem USB-Stick lesen | 1025 | ||
39.3 Autonome Bilder-Projektion | 1026 | ||
Ausgangspunkt | 1027 | ||
Bildverzeichnis synchronisieren | 1027 | ||
Bilder anzeigen | 1028 | ||
Start der Diashow | 1029 | ||
Verbesserungsideen und Varianten | 1029 | ||
39.4 Video-Player mit Menü | 1030 | ||
Ausgangspunkt | 1030 | ||
python-pygame-menu-class | 1031 | ||
uinput | 1032 | ||
Das Menüsystem | 1033 | ||
Start des Videosystems | 1036 | ||
40 Luftraumüberwachung | 1037 | ||
40.1 Technischer Hintergrund und Hardware | 1037 | ||
40.2 Software | 1038 | ||
Installation von RTL-SDR und Dump1090 | 1039 | ||
Die Position der Flugzeuge im Webbrowser verfolgen | 1039 | ||
41 Die Servokamera | 1043 | ||
41.1 Die Hardware | 1044 | ||
41.2 Die Python-Software | 1044 | ||
41.3 Die Streaming-Software | 1046 | ||
41.4 Die Weboberfläche | 1048 | ||
41.5 Inbetriebnahme | 1049 | ||
42 PomodoPi | 1051 | ||
42.1 Der Bodenfeuchtigkeitssensor | 1051 | ||
Wertewandel | 1053 | ||
Öffentlicher Datennahverkehr | 1053 | ||
Grafische Darstellung der Feuchtigkeit | 1055 | ||
42.2 Die Blumenampel | 1058 | ||
42.3 Die automatische Bewässerung | 1059 | ||
Relaissteuerung durch Python | 1062 | ||
Relaissteuerung automatisieren | 1062 | ||
42.4 Photosynthese sichtbar machen | 1064 | ||
43 Wassermelder mit Handyalarm | 1067 | ||
43.1 Hardware | 1067 | ||
43.2 Pushbullet | 1068 | ||
Index | 1073 |