Raspberry Pi - Das umfassende Handbuch
von: Michael Kofler, Charly Kühnast, Christoph Scherbeck
Galileo Computing, 2014
ISBN: 9783836235105
Sprache: Deutsch
1754 Seiten, Download: 168365 KB
Format: EPUB, auch als Online-Lesen
Vorwort | 42 | ||
1 Kauf und Inbetriebnahme | 49 | ||
1.1 Kauf | 50 | ||
Raspberry-Pi-Modelle | 50 | ||
Von Äpfeln und Birnen, Himbeeren und Bananen | 55 | ||
Anschlüsse | 56 | ||
Netzteil | 58 | ||
SD-Karte | 60 | ||
Gehäuse | 62 | ||
Tastatur und Maus | 62 | ||
USB-Hub | 63 | ||
Stromversorgung per USB-Hub | 64 | ||
WLAN- und Bluetooth-Adapter | 66 | ||
Was Sie sonst noch brauchen | 66 | ||
1.2 NOOBS-Installation | 68 | ||
Raspberry-Pi-Distributionen | 68 | ||
SD-Karte formatieren | 70 | ||
USB-SD-Card-Reader | 73 | ||
NOOBS | 74 | ||
NOOBS-VNC-Installation | 79 | ||
1.3 Image-Datei auf eine SD-Karte schreiben | 81 | ||
Image-Dateien herunterladen | 81 | ||
Image-Datei unter Windows auf eine SD-Karte übertragen | 82 | ||
Image-Datei unter OS X auf eine SD-Karte übertragen | 83 | ||
Image-Datei unter Linux auf eine SD-Karte übertragen | 86 | ||
Distributionsspezifische Installationsprogramme | 87 | ||
1.4 Installation auf einen USB-Stick (für Fortgeschrittene) | 89 | ||
Vor- und Nachteile | 89 | ||
USB-Stick vorbereiten | 90 | ||
SD-Karte vorbereiten | 91 | ||
Systempartition vergrößern | 92 | ||
2 Erste Schritte in Raspbian | 97 | ||
2.1 Das Konfigurationsprogramm raspi-config | 97 | ||
Expand Filesystem | 98 | ||
Change User Password | 99 | ||
Enable Boot to Desktop/Scratch | 99 | ||
Internationalisation Options | 100 | ||
Enable Camera | 101 | ||
Add to Rastrack | 101 | ||
Overclock | 102 | ||
Advanced Options | 103 | ||
Neustart | 104 | ||
2.2 Ein- und Ausschalten | 105 | ||
Wenn der Raspberry Pi abstürzt | 105 | ||
2.3 Die Benutzeroberfläche LXDE | 107 | ||
Icons | 108 | ||
Das Panel | 108 | ||
Programme starten | 110 | ||
Konfiguration | 111 | ||
Tastenkürzel | 112 | ||
Bildschirmschoner | 114 | ||
2.4 Wichtige Programme | 116 | ||
Die Icon-Galerie des Raspbian-Desktops | 116 | ||
Der Dateimanager | 119 | ||
LXTerminal | 121 | ||
Leafpad und Gedit (Editoren) | 123 | ||
Firefox und Thunderbird, Chromium und Claws Mail | 125 | ||
Bild- und PDF-Viewer | 127 | ||
Audio- und Video-Player | 128 | ||
Textverarbeitung und Tabellenkalkulation | 130 | ||
Screenshots | 131 | ||
2.5 WLAN-Konfiguration | 133 | ||
2.6 Bluetooth-Konfiguration | 137 | ||
2.7 USB-Sticks und -Festplatten | 139 | ||
2.8 Drucker | 141 | ||
3 Arbeiten im Terminal | 144 | ||
3.1 Erste Experimente | 144 | ||
Dateien und Verzeichnisse | 145 | ||
Zugriff auf Systemdateien | 146 | ||
Hardware-Tests | 146 | ||
vcgencmd | 147 | ||
Software-Verwaltung | 148 | ||
Freien Speicherplatz ermitteln | 149 | ||
Online-Hilfe | 150 | ||
3.2 Eingabeerleichterungen und Tastenkürzel | 152 | ||
alias-Abkürzungen definieren | 154 | ||
Textkonsolen | 155 | ||
3.3 Farbspiele | 156 | ||
Den Prompt individuell einrichten | 156 | ||
ls-Farben | 157 | ||
3.4 Die Bourne Again Shell (bash) | 160 | ||
Jokerzeichen | 161 | ||
Ein- und Ausgabeumleitung | 162 | ||
Kommandos im Hintergrund ausführen | 163 | ||
Mehrere Kommandos ausführen | 164 | ||
Rechnen in der bash | 166 | ||
Umgebungsverhalten | 167 | ||
3.5 Arbeiten mit Administratorrechten (sudo) | 169 | ||
sudo-Anwendung | 169 | ||
sudo-Konfiguration | 170 | ||
3.6 Textdateien lesen und ändern | 172 | ||
cat und less | 172 | ||
tail | 173 | ||
grep | 174 | ||
Texteditoren | 175 | ||
nano | 176 | ||
Vi | 177 | ||
jmacs | 179 | ||
3.7 Verzeichnisse und Dateien | 180 | ||
Verzeichnisse | 180 | ||
Linux-Verzeichnisbaum | 182 | ||
Dateien auflisten | 183 | ||
Verborgene Dateien und Verzeichnisse sichtbar machen | 185 | ||
Dateien suchen | 185 | ||
Textdateien inhaltlich durchsuchen | 187 | ||
Dateien kopieren, verschieben und löschen | 187 | ||
Links | 188 | ||
3.8 Komprimierte Dateien und Archive | 191 | ||
Komprimieren und dekomprimieren | 192 | ||
TAR-Archive | 193 | ||
ZIP-Archive | 195 | ||
3.9 Prozessverwaltung | 196 | ||
Liste aller laufenden Prozesse | 196 | ||
Prozesshierarchie | 198 | ||
Prozesse abbrechen | 199 | ||
Prozesspriorität einstellen | 200 | ||
Systemdienste steuern | 201 | ||
3.10 Netzwerkkommandos | 204 | ||
Netzwerkstatus ermitteln | 204 | ||
Dateien per FTP und HTTP übertragen | 206 | ||
4 Arbeitstechniken | 208 | ||
4.1 Programme installieren und verwalten | 209 | ||
Programme bzw. Pakete installieren | 209 | ||
Programme bzw. Pakete entfernen | 211 | ||
Informationen über Pakete ermitteln | 211 | ||
4.2 Updates | 214 | ||
Raspbian aktualisieren | 214 | ||
Firmware- und Kernel-Updates | 215 | ||
4.3 SSH | 220 | ||
Voraussetzungen auf dem Raspberry Pi | 220 | ||
Voraussetzungen auf Ihrem Arbeitsrechner | 221 | ||
SSH anwenden | 222 | ||
Grafikprogramme ausführen | 224 | ||
SSH-Login mit Schlüsseln statt Passwörtern | 225 | ||
SSH-Login nach einer Raspberry-Pi-Neuinstallation | 226 | ||
Dateien kopieren mit scp | 228 | ||
Zugriff auf das Raspberry-Pi-Dateisystem im Dateimanager | 229 | ||
Die Kommandos ssh und scp auf dem Raspberry Pi nutzen | 230 | ||
4.4 VNC | 231 | ||
Erste Tests | 231 | ||
VNC-Viewer unter Windows | 232 | ||
VNC-Viewer unter OS X | 233 | ||
VNC-Viewer unter Linux | 234 | ||
Start des VNC-Servers automatisieren | 235 | ||
VNC über einen SSH-Tunnel | 238 | ||
4.5 Netzwerkverzeichnisse nutzen | 241 | ||
Grundlagen | 241 | ||
Beispiele | 244 | ||
Verzeichnisse dauerhaft einbinden (/etc/fstab) | 246 | ||
4.6 Netzwerkverzeichnisse anbieten (Samba-Server) | 249 | ||
Samba-Installation, Defaultkonfiguration | 250 | ||
Ein Verzeichnis mit Passwortschutz freigeben | 252 | ||
Freigabe testen | 254 | ||
Weitere Verzeichnisse freigeben | 255 | ||
Ein Verzeichnis ohne Passwortschutz freigeben | 257 | ||
Absicherung und Grundeinstellungen | 257 | ||
4.7 Internetzugriff auf den Raspberry Pi | 259 | ||
Wo ist das Problem? | 260 | ||
Lösungsvarianten | 262 | ||
Alternativen | 263 | ||
4.8 Dynamisches DNS | 266 | ||
Wozu dient und wie funktioniert dynamisches DNS? | 266 | ||
Dynamisches DNS mit noip.com einrichten | 267 | ||
Port Forwarding einrichten | 269 | ||
Test | 270 | ||
Fehlersuche | 271 | ||
4.9 IPv6 | 274 | ||
IPv6 aktivieren | 274 | ||
gogoc-Installation | 275 | ||
Test | 278 | ||
4.10 FTP-Server einrichten | 279 | ||
vsftp installieren | 279 | ||
Defaultkonfiguration | 280 | ||
Eigene Konfiguration | 280 | ||
FTP ausprobieren | 281 | ||
4.11 Programme beim Systemstart ausführen | 283 | ||
rc.local | 283 | ||
Autostart-Programme für den Desktop | 283 | ||
Autostart-Dateien für Openbox | 284 | ||
4.12 Programme regelmäßig ausführen (Cron) | 286 | ||
/etc/cron.xxx-Verzeichnisse | 286 | ||
/etc/crontab-Datei | 287 | ||
/etc/cron.d-Verzeichnis | 288 | ||
Benutzerspezifische Crontab-Dateien | 289 | ||
Anacron | 289 | ||
4.13 Backups erstellen | 291 | ||
Backups mit rsync | 291 | ||
Backups mit tar | 293 | ||
Backup einer SD-Karte unter Windows | 293 | ||
Backup einer SD-Karte unter OS X | 295 | ||
Backup einer SD-Karte unter Linux | 295 | ||
4.14 Overclocking | 297 | ||
Overclocking-Parameter in config.txt | 297 | ||
Aktuelle Taktfrequenz und Temperatur ermitteln | 299 | ||
4.15 Notfall-Tipps | 301 | ||
Stromversorgung | 301 | ||
SD-Karte | 302 | ||
Display-Probleme | 303 | ||
Status-Leuchtdioden (Modell A und B) | 304 | ||
Status-Leuchtdioden (Modell B+) | 305 | ||
5 Linux-Grundlagen | 307 | ||
5.1 Benutzer und Gruppen | 309 | ||
Benutzer und Passwörter | 310 | ||
Gruppen | 312 | ||
Kommandos zur Benutzer- und Gruppenverwaltung | 314 | ||
sudo | 316 | ||
Auto-Login abstellen | 318 | ||
5.2 Zugriffsrechte | 319 | ||
Zugriffsrechte auf Dateien | 319 | ||
Zugriffsrechte auf Verzeichnisse | 321 | ||
Setuid-, Setgid- und Sticky-Bit | 322 | ||
Oktalschreibweise | 324 | ||
Zugriffsrechte einstellen | 325 | ||
Praxisbeispiele | 328 | ||
5.3 Paketverwaltung | 330 | ||
Konfiguration | 330 | ||
Hauptpaketquelle | 331 | ||
Weitere Paketquellen | 333 | ||
Aus welcher Paketquelle stammt ein Paket? | 333 | ||
5.4 Verwaltung des Dateisystems | 335 | ||
Dateisysteme | 335 | ||
Device-Dateien | 336 | ||
Das mount-Kommando | 339 | ||
Die Datei /etc/fstab | 342 | ||
Datenträger partitionieren und formatieren | 344 | ||
5.5 Netzwerkkonfiguration | 347 | ||
Glossar | 348 | ||
Die Datei /etc/network/interfaces | 351 | ||
Statische LAN-Konfiguration | 353 | ||
Manuelle WLAN-Konfiguration | 354 | ||
Nameserver-Konfiguration | 356 | ||
Hostname ändern | 358 | ||
5.6 Bluetooth | 359 | ||
Bluetooth-Geräte erkennen | 359 | ||
Pairing | 360 | ||
Verbindungsaufbau erzwingen | 361 | ||
5.7 Systemstart | 362 | ||
1st-Stage-Bootloader | 363 | ||
2nd-Stage-Bootloader (bootcode.bin) | 364 | ||
Kernelparameter (cmdline.txt) | 364 | ||
Kernelstart | 366 | ||
Init-Systeme | 367 | ||
Die Runlevel des Init-V-Systems | 369 | ||
Systeminitialisierung | 370 | ||
Runlevel 2 aktivieren | 370 | ||
Runlevel wechseln | 371 | ||
Reboot und Halt | 371 | ||
Systemdienste manuell starten und beenden | 372 | ||
Den Start von Systemdiensten aktivieren und deaktivieren | 373 | ||
Eigene Initialisierungsarbeiten durchführen | 373 | ||
Eigene Systemdienste einrichten | 374 | ||
5.8 Systemeinstellungen in config.txt | 377 | ||
HDMI-Einstellungen | 378 | ||
Overclocking | 379 | ||
Video-Decodierung | 379 | ||
Bootvorgang | 380 | ||
Hardware-Parameter | 380 | ||
Speicheraufteilung zwischen CPU und GPU | 381 | ||
Das Kommando vcgencmd | 382 | ||
5.9 Grafiksystem | 383 | ||
Start des Grafiksystems | 384 | ||
Auto-Start des Grafiksystems ein-/ausschalten | 385 | ||
Auto-Login ein-/ausschalten | 386 | ||
Manueller Start des Grafiksytems | 386 | ||
Neue Grafiktreiber und Wayland | 386 | ||
5.10 Kernel und Module | 388 | ||
Kernelmodule | 388 | ||
Module selbst kompilieren | 390 | ||
Den Kernel selbst kompilieren | 390 | ||
6 Audio-Player mit Smartphone-Fernbedienung | 393 | ||
6.1 MPD-Installation und -Konfiguration | 393 | ||
Kernel- und Firmware-Update | 394 | ||
Netzwerkkonfiguration | 395 | ||
MPD-Installation und -Konfiguration | 395 | ||
Erste Tests mit Xfmpc | 397 | ||
Tonausgabe zwischen HDMI und Analog-Audio umschalten | 399 | ||
MPDroid | 400 | ||
6.2 MPD-Konfigurationsvarianten | 402 | ||
Audio-Dateien auf einem USB-Stick | 402 | ||
Audio-Dateien auf einem NAS | 404 | ||
PulseAudio | 407 | ||
Perfekter Klang für Audiophile | 408 | ||
CD-Cover-Abbildungen | 409 | ||
Weboberfläche zur Steuerung | 412 | ||
Musik als Audio-Stream verteilen (Icecast) | 413 | ||
6.3 Volumio | 417 | ||
Installation und Konfiguration | 418 | ||
Interna und Absicherung | 420 | ||
Probleme | 420 | ||
6.4 Pi MusicBox | 422 | ||
Installation | 422 | ||
Konfiguration | 423 | ||
Bedienung | 424 | ||
7 Multimedia-Center mit XBMC | 425 | ||
7.1 XBian versus Raspbmc versus OpenELEC | 426 | ||
XBian | 427 | ||
Raspbmc | 427 | ||
OpenELEC | 428 | ||
Die Qual der Wahl | 429 | ||
7.2 OpenELEC-Installation und -Konfiguration | 431 | ||
Standardinstallation auf eine SD-Karte | 431 | ||
Installation auf einen USB-Stick (für Fortgeschrittene) | 431 | ||
OpenELEC-Erstkonfiguration | 434 | ||
Tastatur und Bluetooth | 435 | ||
Zeitzone einstellen | 436 | ||
Netzwerk- und WLAN-Konfiguration | 436 | ||
SSH nutzen | 437 | ||
SSH absichern | 438 | ||
Samba absichern | 439 | ||
Überblick über das OpenELEC-Dateisystem | 440 | ||
Hardware-Decodierung für MPEG-2 und VC-1 aktivieren | 440 | ||
Overclocking | 442 | ||
Audio-Ausgang wählen | 443 | ||
RSS-Newsfeed abstellen | 443 | ||
XBMC-Layout (Skins) | 444 | ||
Screenshots | 444 | ||
Updates | 445 | ||
7.3 Fernbedienung | 447 | ||
CEC-Fernbedienung | 447 | ||
Smartphone-Fernbedienung | 447 | ||
Infrarot-Fernbedienung | 449 | ||
7.4 XBMC-Betrieb | 453 | ||
Das erste Video abspielen | 453 | ||
Video-Dateien eines USB-Sticks abspielen | 456 | ||
Zugriff auf Video-Dateien aus Netzwerkverzeichnissen | 456 | ||
Videos aus dem Internet | 459 | ||
Audio-Dateien abspielen | 460 | ||
Internet-Radios und Spotify | 461 | ||
AirPlay | 462 | ||
8 Multimedia-System mit Plex | 464 | ||
8.1 XBMC oder Plex? | 464 | ||
Plex-Vorteile | 465 | ||
Plex-Nachteile | 466 | ||
Glossar | 467 | ||
8.2 Plex-Server-Konfiguration | 470 | ||
8.3 RasPlex-Installation und -Konfiguration | 475 | ||
Installation | 475 | ||
Konfigurationsprogramme | 477 | ||
Sprache, Zeitzone und Tastaturlayout | 479 | ||
WLAN-Konfiguration | 479 | ||
Plex-Login | 480 | ||
SSH und Samba | 480 | ||
Hardware-Decodierung für MPEG-2 und VC-1 aktivieren | 480 | ||
Audio-Ausgang | 481 | ||
Fernbedienung | 481 | ||
Bluetooth-Geräte | 482 | ||
Bildschirmschoner | 483 | ||
Screenshots | 483 | ||
8.4 Plex-Anwendung | 484 | ||
9 Hardware-Einstieg | 486 | ||
9.1 Platinenaufbau | 486 | ||
9.2 Der BCM2835 | 489 | ||
9.3 GPIO-Kontakte | 492 | ||
Der P1-Header | 492 | ||
Revision 1 versus 2 | 494 | ||
Nummerierungssysteme bzw. Pin-Namen | 494 | ||
Das 50-mA-Limit | 495 | ||
Welcher Pin für welchen Zweck? | 496 | ||
Die P2-, P3-, P5- und P6-Header | 498 | ||
GPIO-Verbindungen herstellen | 500 | ||
Vorsichtsmaßnahmen | 501 | ||
9.4 GPIO-Änderungen beim Modell B+ | 503 | ||
9.5 Stromversorgung | 505 | ||
Das Steckernetzteil | 505 | ||
Betrieb mit einer USB-Powerbank | 506 | ||
Betrieb mit AA-Batterien | 509 | ||
Der Linearregler 7805 | 510 | ||
Der Schaltregler LM2596S | 511 | ||
Versorgung über den USB-Port | 514 | ||
9.6 Gehäuse | 517 | ||
The Punnet – Das kostenlose Papiergehäuse | 517 | ||
Das Legogehäuse | 518 | ||
ModMyPi-Standardcase | 518 | ||
Rail-Case – Der Raspberry Pi auf der Schiene | 519 | ||
Multi-Pi – Das stapelbare Raspberry-Pi-Gehäuse | 519 | ||
Designergehäuse aus edlem Holz | 520 | ||
Durchsichtiges Gehäuse mit Kamerahalterung | 521 | ||
10 Elektrotechnik-Crashkurs | 523 | ||
10.1 Strom, Spannung und das Ohmsche Gesetz | 523 | ||
10.2 Grundschaltungen | 527 | ||
Darstellung der Schaltpläne | 527 | ||
Reihenschaltung | 528 | ||
Parallelschaltung | 528 | ||
Kombinierte Schaltung | 530 | ||
Spannungsteiler | 531 | ||
10.3 Elektronische Grundbauteile | 533 | ||
Diode | 533 | ||
Leuchtdiode | 534 | ||
Kondensator | 536 | ||
Spule | 537 | ||
Transistor | 538 | ||
Relais | 540 | ||
10.4 Das Multimeter | 542 | ||
10.5 Breadboard oder Platine? | 546 | ||
Breadboards | 546 | ||
Streifen- oder Lochrasterplatinen | 547 | ||
10.6 Löten | 550 | ||
10.7 Breadboardadapter | 553 | ||
Breadboardadapter selbst erstellen | 553 | ||
Der T-Cobbler | 557 | ||
11 LEDs, Motoren und Relais | 559 | ||
11.1 Leuchtdioden (LEDs) | 559 | ||
LED im Dauerbetrieb | 559 | ||
LED per Python ein- und ausschalten | 561 | ||
LEDs über Transistoren schalten | 562 | ||
LEDs mit Darlington-Transistoren ansteuern | 564 | ||
LEDs mit einem Taster ein- und ausschalten | 566 | ||
LEDs mit Software-PWM dimmen | 573 | ||
LEDs mit Hardware-PWM dimmen | 576 | ||
Hardware PWM beim Modell B+ | 577 | ||
RGB-LEDs | 578 | ||
11.2 Optokoppler | 582 | ||
11.3 Elektromotoren | 584 | ||
Der geeignete Motor | 584 | ||
Gleichstrom- und Wechselstrommotoren | 585 | ||
Die H-Brücke | 587 | ||
Der Motortreiber L298 | 590 | ||
Verdrahtung und Software | 592 | ||
Motordrehzahl per Software ändern | 596 | ||
11.4 Schrittmotoren | 600 | ||
Bipolare Ansteuerung | 601 | ||
Unipolare Ansteuerung | 605 | ||
Intelligente Schrittmotortreiber | 608 | ||
11.5 Relais | 613 | ||
Relaistypen | 613 | ||
12 Bussysteme | 618 | ||
12.1 SPI | 618 | ||
SPI per raspi-config einrichten | 620 | ||
SPI manuell einrichten | 621 | ||
Das digitale Potenziometer | 622 | ||
Daten per SPI senden | 624 | ||
Daten per SPI lesen | 628 | ||
Der Analog-/Digitalwandler MCP3008 | 631 | ||
Der Digital-/Analogwandler MCP4811 | 637 | ||
SPI-Bauteile | 644 | ||
12.2 I²C | 646 | ||
Der Portexpander MCP23017 | 647 | ||
12.3 UART | 657 | ||
UART aktivieren und säubern | 657 | ||
Zwei Raspberry Pi via UART verbinden | 658 | ||
Minicom | 659 | ||
UART in Python | 661 | ||
Wichtige pySerial-Funktionen | 663 | ||
12.4 Der Audiobus I²S | 665 | ||
I²S beim Modell B+ | 667 | ||
12.5 1-Wire | 668 | ||
13 Sensoren | 670 | ||
13.1 PIR-Bewegungssensor | 670 | ||
Hardware | 670 | ||
Programmierung | 673 | ||
13.2 Ultraschallsensor | 676 | ||
Hardware | 676 | ||
Programmierung | 678 | ||
13.3 Wasserstandssensor | 680 | ||
13.4 Temperatursensoren | 683 | ||
Temperatursensor DS1820 | 683 | ||
Temperatur- und Luftfeuchtigkeitssensor DHT22/AM2302 | 685 | ||
13.5 Fotowiderstand | 690 | ||
13.6 Multi-Analogsensor-Board PCF8591 | 693 | ||
13.7 Raspberry Pi Camera Board und PiNoIR | 697 | ||
Anschluss | 698 | ||
raspistill und raspivid | 700 | ||
Kamerasteuerung durch Python | 703 | ||
Videos und Bilder am Raspberry Pi anzeigen | 704 | ||
Videostreams und Online-Zugriff | 706 | ||
VLC-Livestream | 708 | ||
FTP-Upload | 709 | ||
PiNoIR | 709 | ||
Infrarot-Scheinwerfer für die PiNoIR | 710 | ||
13.8 Reed-Kontakt | 713 | ||
13.9 Hardware Real Time Clock | 716 | ||
13.10 IR-Empfänger | 722 | ||
13.11 Leitfaden für fremde Sensoren | 724 | ||
14 Erweiterungsboards | 726 | ||
14.1 Das Gertboard | 727 | ||
Inbetriebnahme | 728 | ||
Die drei Taster | 730 | ||
Digitale Ein- und Ausgänge und Leuchtdioden | 733 | ||
Der Open-Collector-Treiber | 736 | ||
Der Motortreiber | 737 | ||
Der Analog/Digital-Wandler | 741 | ||
Der Digital/Analog-Wandler | 743 | ||
14.2 Der ATmega auf dem Gertboard | 747 | ||
Hello World! | 747 | ||
avrdude | 749 | ||
Die Arduino-IDE | 750 | ||
14.3 RasPiComm | 754 | ||
Der Joystick und die 5-V-Ausgänge | 755 | ||
Die Echtzeituhr | 756 | ||
Die Schnittstellen | 756 | ||
14.4 PiFace Digital | 758 | ||
Der PiFace-Emulator | 760 | ||
Die PiFace-Bibliothek | 761 | ||
Interrupts und Events in der PiFace-Bibliothek | 763 | ||
PiFace Rack und die Jumper | 764 | ||
14.5 Quick2Wire Interface Board | 766 | ||
Anschlüsse | 768 | ||
Das Quick2Wire-Port-Expander-Board | 770 | ||
14.6 Unterbrechungsfreie Stromversorgung mit PiUSV | 772 | ||
Inbetriebnahme | 772 | ||
Konfiguration und Steuerung | 773 | ||
14.7 Andere Erweiterungen im Überblick | 776 | ||
Alamode | 776 | ||
BrickPi | 777 | ||
GrovePi | 780 | ||
15 Displays | 783 | ||
15.1 16×2-LC-Display | 783 | ||
Pin-Belegung | 784 | ||
Programmierung | 786 | ||
15.2 RaspiLCD | 790 | ||
Der Anschluss an den Raspberry Pi | 790 | ||
Die Ansteuerung mit Python | 792 | ||
Funktionsübersicht | 796 | ||
15.3 PiTFT – Der Touchscreen für den Raspberry Pi | 799 | ||
Der Zusammenbau | 800 | ||
Die Einrichtung unter Raspbian | 801 | ||
Schnellkalibierung | 805 | ||
Genaue Kalibrierung des Touchscreens | 806 | ||
Die Konsole auf dem PiTFT | 810 | ||
Weiterführende Links | 811 | ||
15.4 Kfz-Rückfahrmonitore | 813 | ||
Darstellung optimieren | 815 | ||
15.5 LS-7T – Der Plug-and-Play-Touchscreen | 819 | ||
Der Anschluss | 821 | ||
Bildausschnitt anpassen | 821 | ||
Die Kalibrierung des Touchscreens | 822 | ||
15.6 Weitere Display-Boards | 824 | ||
C-Berry | 824 | ||
RPi-Display von Watterott | 824 | ||
SainSmart Mini TFT Display | 825 | ||
HDMIPi | 825 | ||
Displays für den DSI-Anschluss | 826 | ||
16 Python kennenlernen | 828 | ||
16.1 Python ausprobieren | 830 | ||
Python in einem Terminalfenster ausführen | 830 | ||
IDLE | 831 | ||
16.2 Python-Konzepte interaktiv kennenlernen | 834 | ||
Zahlen | 834 | ||
Zeichenketten | 836 | ||
Listen | 839 | ||
Tupel (Sequenzen) | 841 | ||
Sets (Mengen) | 842 | ||
Dictionaries (Assoziative Arrays) | 843 | ||
16.3 Hello World! | 846 | ||
Texteditoren | 846 | ||
»Hello World« mit LeafPad verfassen und ausprobieren | 847 | ||
»Hello World« in IDLE3 verfassen und ausprobieren | 850 | ||
Noch ein Einführungsbeispiel | 851 | ||
17 Python-Grundlagen | 853 | ||
17.1 Elementare Syntaxregeln | 853 | ||
Anweisungen | 853 | ||
Blockelemente | 854 | ||
855 | |||
print in Python 2 | 857 | ||
input | 857 | ||
Module und »import« | 858 | ||
Kommentare | 860 | ||
Eingebaute Hilfe | 860 | ||
17.2 Variablen und Objekte | 862 | ||
Variablen | 862 | ||
Mutable oder immutable | 864 | ||
Veränderliche Daten kopieren | 865 | ||
Datentypen | 866 | ||
Typumwandlung | 868 | ||
Variablen und Daten vergleichen | 869 | ||
Gültigkeit von Variablen | 870 | ||
Garbage Collection | 871 | ||
Shared References | 873 | ||
17.3 Operatoren | 875 | ||
Zuweisungen | 877 | ||
Extended Sequence Unpacking | 879 | ||
17.4 Verzweigungen (if) | 880 | ||
if-Verzweigungen | 880 | ||
Bedingungen | 880 | ||
if-Kurzschreibweise | 881 | ||
17.5 Schleifen (for und while) | 883 | ||
Schleifen über Zahlenbereiche (range) | 884 | ||
Schleifen über die Zeichen einer Zeichenkette | 885 | ||
Schleifen über Listen, Tupel und Sets | 886 | ||
Schleifen über Dictionaries | 887 | ||
Schleifen über alle Script-Parameter | 888 | ||
Schleifen über die Zeilen einer Textdatei | 889 | ||
Schleifen über alle Dateien eines Verzeichnisses | 889 | ||
17.6 Zeichenketten | 891 | ||
Unicode | 893 | ||
raw-Zeichenketten | 893 | ||
String-Konvertierung und -Formatierung | 894 | ||
Reguläre Ausdrücke | 897 | ||
17.7 Listen | 900 | ||
map | 901 | ||
reduce | 902 | ||
filter | 903 | ||
zip | 904 | ||
17.8 Umgang mit Fehlern (Exceptions) | 905 | ||
try/except | 905 | ||
Fehler in Funktionen und Methoden | 908 | ||
with/as | 909 | ||
Selbst Exceptions auslösen | 910 | ||
Programmunterbrechungen abfangen | 911 | ||
17.9 Funktionen | 913 | ||
Eigene Funktionen definieren | 913 | ||
Lokale und globale Variablen | 915 | ||
Funktionsparameter | 917 | ||
Optionale Parameter | 918 | ||
Variable Parameteranzahl | 919 | ||
Lambda-Funktionen | 921 | ||
Funktionales Programmieren | 923 | ||
17.10 Objektorientiertes Programmieren | 925 | ||
Eigene Klassen definieren | 926 | ||
Methoden | 928 | ||
Konstruktor | 929 | ||
Klassenvariablen und Namensräume | 929 | ||
Private Klassenvariablen | 932 | ||
Getter- und Setter-Methoden | 933 | ||
Operator Overloading | 934 | ||
Beispiel: Rechteck-Klasse | 934 | ||
Vererbung | 936 | ||
Klassen, Objekte und Instanzen | 937 | ||
17.11 Systemfunktionen | 941 | ||
Zugriff auf die Programmparameter | 941 | ||
Zugriff auf Standardeingabe und Standardausgabe | 941 | ||
Modul-Metainformationen ermitteln | 941 | ||
Programm beenden | 942 | ||
Andere Programme bzw. Kommandos aufrufen | 942 | ||
Warten (sleep) | 944 | ||
18 Programmieren mit Python | 945 | ||
18.1 Programmieren lernen | 946 | ||
Beispiel 1: Die Summe der Zahlen von 1 bis 1000 ausrechnen | 946 | ||
Beispiel 2: Die Fakultäten von 1! bis 40! ausrechnen | 947 | ||
Beispiel 3: Palindromtest | 950 | ||
18.2 GPIO-Zugriff | 952 | ||
GPIO-Pins lesen und verändern | 953 | ||
Taster und Schalter | 956 | ||
Software-PWM | 958 | ||
18.3 Kamera | 960 | ||
Fotos aufnehmen | 961 | ||
Videos aufnehmen | 963 | ||
Kameraparameter steuern | 964 | ||
18.4 Dateien bei Dropbox hochladen | 966 | ||
18.5 E-Mails versenden | 968 | ||
Eine E-Mail mit Bitmap versenden | 969 | ||
Eine Aufnahme der Raspberry-Pi-Kamera versenden | 970 | ||
18.6 Textdateien lesen und schreiben | 971 | ||
CSV-Dateien | 973 | ||
Messdaten verarbeiten | 975 | ||
18.7 Grafikprogrammierung | 978 | ||
pygame und Python 3 | 978 | ||
Hello World! | 979 | ||
pygame-Zeichenmethoden | 981 | ||
Bilder speichern | 983 | ||
Grafikspielereien | 984 | ||
Temperaturkurve zeichnen | 987 | ||
18.8 Grafische Benutzeroberflächen mit tkinter | 991 | ||
Steuerelemente anordnen | 992 | ||
Ereignisverarbeitung | 997 | ||
Aufräumarbeiten beim Programmende | 999 | ||
LED ein- und ausschalten | 1000 | ||
Helligkeit einer Leuchtdiode mit PWM steuern | 1001 | ||
Tastenzustand anzeigen | 1003 | ||
19 bash-Programmierung | 1006 | ||
19.1 Einführung | 1006 | ||
Hello World! | 1006 | ||
Noch ein Beispiel | 1007 | ||
Elementare Syntaxregeln | 1007 | ||
Kommandos aufrufen | 1009 | ||
In andere Scripts verzweigen | 1010 | ||
bash oder Python? | 1011 | ||
19.2 Variablen | 1013 | ||
Variablen mit read einlesen | 1014 | ||
Umgebungsvariablen | 1015 | ||
Vordefinierte bash-Variablen | 1015 | ||
Felder | 1016 | ||
Parametersubstitution | 1017 | ||
Zeichenketten bzw. Aufzählungen bilden | 1019 | ||
19.3 Schleifen, Bedingungen und Funktionen | 1021 | ||
if-Verzweigungen | 1021 | ||
test | 1023 | ||
case | 1025 | ||
for | 1027 | ||
while und until | 1029 | ||
break und continue | 1030 | ||
function | 1031 | ||
Umgang mit Fehlern | 1031 | ||
exit | 1033 | ||
Reaktion auf Signale (trap) | 1033 | ||
19.4 WiringPi | 1035 | ||
gpio-Kommando | 1036 | ||
LED ein- und ausschalten | 1038 | ||
LED-Helligkeit steuern (PWM) | 1039 | ||
LED-Temperatur-Ampel | 1039 | ||
20 C-Programmierung | 1042 | ||
20.1 Hello World! | 1042 | ||
Der GNU-C-Compiler | 1042 | ||
make | 1043 | ||
20.2 GPIOs steuern | 1047 | ||
GPIO-Steuerung mit der WiringPi-Bibliothek | 1047 | ||
GPIO-Steuerung mit der bcm2835-Bibliothek | 1049 | ||
21 Java-Programmierung | 1052 | ||
21.1 Erste Schritte | 1052 | ||
Hello World! | 1053 | ||
Java 8 | 1053 | ||
Entwicklungsumgebungen (IDEs) | 1055 | ||
Java versus Python | 1056 | ||
21.2 GPIO-Steuerung mit Java | 1058 | ||
Installation | 1058 | ||
Hello Pi4J! | 1059 | ||
Mehr DigitalOutput-Steuerungsmöglichkeiten | 1061 | ||
Pulse Width Modulation | 1061 | ||
Eingaben verarbeiten | 1062 | ||
22 PHP-Programmierung | 1065 | ||
22.1 Apache installieren und konfigurieren | 1067 | ||
Apache-Konfiguration | 1068 | ||
22.2 Webverzeichnisse einrichten und absichern | 1071 | ||
Eigene Webverzeichnisse definieren | 1072 | ||
Beispiel | 1073 | ||
Verzeichnisse absichern | 1075 | ||
Passwortschutz für Webverzeichnisse | 1076 | ||
.htaccess-Datei | 1078 | ||
22.3 HTTPS | 1079 | ||
22.4 PHP installieren und konfigurieren | 1082 | ||
PHP ausprobieren | 1083 | ||
22.5 MySQL installieren und administrieren | 1085 | ||
MySQL installieren | 1085 | ||
MySQL-Konfiguration | 1086 | ||
Das mysql-Kommando | 1086 | ||
Neue Datenbanken einrichten | 1088 | ||
Datenbanken sichern und wiederherstellen | 1089 | ||
Administration mit phpMyAdmin | 1089 | ||
22.6 Hello World! in PHP | 1092 | ||
Fehlersuche | 1093 | ||
22.7 GPIO-Programmierung mit PHP | 1095 | ||
GPIOs auslesen und verändern | 1095 | ||
LED ein- und ausschalten | 1096 | ||
Temperatur auslesen | 1097 | ||
22.8 Kamerafunktionen mit PHP nutzen | 1099 | ||
Apache den Kamerazugriff erlauben | 1099 | ||
Ein Echtzeitfoto erstellen und übertragen | 1100 | ||
Ein Foto mit frei wählbaren Aufnahmeparametern erstellen | 1101 | ||
23 Mathematica und die Wolfram Language | 1103 | ||
23.1 Installation und Start | 1104 | ||
23.2 Arbeiten mit Mathematica | 1106 | ||
Die grafische Benutzeroberfläche von Mathematica | 1106 | ||
Rechnen in Mathematica | 1107 | ||
Formeleingabe | 1108 | ||
Grafik | 1110 | ||
Mathematica im Textmodus | 1110 | ||
Grafiken im Textmodus anzeigen | 1112 | ||
Interna | 1113 | ||
23.3 Programmieren mit der Wolfram Language | 1114 | ||
Hello World! | 1114 | ||
Syntax | 1115 | ||
Funktionale Programmierung und symbolische Ausdrücke | 1117 | ||
GPIO-Zugriff | 1119 | ||
RaspiCam | 1121 | ||
Serial, UltimateGPS etc. | 1122 | ||
Beispiel – Grafische Darstellung von Temperaturdaten | 1122 | ||
Wolfram Language – Pro und Kontra | 1126 | ||
Weitere Informationen und Links | 1127 | ||
24 Der Raspberry Pi im Vogelhaus | 1129 | ||
Einbau des Raspberry Pi samt Kameramodul in ein Vogelhaus | 1129 | ||
24.2 Kamerapraxis | 1133 | ||
Das Kameramodul betriebsbereit machen | 1133 | ||
Kamera-LED deaktivieren | 1133 | ||
Standbilder mit raspistill aufnehmen | 1134 | ||
ISO-Einstellung | 1136 | ||
Zeitverzögerung und Zeitrafferfilme | 1136 | ||
Videos aufzeichnen mit raspivid | 1137 | ||
24.3 Bewegungserkennung mit motion | 1139 | ||
Motion konfigurieren | 1140 | ||
24.4 Das Vogelhaus im praktischen Einsatz | 1144 | ||
Lichtverhältnisse und Bildqualität | 1145 | ||
25 Zeitmessung mit Lichtschranken | 1147 | ||
25.1 Versuchsaufbau (Hardware) | 1147 | ||
Schaltungsaufbau mit IR-Lichtschranken | 1148 | ||
25.2 Software | 1151 | ||
pigpio-Bibliothek | 1151 | ||
Programmcode | 1152 | ||
26 Das autonome Auto | 1155 | ||
26.1 Hardware | 1155 | ||
Das Chassis | 1155 | ||
Der Liniensensor | 1156 | ||
Die Mechanik | 1158 | ||
Anschlusspläne | 1161 | ||
Die mobile Stromversorgung des Raspberry Pi | 1163 | ||
Stromversorgung der Motoren | 1163 | ||
Ausrichtung und erste Tests | 1164 | ||
26.2 Die Software | 1167 | ||
Die Jungfernfahrt | 1169 | ||
27 RFID-Türöffner mit Zutrittskontrolle | 1171 | ||
27.1 RFID-Hardware | 1172 | ||
Die RFID-Technologie | 1172 | ||
Reader und Transponder | 1173 | ||
Verdrahtung | 1174 | ||
27.2 Software | 1177 | ||
Die Zugangsdatenbank | 1177 | ||
Python-Code zum Auslesen der RFID-Transponder | 1178 | ||
Python-Code zum MySQL-Zugriff | 1179 | ||
Python-Code zum Hinzufügen der Transpondernummern | 1181 | ||
Python-Hauptprogramm | 1182 | ||
phpMyAdmin – der Hausmeister | 1183 | ||
27.3 Erweiterungsmöglichkeiten und Tipps | 1185 | ||
Den Schrank abschließen | 1185 | ||
LCD-Modul statt bash-Ausgabe | 1185 | ||
Sensor statt Zeitsteuerung | 1185 | ||
Alarm bei falschem Transponder | 1186 | ||
Die Empfangsantenne verstecken | 1186 | ||
28 Stromzähler auslesen | 1187 | ||
28.1 Stromzähler-Grundlagen | 1187 | ||
Lesekopf und Signalwandler | 1188 | ||
Die Smart Message Language | 1190 | ||
28.2 Einführung in RRDTool | 1192 | ||
Die Round-Robin-Datenbank erstellen | 1192 | ||
Werte in die Datenbank eintragen | 1194 | ||
Graphen erzeugen | 1195 | ||
28.3 Zählerdaten speichern und zu Graphen aufbereiten | 1199 | ||
29 Hausautomation mit Netzwerksteckdosen | 1202 | ||
29.1 Einführung | 1202 | ||
Universal-Schaltbox | 1203 | ||
29.2 Programmierung | 1206 | ||
Die Leistung der Photovoltaikanlage ermitteln | 1206 | ||
Das Web-Interface | 1209 | ||
Die Heizungssteuerung | 1212 | ||
Die Steuerung der schaltbaren Steckdose | 1216 | ||
30. Hausautomation mit 433-MHz-Funktechnologie | 1218 | ||
30.1 Hardware-Grundlagen | 1218 | ||
Funksteckdosen | 1218 | ||
Das Sendemodul | 1219 | ||
Anschluss des Sendemoduls | 1220 | ||
Vorbereitung der Steckdosen | 1221 | ||
30.2 Software und Steuerungsbeispiele | 1223 | ||
rcswitch-pi | 1223 | ||
Die klassische Zeitsteuerung | 1224 | ||
Automatische Anwesenheitserkennung | 1225 | ||
Überwachung von Analogsensoren | 1227 | ||
Fernbedienung per Weboberfläche | 1228 | ||
Noch mehr Ideen | 1230 | ||
31 Ort und Zeit per GPS empfangen | 1232 | ||
31.1 Haben Sie Zeit? Eine Uhr für den Raspberry Pi | 1232 | ||
Den NTP-Server installieren und konfigurieren | 1234 | ||
Das GPS-Modul in Betrieb nehmen | 1236 | ||
Die serielle Konsole deaktivieren | 1237 | ||
Den GPS-Dämon installieren und konfigurieren | 1238 | ||
Den NTP-Server mit dem GPS-Zeitsignal füttern | 1239 | ||
Das GPS-Zeitsignal mit PPS synchronisieren | 1240 | ||
31.2 Ortsbestimmung mit dem Raspberry Pi | 1243 | ||
Ortsangaben per Python aus dem Datenstrom filtern | 1244 | ||
Ortsangaben in ein Foto einbetten | 1246 | ||
32 Der Raspberry Pi lernt twittern | 1248 | ||
32.1 Voraussetzungen | 1248 | ||
Installation der benötigten Werkzeuge | 1248 | ||
Twitter-App registrieren | 1248 | ||
32.2 Programmierung | 1251 | ||
Die Twitter-Software in Python | 1251 | ||
Der erste Tweet | 1251 | ||
CPU-Temperatur twittern | 1252 | ||
Bilder twittern | 1254 | ||
33 Monitoring | 1256 | ||
33.1 Munin | 1256 | ||
Munin-Node: Installation und Konfiguration | 1258 | ||
Jäger und Sammler: Munin | 1260 | ||
33.2 SmokePing | 1264 | ||
Installation von SmokePing | 1266 | ||
Konfiguration | 1267 | ||
Mehr als Pings | 1268 | ||
34 Raspberry Pi-ratensender | 1270 | ||
34.1 FM-Transmitter einrichten | 1270 | ||
Technischer Hintergrund | 1270 | ||
Software-Installation | 1271 | ||
MP3-Dateien umwandeln und senden | 1271 | ||
Der DJ spricht | 1271 | ||
35 WLAN- und IPv6-Router | 1273 | ||
35.1 Einführung | 1273 | ||
Glossar | 1273 | ||
Voraussetzungen | 1274 | ||
Die schwierige Suche nach einem geeigneten WLAN-Adapter | 1276 | ||
Einschränkungen | 1280 | ||
35.2 WLAN-Access-Point | 1282 | ||
Netzwerk- und Brückenkonfiguration (/etc/network/interfaces) | 1284 | ||
WLAN-Authenticator (hostapd) | 1285 | ||
hostapd für Realtek-8188-Chipsets | 1288 | ||
35.3 WLAN-Router | 1290 | ||
Router-Funktionen | 1291 | ||
Konfigurationsüberblick | 1292 | ||
Netzwerkkonfiguration (/etc/network/interfaces) | 1293 | ||
Network Address Translation (NAT) | 1294 | ||
Forwarding | 1296 | ||
DHCP- und Nameserver (Dnsmasq) | 1296 | ||
Inbetriebnahme und Test | 1300 | ||
35.4 WLAN-Repeater | 1301 | ||
Unveränderliche Zuordnung der WLAN-Schnittstellen | 1302 | ||
Konfigurationsüberblick | 1303 | ||
Netzwerkkonfiguration (/etc/network/interfaces) | 1304 | ||
WLAN-Authenticator (hostapd) und DHCP-Server (Dnsmasq) | 1305 | ||
Inbetriebnahme | 1305 | ||
35.5 IPv6-Router | 1307 | ||
Grundlagen | 1307 | ||
Konfigurationsüberblick | 1309 | ||
IPv6 aktivieren | 1310 | ||
IPv6-Tunnel einrichten (SixXs) | 1310 | ||
Netzwerkkonfiguration (/etc/network/interfaces) | 1312 | ||
IPv6-Forwarding erlauben | 1313 | ||
radvd einrichten | 1313 | ||
Inbetriebnahme und Test | 1313 | ||
36 Tor-Router | 1316 | ||
36.1 Tor-Grundlagen | 1316 | ||
Das Tor-Netzwerk | 1318 | ||
Sicherheit und Recht | 1319 | ||
36.2 WLAN-Router-Konfiguration | 1321 | ||
Konfiguration der Netzwerkschnittstellen | 1322 | ||
Ein schlanker DHCP-Server | 1323 | ||
Konfiguration des HostAPD | 1324 | ||
IP-Forwarding | 1326 | ||
Masquerading | 1326 | ||
Troubleshooting | 1328 | ||
36.3 Anbindung des WLAN-Routers an das Tor-Netz | 1329 | ||
37 AirPrint-Drucker selbst gemacht | 1331 | ||
37.1 Voraussetzungen | 1331 | ||
CUPS-Installation und -Konfiguration | 1332 | ||
Druckerkonfiguration | 1333 | ||
Druckgeschwindigkeit erhöhen | 1335 | ||
37.2 AirPrint-Konfiguration | 1338 | ||
Netzwerkdruck erlauben | 1338 | ||
AirPrint-Beschreibung des Druckers für Avahi einrichten | 1339 | ||
Praktische Erfahrungen | 1340 | ||
38 Automatische Präsentationssysteme | 1342 | ||
38.1 Einführung | 1342 | ||
Tastensteuerung und Reset | 1344 | ||
Datenquelle | 1344 | ||
Fertige Lösungen | 1345 | ||
38.2 Werkzeugkasten | 1347 | ||
Bilder anzeigen mit pqiv | 1347 | ||
Bilder anzeigen mit fbi | 1348 | ||
Bilder optimal aufbereiten | 1349 | ||
MP3-Dateien abspielen | 1350 | ||
Videos abspielen | 1350 | ||
Autostart | 1351 | ||
Bilder von einem USB-Stick lesen | 1352 | ||
Bildschirmschoner abstellen | 1354 | ||
38.3 Reset/Shutdown-Taste | 1355 | ||
Hard-Reset-Button | 1355 | ||
Soft-Reset-Button | 1356 | ||
38.4 Autonome Bilder-Projektion | 1359 | ||
Ausgangspunkt | 1359 | ||
Bildverzeichnis synchronisieren | 1360 | ||
Bilder anzeigen | 1361 | ||
Start der Diashow | 1362 | ||
Verbesserungsideen und Varianten | 1363 | ||
38.5 Video-Player mit Menü | 1364 | ||
Ausgangspunkt | 1364 | ||
python-pygame-menu-class | 1365 | ||
uinput | 1367 | ||
Das Menüsystem | 1367 | ||
Start des Videosystems | 1371 | ||
Verbesserungsideen und Varianten | 1372 | ||
39 Luftraumüberwachung | 1373 | ||
39.1 Technischer Hintergrund und Hardware | 1373 | ||
39.2 Software | 1375 | ||
Installation von RTL-SDR und dump1090 | 1375 | ||
Die Position der Flugzeuge im Webbrowser verfolgen | 1376 | ||
Rechtliche Hinweise | 1378 |