Jörn Donges
Mach was mit Python & Raspberry Pi!
Spielerisch programmieren lernen und mit DIY-Projekten durchstarten
Ihr Plus – digitale Zusatzinhalte!
Auf unserem Download-Portal finden Sie zu diesem Titel kostenloses Zusatzmaterial.
Geben Sie auf plus.hanser-fachbuch.de einfach diesen Code ein:
plus-me459-11ca6
Der Autor:
Jörn Donges, Hamburg
Alle in diesem Buch enthaltenen Informationen wurden nach bestem Wissen zusammengestellt und mit Sorgfalt geprüft und getestet. Dennoch sind Fehler nicht ganz auszuschließen. Aus diesem Grund sind die im vorliegenden Buch enthaltenen Informationen mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autor und Verlag übernehmen infolgedessen keine Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieser Informationen – oder Teilen davon – entsteht.
Ebenso wenig übernehmen Autor und Verlag die Gewähr dafür, dass beschriebene Verfahren usw. frei von Schutzrechten Dritter sind. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften.
Bibliografische Information der Deutschen Nationalbibliothek:
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.
Dieses Werk ist urheberrechtlich geschützt.
Alle Rechte, auch die der Übersetzung, des Nachdruckes und der Vervielfältigung des Buches, oder Teilen daraus, vorbehalten. Kein Teil des Werkes darf ohne schriftliche Genehmigung des Verlages in irgendeiner Form (Fotokopie, Mikrofilm oder ein anderes Verfahren) – auch nicht für Zwecke der Unterrichtsgestaltung – reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden.
© 2021 Carl Hanser Verlag München
www.hanser-fachbuch.de
Lektorat: Julia Stepp
Herstellung: Björn Gallinge
Coverkonzept: Marc Müller-Bremer, www.rebranding.de, München
Titelgrafik: © shutterstock.com/goodcat, Teguh Mujiono und AlesiaKan
Coverrealisation: Max Kostopoulos
Print-ISBN: 978-3-446-46150-5
E-Book-ISBN: 978-3-446-46600-5
E-Pub-ISBN: 978-3-446-46601-2
Titelei
Impressum
Inhalt
1 Einführung
2 Den Raspberry Pi und Python zum Laufen bringen
2.1 Was brauchen wir alles?
2.2 Ein Blick auf die Hardware
2.3 Raspbian – das Mini-Linux für deinen Raspberry Pi
2.4 Die SD-Karte vorbereiten
2.4.1 NOOBS oder Raspbian?
2.4.2 Eine fertige SD-Karte bestellen
2.4.3 Ein Betriebssystem-Image auf die SD-Karte schreiben
2.5 Python 3 installieren
2.6 Der Python Package Index
2.7 Die Entwicklungsumgebung
2.7.1 IDLE – die Standardumgebung
2.7.2 Geany – der Allrounder
2.7.3 Python lernen mit Raspberry Pi und Thonny
2.8 Den Raspberry Pi fernsteuern
2.8.1 SSH-Verbindung im Textmodus herstellen
2.8.2 Remotedesktop-Verbindung für Windows
2.8.3 X11-Forwarding für Linux und Windows
3 Einstieg in die Python-Programmierung
3.1 Interpreter und Compiler
3.2 Die interaktive Shell
3.2.1 Es geht immer los mit „Hallo Welt!“
3.2.2 Die Shell als Taschenrechner nutzen
3.2.3 Integer- und Fließkommazahlen
3.2.4 Werte in Variablen abspeichern
3.2.5 Strings und Typumwandlungen
3.2.6 Wahrheiten und Unwahrheiten
3.3 Ein Zahlenratespiel – das erste richtige Programm
3.4 Kontroll- und Datenstrukturen in Python
3.4.1 Daten kommen oft als Listen daher
3.4.2 Eine besondere Listenform
3.5 Wörterbücher in Aktion – ein Vokabeltrainer
3.5.1 Die Textdatei in Thonny anlegen
3.5.2 Der Vokabeltrainer – Schritt für Schritt erklärt
3.5.3 Der Vokabeltrainer wird mehrsprachig
3.6 Python bei der Arbeit zusehen – der Debugger
3.6.1 Ein kurzer Ausflug in die Theorie
3.6.2 Der Debugger in Aktion
3.6.3 Rekursive Funktionen und noch mehr Debugger-Aktion
3.7 Mit Objekten zum Vokabellernassistenten
4 Grafik und Sound mit Pygame
4.1 Ein Überblick der Möglichkeiten von Pygame
4.1.1 Bring Bewegung ins Spiel: eine Laufschrift
4.1.2 Auf Ereignisse reagieren
4.1.3 Mit pygame.draw geometrische Formen zeichnen
4.1.4 Eine Analoguhr mit Pygame
4.1.5 Arbeiten mit Musik und Soundeffekten
4.2 Rückkehr eines Klassikers: Pong mit Pygame
4.2.1 Noch ein wenig Objektorientierung
4.2.2 Sound kommt hinzu
4.2.3 Code für pong.py
5 GUI-Programmierung mit Tkinter
5.1 Tkinter einbinden
5.2 Die Bausteine einer GUI
5.2.1 Das Basisfenster Tk()
5.2.2 Die wichtigsten GUI-Elemente
5.3 Eine Oberfläche für den Vokabeltrainer
5.3.1 Das Layout des Vokabeltrainers
5.3.2 Die Callback-Methoden implementieren
5.4 Noch mehr Tkinter und ein Taschenrechner für den Raspberry Pi
5.4.1 Die Layout-Manager
5.4.2 Eine Klasse für Taschenrechner
6 Willkommen in der Cloud: Web Apps mit dem Raspberry Pi
6.1 Erste Schritte mit Flask
6.1.1 Routing
6.1.2 HTML und HTML-Templates
6.1.3 GET und POST
6.1.4 Ein Crashkurs in SQL und Datenbanken
6.2 Eine To-do-App für den Raspberry Pi
6.2.1 Bestandteile der Web App
6.2.2 Das To-do-Listen-HTML-Template
6.2.3 Der Python-Code für die To-do-Liste
6.3 Eine Web App automatisch starten
6.3.1 Python-Programme starten ohne IDE
6.3.2 Programme beim Systemstart automatisch starten
7 Ein Webradio mit dem Raspberry Pi
7.1 Vorbereitungen für den Raspberry Pi
7.2 Den Music Player installieren
7.3 Die Stationsliste erstellen
7.4 Teil 1: Ein Webradio mit Flask
7.4.1 Das Webradio-HTML-Template
7.4.2 Der Python-Code für das Radio-Webinterface
7.5 Teil 2: Ein Webradio mit Tkinter
7.5.1 Eine Autoupdate-Funktion hinzufügen
7.5.2 Die benötigten GUI-Elemente für das Webradio
7.5.3 Der Python-Code für das Webradio
8 Datengewinnung aus dem Internet
8.1 Web Scraping
8.1.1 Pythons Zugang zum Web – das Modul requests
8.1.2 JSON- oder XML-Format
8.1.3 Die wundervolle Suppe aus HTML
8.1.4 Ein reales Beispiel: Fußballergebnisse scrapen
8.1.5 Die rechtliche Seite
8.1.6 Analyse des HTML-Codes
8.2 Wetterdaten abfragen mit OpenWeatherMap
8.2.1 Den API-Key erhalten
8.2.2 API-Abfragen: Die Wetter-App für die Konsole
8.2.3 Die Wetter-Web App: Flask meets OpenWeatherMap
8.2.4 APIs für jeden Zweck
1 | Einführung |
Mit dem Raspberry Pi (auch Pi oder RasPi genannt) bekommt man für wenig Geld ein vollwertiges Computersystem mitsamt reichhaltiger Softwarekollektion, die das Arbeiten vom spielerischen Einstieg bis hin zur Softwareentwicklung auf hohem Niveau ermöglicht.
Aufgrund der stetig zunehmenden Digitalisierung aller Lebensbereiche wird es immer wichtiger, die Konzepte der digitalen Informationsverarbeitung zu verstehen. Nur wer die Arbeitsweise von programmierbaren Systemen und Algorithmen versteht, kann auch realistisch einschätzen, wo deren Grenzen liegen. Darüber hinaus macht es einfach Spaß, eigene Ideen umzusetzen und zum Mitgestalter der digitalen Welt zu werden, anstatt sie nur zu konsumieren.
Dafür stellt der Raspberry Pi den idealen Einstieg dar. Der kleine Einplatinenrechner hat seit seiner Einführung im Jahr 2012 eine riesige Verbreitung gefunden. Über 20 Millionen Exemplare wurden bereits verkauft. Zu den Nutzern zählen nicht nur Bastler und Maker, sondern insbesondere auch Softwaretüftler und angehende Entwickler, denen der Raspberry Pi eine preiswerte Möglichkeit bietet, ein Linux-System einzurichten und damit zu experimentieren oder ein System lautlos und stromsparend im Dauerbetrieb laufen zu lassen, etwa als Homeserver oder als Medienzentrale.
Auch die Programmiersprache Python erfreut sich einer immer größer werdenden Community von Entwicklern und Anwendern, da die Sprache leicht erlernbar und verständlich ist, andererseits aber umfangreiche Bibliotheken für nahezu jeden erdenklichen Anwendungszweck bietet und daher universell einsetzbar ist. Was liegt also näher, als die beiden Welten miteinander zu verbinden?
Dieses Buch bietet eine Einführung in den Umgang mit dem Raspberry Pi und seinem bevorzugten Betriebssystem Linux (in der Raspbian-Distribution) sowie in die Programmiersprache Python 3.
Du brauchst keine Vorkenntnisse. Es wird alles von Grund auf erklärt. Dennoch habe ich versucht, einen breiten Bereich typischer Anwendungen abzudecken, wie etwa Spieleprogrammierung, GUI-Entwicklung oder Web Apps.
Bei der Auswahl der Beispielprojekte habe ich darauf geachtet, dass es sich um brauchbare kleine Anwendungen handelt, die du auch im Alltag benutzen kannst. Gleichzeitig ist der Code aber möglichst kurz gehalten, um für die Veröffentlichung in einem Buch geeignet zu sein. Daher handelt es sich immer um Basisversionen der entsprechenden Anwendungen, die jederzeit mit weiteren Features ausgebaut und erweitert werden können. Ich möchte dich genau dazu in die Lage versetzen. Die Beispielprojekte sind also nicht zum sturen Abtippen gedacht, sondern eher als Ideengeber, die dich dazu bringen sollen, selbst aktiv zu werden und an den Programmen weiterzuarbeiten.
Die Projekte sollen nicht in Stein gemeißelt sein, sondern zum Experimentieren und Probieren einladen. Die in diesem Buch angeschnittenen Themenbereiche sind in sich jeweils so komplex und umfangreich, dass sie nicht erschöpfend dargestellt werden können. Nimm also nicht nur dieses Buch als Anleitung zur Hand, sondern nutze bei Veränderungsideen und Verständnisschwierigkeiten auch Google oder die Coder-Hilfsplattform https://stackoverflow.com, um nach entsprechenden Begriffen zu suchen, denn du wirst schnell feststellen, dass eine Anwendung nie wirklich fertig ist. Es gibt immer Möglichkeiten der Weiterentwicklung. Vielleicht tauchen auch nach langem Einsatz noch Fehler auf, die behoben werden müssen.
An einigen Stellen im Buch setze ich voraus, dass du englischsprachige Texte verstehen kannst. Viele Begriffe in der Programmierung sind auf Englisch und bei fortgeschrittenen Themen wie API-Programmierung stehen oft auch keine deutschsprachigen Schnittstellen und Dokumentationen zur Verfügung. Daher war das nicht immer zu umgehen, doch wenn du tiefer in die IT-Welt einsteigen willst, wirst du wahrscheinlich schon wissen, dass man nicht darum herumkommt, Englisch zu lernen.
In Kapitel 2 zeige ich dir, wie du deinen Raspberry Pi einrichtest und welche Tools für die Python-Programmierung benötigt werden. Du lernst auch die Grundlagen der Linux-Distribution Raspbian kennen, die standardmäßig auf dem RasPi installiert wird.
Mit einer Raspbian-Installation steht dir ein riesiges Softwarepaket kostenlos zur Verfügung, und du kannst gleich mit der Python-Programmierung loslegen. Für fortgeschrittene Projekte musst du manchmal ein externes Modul oder ein neues Programm installieren. Auch das erkläre ich dir alles genau. Du erfährst, wie du über das Paketverwaltungssystem apt ganze Softwarepakete nachinstallieren kannst, aber auch, wie du mit dem Python Package Index gezielt eines der unzähligen Python-Module finden, herunterladen und einbinden kannst.
Es gibt verschiedene Möglichkeiten, auf dem kleinen Rechner zu arbeiten. Du kannst entweder klassisch Tastatur, Monitor und Maus anschließen und wie an einem herkömmlichen Desktop-PC arbeiten. Es ist aber auch möglich, über eine Netzverbindung auf den RasPi zuzugreifen und die Benutzeroberfläche auf einen anderen Computer zu holen. Auch das wird ausführlich erklärt.
In Kapitel 3 führe ich dich in die Grundlagen der Python-Programmierung ein. Anhand eines kleinen Zahlenratespiels stelle ich dir die grundlegenden Programmierkonzepte wie Abfragen, Schleifen, Funktionen und Variablen vor. Außerdem werfen wir einen Blick auf den Debugger, ein wichtiges Werkzeug, um Programmierfehlern auf die Spur zu kommen. Die nächste Stufe ist dann die objektorientierte Programmierung. Diese ist für die Entwicklung moderner Apps notwendig. Das erste Projekt wird ein Vokabeltrainer sein, der dich in einer beliebigen Sprache abfragen kann, für die du eine Textdatei mit den Vokabeln hast.
In Kapitel 4 werfen wir einen Blick auf das weite Feld der Spieleprogrammierung. Mit Pygame ist im Standardumfang von Python auf dem RasPi eine Multimedia-Bibliothek vorhanden, die dir ermöglicht, Grafik und Sound in deine Projekte einzubinden. Das ist ein Thema, das ganze Bücher füllen könnte, deshalb wird im Rahmen dieses Buches nur ein kurzer Einblick möglich sein. Ähnliches gilt für alle weiteren Projekte. Die Projekte können immer nur eine erste Annäherung ans Thema sein. Dennoch wirst du in diesem Kapitel lernen, einfache Grafiken und Animationen zu programmieren und Audiodateien abzuspielen. Am Ende wirst du einen Klassiker unter den Videospielen nachprogrammiert haben, wobei ich die Gelegenheit nutze und die Einführung in die objektorientierte Programmierung nochmals vertiefe.
Zentrales Thema von Kapitel 5 ist die Entwicklung grafischer Benutzeroberflächen. Mit Tkinter stellt Python eine Bibliothek zur Verfügung, die das Erstellen grafischer Benutzerschnittstellen mit Textfeldern, Menüs und Schaltflächen stark vereinfacht. In Kapitel 5 wirst du dem Vokabeltrainer aus Kapitel 3 eine grafische Oberfläche verpassen, um die Anwendung komfortabler zu gestalten und eine Taschenrechner-App für den Desktop entwickeln. Nach dem Durcharbeiten des Kapitels solltest du in der Lage sein, eigene grafische Benutzeroberflächen zu gestalten und umzusetzen und damit deinen eigenen Projektideen eine Oberfläche zu geben.
Neben grafischen Oberflächen sind Web Apps heutzutage eine wichtige Schnittstelle, um Anwendungen an den Benutzer zu bringen. Der Vorteil: Jedes internetfähige Gerät mit einem Webbrowser wird zum Client. Mit Python und dem Modul Flask wirst du in Kapitel 6 lernen, Web Apps zu erstellen. Als praktisches Beispiel entwickelst du eine To-do-App für deinen Raspberry Pi, die auch zur Einkaufsliste oder App für kurze Notizen erweitert werden kann.
Eine Anwendung davon bietet dann Kapitel 7: Hier bauen wir ein Webradio. Dieses wird sowohl als Web App als auch als GUI umgesetzt, sodass du den Radiostream nicht nur vom Raspberry Pi aus steuern kannst, sondern auch per Browser von anderen Geräten in deinem Heimnetzwerk. Dann musst du nur noch einen Lautsprecher anschließen und die Reise in die Welt der weltweiten Audiostreams kann losgehen.
Kapitel 8 greift schließlich ein Thema auf, das du in wenigen anderen Python-Büchern finden wirst. Doch gerade für den Raspberry Pi ist es relevant, weil dieser kleine Rechner gerne im Dauerbetrieb benutzt wird, um Ereignisse im Internet zu protokollieren und Daten zu sammeln, wie z. B. Sportergebnisse, Börsenkurse, Wetter usw. Du wirst lernen, wie man mittels Web Scraping interessante Daten automatisch aus Webseiten extrahiert und wie man mithilfe einer API einen Server kontaktiert, um bestimmte Daten herunterzuladen und sie weiter auszuwerten.
Die Beispielprojekte aus dem Buch in der Übersicht |
|
Kapitel 3 |
Zahlenratespiel Vokabeltrainer (Konsole) |
Kapitel 4 |
Analoguhr Pong |
Kapitel 5 |
Vokabeltrainer (GUI) Taschenrechner |
Kapitel 6 |
To-do-App |
Kapitel 7 |
Webradio (Web) Webradio (GUI) |
Kapitel 8 |
Wetter-App (Konsole) Wetter-App (Web) |
Sämtliche Quellcodes zu den Beispielprojekten stehen in ungekürzter Form auf plus.hanser-fachbuch.de zur Verwendung bereit.
Geben Sie dazu einfach diesen Code ein:
plus-me459-11ca6
Ansonsten bleibt mir an dieser Stelle nur, dir viel Spaß auf der spannenden Reise durch die Möglichkeiten der Sprache Python und des kleinen Raspberry Pi zu wünschen.
Hamburg, August 2020
Jörn Donges
2 | Den Raspberry Pi und Python zum Laufen bringen |