Raspberry Pi programmieren mit Python

 
 
MITP (Verlag)
  • 3. Auflage
  • |
  • erschienen am 6. Mai 2016
  • |
  • 464 Seiten
 
E-Book | ePUB mit Wasserzeichen-DRM | Systemvoraussetzungen
E-Book | PDF mit Wasserzeichen-DRM | Systemvoraussetzungen
978-3-95845-431-6 (ISBN)
 
Alle Python-Grundlagen, die Sie für Ihren Raspberry Pi 3 brauchen
Projekte mit Temperatur-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. Und Python ist - auch für Programmiereinsteiger - einfach zu lernen und deshalb Teil des Gesamtkonzeptes 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 Temperatur-Sensoren, 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
Uhren und Kalender
Farben und Bewegung wahrnehmen
Steuerung mit Potentiometer und AD-Wandler
Auswertung von Daten aus dem Internet
Webserver und interaktive Webcam
2016
  • Deutsch
  • Berlin
  • |
  • Deutschland
  • 8,66 MB
978-3-95845-431-6 (9783958454316)
3958454313 (3958454313)
weitere Ausgaben werden ermittelt
Michael Weigend ist Informatiklehrer und hat bereits mehrere Bücher zu Python geschrieben wie z.B. Python Ge-Packt.
1 - Cover [Seite 1]
2 - Impressum [Seite 4]
3 - Inhaltsverzeichnis [Seite 5]
4 - Einleitung [Seite 15]
5 - Kapitel 1: Begegnung mit Python [Seite 19]
5.1 - 1.1 Was ist Python? [Seite 19]
5.2 - 1.2 Python-Versionen [Seite 20]
5.3 - 1.3 IDLE [Seite 21]
5.3.1 - 1.3.1 Die Python-Shell [Seite 21]
5.3.2 - 1.3.2 Hotkeys [Seite 23]
5.4 - 1.4 Die Python-Shell als Taschenrechner [Seite 24]
5.4.1 - 1.4.1 Operatoren und Terme [Seite 24]
5.4.2 - 1.4.2 Zahlen [Seite 25]
5.4.3 - 1.4.3 Mathematische Funktionen [Seite 29]
5.5 - 1.5 Hilfe [Seite 34]
5.6 - 1.6 Namen und Zuweisungen [Seite 35]
5.6.1 - 1.6.1 Zuweisungen für mehrere Variablen [Seite 37]
5.6.2 - 1.6.2 Rechnen mit Variablen in der Shell [Seite 37]
5.6.3 - 1.6.3 Syntaxregeln für Bezeichner [Seite 38]
5.6.4 - 1.6.4 Neue Namen für Funktionen und andere Objekte [Seite 39]
5.6.5 - 1.6.5 Erweiterte Zuweisungen [Seite 39]
5.7 - 1.7 Mit Python-Befehlen Geräte steuern [Seite 40]
5.7.1 - 1.7.1 Projekt: Eine LED ein- und ausschalten [Seite 40]
5.7.2 - 1.7.2 Das Modul RPI.GPIO [Seite 42]
5.7.3 - 1.7.3 Steuern mit Relais [Seite 43]
5.7.4 - 1.7.4 Projekt: Eine Taschenlampe an- und ausschalten [Seite 44]
5.8 - 1.8 Aufgaben [Seite 46]
5.9 - 1.9 Lösungen [Seite 49]
6 - Kapitel 2: Python-Skripte [Seite 51]
6.1 - 2.1 Ein Skript mit IDLE erstellen [Seite 51]
6.1.1 - 2.1.1 Ein neues Projekt starten [Seite 51]
6.1.2 - 2.1.2 Programmtext eingeben [Seite 52]
6.1.3 - 2.1.3 Das Skript ausführen [Seite 52]
6.1.4 - 2.1.4 Shortcuts [Seite 53]
6.2 - 2.2 Programme ausführen [Seite 53]
6.2.1 - 2.2.1 Programm in der Konsole starten [Seite 53]
6.2.2 - 2.2.2 Anklicken des Programmicons im File-Manager [Seite 55]
6.3 - 2.3 Interaktive Programme - das EVA-Prinzip [Seite 57]
6.3.1 - 2.3.1 Format mit Bedeutung - Aufbau eines Python-Programmtextes [Seite 58]
6.3.2 - 2.3.2 Eingabe - die input()-Funktion [Seite 59]
6.3.3 - 2.3.3 Verarbeitung - Umwandeln von Datentypen und Rechnen [Seite 59]
6.3.4 - 2.3.4 Ausgabe - die print()-Funktion [Seite 60]
6.4 - 2.4 Programmverzweigungen [Seite 61]
6.4.1 - 2.4.1 Einfache Bedingungen [Seite 62]
6.4.2 - 2.4.2 Wie erkennt man eine gute Melone? Zusammengesetzte Bedingungen [Seite 64]
6.4.3 - 2.4.3 Einseitige Verzweigungen und Programmblöcke [Seite 65]
6.4.4 - 2.4.4 Haben Sie Ihr Idealgewicht? [Seite 66]
6.4.5 - 2.4.5 Eine Besonderheit von Python: Wahrheitswerte für Objekte [Seite 69]
6.5 - 2.5 Bedingte Wiederholung - die while-Anweisung [Seite 70]
6.5.1 - 2.5.1 Projekt: Zahlenraten [Seite 71]
6.5.2 - 2.5.2 Have a break! Abbruch einer Schleife [Seite 72]
6.6 - 2.6 Projekte mit dem GPIO [Seite 72]
6.6.1 - 2.6.1 Blinklicht [Seite 73]
6.6.2 - 2.6.2 Schalter [Seite 73]
6.6.3 - 2.6.3 Zähler [Seite 75]
6.6.4 - 2.6.4 Grundzustände festlegen und Flankensteuerung [Seite 76]
6.7 - 2.7 Projekt: Eine Alarmanlage [Seite 77]
6.7.1 - 2.7.1 Aufbau und Arbeitsweise der Alarmanlage [Seite 77]
6.7.2 - 2.7.2 Programmierung [Seite 78]
6.8 - 2.8 Aufgaben [Seite 81]
6.9 - 2.9 Lösungen [Seite 83]
7 - Kapitel 3: Kollektionen: Mengen, Listen, Tupel und Dictionaries [Seite 87]
7.1 - 3.1 Die Typhierarchie [Seite 87]
7.2 - 3.2 Gemeinsame Operationen für Kollektionen [Seite 89]
7.3 - 3.3 Kollektionen in Bedingungen [Seite 90]
7.3.1 - 3.3.1 Projekt: Kundenberatung [Seite 91]
7.3.2 - 3.3.2 Projekt: Sichere Kommunikation [Seite 91]
7.4 - 3.4 Iteration - die for-Anweisung [Seite 92]
7.4.1 - 3.4.1 Verwendung von break [Seite 93]
7.5 - 3.5 Sequenzen [Seite 94]
7.5.1 - 3.5.1 Konkatenation und Vervielfältigung [Seite 94]
7.5.2 - 3.5.2 Direkter Zugriff auf Elemente - Indizierung [Seite 95]
7.5.3 - 3.5.3 Slicing [Seite 95]
7.5.4 - 3.5.4 Projekt: Lesbare Zufallspasswörter [Seite 96]
7.6 - 3.6 Tupel [Seite 98]
7.7 - 3.7 Zeichenketten (Strings) [Seite 99]
7.7.1 - 3.7.1 Strings durch Bytestrings codieren [Seite 100]
7.7.2 - 3.7.2 Der Formatierungsoperator % [Seite 101]
7.8 - 3.8 Listen [Seite 102]
7.8.1 - 3.8.1 Listen sind Objekte und empfangen Botschaften [Seite 102]
7.8.2 - 3.8.2 Klasse, Typ und Instanz [Seite 104]
7.8.3 - 3.8.3 Kopie oder Alias? [Seite 104]
7.8.4 - 3.8.4 Listenoperationen [Seite 105]
7.8.5 - 3.8.5 Projekt: Zufallsnamen [Seite 107]
7.8.6 - 3.8.6 Projekt: Telefonliste [Seite 108]
7.8.7 - 3.8.7 Listen durch Comprehensions erzeugen [Seite 109]
7.9 - 3.9 Zahlen in einer Folge - range()-Funktion [Seite 110]
7.10 - 3.10 Projekt: Klopfzeichen [Seite 111]
7.11 - 3.11 Mengen [Seite 115]
7.11.1 - 3.11.1 Projekt: Häufigkeit von Buchstaben in einem Text [Seite 116]
7.12 - 3.12 Projekt: Zufallssounds [Seite 117]
7.12.1 - 3.12.1 Wie kommen Töne aus dem Raspberry Pi? [Seite 117]
7.12.2 - 3.12.2 Sounds mit PyGame [Seite 118]
7.12.3 - 3.12.3 Programmierung [Seite 119]
7.13 - 3.13 Dictionaries [Seite 120]
7.13.1 - 3.13.1 Operationen für Dictionaries [Seite 122]
7.13.2 - 3.13.2 Projekt: Morsen [Seite 123]
7.14 - 3.14 Projekt: Der kürzeste Weg zum Ziel [Seite 124]
7.15 - 3.15 Aufgaben [Seite 127]
7.16 - 3.16 Lösungen [Seite 129]
8 - Kapitel 4: Funktionen [Seite 131]
8.1 - 4.1 Aufruf von Funktionen [Seite 131]
8.1.1 - 4.1.1 Unterschiedliche Anzahl von Argumenten [Seite 132]
8.1.2 - 4.1.2 Positionsargumente und Schlüsselwort-Argumente [Seite 132]
8.1.3 - 4.1.3 Für Experten: Funktionen als Argumente [Seite 133]
8.2 - 4.2 Definition von Funktionen [Seite 134]
8.3 - 4.3 Funktionen in der IDLE-Shell testen [Seite 136]
8.4 - 4.4 Docstrings [Seite 136]
8.5 - 4.5 Veränderliche und unveränderliche Objekte als Parameter [Seite 137]
8.6 - 4.6 Voreingestellte Parameterwerte [Seite 139]
8.7 - 4.7 Beliebige Anzahl von Parametern [Seite 140]
8.8 - 4.8 Die return-Anweisung unter der Lupe [Seite 141]
8.9 - 4.9 Mehr Sicherheit! Vorbedingungen testen [Seite 143]
8.10 - 4.10 Namensräume: Global und lokal [Seite 145]
8.11 - 4.11 Rekursive Funktionen - die Hohe Schule der Algorithmik [Seite 147]
8.11.1 - 4.11.1 Projekt: Rekursive Summe [Seite 147]
8.11.2 - 4.11.2 Projekt: Quicksort [Seite 148]
8.12 - 4.12 Experimente zur Rekursion mit der Turtle-Grafik [Seite 149]
8.12.1 - 4.12.1 Turtle-Befehle im interaktiven Modus [Seite 149]
8.12.2 - 4.12.2 Projekt: Eine rekursive Spirale aus Quadraten [Seite 151]
8.12.3 - 4.12.3 Projekt: Pythagorasbaum [Seite 153]
8.12.4 - 4.12.4 Projekt: Eine Koch-Schneeflocke [Seite 155]
8.13 - 4.13 Projekt: Der Sierpinski-Teppich [Seite 157]
8.14 - 4.14 Funktionen per Knopfdruck aufrufen: Callback-Funktionen [Seite 159]
8.14.1 - 4.14.1 Projekt: Digitaler Türgong [Seite 160]
8.14.2 - 4.14.2 Projekt: Verkehrszählungen - Zählen mit mehreren Knöpfen [Seite 161]
8.15 - 4.15 Aufgaben [Seite 164]
8.16 - 4.16 Lösungen [Seite 167]
9 - Kapitel 5: Fenster für den RPi - Grafische Benutzungsoberflächen [Seite 171]
9.1 - 5.1 Wie macht man eine Benutzungsoberfläche? [Seite 171]
9.2 - 5.2 Projekt: Die digitale Lostrommel [Seite 172]
9.2.1 - 5.2.1 Die Gestaltung der Widgets [Seite 174]
9.2.2 - 5.2.2 Das Layout-Management [Seite 175]
9.3 - 5.3 Bilder auf Widgets [Seite 177]
9.3.1 - 5.3.1 Projekt: Ein visueller Zufallsgenerator [Seite 178]
9.3.2 - 5.3.2 Bilder verarbeiten [Seite 179]
9.3.3 - 5.3.3 Projekt: Schwarzweißmalerei [Seite 181]
9.4 - 5.4 Projekt: Der Krimiautomat [Seite 182]
9.4.1 - 5.4.1 Texteingabe [Seite 182]
9.4.2 - 5.4.2 Programmierung [Seite 184]
9.5 - 5.5 Wer die Wahl hat, hat die Qual: Checkbutton und Radiobutton [Seite 185]
9.5.1 - 5.5.1 Projekt: Automatische Urlaubsgrüße [Seite 186]
9.5.2 - 5.5.2 Projekt: Digitaler Glückskeks [Seite 188]
9.6 - 5.6 Viele Widgets schnell platziert: Das Grid-Layout [Seite 190]
9.6.1 - 5.6.1 Projekt: Rechenquiz [Seite 191]
9.7 - 5.7 Projekt: Farbmixer [Seite 194]
9.8 - 5.8 Projekt: Editor mit Pulldown-Menüs [Seite 196]
9.8.1 - 5.8.1 Aufbau einer Menüstruktur [Seite 197]
9.8.2 - 5.8.2 Programmierung [Seite 198]
9.9 - 5.9 Aufgaben [Seite 200]
9.10 - 5.10 Lösungen [Seite 202]
10 - Kapitel 6: Daten finden, laden und speichern [Seite 207]
10.1 - 6.1 Dateien [Seite 207]
10.1.1 - 6.1.1 Daten speichern [Seite 207]
10.1.2 - 6.1.2 Daten laden [Seite 208]
10.2 - 6.2 Ein Blick hinter die Kulissen: Die SD-Karte [Seite 208]
10.3 - 6.3 Datenstrukturen haltbar machen mit pickle [Seite 211]
10.4 - 6.4 Versuch und Irrtum - Mehr Zuverlässigkeit durch try-Anweisungen [Seite 212]
10.5 - 6.5 Projekt: Karteikasten [Seite 212]
10.5.1 - 6.5.1 Der Editor [Seite 213]
10.5.2 - 6.5.2 Der Presenter [Seite 216]
10.6 - 6.6 Benutzungsoberfläche zum Laden und Speichern [Seite 219]
10.6.1 - 6.6.1 Dialogboxen [Seite 219]
10.6.2 - 6.6.2 Erweiterung des Editors für Karteikarten [Seite 221]
10.6.3 - 6.6.3 Erweiterung des Presenters [Seite 224]
10.7 - 6.7 Daten aus dem Internet [Seite 226]
10.8 - 6.8 Projekt: Goethe oder Schiller? [Seite 227]
10.8.1 - 6.8.1 Methoden der String-Objekte [Seite 228]
10.8.2 - 6.8.2 Programmierung [Seite 230]
10.9 - 6.9 Daten finden mit regulären Ausdrücken [Seite 233]
10.9.1 - 6.9.1 Reguläre Ausdrücke [Seite 233]
10.9.2 - 6.9.2 Die Funktion findall() [Seite 235]
10.9.3 - 6.9.3 Projekt: Staumelder [Seite 235]
10.9.4 - 6.9.4 Programmierung [Seite 236]
10.10 - 6.10 Aufgaben [Seite 239]
10.11 - 6.11 Lösungen [Seite 241]
11 - Kapitel 7: Projekte mit Zeitfunktionen [Seite 243]
11.1 - 7.1 Projekt: Fünf Sekunden stoppen und gewinnen [Seite 243]
11.2 - 7.2 Datum und Zeit im Überblick [Seite 245]
11.3 - 7.3 Projekt: Digitaluhr [Seite 246]
11.3.1 - 7.3.1 Woher bekommt der RPi die Zeit? [Seite 246]
11.3.2 - 7.3.2 Was ist ein Prozess? [Seite 247]
11.3.3 - 7.3.3 Vollbildmodus [Seite 249]
11.3.4 - 7.3.4 Event-Verarbeitung [Seite 252]
11.3.5 - 7.3.5 Autostart [Seite 253]
11.4 - 7.4 Projekt: Ein digitaler Bilderrahmen [Seite 253]
11.4.1 - 7.4.1 Zugriff auf das Dateisystem: Das Modul os [Seite 254]
11.4.2 - 7.4.2 Python Imaging Library (PIL) [Seite 255]
11.4.3 - 7.4.3 Die Programmierung [Seite 257]
11.5 - 7.5 Projekt: Wahrnehmungstest [Seite 259]
11.5.1 - 7.5.1 Die Programmierung [Seite 260]
11.6 - 7.6 Projekt: Stoppuhr mit Gong [Seite 263]
11.7 - 7.7 Aufgaben [Seite 266]
11.8 - 7.8 Lösungen [Seite 267]
12 - Kapitel 8: Objektorientierte Programmierung [Seite 273]
12.1 - 8.1 Überall Objekte [Seite 273]
12.2 - 8.2 Klassen und Vererbung bei Python [Seite 275]
12.2.1 - 8.2.1 Einführendes Beispiel: Alphabet [Seite 276]
12.2.2 - 8.2.2 Qualitätsmerkmal Änderbarkeit [Seite 279]
12.2.3 - 8.2.3 Vererbung [Seite 280]
12.3 - 8.3 Pong revisited [Seite 282]
12.3.1 - 8.3.1 Bau eines Fußschalters [Seite 283]
12.3.2 - 8.3.2 Die Klasse Canvas [Seite 285]
12.3.3 - 8.3.3 Die Programmierung [Seite 289]
12.4 - 8.4 Renn, Lola renn! [Seite 293]
12.4.1 - 8.4.1 Vorbereitung [Seite 294]
12.4.2 - 8.4.2 Struktur des Programms [Seite 294]
12.4.3 - 8.4.3 Background [Seite 296]
12.4.4 - 8.4.4 Switch [Seite 296]
12.4.5 - 8.4.5 Display [Seite 298]
12.4.6 - 8.4.6 Clock [Seite 298]
12.4.7 - 8.4.7 Die Klasse Runner [Seite 299]
12.4.8 - 8.4.8 Controller [Seite 300]
12.4.9 - 8.4.9 Module [Seite 302]
12.5 - 8.5 Aufgaben [Seite 304]
12.6 - 8.6 Lösungen [Seite 306]
13 - Kapitel 9: Sensortechnik [Seite 315]
13.1 - 9.1 Was ist ein digitaler Temperatursensor? [Seite 315]
13.2 - 9.2 Den DS1820 anschließen [Seite 316]
13.3 - 9.3 Temperaturdaten lesen [Seite 317]
13.3.1 - 9.3.1 Temperaturdaten eines Sensors automatisch auswerten [Seite 319]
13.4 - 9.4 Projekt: Ein digitales Thermometer mit mehreren Sensoren [Seite 320]
13.4.1 - 9.4.1 Ein Modul für die Messwerterfassung [Seite 321]
13.4.2 - 9.4.2 Die grafische Oberfläche [Seite 323]
13.4.3 - 9.4.3 Temperaturdaten per E-Mail senden [Seite 324]
13.5 - 9.5 Projekt: Ein Temperaturplotter [Seite 326]
13.5.1 - 9.5.1 Temperatur-Zeitdiagramme [Seite 326]
13.5.2 - 9.5.2 Programmierung [Seite 327]
13.6 - 9.6 Projekt: Mobile Datenerfassung [Seite 330]
13.6.1 - 9.6.1 Experimente mit mobiler Temperaturerfassung [Seite 332]
13.6.2 - 9.6.2 Programmierung [Seite 332]
13.6.3 - 9.6.3 Wiedergabe der Daten [Seite 334]
13.7 - 9.7 Spannung messen [Seite 334]
13.7.1 - 9.7.1 Das SPI-Protokoll [Seite 336]
13.7.2 - 9.7.2 Bitverarbeitung [Seite 338]
13.7.3 - 9.7.3 Programmierung [Seite 341]
13.8 - 9.8 Aufgaben [Seite 343]
13.9 - 9.9 Lösungen [Seite 345]
14 - Kapitel 10: Projekte mit der Kamera [Seite 353]
14.1 - 10.1 Das Kameramodul anschließen [Seite 353]
14.2 - 10.2 Die Kamerasoftware [Seite 355]
14.2.1 - 10.2.1 Einzelbilder [Seite 356]
14.3 - 10.3 Projekt: Kameraoptionen testen [Seite 357]
14.4 - 10.4 Projekt: Überwachungskamera - Livebild auf dem Bildschirm [Seite 359]
14.5 - 10.5 Projekt: Bewegung erfassen [Seite 360]
14.6 - 10.6 Projekt: Gerichtete Bewegungen erfassen [Seite 364]
14.6.1 - 10.6.1 Files verarbeiten mit subprocess und io [Seite 365]
14.6.2 - 10.6.2 Die Programmierung [Seite 366]
14.7 - 10.7 Projekt: Birnen oder Tomaten? [Seite 371]
14.7.1 - 10.7.1 Magische Methoden - das Überladen von Operatoren [Seite 372]
14.7.2 - 10.7.2 Programmierung [Seite 375]
14.7.3 - 10.7.3 Weiterentwicklungen [Seite 378]
14.8 - 10.8 Das Modul picamera [Seite 378]
14.8.1 - 10.8.1 Die Klasse PiCamera [Seite 379]
14.8.2 - 10.8.2 Projekt: Einen Film aufnehmen [Seite 380]
14.8.3 - 10.8.3 Projekt: Fotos per E-Mail verschicken [Seite 381]
14.9 - 10.9 Was ist los am Autobahnkreuz? Bilder einer Webcam auswerten [Seite 383]
14.9.1 - 10.9.1 Webcams im Internet anzapfen [Seite 383]
14.9.2 - 10.9.2 Auf einem Foto zeichnen - das Modul ImageDraw [Seite 384]
14.9.3 - 10.9.3 Projekt: Verkehrsdichte auf der Autobahn [Seite 386]
14.10 - 10.10 Randbemerkung: Was darf man? Was soll man? [Seite 390]
14.11 - 10.11 Aufgabe [Seite 391]
14.12 - 10.12 Lösung [Seite 392]
15 - Kapitel 11: Webserver [Seite 395]
15.1 - 11.1 Der RPi im lokalen Netz [Seite 395]
15.1.1 - 11.1.1 WLAN [Seite 395]
15.1.2 - 11.1.2 Eine dauerhafte IP-Adresse für den RPi [Seite 396]
15.1.3 - 11.1.3 Über SSH auf dem RPi arbeiten [Seite 397]
15.1.4 - 11.1.4 Virtual Network Computing (VNC) [Seite 398]
15.2 - 11.2 Ein Webserver [Seite 399]
15.2.1 - 11.2.1 Der Apache Webserver [Seite 399]
15.2.2 - 11.2.2 Ein Webserver mit Python [Seite 400]
15.2.3 - 11.2.3 Den Server starten [Seite 401]
15.2.4 - 11.2.4 Die Startseite [Seite 401]
15.2.5 - 11.2.5 Den Server testen [Seite 402]
15.3 - 11.3 Was ist los im Gartenteich? [Seite 403]
15.3.1 - 11.3.1 Projekt: Einfache Webcam mit statischer Webseite [Seite 403]
15.3.2 - 11.3.2 CGI-Skripte [Seite 407]
15.3.3 - 11.3.3 CGI-Skripte für den Apache-Server [Seite 410]
15.3.4 - 11.3.4 Hilfe, mein CGI-Skript läuft nicht! [Seite 411]
15.3.5 - 11.3.5 Interaktive Webseiten [Seite 412]
15.3.6 - 11.3.6 Eingabekomponenten in einem HTML-Formular [Seite 414]
15.3.7 - 11.3.7 Verarbeitung von Eingaben in einem CGI-Skript [Seite 415]
15.3.8 - 11.3.8 Zugriff aus der Ferne [Seite 417]
15.4 - 11.4 Geräte über das Internet steuern [Seite 418]
15.4.1 - 11.4.1 Privilegierte Rechte für ein CGI-Skript [Seite 418]
15.4.2 - 11.4.2 Programmierung [Seite 419]
15.5 - 11.5 Datenbanken [Seite 421]
15.5.1 - 11.5.1 Das Modul sqlite3 [Seite 421]
15.5.2 - 11.5.2 Projekt: Freies Obst [Seite 424]
15.6 - 11.6 Aufgaben [Seite 431]
15.7 - 11.7 Lösungen [Seite 433]
16 - Anhang A: Den Raspberry Pi einrichten [Seite 437]
16.1 - A.1 Hardware-Ausstattung [Seite 437]
16.2 - A.2 Das Betriebssystem installieren [Seite 437]
16.2.1 - A.2.1 Download der Software [Seite 437]
16.2.2 - A.2.2 Die SD-Karte formatieren [Seite 438]
16.3 - A.3 Den Raspberry Pi das erste Mal starten und konfigurieren [Seite 439]
16.4 - A.4 Die grafische Oberfläche von Raspbian [Seite 440]
17 - Anhang B: Der GPIO [Seite 443]
17.1 - B.1 Der GPIO [Seite 443]
17.2 - B.2 Ein Flachbandkabel mit Pfostenverbindern [Seite 446]
18 - Anhang C: Autostart [Seite 449]
19 - Anhang D: So entstand das Titelbild [Seite 451]
20 - Stichwortverzeichnis [Seite 455]

Kapitel 1: Begegnung mit Python


In diesem Kapitel verwenden Sie Python im interaktiven Modus. Sie geben in der Kommandozeile der Python-Shell einzelne Befehle ein, die der Python-Interpreter sofort ausführt. Sie lernen Operatoren, Datentypen, die Verwendung von Funktionen und den Aufbau von Termen kennen. Dabei bekommen Sie einen ersten Eindruck vom Charme und der Mächtigkeit der Programmiersprache Python. Ich gehe davon aus, dass Sie bereits ein fertig konfiguriertes Computersystem besitzen, bestehend aus SD-Karte, Tastatur, Netzteil, Monitor und natürlich - als Herzstück - den Raspberry Pi, der meist als RPi abgekürzt wird. Auf der SD-Speicherkarte ist als Betriebssystem Raspbian installiert.

Falls Sie noch nicht so weit sind, können Sie in Anhang A nachlesen, welche Komponenten Sie benötigen und wie Sie bei der Einrichtung Ihres RPi-Systems vorgehen.

1.1  Was ist Python?


Python ?ist eine Programmiersprache, die so gestaltet wurde, dass sie leicht zu erlernen ist und besonders gut lesbare Programmtexte ermöglicht. Ihre Entwicklung wurde 1989 von Guido van Rossum? am Centrum voor Wiskunde en Informatica (CWI) in Amsterdam begonnen und wird nun durch die nichtkommerzielle Organisation »Python Software Foundation?« (PSF?, http://www.python.org/psf) koordiniert. Das Logo der Programmiersprache ist eine stilisierte Schlange. Dennoch leitet sich der Name nicht von diesem Schuppenkriechtier ab, sondern soll an die britische Comedy-Gruppe Monty Python erinnern.

Ein Python-Programm - man bezeichnet es als Skript - wird von einem Interpreter ausgeführt und läuft auf den gängigen Systemplattformen (Unix, Windows, Mac OS). Ein Programm, das auf Ihrem Raspberry Pi funktioniert, läuft in der Regel auch auf einem Windows-Rechner. Python ist kostenlos und kompatibel mit der GNU General Public License (GPL).

Python ist objektorientiert, unterstützt aber auch andere Programmierparadigmen (z.B. funktionale und imperative Programmierung). Python ist eine universelle Programmiersprache mit vielen Einsatzmöglichkeiten. Es wird in der Wissenschaft und Technik verwendet (z.B. im Deutschen Zentrum für Luft- und Raumfahrt), aber auch für visuell-kreative Projekte (z.B. bei Disney zur Entwicklung von Computerspielen). Python hat gegenüber älteren Programmiersprachen drei Vorteile:

  • Python ist leicht zu erlernen und hat eine niedrige »Eingangsschwelle«. Ohne theoretische Vorkenntnisse kann man sofort die ersten Programme schreiben. Im interaktiven Modus kann man einzelne Befehle eingeben und ihre Wirkung beobachten. Es gibt nur wenige Schlüsselwörter, die man lernen muss. Gewohnte Schreibweisen aus der Mathematik können verwendet werden, z.B. mehrfache Vergleiche wie 0 < a < 10.

  • Python-Programme sind kurz und gut verständlich. Computerprogramme werden von Maschinen ausgeführt, aber sie werden für Menschen geschrieben. Software wird meist im Team entwickelt. Programmtext muss für jedermann gut lesbar sein, damit er verändert, erweitert und verbessert werden kann. Der berühmte amerikanische Informatiker Donald Knuth hat deshalb schon vor drei Jahrzehnten vorgeschlagen, Programme als Literatur zu betrachten, so wie Romane und Theaterstücke. Nicht nur Korrektheit und Effizienz, auch die Lesbarkeit ist ein Qualitätsmerkmal.

  • Programme können mit Python nachweislich in kürzerer Zeit entwickelt werden als mit anderen Programmiersprachen. Das macht Python nicht nur für die Software-Industrie interessant; auch Universitäten verwenden immer häufiger Python, weil so weniger Zeit für den Lehrstoff benötigt wird.

1.2  Python-Versionen


Auf Ihrem Raspberry Pi (der meist mit RPi abgekürzt wird) sind zwei Versionen von Python? installiert:

  • Python 2 in der Version Python 2.7

  • Python 3 in der Version Python 3.4

Dieses Buch bezieht sich fast ausschließlich auf das modernere Python 3. Aber es ist wichtig zu wissen, dass es noch eine andere Version gibt. Python 3 ist nicht kompatibel zu Python 2. Das heißt, ein Python-3-Interpreter kann mit einem Programm, das in Python 2 geschrieben worden ist, in der Regel nichts anfangen.

Das neuere Python 3 ist konsistenter und konzeptionell »sauberer«. Das bedeutet, es gibt mehr Regelmäßigkeit und weniger Ausnahmen. Deshalb ist Python 3 vielleicht etwas leichter zu erlernen und die Programme, die in Python 3 geschrieben worden sind, sind etwas leichter zu durchschauen. Aber groß sind die Unterschiede nicht.

Beide Versionen existieren parallel. Auch Python 2 wird weiterhin gepflegt. Warum eigentlich? Nun, es gibt viele Module für spezielle Anwendungen (z.B. für die Bildbearbeitung und wissenschaftliche Berechnungen), die in Python 2 geschrieben worden sind. Ein Modul ist eine Sammlung von Programmtexten, die man wiederverwenden kann. In vielen Fällen wäre es zu aufwendig (und zu teuer), diese Module umzuschreiben. Wenn jemand ein Projekt plant, das auf Python-2-Modulen aufsetzt, muss er notgedrungen auch für seine eigenen Programmtexte Python 2 verwenden.

1.3  IDLE?


Zur Standardinstallation von Python gehört eine integrierte Entwicklungsumgebung namens IDLE. Der Name erinnert an den englischen Schauspieler, Autor und Komponisten Eric Idle, ein Mitglied der Comedy-Gruppe Monty Python.

IDLE besteht im Wesentlichen aus drei Komponenten:

  • Die Python-Shell?. Wenn Sie IDLE starten, öffnet sich zuerst das Python-Shell-Fenster. Die Shell ist eine Anwendung, mit der Sie direkt mit dem Python-Interpreter kommunizieren können: Sie können auf der Kommandozeile einzelne Python-Anweisungen eingeben und ausführen lassen. Ein Python-Programm, das eine Bildschirmausgabe liefert, gibt diese in einem Shell-Fenster aus.

  • Der Programmeditor. Das ist eine Art Textverarbeitungsprogramm zum Schreiben von Programmen. Sie starten den Programmeditor vom Shell-Fenster aus (File|New Window).

  • Der Debugger. Er dient dazu, den Lauf eines Programms zu kontrollieren, um logische Fehler zu finden.

1.3.1  Die Python-Shell


Anweisungen sind die Bausteine von Computerprogrammen. Mit der Python-Shel?l können Sie einzelne Python-Anweisungen ausprobieren. Man spricht auch vom interaktiven Modus, weil Sie mit dem Python-Interpreter eine Art Dialog führen: Sie geben über die Tastatur einen Befehl ein - der Interpreter führt ihn aus und liefert eine Antwort.

Öffnen Sie das Shell-Fenster der Python-3-Version auf Ihrem Rechner (Menu|Entwicklung|Python 3 (IDLE)). Da Sie ständig mit Idle arbeiten werden, lohnt es sich, das Programmicon auf den Desktop zu bringen. Das geht so: Sie klicken mit der rechten Maustaste auf das Icon Python 3 und wählen im Kontextmenü den Befehl Dem Desktop hinzufügen. Die Python-Shell meldet sich immer mit einer kurzen Information über die Version und einigen weiteren Hinweisen.

Abb. 1.1: Die Python-Shell der Entwicklungsumgebung IDLE

Die unterste Zeile beginnt mit einem Promptstring aus drei spitzen Klammern >>> als Eingabeaufforderung. Das ist die Kommandozeile. Hinter dem Prompt können Sie eine Anweisung eingeben. Wenn Sie die Taste Enter drücken, wird der Befehl ausgeführt. In den nächsten Zeilen kommt entweder eine Fehlermeldung, ein Ergebnis oder manchmal auch keine Systemantwort. Probieren Sie aus:

>>> 2+2 4

Hier ist die Anweisung ein mathematischer Term. Wenn Sie Enter drücken, wird der Term ausgewertet (also die Rechnung ausgeführt) und in der nächsten Zeile (ohne Prompt) das Ergebnis dargestellt.

>>> 2 + SyntaxError: invalid syntax

Jetzt haben Sie einen ungültigen Term eingegeben (der zweite Summand fehlt). Dann folgt eine Fehlermeldung.

>>> a = 1257002 >>>

Eine solche Anweisung nennt man eine Zuweisung. Der Variablen a wird der Wert 1257002 zugewiesen. Dabei ändert sich zwar der Zustand des Python-Laufzeitsystems (es merkt sich eine Zahl), aber es wird nichts ausgegeben. Sie sehen in der nächsten Zeile sofort wieder das Prompt. Die gespeicherte Zahl können Sie wieder zum Vorschein bringen, indem Sie den Variablennamen eingeben:

>>> a 1257002

1.3.2  Hotkey?s


Um effizient mit der Python-Shell arbeiten zu können, sollten Sie einige Tastenkombinationen ?(Hotkeys) beherrschen.

Manchmal möchten Sie ein früheres Kommando ein zweites Mal verwenden - vielleicht mit kleinen Abänderungen. Dann benutzen Sie die Tastenkombination Alt+P. Beispiel:

>>> 1 + 2*3 + 4 11 >>>

Wenn Sie jetzt einmal die Tastenkombination Alt+P betätigen, erscheint hinter dem letzten Prompt wieder das vorige Kommando (previous):

>>> 1 + 2*3 + 4

Wenn Sie nochmals diesen Hotkey drücken, verschwindet der Term wieder und es erscheint das vorletzte Kommando, beim nächsten Mal das vorvorletzte und so weiter. Die Shell merkt sich alle Ihre Eingaben in einer Folge, die man History nennt. Mit Alt+P und Alt+N können Sie in der History rückwärts- und vorwärtsgehen (Abbildung 1.2).

Abb. 1.2: Navigieren in der History mit...

Dateiformat: EPUB
Kopierschutz: Wasserzeichen-DRM (Digital Rights Management)

Systemvoraussetzungen:

Computer (Windows; MacOS X; Linux): Verwenden Sie eine Lese-Software, die das Dateiformat EPUB verarbeiten kann: z.B. Adobe Digital Editions oder FBReader - beide kostenlos (siehe E-Book Hilfe).

Tablet/Smartphone (Android; iOS): Installieren Sie bereits vor dem Download die kostenlose App Adobe Digital Editions (siehe E-Book Hilfe).

E-Book-Reader: Bookeen, Kobo, Pocketbook, Sony, Tolino u.v.a.m. (nicht Kindle)

Das Dateiformat EPUB ist sehr gut für Romane und Sachbücher geeignet - also für "fließenden" Text ohne komplexes Layout. Bei E-Readern oder Smartphones passt sich der Zeilen- und Seitenumbruch automatisch den kleinen Displays an. Mit Wasserzeichen-DRM wird hier ein "weicher" Kopierschutz verwendet. Daher ist technisch zwar alles möglich - sogar eine unzulässige Weitergabe. Aber an sichtbaren und unsichtbaren Stellen wird der Käufer des E-Books als Wasserzeichen hinterlegt, sodass im Falle eines Missbrauchs die Spur zurückverfolgt werden kann.

Weitere Informationen finden Sie in unserer E-Book Hilfe.


Dateiformat: PDF
Kopierschutz: Wasserzeichen-DRM (Digital Rights Management)

Systemvoraussetzungen:

Computer (Windows; MacOS X; Linux): Verwenden Sie zum Lesen die kostenlose Software Adobe Reader, Adobe Digital Editions oder einen anderen PDF-Viewer Ihrer Wahl (siehe E-Book Hilfe).

Tablet/Smartphone (Android; iOS): Installieren Sie die kostenlose App Adobe Digital Editions oder eine andere Lese-App für E-Books (siehe E-Book Hilfe).

E-Book-Reader: Bookeen, Kobo, Pocketbook, Sony, Tolino u.v.a.m. (nur bedingt: Kindle)

Das Dateiformat PDF zeigt auf jeder Hardware eine Buchseite stets identisch an. Daher ist eine PDF auch für ein komplexes Layout geeignet, wie es bei Lehr- und Fachbüchern verwendet wird (Bilder, Tabellen, Spalten, Fußnoten). Bei kleinen Displays von E-Readern oder Smartphones sind PDF leider eher nervig, weil zu viel Scrollen notwendig ist. Mit Wasserzeichen-DRM wird hier ein "weicher" Kopierschutz verwendet. Daher ist technisch zwar alles möglich - sogar eine unzulässige Weitergabe. Aber an sichtbaren und unsichtbaren Stellen wird der Käufer des E-Books als Wasserzeichen hinterlegt, sodass im Falle eines Missbrauchs die Spur zurückverfolgt werden kann.

Weitere Informationen finden Sie in unserer E-Book Hilfe.


Download (sofort verfügbar)

25,99 €
inkl. 19% MwSt.
Download / Einzel-Lizenz
ePUB mit Wasserzeichen-DRM
siehe Systemvoraussetzungen
PDF mit Wasserzeichen-DRM
siehe Systemvoraussetzungen
Hinweis: Die Auswahl des von Ihnen gewünschten Dateiformats und des Kopierschutzes erfolgt erst im System des E-Book Anbieters
E-Book bestellen

Unsere Web-Seiten verwenden Cookies. Mit der Nutzung dieser Web-Seiten erklären Sie sich damit einverstanden. Mehr Informationen finden Sie in unserem Datenschutzhinweis. Ok