Raspberry Pi programmieren mit Python, 4. Auflage

Book description

  • Alle Python-Grundlagen für die Programmierung des Raspberry Pi 3
  • Projekte mit Sensoren, Relais und AD-Wandlern
  • Einsatz von Peripheriegeräten wie Kameramodul und Lautsprecher

Der Raspberry Pi ist ein preiswerter und äußerst energiesparsamer Computer in der Größe einer Kreditkarte. In Kombination mit der Programmiersprache Python bietet er eine hervorragende Umgebung für die schnelle Realisierung technischer Ideen und Projekte. Außerdem ist Python – auch für Programmiereinsteiger – einfach zu lernen und deshalb Teil des Gesamtkonzepts des Raspberry Pi. Dieses Buch vermittelt Ihnen anhand vieler anschaulicher Beispiele sowohl die Grundlagen von Python als auch fortgeschrittene Techniken wie Objektorientierung, Internetprogrammierung und grafische Benutzungsoberflächen.

Nach dem Erlernen der Programmierkonzepte finden Sie besonders in der zweiten Hälfte des Buches eine Fülle von kleinen Projekten, die auf die besondere Hardware des Raspberry Pi und das Linux-Betriebssystem Raspbian zugeschnitten sind. Zur Vorbereitung jedes Projekts werden zunächst neue Elemente der Python-Programmierung eingeführt. Zahlreiche Illustrationen und einfache Beispiele zum Ausprobieren erleichtern das Verständnis.

Zu den vielfältigen Projekten im Buch gehören Schaltungen mit Sensoren (Temperatur, Licht, Kohlendioxid, Alkohol), Relais, AD-Wandlern und LEDs. Sie erfahren, wie man Peripheriegeräte wie das Kameramodul anschließt und den 1-Wire- sowie den SPI-Bus zur Datenkommunikation nutzt.

Am Ende jedes Kapitels finden Sie Aufgaben und Lösungen, mit denen Sie Ihr Wissen festigen, erweitern und vertiefen können.

Aus dem Inhalt:
  • Namen und Zuweisungen
  • Kontrollstrukturen
  • Kollektionen: Mengen, Listen, Tupel, Dictionaries
  • Verarbeitung von Strings
  • Funktionen
  • Grafische Benutzungsoberflächen
  • Dateien und Ressourcen aus dem Internet
  • Zeitfunktionen und Threads
  • Objektorientierte Programmierung
  • Webserver und CGI-Skripte
  • Einsatz von Datenbanken
Projekte mit dem Raspberry Pi:
  • Gerätesteuerung
  • Messwerterfassung und -visualisierung
  • Interaktive Spiele
  • Animationen und Simulationen
  • Automatische Textproduktion und Editoren
  • Digitale Bildverarbeitung
  • Morsezeichen senden und Signalmuster erkennen
  • Projekte mit OLED und Sense HAT
  • Farben und Bewegung wahrnehmen
  • Steuerung mit Potentiometer und AD-Wandler
  • Auswertung von Daten aus dem Internet
  • Webserver und interaktive Webcam

Table of contents

  1. Einleitung
  2. Kapitel 1: Begegnung mit Python
    1. 1.1 Was ist Python?
    2. 1.2 Python-Versionen
    3. 1.3 IDLE​
      1. 1.3.1 Die Python-Shell
      2. 1.3.2 Hotkey​s
    4. 1.4 Die Python-Shell als Taschenrechner​
      1. 1.4.1 Operatoren​ und Term​e
      2. 1.4.2 Zahlen
      3. 1.4.3 Mathematische Funktion​​en
    5. 1.5 Hilfe
    6. 1.6 Namen und Zuweisungen
      1. 1.6.1 Zuweisungen für mehrere Variablen
      2. 1.6.2 Rechnen mit Variablen in der Shell
      3. 1.6.3 Syntaxregeln für Bezeichner​​
      4. 1.6.4 Neue Namen für Funktionen und andere Objekte
      5. 1.6.5 Erweiterte Zuweisungen
    7. 1.7 Mit Python-Befehlen Geräte steuer​n
      1. 1.7.1 Projekt: Eine LED​​ ein- und ausschalten
      2. 1.7.2 Das Modul RPI.GPIO​
      3. 1.7.3 Steuern mit Relais
      4. 1.7.4 Projekt: Eine Taschenlampe an- und ausschalten​​
    8. 1.8 Aufgaben
    9. 1.9 Lösungen
  3. Kapitel 2: Python-Skripte​
    1. 2.1 Ein Skript mit IDLE erstellen
      1. 2.1.1 Ein neues Projekt starten
      2. 2.1.2 Programmtext eingeben
      3. 2.1.3 Das Skript ausführen
      4. 2.1.4 Shortcuts
    2. 2.2 Programme ausführen
      1. 2.2.1 Programm​ in der Konsole starten
      2. 2.2.2 Anklicken des Programmicons im File-Manager​
    3. 2.3 Interaktive Programme – das EVA-Prinzip​
      1. 2.3.1 Format​ mit Bedeutung – Aufbau eines Python-Programmtextes
      2. 2.3.2 Eingabe – die input()​-Funktion
      3. 2.3.3 Verarbeitung – Umwandeln von Datentypen und Rechnen
      4. 2.3.4 Ausgabe – die print()​-Funktion
    4. 2.4 Programmverzweigung​en
      1. 2.4.1 Einfache Bedingungen
      2. 2.4.2 Wie erkennt man eine gute Melone? Zusammengesetzte Bedingungen
      3. 2.4.3 Einseitige Verzweigung​​en und Programmblöcke
      4. 2.4.4 Haben Sie Ihr Idealgewicht?
      5. 2.4.5 Eine Besonderheit von Python: Wahrheitswerte für Objekt​e
    5. 2.5 Bedingte Wiederholung​ – die while​-Anweisung
      1. 2.5.1 Projekt: Zahlenraten​​
      2. 2.5.2 Have a break​! Abbruch einer Schleife
    6. 2.6 Projekte mit dem GPIO​
      1. 2.6.1 Blinklicht​
      2. 2.6.2 Schalter​
      3. 2.6.3 Zähler​
      4. 2.6.4 Grundzustände festlegen und Flankensteuerung
    7. 2.7 Projekt: Eine Alarmanlage​​
      1. 2.7.1 Aufbau und Arbeitsweise der Alarmanlage
      2. 2.7.2 Programmierung
    8. 2.8 Aufgaben
    9. 2.9 Lösungen
  4. Kapitel 3: Kollektionen: Mengen, Listen, Tupel und Dictionaries
    1. 3.1 Die Typhierarchie​
    2. 3.2 Gemeinsame Operationen für Kollektion​en
    3. 3.3 Kollektionen in Bedingungen
      1. 3.3.1 Projekt: Kundenberatung​​
      2. 3.3.2 Projekt: Sichere Kommunikation​​
    4. 3.4 Iteration​ – die for​-Anweisung
      1. 3.4.1 Verwendung von break​
    5. 3.5 Sequenz​en
      1. 3.5.1 Konkatenation und Vervielfältigung​
      2. 3.5.2 Direkter Zugriff auf Elemente – Indizierung​​
      3. 3.5.3 Slicing​
      4. 3.5.4 Projekt: Lesbare Zufallspasswörter​​
    6. 3.6 Tupel​
    7. 3.7 Zeichenkette​n (String​s)
      1. 3.7.1 Strings durch Bytestring​s codieren
      2. 3.7.2 Formatieren​
    8. 3.8 Liste​n
      1. 3.8.1 Listen sind Objekte und empfangen Botschaft​en
      2. 3.8.2 Klasse​, Typ​ und Instanz​
      3. 3.8.3 Kopie​ oder Alias​?
      4. 3.8.4 Liste​noperationen
      5. 3.8.5 Projekt: Zufallsnamen​​
      6. 3.8.6 Projekt: Telefonliste​​
      7. 3.8.7 Listen durch Comprehension​s erzeugen
    9. 3.9 Zahlen in einer Folge – range()​-Funktion
    10. 3.10 Projekt: Klopfzeichen​​
    11. 3.11 Menge​n
      1. 3.11.1 Projekt: Häufigkeit von Buchstaben ​​in einem Text
    12. 3.12 Projekt: Zufallssounds​​
      1. 3.12.1 Wie kommen Töne aus dem Raspberry Pi?
      2. 3.12.2 Sound​s mit PyGame
      3. 3.12.3 Programmierung
    13. 3.13 Dictionaries
      1. 3.13.1 Operationen für Dictionaries​
      2. 3.13.2 Projekt: Morsen​​
    14. 3.14 Projekt: Der kürzeste Weg ​zum Ziel​
    15. 3.15 Aufgaben
    16. 3.16 Lösungen
  5. Kapitel 4: Funktionen​
    1. 4.1 Aufruf von Funktionen
      1. 4.1.1 Unterschiedliche Anzahl von Argumenten
      2. 4.1.2 Positionsargument​e und Schlüsselwort-Argument​e
      3. 4.1.3 Für Experten: Funktionen als Argumente
    2. 4.2 Definition von Funktion​en
    3. 4.3 Funktionen in der IDLE-Shell testen
    4. 4.4 Docstrings
    5. 4.5 Veränderliche und unveränderliche Objekte als Parameter​
    6. 4.6 Voreingestellte Parameterwerte​​
    7. 4.7 Beliebige Anzahl von Parametern​
    8. 4.8 Die return-Anweisung unter der Lupe
    9. 4.9 Mehr Sicherheit! Vorbedingungen testen
    10. 4.10 Namensräume: Global und lokal
    11. 4.11 Rekursive Funktionen – die Hohe Schule der Algorithmik
      1. 4.11.1 Projekt: Rekursive Summe​​
      2. 4.11.2 Projekt: Quicksort​​
    12. 4.12 Experimente zur Rekursion mit der Turtle-Grafi​k
      1. 4.12.1 Turtle-Befehle im interaktiven Modus
      2. 4.12.2 Projekt: Eine rekursive Spirale aus Quadraten​​
      3. 4.12.3 Projekt: Pythagorasbau​​m
      4. 4.12.4 Projekt: Eine Koch-Schneeflocke ​​
    13. 4.13 Projekt: Der Sierpinski-Teppich​​
    14. 4.14 Funktionen per Knopfdruck aufrufen: Callback-Funktionen
      1. 4.14.1 Projekt: Digitaler Türgong​​
      2. 4.14.2 Projekt: Verkehrszählungen​​– Zählen mit mehreren Knöpfen
    15. 4.15 Aufgaben
    16. 4.16 Lösungen
  6. Kapitel 5: Fenster für den RPi – Grafische Benutzungsoberflächen​​
    1. 5.1 Wie macht man eine Benutzungsoberfläche?
    2. 5.2 Projekt: Die digitale Lostrommel​​
      1. 5.2.1 Die Gestaltung der Widget​s
      2. 5.2.2 Das Layout-Management​
    3. 5.3 Bilder auf Widgets
      1. 5.3.1 Projekt: Ein visueller Zufallsgenerator​​
      2. 5.3.2 Bilder verarbeiten
      3. 5.3.3 Projekt: Schwarz-Weiß-Malerei​​
    4. 5.4 Projekt: Der Krimiautomat​​
      1. 5.4.1 Texteingabe
      2. 5.4.2 Programmierung
    5. 5.5 Wer die Wahl hat, hat die Qual: Checkbutton​ und Radiobutton​
      1. 5.5.1 Projekt: Automatische Urlaubsgrüße ​​
      2. 5.5.2 Projekt: Digitaler Glückskeks​​
    6. 5.6 Viele Widgets schnell platziert: Das Grid-Layout​
      1. 5.6.1 Projekt: Rechenquiz​​
    7. 5.7 Projekt: Farbmixer​​
    8. 5.8 Projekt: Editor mit Pulldown-Menüs​​
      1. 5.8.1 Aufbau einer Menüstruktur
      2. 5.8.2 Programmierung
    9. 5.9 Aufgaben
    10. 5.10 Lösungen
  7. Kapitel 6: Daten finden, laden und speichern
    1. 6.1 Datei​en
      1. 6.1.1 Daten speichern​
      2. 6.1.2 Daten laden​
    2. 6.2 Ein Blick hinter die Kulissen: Die SD-Karte​
    3. 6.3 Datenstrukturen haltbar machen mit pickle​
    4. 6.4 Versuch und Irrtum – Mehr Zuverlässigkeit durch try​-Anweisungen
    5. 6.5 Projekt: Karteikasten​​
      1. 6.5.1 Der Editor​
      2. 6.5.2 Der Presenter
    6. 6.6 Benutzungsoberfläche zum Laden und Speichern
      1. 6.6.1 Dialogbox​en
      2. 6.6.2 Erweiterung des Editors für Karteikarten
      3. 6.6.3 Erweiterung des Presenters
    7. 6.7 Daten aus dem Internet
    8. 6.8 Projekt: Goethe​​ oder Schiller​​?
      1. 6.8.1 Methoden der String​-Objekte
      2. 6.8.2 Programmierung
    9. 6.9 Daten finden mit regulären Ausdrücken
      1. 6.9.1 Reguläre Ausdrück​​e
      2. 6.9.2 Die Funktion findall()​
      3. 6.9.3 Projekt: Staumelder​​
      4. 6.9.4 Programmierung
    10. 6.10 Aufgaben
    11. 6.11 Lösungen
  8. Kapitel 7: Projekte mit Zeitfunktionen​
    1. 7.1 Projekt: Fünf Sekunden stoppen und gewinnen​​
    2. 7.2 Datum und Zeit im Überblick
    3. 7.3 Projekt: Digitaluhr​​
      1. 7.3.1 Woher bekommt der RPi die Zeit?
      2. 7.3.2 Was ist ein Prozess?​
      3. 7.3.3 Vollbildmodus​
      4. 7.3.4 Event​-Verarbeitung
      5. 7.3.5 Autostart​
    4. 7.4 Projekt: Ein digitaler Bilderrahmen​​
      1. 7.4.1 Zugriff auf das Dateisystem: Das Modul os​
      2. 7.4.2 Python Imaging Library (PIL)​
      3. 7.4.3 Die Programmierung
    5. 7.5 Projekt: Wahrnehmungstest​​
      1. 7.5.1 Die Programmierung
    6. 7.6 Projekt: Stoppuhr​​ mit Gong
    7. 7.7 Aufgaben
    8. 7.8 Lösungen
  9. Kapitel 8: Objektorientierte Programmierung​​
    1. 8.1 Überall Objekte
    2. 8.2 Klassen ​und Vererbung ​bei Python
      1. 8.2.1 Einführendes Beispiel: Alphabet​​
      2. 8.2.2 Qualitätsmerkmal Änderbarkeit
      3. 8.2.3 Vererbung​
    3. 8.3 Pong revisited
      1. 8.3.1 Bau eines Fußschalters​
      2. 8.3.2 Die Klasse Canvas
      3. 8.3.3 Die Programmierung
    4. 8.4 Renn, Lola renn​​!
      1. 8.4.1 Vorbereitung
      2. 8.4.2 Struktur des Programms
      3. 8.4.3 Background
      4. 8.4.4 Switch
      5. 8.4.5 Display
      6. 8.4.6 Clock
      7. 8.4.7 Die Klasse Runner
      8. 8.4.8 Controller
      9. 8.4.9 Module
    5. 8.5 Aufgaben
    6. 8.6 Lösungen
  10. Kapitel 9: Sensortechnik​
    1. 9.1 Was ist ein digitaler Temperatursensor​?
    2. 9.2 Den DS1820 anschließen
    3. 9.3 Temperaturdaten lesen
      1. 9.3.1 Temperaturdaten eines Sensors automatisch auswerten
    4. 9.4 Projekt: Ein digitales Thermometer ​​mit mehreren Sensoren
      1. 9.4.1 Ein Modul für die Messwerterfassung​
      2. 9.4.2 Die grafische Oberfläche
      3. 9.4.3 Temperaturdaten per E-Mail senden​
    5. 9.5 Projek​t: Ein Temperaturplott​er
      1. 9.5.1 Temperatur-Zeitdiagramm​e
      2. 9.5.2 Programmierung
    6. 9.6 Projekt: Mobile Datenerfassung​​
      1. 9.6.1 Experimente mit mobiler Temperaturerfassung
      2. 9.6.2 Programmierung
      3. 9.6.3 Wiedergabe der Daten
    7. 9.7 Spannung messe​n
      1. 9.7.1 Das SPI-Protokol​l
      2. 9.7.2 Programmierung
    8. 9.8 Alkoholsensor​
      1. 9.8.1 Projekt: Achtung! Alkoholisches Getränk​!​
      2. 9.8.2 Projekt: Den Alkoholgehalt der Luft und von Flüssigkeiten messen​​
      3. 9.8.3 Wie kann man den Alkoholgehalt von Flüssigkeiten messen?
      4. 9.8.4 Messen und interpolieren
    9. 9.9 Projekte mit einem digitalen Lichtsensor​​​
      1. 9.9.1 Das Modul tsl2561
      2. 9.9.2 Das Modul smbus
      3. 9.9.3 Mit dem Raspberry Pi Farben messen ​– Absorptionsspektrometer​
    10. 9.10 Kohlendioxid-Sensor​
      1. 9.10.1 Projekt: Datenlogger​​
      2. 9.10.2 Das Sensormodul kalibrieren
      3. 9.10.3 Projekt: Ein Experiment zur Diffusion von Gasen​​​​
    11. 9.11 Aufgaben
    12. 9.12 Lösungen
  11. Kapitel 10: Projekte mit der Kamera​
    1. 10.1 Das Kameramodul​ anschließen
    2. 10.2 Die Kamerasoftware
      1. 10.2.1 Einzelbild​er
    3. 10.3 Projekt: Kameraoptionen testen​​
    4. 10.4 Projekt: Überwachungskamera​​ – Livebild auf dem Bildschirm
    5. 10.5 Projekt: Bewegung erfassen​​
    6. 10.6 Projekt: Gerichtete Bewegungen ​​erfassen
      1. 10.6.1 Files verarbeiten mit subprocess​ und io​
      2. 10.6.2 Die Programmierung
    7. 10.7 Projekt: Birnen oder Tomaten​​?
      1. 10.7.1 Magische Methode​​n – das Überladen​ von Operatoren
      2. 10.7.2 Programmierung
      3. 10.7.3 Weiterentwicklungen
    8. 10.8 Das Modul picamera
      1. 10.8.1 Die Klasse PiCamera
      2. 10.8.2 Projekt: Einen Film aufnehmen
      3. 10.8.3 Projekt: Fotos per E-Mail verschicken​​
    9. 10.9 Was ist los am Autobahnkreuz? Bilder einer Webcam auswerten
      1. 10.9.1 Webcams im Internet anzapfen​
      2. 10.9.2 Auf einem Foto zeichnen – das Modul ImageDraw
      3. 10.9.3 Projekt: Verkehrsdichte auf der Autobahn​​
      4. 10.9.4 Wie findet man den URL eines Webcam-Bildes?
    10. 10.10 Randbemerkung: Was darf man? Was soll man?
    11. 10.11 Aufgabe
    12. 10.12 Lösung
  12. Kapitel 11: Webserver​
    1. 11.1 Der RPi im lokalen Netz
      1. 11.1.1 WLAN​
      2. 11.1.2 Eine dauerhafte IP-Adresse für den RPi
      3. 11.1.3 Über SSH​ auf dem RPi arbeiten
      4. 11.1.4 Virtual Network Computing (VNC)
    2. 11.2 Webserver
      1. 11.2.1 Der Apache​ Webserver
      2. 11.2.2 Ein Webserver mit Python
      3. 11.2.3 Den Server starten
      4. 11.2.4 Die Startseite
      5. 11.2.5 Den Server testen
    3. 11.3 Was ist los im Gartenteich?
      1. 11.3.1 Projekt: Einfache Webcam​​ mit statischer Webseite
      2. 11.3.2 CGI-Skript​e
      3. 11.3.3 CGI-Skripte für den Apache-Server
      4. 11.3.4 Hilfe, mein CGI-Skript​ läuft nicht!
      5. 11.3.5 Interaktive Webseite​​n
      6. 11.3.6 Eingabekomponenten in einem HTML-Formular
      7. 11.3.7 Verarbeitung von Eingaben in einem CGI-Skript
      8. 11.3.8 Zugriff aus der Ferne
    4. 11.4 Geräte über das Internet steuern
      1. 11.4.1 Privilegierte Rechte​​ für ein CGI-Skript
      2. 11.4.2 Programmierung
    5. 11.5 Datenbank​en
      1. 11.5.1 Das Modul sqlite3​
      2. 11.5.2 Projekt: Freies Obst​​
      3. 11.5.3 Alternativen zu CGI
    6. 11.6 Aufgaben
    7. 11.7 Lösungen
  13. Kapitel 12: Erweiterungen: OLED und HAT
    1. 12.1 OLED-Display​
    2. 12.2 Anschluss
    3. 12.3 Installation der SSD1306​-Bibliothek
    4. 12.4 Auf dem Display Texte und Formen ausgeben
      1. 12.4.1 Projekt: Uhrzeit
    5. 12.5 Mit ImageDraw​ zeichnen und Texte schreiben
      1. 12.5.1 Grafiken zeichnen
      2. 12.5.2 Schriftart​en definieren
    6. 12.6 Projekt: Gespeicherte TrueType-Fonts darstellen​
    7. 12.7 Projekt: Thermometer​​
    8. 12.8 Sense HAT​
    9. 12.9 Die Klasse SenseHat
    10. 12.10 Grafische Ausgabe über die LED-Matrix​
    11. 12.11 Die räumliche Orientierung des Sense HAT
      1. 12.11.1 Projekt: Das Murmellabyrinth​​
    12. 12.12 Der Joystick​
      1. 12.12.1 InputEvent
      2. 12.12.2 Die Klasse JoyStick
      3. 12.12.3 Definition von Eventhandlern
      4. 12.12.4 Auf Events warten und Events abfragen
    13. 12.13 Aufgaben
    14. 12.14 Lösungen
  14. Anhang A: Den Raspberry Pi einrichten
    1. A.1 Hardware-Ausstattung​
    2. A.2 Das Betriebssystem installieren​
      1. A.2.1 Download der Software ​
      2. A.2.2 Die SD-Karte formatieren​
    3. A.3 Den Raspberry Pi das erste Mal starten und konfigurieren
    4. A.4 Die grafische Oberfläche​​von Raspbian​
  15. Anhang B: Der GPIO
    1. B.1 Der GPIO
    2. B.2 Ein Flachbandkabel​ mit Pfostenverbinder​n
  16. Anhang C: Autostart​
  17. Anhang D: So entstand das Titelbild

Product information

  • Title: Raspberry Pi programmieren mit Python, 4. Auflage
  • Author(s): Michael Weigend
  • Release date: December 2018
  • Publisher(s): mitp Verlag
  • ISBN: 9783958459144