E-Book, Deutsch, 366 Seiten
Reihe: Rheinwerk Computing
Stapel Roboter-Autos mit dem Raspberry Pi
2. Auflage 2019
ISBN: 978-3-8362-6757-1
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection
Planen, bauen, programmieren
E-Book, Deutsch, 366 Seiten
Reihe: Rheinwerk Computing
ISBN: 978-3-8362-6757-1
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection
Der Raspberry Pi ist ein wahres Multitalent! Wie Sie ihm sogar das Fahren beibringen, zeigt Ihnen diese detaillierte Anleitung. Schritt für Schritt bauen Sie Ihr eigenes, individuelles Roboter-Auto. Entweder programmieren Sie die Steuerung und entscheiden genau, wo's lang geht, oder Sie lassen Ihren Wagen selbstständig fahren. Alle Grundlagen und eine Auflistung der benötigten Hardware finden Sie hier.
Aus dem Inhalt:
- Die elektronischen Komponenten kennenlernen: Raspberry Pi, Kamera- und W-LAN-Modul, Motoren, Step-Down-Converter, Ultraschall-Sensor, GPS-Empfänger u. v. m.
- Die benötigten Werkzeuge kennenlernen: Lötkolben, Dritte Hand und Co.
- Grundlagen zum Elektromotor
- So fügt sich alles zusammen: Chassis basteln, Fahrgestell montieren, Elektronik verbauen
- Grundlagen der Elektrizitätslehre
- Verkabelung der elektronischen Komponenten
- Den Raspberry Pi in Betrieb nehmen
- Wichtige Linux-Grundlagen
- Einführung in die Programmierung mit Scratch und Python
- Das Google-Auto hat eine und Ihres auch: Die Kamera nutzen
- Auto-Steuerung: via W-LAN fernsteuern oder vollständig autonom
- Liste der benötigten Elektronik-Komponenten sowie alle Steuerungsprogramme zum Download
Ingmar Stapel studierte technische Informatik und ist aktuell im internationalen Bankenumfeld als IT-Projektleiter tätig; daneben beschäftigt er sich seit Jahren intensiv mit dem Raspberry Pi und der Robotik. Dieses Wissen teilt er gerne auf Vorträgen zum Thema Robotik mit Interessierten aus der Bastler-Szene. Auf seinen privaten Blogs schreibt er außerdem zu vielen aktuellen Techniktrends und berichtet von seinen Reisen.
Autoren/Hrsg.
Weitere Infos & Material
Materialien zum Buch ... 14 Geleitwort ... 15 Vorwort ... 19 1. Einleitung: Was dieses Buch leistet, und was Sie erwartet ... 23
Teil I Bauen Sie Ihr eigenes ferngesteuertes Roboter-Auto mit dem Raspberry Pi! ... 25 2. Das etwas andere Kfz-Praktikum: Einführung in die elektronischen Komponenten ... 27 2.1 ... Komponenten für ein ferngesteuertes Roboter-Auto ... 27 2.2 ... Raspberry Pi: Der Single-Board-Computer ... 29 2.3 ... Das Raspberry-Pi-Kameramodul ... 34 2.4 ... Motortreiber ... 36 2.5 ... Getriebemotoren ... 37 2.6 ... Step-down-Converter ... 38 2.7 ... Batteriehalter und Akkus ... 39 2.8 ... Kabel ... 40 2.9 ... Die richtige microSD-Karte ... 42 2.10 ... Optional, aber unabhängiger trotz Kabel: Ein Netzteil ... 42 2.11 ... Optional, aber gut für weite Strecken: Ein WLAN-USB-Modul ... 43 2.12 ... Optional, aber ideal für die Montage: Raspberry-Pi-Abstandshalter ... 44 3. Schrauber aufgepasst: Eine Übersicht über die benötigten Werkzeuge ... 45 3.1 ... Lötstation ... 46 3.2 ... Löten ... 47 4. Besseres Drehmoment? Der richtige Antrieb für das Roboter-Auto ... 51 4.1 ... Grundlagen zum Elektromotor ... 51 4.2 ... Gar nicht so banal: Räder ... 57 5. Damit es mit dem Blick unter die Haube klappt: Das Chassis ... 61 5.1 ... Ein Chassis aus Pappe ... 61 5.2 ... Ein Chassis aus LEGO®-Bausteinen ... 68 5.3 ... Ein Chassis mithilfe eines Acrylglas-Bausatzes ... 74 6. Benzin war gestern: Grundlagen der Elektrizitätslehre ... 79 6.1 ... Elektrische Gesetze und Formeln ... 79 6.2 ... Beispielrechnung zu den Grundlagen der Elektrizitätslehre ... 81 7. Lange Leitung? Manchmal besser! Verkabelung der elektronischen Komponenten ... 85 7.1 ... Stromversorgung der elektronischen Komponenten ... 86 7.2 ... Motortreiber und Raspberry Pi logisch verbinden ... 88 7.3 ... Verkabelung der Getriebemotoren ... 94 7.4 ... Getriebemotoren mit dem Motortreiber verbinden ... 96 8. Das richtige Betriebssystem macht's! -- Das Raspberry-Pi-Betriebssystem installieren ... 99 8.1 ... Das Betriebssystem auf microSD-Karte vorbereiten ... 100 8.2 ... Raspberry Pi booten ... 102 8.3 ... Raspbian-Spracheinstellungen ... 104 8.4 ... WLAN einrichten ... 105 9. Nerds aufgepasst! Befehle und Programme im Terminal-Fenster ... 109 9.1 ... Das Terminal-Fenster ... 109 9.2 ... Temporäre Administratorrechte ... 110 9.3 ... Im Filesystem navigieren ... 111 9.4 ... Den Texteditor Nano kennenlernen ... 112 9.5 ... Zugriffsrechte ändern ... 114 9.6 ... Neustarten und Herunterfahren des Raspberry Pi ... 115 9.7 ... Die IP-Adresse des Raspberry Pi anzeigen ... 116 9.8 ... Dateiverknüpfung setzen ... 117 9.9 ... Die Programmausgabe in eine ».log«-Datei umleiten ... 117 9.10 ... Wget -- Dateien aus dem Internet herunterladen ... 117
10. Nur so kommt das Ding ans Laufen: Softwareinstallation und -konfiguration ... 119 10.1 ... Das Betriebssystem und die Raspberry-Pi-Firmware aktualisieren ... 121 10.2 ... Den Midnight Commander installieren ... 123 10.3 ... Real VNC Server konfigurieren und Viewer installieren ... 125 10.4 ... PuTTY installieren ... 128 10.5 ... Notepad++ installieren ... 130 10.6 ... Samba Server installieren ... 131 10.7 ... Python-Erweiterungen installieren ... 133 10.8 ... Flask-Web-Framework ... 134 10.9 ... Video-Streaming-Server installieren ... 134 10.10 ... NTP-Zeit-Dienst einrichten ... 135
11. Einfacher geht's nicht: Programmieren mit Scratch ... 137 11.1 ... Die Scratch-Grundlagen ... 138 11.2 ... Ein Scratch-Programmbeispiel für Ihr Roboter-Auto ... 140 11.3 ... Steuerungsprogramm für das Roboter-Auto in Scratch ... 142
12. Fahren ohne Schlangenlinien: Programmieren mit Python ... 145 12.1 ... Kurze Einführung in Python ... 145 12.2 ... Das Steuerungsprogramm in Python ... 146 12.3 ... Die Roboter-Auto-Steuerung starten ... 158
13. Geisterfahrer aufgepasst! Wir sorgen für Durchblick ... 159 13.1 ... Das Google-Auto hat's -- und unseres auch: Die Raspberry-Pi-Kamera installieren ... 159 13.2 ... Mehr als eine bloße Dash-Cam: Live-Video-Stream ... 161
14. Kommuniziere, kommuniziere: Webinterface-Steuerung über WLAN ... 167 14.1 ... Das Web-Framework Flask ... 168 14.2 ... Die Webinterface-Steuerung programmieren ... 168 14.3 ... Das Webinterface starten ... 185
15. Start-Automatik: Den Autostart der Programme konfigurieren ... 187 15.1 ... Ein Start-Skript für den mjpg-streamer anlegen ... 188 15.2 ... Den mjpg-streamer-Dienst einrichten ... 190 15.3 ... Den RobotControlWeb-Dienst einrichten ... 191 15.4 ... Was Sie im ersten Teil des Buches erreicht haben ... 195
Teil II Hände weg vom Steuer: Lassen Sie Ihr Roboter-Auto autonom fahren ... 197
16. Pfadfinder elektronisch: Mit diesen Komponenten fahren Sie autonom ... 199 16.1 ... Komponenten für das autonome Fahren ... 199 16.2 ... Übersicht über die Werkzeuge für Teil 2 des Buches ... 201 16.3 ... Raspberry Pi Sense HAT ... 201 16.4 ... Einführung in den I2C-Datenbus ... 204 16.5 ... Time-of-Flight-Abstandssensor ... 208 16.6 ... GPS-Empfänger ... 210 16.7 ... Servocontroller PCA9685 ... 211 16.8 ... Port Doubler ... 212
17. Achtung, Kabelsalat: Anbau und Verkabelung der elektronischen Komponenten ... 213 17.1 ... Befestigung der elektronischen Komponenten am Roboter-Auto ... 213 17.2 ... Die elektronischen I2C-Komponenten im Roboter-Auto verkabeln ... 220 17.3 ... Die weiteren elektronischen Komponenten im Roboter-Auto verkabeln ... 225
18. Upgrade für Ihr Roboter-Auto: Neue Software für das autonome Fahren ... 231 18.1 ... I2C-Bus-Software installieren ... 231 18.2 ... Octave installieren ... 234 18.3 ... GPS-Software installieren und testen ... 234 18.4 ... NTP-Zeit-Dienst mit GPS-Unterstützung ... 237 18.5 ... Servocontroller-Software installieren ... 238 18.6 ... Installation der VL53L1X-Python-Software ... 239
19. Auslesen, verstehen und programmieren: Bringen Sie die Sensoren und Aktoren zum Laufen ... 241 19.1 ... Raspberry Pi Sense HAT auswerten und programmieren ... 241 19.2 ... Python-Programm zur Verarbeitung der GPS-Koordinaten ... 259 19.3 ... Python-Programme für den Time-of-Flight-Sensor ... 262 19.4 ... Python-Programme für den Servocontroller ... 266
20. Auf die Überholspur: Einführung in die parallele Programmierung mit Python ... 277 20.1 ... Grundlagen der parallelen Programmierung mit Python ... 277 20.2 ... Drehen mit dem Gyroskop ... 288 20.3 ... Orientieren mit dem Kompass ... 294 20.4 ... Annährung zwischen zwei Hindernissen ... 303
21. Machen Sie es sich einfach auf der Rückbank bequem: Programme für autonomes Fahren ... 311 21.1 ... Hindernissen autonom ausweichen ... 311 21.2 ... GPS-Wegpunkte abfahren ... 320
22. Pimpen Sie Ihr Roboter-Auto ... 345 22.1 ... Die Kühlung des Raspberry Pi ... 345 22.2 ... Steuerung mit einem Gamepad ... 346 22.3 ... Anzeige mit einem OLED-Display ... 354
23. Immer noch nicht genug? Weitere Ideen aus der Welt der Modell-Roboter-Autos ... 359 Index ... 361
2.2 Raspberry Pi: Der Single-Board-Computer
Auf Messen und über meine Website erreicht mich immer wieder die Frage, warum ich den Raspberry Pi und nicht den Arduino für das Roboter-Auto verwende. Daher möchte ich Ihnen sowohl den Raspberry Pi als auch den Arduino kurz vorstellen, auf die Unterschiede eingehen und meine Beweggründe für die Wahl des Raspberry Pi darstellen.
2.2.1 Das Gehirn des Roboter-Autos: Warum der Raspberry Pi zum Einsatz kommt
Der Raspberry Pi ist einer der populärsten Single-Board-Computer (oder kurz: SBC). Er wird von der britischen Raspberry Pi Foundation entwickelt. Die Idee und das Ziel ist es, Schulen, Studenten, Makern und Industrieunternehmen einen Computer zu einem günstigen und erschwinglichen Preis anzubieten. Mit diesem Konzept sollen auch Menschen erreicht werden, die sonst keinen Zugang zu einem Computer hätten, mit dem sie z. B. das Programmieren erlernen können.
Der Raspberry Pi ist ein kleiner, scheckkartengroßer Single-Board-Computer (SBC), der meist ein auf Linux basierendes Betriebssystem nutzt. Die Leistung der SBCs ist in den letzten Jahren sehr stark gestiegen, sodass sie als vollwertige Computer eingesetzt werden können. Der Raspberry Pi 4 Modell B ist spätestens jetzt mit seinen 4 GB RAM zu einem vollwertiger Desktop-Computer herangewachsen. Die Single-Board-Computer verfügen in der Regel über sehr viele Ein- und Ausgänge, die über eine entsprechende Software geschaltet werden können. Ein großer Vorteil der SBCs ist, dass sie aus energiesparenden Komponenten aufgebaut sind und mit einer kleinen Batterie oder einem Akku betrieben werden können.
Auf dem Raspberry Pi sind der Prozessor (englisch Central Processing Unit, CPU) sowie die Grafikkarte in einem hochintegrierten Chip, dem sogenannten System-on-a-Chip (SoC), vereinigt. Durch diese Integration wird für den Betrieb des SBC wenig Strom benötigt. Des Weiteren verfügt der neueste Raspberry Pi 4 Modell B über zwei HDMI-Schnittstellen zum parallelen Anschluss von zwei Monitoren sowie über USB-Schnittstellen für den Anschluss weiterer Peripheriegeräte, beispielsweise einer Maus und einer Tastatur. Als Festplatte wird im Raspberry Pi eine microSD-Karte verwendet, die in den dafür vorgesehenen Steckplatz eingesetzt wird.
Über die 40-Pin-Stiftleiste werden diverse Schnittstellen des SoC nach außen geführt, um z. B. Sensoren anschließen zu können. Für die Konnektivität verfügt der Raspberry Pi 4 Modell B über eine WLAN-, LAN- und Bluetooth-Schnittstelle. In Abbildung 2.2 sind die wichtigsten Komponenten und Anschlüsse des Raspberry Pi 4 Modell B dargestellt.
Abbildung 2.2 Komponenten und Anschlüsse des Raspberry Pi 4 Modell B
Der Arduino ist ein sogenannter Mikrocontroller, der im Wesentlichen aus einem einzigen Chip besteht, einem Integrated Circuit (IC). Als in der Maker-Szene sehr beliebter und weitverbreiteter Vertreter der Mikrocontroller eignet sich der Arduino ebenfalls für verschiedenste Bastelprojekte. Er ist seit 2005 auf dem Markt, und dank seiner großen Anhängerschaft gibt es für den Arduino viele Zusatzplatinen, die ihn um weitere Funktionen wie ein Display, Motortreiber oder WLAN/LAN-Anschlüsse erweitern. Diese Zusatzplatinen werden Shields genannt und können übereinander direkt auf die Anschlüsse des Arduino aufgesteckt werden. Abbildung 2.3 zeigt einen Arduino UNO R3 mit einem ATMEGA-328PU-IC.
Mikrocontroller wie der Arduino verfügen im Gegensatz zu einem SBC wie dem Raspberry Pi über ein paar Einschränkungen. Allerdings wollte ich bei meinen Projekten auf die Funktionen, die der Raspberry Pi dem Arduino voraushat, nicht verzichten:
-
Zum einen kann auf dem IC des Arduino kein Betriebssystem ausgeführt werden. Der Raspberry Pi hingegen verfügt über ein vollwertiges Betriebssystem mit einer grafischen Oberfläche, die eine einfache Bedienung ermöglicht. Für die Programmierung des Arduino wird ein weiterer Computer benötigt, auf dem die Entwicklung stattfindet und von dem aus der Programmcode in den Arduino geladen wird.
-
Zum anderen verfügt der Raspberry Pi über eine Vielzahl von Schnittstellen, wie beispielsweise zwei HDMI-Grafikausgänge, WLAN, LAN und Bluetooth, USB-3.0/2.0-Schnittstellen, die bei einem Arduino UNO R3 bei Bedarf über zusätzliche Shields nachgerüstet werden müssen. Diese zusätzlichen Shields würden den Arduino in der Höhe deutlich vergrößern und damit unhandlicher machen. Von der Kostenseite betrachtet, würden die einzelnen Shields deutlich teurer werden als ein Raspberry Pi 4 Modell B.
-
Der Raspberry Pi verfügt über wesentlich mehr Rechenleistung, ein eigenes Betriebssystem und die bereits erwähnten vielfältigen Anschlussmöglichkeiten. Deshalb habe ich ihn für das Roboter-Auto-Projekt ausgewählt. Außer im Roboter-Auto können Sie den Raspberry Pi auch als Mediacenter, Arcade-Spielautomat und für viele weitere Projekte verwenden. Hier sind dem Arduino Grenzen gesetzt: Seine Einsatzgebiete sind nicht derart flexibel.
Abbildung 2.3 Komponenten des Arduino UNO R3
Auch Single-Board-Computer-Modelle von anderen Herstellern, wie der Odroid C2 von Hardkernel, das ASUS Tinker Board und der NVIDIA Jetson Nano eignen sich generell für den Bau des Roboter-Autos. Schlussendlich habe ich mich aber für den Raspberry Pi entschieden, da die große und weltweit aktive Raspberry Pi Community bei vielen Fragestellungen aktiv weiterhilft und die Softwareunterstützung des Raspberry Pi keine Wünsche offenlässt.
2.2.2 Der Raspberry Pi 4 Modell B und seine Familienmitglieder
Für das Roboter-Auto empfehle ich Ihnen, den Raspberry Pi 4 Modell B mit 4 GB RAM zu verwenden. Es handelt sich dabei um das aktuellste und leistungsstärkste Modell der Raspberry-Pi-Familie. Der Raspberry Pi 4 Modell B wird in drei Varianten angeboten die sich lediglich in der Größe des Arbeitsspeichers von 1 GB, 2 GB oder 4 GB unterscheiden.
Damit Sie einen Überblick über die gesamte Raspberry-Pi-Familie bekommen, sehen Sie hier die unterschiedlichen Modelle, die von 2012 bis Juli 2019 von der Raspberry Pi Foundation veröffentlicht wurden:
-
Raspberry Pi Modell A (Erscheinungsdatum: 2012)
-
Raspberry Pi Modell B (2012)
-
Raspberry Pi Modell A+ (2013)
-
Raspberry Pi Modell B+ (2013)
-
Raspberry Pi Compute Module (2014)
-
Raspberry Pi 2 Modell B (2015)
-
Raspberry Pi ZERO (2015)
-
Raspberry Pi 3 Modell B (2016)
-
Raspberry Pi ZERO 1.3 (2016)
-
Raspberry Pi ZERO W/WH (2017/2018)
-
Raspberry Pi 3 Modell B+ (2018)
-
Raspberry Pi 4 Modell B mit 1/2/4 GB RAM (2019)
Im Wesentlichen unterscheiden sich die Modelle in der Anzahl der Schnittstellen, in der Größe des Arbeitsspeichers und in der CPU-Geschwindigkeit.
Auf der Website der Raspberry Pi Foundation stehen weitere Informationen über die Raspberry-Pi-Familie zur Verfügung:
2.2.3 Das kleinste Familienmitglied: Die Raspberry-Pi-ZERO-Familie
Die Raspberry-Pi-ZERO-Familie nimmt eine besondere Rolle unter den Single-Board-Computern ein. Daher möchte ich auf diese Modelle etwas näher eingehen. Mit einem Preis von ca. 5 € und einer CPU-Taktrate von 1 GHz ist der ZERO extrem kostengünstig. Der Raspberry Pi ZERO W wurde 2017 vorgestellt und verfügt über ein WLAN-Modul. Der Raspberry Pi ZERO WH wird mit WLAN und aufgelöteter 40-Pin-Headerleiste geliefert. Dennoch verfügen alle Raspberry-Pi-ZERO-Modelle nur über eine geringe Anzahl von Anschlüssen. Dazu gehören ein Mikro-USB-Anschluss, ein Mini-HDMI-Anschluss und eine Mikro-CSI-Schnittstelle für die Raspberry-Pi-Kamera. Dieser Mikro-CSI-Anschluss ist ab der ZERO-Version 1.3 verbaut und ist schmaler als der herkömmliche CSI-Anschluss, der bei den anderen Raspberry-Pi-Modellen verwendet wird.
Daher wird für alle Modelle des Raspberry Pi ZERO ein spezielles CSI-Kabel für den Anschluss der Kamera benötigt, das Sie in...