E-Book, Deutsch, 445 Seiten
Reihe: mitp Professional
Weigend Raspberry Pi programmieren mit Python
6., 2024
ISBN: 978-3-7475-0830-5
Verlag: mitp Verlags GmbH & Co.KG
Format: PDF
Kopierschutz: 1 - PDF Watermark
Für Raspberry Pi 5, 4, 3 und Zero
E-Book, Deutsch, 445 Seiten
Reihe: mitp Professional
ISBN: 978-3-7475-0830-5
Verlag: mitp Verlags GmbH & Co.KG
Format: PDF
Kopierschutz: 1 - PDF Watermark
- Alle Python-Grundlagen, die Sie für Ihren Raspberry Pi 5, 4, 3 oder Zero brauchen
- Projekte mit Sensoren, Relais und AD-Wandlern
- Einsatz von Peripheriegeräten wie Kameramodul und Lautsprecher
Raspberry Pi – der Mini-Computer zum Experimentieren
Der Raspberry Pi ist ein preiswerter 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. In diesem Buch lernen Sie alle Grundlagen, die Sie brauchen, um mit dem Raspberry Pi oder dem Raspberry Pi Zero spannende Projekte zu realisieren.
Zahlreiche Projekte mit Sensoren, Kamera u.v.m.
Sie finden in diesem Buch eine Fülle von kleinen Projekten, die auf die besondere Hardware des Raspberry Pi und das Linux-Betriebssystem Raspberry Pi OS zugeschnitten sind. Dazu gehören sowohl Schaltungen mit Sensoren (Temperatur, Licht, Alkohol), Relais, AD-Wandlern und LEDs als auch die Verwendung des Kameramoduls und des 1-Wire- sowie SPI-Bus zur Datenkommunikation. Zahlreiche Illustrationen und einfache Beispiele zum Ausprobieren erleichtern das Verständnis.
Die Programmiersprache Python als Grundlage
Python ist – auch für Programmiereinsteiger – einfach zu lernen und deshalb Teil des Gesamtkonzepts des Raspberry Pi. Dieses Buch vermittelt Ihnen anhand anschaulicher Beispiele sowohl die Grundlagen von Python als auch fortgeschrittene Techniken wie Objektorientierung, Internetprogrammierung und grafische Benutzungsoberflächen. Am Ende jedes Kapitels finden Sie Aufgaben mit Lösungen zum Download, mit denen Sie Ihr Wissen festigen, erweitern und vertiefen können.
Aus dem Inhalt:
- Gerätesteuerung
- Messwerterfassung und -visualisierung
- Interaktive Spiele mit Schaltern und Sensoren
- Animationen und Simulationen
- Automatische Textproduktion
- Digitale Bildverarbeitung
- Morsezeichen senden und Signalmuster erkennen
- Projekte mit dem Sense HAT
- Farben und Bewegung wahrnehmen
- Steuerung mit Potentiometer und AD-Wandler
- Auswertung von Daten aus dem Internet
- Webserver und Webcam
Zum Download: Programmcode für alle Projekte sowie Lösungen der Übungsaufgaben
Zielgruppe
Für Raspberry-Anwender ohne Vorkenntnisse in Python
Autoren/Hrsg.
Weitere Infos & Material
1;Cover;1
2;Titel;3
3;Impressum;4
4;Inhaltsverzeichnis;5
5;Einleitung;13
5.1;Was macht man mit dem Raspberry Pi?;13
5.1.1;Interaktives Exponat;14
5.1.2;System mit speziellen Eingabegeräten;14
5.1.3;System mit speziellen Ausgabegeräten;14
5.1.4;Mobiles Gerät;15
5.1.5;Server für spezielle Aufgaben;15
5.2;Warum überhaupt Python auf dem RPi?;15
5.3;Zum Aufbau dieses Buchs;15
5.3.1;Lösungen und Programmcode zum Download;16
6;Kapitel 1: Begegnung mit Python;17
6.1;1.1 Was ist Python?;17
6.2;1.2 IDLE;18
6.2.1;1.2.1 IDLE-Shell;20
6.2.2;1.2.2 Hotkeys;21
6.3;1.3 Die IDLE-Shell als Taschenrechner;22
6.3.1;1.3.1 Operatoren und Terme;22
6.3.2;1.3.2 Zahlen;24
6.3.3;1.3.3 Mathematische Funktionen;28
6.4;1.4 Hilfe;32
6.5;1.5 Namen und Zuweisungen;33
6.5.1;1.5.1 Zuweisungen für mehrere Variablen;35
6.5.2;1.5.2 Rechnen mit Variablen in der Shell;36
6.5.3;1.5.3 Syntaxregeln für Bezeichner;36
6.5.4;1.5.4 Neue Namen für Funktionen und andere Objekte;37
6.5.5;1.5.5 Erweiterte Zuweisungen;38
6.6;1.6 Mit Python-Befehlen Geräte steuern;39
6.6.1;1.6.1 Projekt: Eine LED ein- und ausschalten;39
6.6.2;1.6.2 Das Modul gpiozero;41
6.6.3;1.6.3 Steuern mit Relais;42
6.6.4;1.6.4 Projekt: Eine Taschenlampe an- und ausschalten;44
6.6.5;1.6.5 Projekt: Steuerung eines LED-Strips mit MOSFETs;46
6.7;1.7 Aufgaben;49
7;Kapitel 2: Python-Skripte;53
7.1;2.1 Ein Skript mit IDLE erstellen;53
7.1.1;2.1.1 Ein neues Projekt starten;53
7.1.2;2.1.2 Programmtext eingeben;54
7.1.3;2.1.3 Das Skript ausführen;55
7.1.4;2.1.4 Shortcuts;55
7.2;2.2 Programme ausführen;55
7.2.1;2.2.1 Programm in der Konsole starten;55
7.2.2;2.2.2 Anklicken des Programmicons im File-Manager;56
7.3;2.3 Interaktive Programme – das EVA-Prinzip;59
7.3.1;2.3.1 Format mit Bedeutung – Aufbau eines Python-Programmtextes;60
7.3.2;2.3.2 Eingabe – die input()-Funktion;61
7.3.3;2.3.3 Verarbeitung – Umwandeln von Datentypen und Rechnen;61
7.3.4;2.3.4 Ausgabe – die print()-Funktion;62
7.4;2.4 Programmverzweigungen;64
7.4.1;2.4.1 Einfache Bedingungen;64
7.4.2;2.4.2 Wie erkennt man eine gute Melone? Zusammengesetzte Bedingungen;66
7.4.3;2.4.3 Einseitige Verzweigungen und Programmblöcke;67
7.4.4;2.4.4 Haben Sie Ihr Idealgewicht?;68
7.4.5;2.4.5 Eine Besonderheit von Python: Wahrheitswerte für Objekte;72
7.5;2.5 Bedingte Wiederholung – die while-Anweisung;72
7.5.1;2.5.1 Projekt: Zahlenraten;73
7.5.2;2.5.2 Have a break! Abbruch einer Schleife;74
7.6;2.6 Projekte mit dem GPIO;75
7.6.1;2.6.1 Blinklicht;75
7.6.2;2.6.2 Schalter;76
7.6.3;2.6.3 Zähler;78
7.6.4;2.6.4 Die Methode wait_for_press();79
7.7;2.7 Projekt: Eine Alarmanlage;79
7.7.1;2.7.1 Aufbau und Arbeitsweise der Alarmanlage;79
7.7.2;2.7.2 Programmierung;81
7.8;2.8 Aufgaben;82
8;Kapitel 3: Kollektionen: Mengen, Listen, Tupel und Dictionaries;85
8.1;3.1 Die Typhierarchie;85
8.1.1;3.1.1 Reihenfolge der Elemente und Zugriff;86
8.1.2;3.1.2 Änderbarkeit;86
8.2;3.2 Gemeinsame Operationen für Kollektionen;87
8.3;3.3 Kollektionen in Bedingungen;88
8.3.1;3.3.1 Projekt: Kundenberatung;89
8.3.2;3.3.2 Projekt: Sichere Kommunikation;89
8.4;3.4 Iteration – die for-Anweisung;90
8.4.1;3.4.1 Verwendung von break;91
8.5;3.5 Sequenzen;92
8.5.1;3.5.1 Konkatenation und Vervielfältigung;92
8.5.2;3.5.2 Direkter Zugriff auf Elemente – Indizierung;93
8.5.3;3.5.3 Slicing;93
8.5.4;3.5.4 Projekt: Lesbare Zufallspasswörter;94
8.6;3.6 Tupel;96
8.7;3.7 Zeichenketten (Strings);97
8.7.1;3.7.1 Strings durch Bytestrings codieren;98
8.7.2;3.7.2 Formatieren;99
8.8;3.8 Listen;101
8.8.1;3.8.1 Listen sind Objekte und empfangen Botschaften;101
8.8.2;3.8.2 Klasse, Typ und Instanz;103
8.8.3;3.8.3 Kopie oder Alias?;103
8.8.4;3.8.4 Listenoperationen;104
8.8.5;3.8.5 Projekt: Zufallsnamen;106
8.8.6;3.8.6 Projekt: Telefonliste;107
8.8.7;3.8.7 Listen durch Comprehensions erzeugen;108
8.9;3.9 Zahlen in einer Folge – range()-Funktion;109
8.10;3.10 Projekt: Klopfzeichen;111
8.11;3.11 Mengen;114
8.12;3.12 Projekt: Zufallssounds;115
8.12.1;3.12.1 Wie kommen Töne aus dem Raspberry Pi?;115
8.12.2;3.12.2 Sounds mit PyGame;116
8.12.3;3.12.3 Programmierung;117
8.13;3.13 Dictionaries;119
8.13.1;3.13.1 Operationen für Dictionaries;120
8.13.2;3.13.2 Projekt: Morsen;121
8.14;3.14 Aufgaben;122
9;Kapitel 4: Funktionen;125
9.1;4.1 Aufruf von Funktionen;125
9.1.1;4.1.1 Unterschiedliche Anzahl von Argumenten;126
9.1.2;4.1.2 Positionsargumente und Schlüsselwort-Argumente;126
9.2;4.2 Definition von Funktionen;128
9.3;4.3 Funktionen in der IDLE-Shell testen;129
9.4;4.4 Docstrings;130
9.5;4.5 Veränderliche und unveränderliche Objekte als Parameter;131
9.6;4.6 Voreingestellte Parameterwerte;133
9.7;4.7 Beliebige Anzahl von Parametern;134
9.8;4.8 Die return-Anweisung unter der Lupe;135
9.9;4.9 Mehr Sicherheit! Vorbedingungen testen;136
9.10;4.10 Namensräume: Global und lokal;138
9.11;4.11 Rekursive Funktionen – die Hohe Schule der Algorithmik;141
9.11.1;4.11.1 Projekt: Rekursive Summe;141
9.11.2;4.11.2 Projekt: Quicksort;142
9.12;4.12 Funktionen per Knopfdruck aufrufen: Callback-Funktionen;143
9.12.1;4.12.1 Projekt: Klangmaschine;144
9.12.2;4.12.2 Projekt: Zeit schätzen;145
9.13;4.13 Aufgaben;147
10;Kapitel 5: Fenster für den RPi – Grafische Benutzungsoberflächen;151
10.1;5.1 Wie macht man eine Benutzungsoberfläche?;151
10.2;5.2 Projekt: Die digitale Lostrommel;152
10.2.1;5.2.1 Die Gestaltung der Widgets;154
10.2.2;5.2.2 Das Layout-Management;156
10.3;5.3 Projekt: Farbmischer;158
10.4;5.4 Wer die Wahl hat, hat die Qual: Checkbutton und Radiobutton;160
10.5;5.5 Projekt: Automatische Urlaubsgrüße;160
10.6;5.6 Projekt: Digitaler Glückskeks;162
10.7;5.7 Viele Widgets schnell platziert: Das Grid-Layout;164
10.8;5.8 Projekt: 100 Farben;165
10.8.1;5.8.1 Die professionelle Version;167
10.9;5.9 Aufgaben;170
11;Kapitel 6: Daten finden, laden und speichern;173
11.1;6.1 Dateien;173
11.1.1;6.1.1 Daten speichern;173
11.1.2;6.1.2 Daten laden;174
11.2;6.2 Ein Blick hinter die Kulissen: Die SD-Karte;174
11.2.1;6.2.1 Experiment 1: Wie viel Zeit wird zum Schreiben von 10 MB auf die SD-Karte benötigt?;175
11.2.2;6.2.2 Experiment 2: Wie viel Zeit wird zum Lesen von 100 MB von der SD-Karte benötigt?;176
11.3;6.3 Datenstrukturen haltbar machen mit pickle;176
11.4;6.4 Versuch und Irrtum – Mehr Zuverlässigkeit durch try- Anweisungen;177
11.5;6.5 Projekt: Karteikasten;178
11.5.1;6.5.1 Der Editor;179
11.5.2;6.5.2 Der Presenter;182
11.6;6.6 Benutzungsoberfläche zum Laden und Speichern;185
11.6.1;6.6.1 Dialogboxen;185
11.6.2;6.6.2 Erweiterung des Editors für Karteikarten;187
11.6.3;6.6.3 Erweiterung des Presenters;190
11.7;6.7 Daten aus dem Internet;192
11.8;6.8 Projekt: Goethe oder Schiller?;194
11.8.1;6.8.1 Methoden der String-Objekte;194
11.8.2;6.8.2 Programmierung;196
11.9;6.9 Daten finden mit regulären Ausdrücken;199
11.9.1;6.9.1 Reguläre Ausdrücke;199
11.9.2;6.9.2 Die Funktion findall();201
11.9.3;6.9.3 Projekt: Staumelder;202
11.9.4;6.9.4 Programmierung;202
11.10;6.10 Aufgaben;206
12;Kapitel 7: Projekte mit Zeitfunktionen;209
12.1;7.1 Projekt: Fünf Sekunden stoppen und gewinnen;209
12.2;7.2 Datum und Zeit im Überblick;211
12.3;7.3 Projekt: Digitaluhr;212
12.3.1;7.3.1 Woher bekommt der RPi die Zeit?;213
12.3.2;7.3.2 Was ist ein Prozess?;213
12.3.3;7.3.3 Vollbildmodus;215
12.3.4;7.3.4 Event-Verarbeitung;218
12.3.5;7.3.5 Autostart;219
12.4;7.4 Projekt: Ein digitaler Bilderrahmen;219
12.4.1;7.4.1 Zugriff auf das Dateisystem: Das Modul os;220
12.4.2;7.4.2 Python Imaging Library (PIL);221
12.4.3;7.4.3 Die Programmierung;223
12.5;7.5 Projekt: Wahrnehmungstest;225
12.5.1;7.5.1 Die Programmierung;226
12.6;7.6 Aufgaben;230
13;Kapitel 8: Objektorientierte Programmierung;233
13.1;8.1 Überall Objekte;233
13.2;8.2 Klassen und Vererbung bei Python;235
13.2.1;8.2.1 Einführendes Beispiel: Alphabet;236
13.2.2;8.2.2 Qualitätsmerkmal Änderbarkeit;239
13.2.3;8.2.3 Vererbung;241
13.3;8.3 Projekt: Pong revisited;242
13.3.1;8.3.1 Die Klasse Canvas;244
13.3.2;8.3.2 Aufbau des Projekts;249
13.3.3;8.3.3 Die Tick-Metapher;250
13.3.4;8.3.4 Die Programmierung;251
13.3.5;8.3.5 Erweiterungen;256
13.4;8.4 Aufgaben;256
14;Kapitel 9: Sensortechnik;259
14.1;9.1 Was ist ein digitaler Temperatursensor?;259
14.2;9.2 Den DS1820 anschließen;260
14.3;9.3 Temperaturdaten lesen;261
14.3.1;9.3.1 Temperaturdaten eines Sensors automatisch auswerten;263
14.4;9.4 Projekt: Ein digitales Thermometer mit mehreren Sensoren;264
14.4.1;9.4.1 Ein Modul für die Messwerterfassung;265
14.4.2;9.4.2 Die grafische Oberfläche;267
14.4.3;9.4.3 Temperaturdaten per E-Mail senden;268
14.5;9.5 Projekt: Ein Temperaturplotter;270
14.5.1;9.5.1 Temperatur-Zeitdiagramme;270
14.5.2;9.5.2 Programmierung;271
14.6;9.6 Spannung messen;275
14.6.1;9.6.1 Das SPI-Protokoll;277
14.6.2;9.6.2 Programmierung;278
14.7;9.7 Alkoholsensor;280
14.7.1;9.7.1 Projekt: Achtung! Alkoholisches Getränk!;281
14.7.2;9.7.2 Projekt: Den Alkoholgehalt der Luft und von Flüssigkeiten messen;284
14.7.3;9.7.3 Wie kann man den Alkoholgehalt von Flüssigkeiten messen?;285
14.7.4;9.7.4 Messen und interpolieren;288
14.8;9.8 Projekte mit einem digitalen Lichtsensor;291
14.8.1;9.8.1 Ein Paket in einer virtuellen Umgebung installieren;292
14.8.2;9.8.2 Die Programmierung;293
14.8.3;9.8.3 Das Modul smbus;294
14.8.4;9.8.4 Mit dem Raspberry Pi Farben messen – Absorptionsspektrometer;298
14.9;9.9 Kohlendioxid-Sensor;304
14.9.1;9.9.1 Projekt: Datenlogger;305
14.9.2;9.9.2 Das Sensormodul kalibrieren;306
14.9.3;9.9.3 Projekt: Ein Experiment zur Diffusion von Gasen;307
14.10;9.10 Mit Ultraschall Entfernungen messen;310
14.10.1;9.10.1 Die Schaltung;311
14.10.2;9.10.2 Projekt: Abstandsmessungen;312
14.10.3;9.10.3 Projekt: Fische – eine interaktive Animation mit Ultraschall- Sensor;313
14.11;9.11 Aufgaben;318
14.12;9.12 Lösung des Rätsels;320
15;Kapitel 10: Projekte mit der Kamera;321
15.1;10.1 Das Kameramodul anschließen;321
15.2;10.2 Die Kamerasoftware;323
15.3;10.3 Projekt: Überwachungskamera – Livebild auf dem Bildschirm;324
15.4;10.4 Projekt: Bewegung erfassen;326
15.5;10.5 Projekt: Gerichtete Bewegungen erfassen;330
15.5.1;10.5.1 Files verarbeiten mit subprocess und io;331
15.5.2;10.5.2 Die Programmierung;331
15.6;10.6 Projekt: Birnen oder Tomaten?;337
15.6.1;10.6.1 Magische Methoden – das Überladen von Operatoren;338
15.6.2;10.6.2 Programmierung;340
15.6.3;10.6.3 Weiterentwicklungen;343
15.7;10.7 Projekt: Fotos per E-Mail verschicken;344
15.8;10.8 Randbemerkung: Was darf man? Was soll man?;345
15.9;10.9 Aufgabe: Wie lang? Wie breit?;346
16;Kapitel 11: Webserver;349
16.1;11.1 Der RPi im lokalen Netz;349
16.1.1;11.1.1 WLAN;349
16.1.2;11.1.2 Virtual Network Computing (VNC);350
16.2;11.2 Webserver;352
16.2.1;11.2.1 Der Apache-Webserver;352
16.2.2;11.2.2 Die eigene Startseite;353
16.3;11.3 Was ist los im Gartenteich?;355
16.3.1;11.3.1 Projekt: Einfache Webcam mit statischer Webseite;355
16.4;11.4 Lösungen zu den Zwischenfragen;358
17;Kapitel 12: Erweiterungen: OLED und HAT;359
17.1;12.1 OLED-Display;359
17.2;12.2 Anschluss;359
17.3;12.3 Installation der SSD1306-Bibliothek;360
17.4;12.4 Auf dem Display Texte und Formen ausgeben;360
17.4.1;12.4.1 Projekt: Uhrzeit;361
17.5;12.5 Mit ImageDraw zeichnen und Texte schreiben;362
17.5.1;12.5.1 Grafiken zeichnen;363
17.5.2;12.5.2 Schriftarten definieren;365
17.6;12.6 Projekt: Thermometer;366
17.7;12.7 Sense HAT;368
17.8;12.8 Die Klasse SenseHat;369
17.9;12.9 Grafische Ausgabe über die LED-Matrix;371
17.10;12.10 Die räumliche Orientierung des Sense HAT;372
17.10.1;12.10.1 Projekt: Das Murmellabyrinth;373
17.11;12.11 Der Joystick;376
17.11.1;12.11.1 InputEvent;377
17.11.2;12.11.2 Die Klasse JoyStick;378
17.11.3;12.11.3 Definition von Eventhandlern;378
17.11.4;12.11.4 Auf Events warten und Events abfragen;380
17.12;12.12 Aufgaben;382
18;Anhang A: Den Raspberry Pi einrichten;383
18.1;A.1 Hardware-Ausstattung;383
18.2;A.2 Das Betriebssystem installieren;383
18.3;A.3 Raspberry Pi das erste Mal starten und konfigurieren;384
18.4;A.4 Die grafische Oberflächevon Raspberry Pi OS;385
18.4.1;A.4.1 Überblick über die Standardsoftware;386
18.4.2;A.4.2 LXTerminal;387
19;Anhang B: Der GPIO;389
19.1;B.1 Der GPIO;389
20;Anhang C: Autostart;393
21;Anhang D: Bau eines Fußschalters;395
22;Anhang E: Virtuelle Umgebungen;397
22.1;E.1 Eine virtuelle Umgebung einrichten;397
22.2;E.2 Die virtuelle Umgebung aktivieren;398
22.3;E.3 Eine virtuelle Umgebung verwenden;399
22.4;E.4 Die virtuelle Umgebung deaktivieren;400
23;Stichwortverzeichnis;401
24;Lösungen zu den Aufgaben;407
24.1;Lösungen zu Kapitel 1;407
24.2;Lösungen zu Kapitel 2;408
24.3;Lösungen zu Kapitel 3;411
24.4;Lösungen zu Kapitel 4;412
24.5;Lösungen zu Kapitel 5;414
24.6;Lösungen zu Kapitel 6;417
24.7;Lösungen zu Kapitel 7;419
24.8;Lösungen zu Kapitel 8;425
24.9;Lösungen zu Kapitel 9;431
24.10;Lösung zu Kapitel 10;438
24.11;Lösungen zu Kapitel 12;440




