LEGO®-Roboter bauen, steuern und programmieren mit Raspberry Pi und Python (eBook)
344 Seiten
MITP Verlags GmbH & Co. KG
978-3-7475-0312-6 (ISBN)
- Bau- und Programmieranleitungen für mehr als 10 spannende Roboter-Projekte
- Labyrinthe lösen, Pappkarten per Bilderkennung abschießen, Formen mit einem neuronalen Netz erkennen u.v.m.
- Programmcode und Bauanleitungen für alle Roboter zum Download
LEGO®-Steine - sei es als selbstgebaute LEGO®-Fahrzeuge, -Roboter oder als LEGO®-Fertigmodelle - lassen sich hervorragend mit Elektronikkomponenten zum Leben erwecken und programmieren. Hierfür ist der Mikrocontroller Raspberry Pi besonders gut geeignet. Anhand konkreter Projekte zeigt Ihnen der Autor, wie Sie Sensoren und Motoren von LEGO® sowie weitere Elektronikkomponenten mit dem Raspberry Pi verbinden und Ihre Roboter programmieren. Durch den Einsatz der Programmiersprache Python können die Roboter einfache und komplexe Aufgaben lösen bis hin zu Linienverfolgung mit einem neuronalen Netz oder Bilderkennung.
Im ersten Teil des Buches erhalten Sie eine kurze Einführung in den Mikrocontroller Raspberry Pi sowie den BrickPi, der für die Verbindung von LEGO®-Sensoren mit dem Raspberry Pi benötigt wird. Außerdem vermittelt der Autor die Grundlagen zu allen Elektronikkomponenten, mit denen Sie Ihre LEGO®-Modelle oder -Roboter ausstatten können. Dazu zählen unter anderem mittlere und große LEGO®-Motoren sowie folgende Komponenten: Color-Sensor, Touch-Sensor und Infrarot-Sensor von LEGO®, Kompass-Sensor und Gyro-Sensor von Hitechnic, Raspberry-Pi-Kamera, Fototransistor, LEDs und Motoren.
Im zweiten Teil des Buches finden Sie eine kurze Einführung in die Grundlagen der Programmierung mit Python, gefolgt von einem umfangreichen Projektteil mit 11 spannenden Robotern, die diverse Aufgaben lösen, wie zum Beispiel:
- Gegenstände erkennen und diesen ausweichen
- Lösen eines Labyrinths mithilfe von künstlicher Intelligenz
- Linienverfolgung und Formen erkennen mit einem neuronalen Netz
- Pappkarten abschießen per Bilderkennung
- Sammeln farbiger Joghurtbecher
- Texte morsen inkl. Anleitung zum Basteln eines eigenen Touch-Sensors
Bei allen Projekten erläutert der Autor sowohl den Bau der Roboter als auch die entsprechende Programmierung.
Hardware:
Für die Projekte im Buch werden sowohl die LEGO®-eigenen Komponenten als auch günstige handelsübliche Motoren und Sensoren eingesetzt. Sie können einen eigenen Roboter bauen, die LEGO®-Roboter im Buch nachbauen oder als Grundlage ein LEGO®-Fertigmodell verwenden. Für alle im Buch verwendeten LEGO®-Roboter gibt es die Bauanleitungen zum kostenlosen Download.
Thomas Kaffka hat als Softwareingenieur sowie Projektleiter in Softwarehäusern und Wirtschaftsprüfungs- und Beratungsgesellschaften gearbeitet. Er ist ein echter Maker und beschäftigt sich mit verschiedenen Themen wie etwa dem Bau von LEGO®-Robotern, der Künstlicher Intelligenzforschung sowie dem 3D-Druck.
Thomas Kaffka hat als Softwareingenieur sowie Projektleiter in Softwarehäusern und Wirtschaftsprüfungs- und Beratungsgesellschaften gearbeitet. Er ist ein echter Maker und beschäftigt sich mit verschiedenen Themen wie etwa dem Bau von LEGO®-Robotern, der Künstlicher Intelligenzforschung sowie dem 3D-Druck.
Kapitel 2:
Der Raspberry Pi stellt sich vor
Abb. 2.1: Der Raspberry Pi 3 B+
2.1 Der Einplatinencomputer
Der Raspberry Pi 3 B+ hat das Format einer Scheckkarte, ist also sehr klein. Auch wenn es nicht so aussieht, er ist ein vollständiger Computer mit Betriebssystem. Es ist zumeist das Raspberry Pi OS, bei dem es sich um eine Linux-Distribution handelt. An den Raspberry Pi können eine USB-Tastatur, eine USB-Maus, ein HDMI-Monitor, ein LAN-Kabel sowie ein USB-Netzteil angeschlossen werden. Er verfügt aber auch über WLAN.
Das Betriebssystem wird auf einer Mikro-SD-Karte installiert. Das hat einen entscheidenden Vorteil. Wir verwenden den Raspberry Pi in diesem Buch sowohl zur Ansteuerung von LEGO-Komponenten als auch von sogenannten »Fremdkomponenten« (das sind elektronische Komponenten, die auf dem Elektromarkt verfügbar sind). Dazu werden zwei verschiedene Betriebssystemumgebungen benötigt. Insbesondere verwenden wir bei der Steuerung der LEGO-Komponenten eine spezielle Distribution von Raspbian (auch ein Betriebssystem für den Raspberry Pi), die von Dexter Industries, dem Lieferanten der Schnittstelle (BrickPi3) zu den LEGO-Komponenten, zur Verfügung gestellt wird. Beide Umgebungen halten wir jeweils auf einer eigenen Mikro-SD-Karte vor. Wenn wir zwischen der Ansteuerung von LEGO- und Fremdkomponenten wechseln, brauchen wir so nur die Mikro-SD-Karte auszutauschen, wirklich praktisch.
Das Betriebssystem Raspberry Pi OS sowie das Raspbian (der Vorgänger des erstgenannten Betriebssystems) bieten eine grafische Oberfläche (GUI, graphical user interface), ähnlich wie der von Windows, sodass man mit dem Computer komfortabel arbeiten kann.
Abb. 2.2: Die GUI des Raspberry Pi OS
Das Betriebssystem bringt bereits eine Installation von Python mit, sodass Sie mit dem Programmieren Ihrer Roboter sofort loslegen können. Dabei verwenden wir Python 3.
Python ist eine moderne Programmiersprache, die von Guido van Rossum 1989 erfunden wurde. Es gibt eine ganze Menge Erleichterungen, die das Programmieren sehr komfortabel gestalten. Python verfügt unter anderem auch über die Möglichkeit, Programmabschnitte parallel zum Hauptprogramm verarbeiten zu lassen. Solche Programmabschnitte werden »Threads« genannt. Diese Technologie machen wir uns etwa bei der Verwaltung der Zähler zunutze, die von den Encodern der Motoren gesteuert werden. Eine kurze Einführung in Python erfolgt in Teil II meines Buches.
Den Raspberry Pi gibt es mittlerweile in verschiedenen Ausführungen, wie beispielsweise:
-
Raspberry Pi 4, Modell B 4
-
Raspberry Pi 4, Modell B 2
-
Raspberry Pi 3, Modell B+
-
Raspberry Pi 3
-
Raspberry Pi 2, Modell B
-
Raspberry Pi 1, Modell B+
-
Raspberry Pi, Modell A+ etc.
Wir verwenden in diesem Buch den Raspberry Pi 3 B+, bei dem ich aber zumeist die »Drei« und das »B+« unterschlage. Leider können wir mit der neuesten Version des Raspberry Pi 4 nicht arbeiten, da er zur Zeit der Drucklegung des Buches nicht mit dem BrickPi3 (dem Modul zur Ansteuerung der LEGO-Komponenten) kompatibel ist.
Besonders schön ist es, dass es für den Raspberry Pi auch eine spezielle, preiswerte Kamera gibt, die direkt auf dem Board angeschlossen werden kann. Wir werden bei unseren Robotern auch diese Kamera zur Bilderkennung verwenden.
Für die Stromversorgung des Raspberry Pi bieten sich verschiedene Alternativen an. Wenn der Roboter programmiert wird, verwenden wir ein USB-Netzteil, das mindestens 2,5 Ampere liefern sollte. Damit ist es möglich, bei der Programmierung auch weitere elektronische Komponenten mit Strom zu versorgen. Die Motorspannung von +6 Volt (+9 Volt beim BrickPi3) entnehmen wir einem Batteriepack mit AA-Batterien. Wenn ein Roboter autonom laufen soll, verwenden wir zur Versorgung des Raspberry Pi einen USB-Akku.
2.2 Die GPIO-Schnittstelle
Die GPIO-Schnittstelle (general purpose input/output) ist eine 40-polige Stiftleiste am Rande der Raspberry-Pi-Platine, mit der Sie den Raspberry Pi mit verschiedenen Hardware-Komponenten verbinden können (siehe Abbildung 2.3).
Abb. 2.3: Die GPIO-Schnittstelle des Raspberry Pi
Diese hat die Pinbelegung, die aus Abbildung 2.4 hervorgeht.
Abb. 2.4: Pinbelegung der GPIO-Schnittstelle
Die Pins 3 und 5 beziehen sich auch auf die I2C-Schnittstelle. Dabei handelt es sich um eine Schnittstelle, die zur Kommunikation zwischen dem Raspberry Pi und ICs verwendet wird.
Die Pins 11, 12, 13 können zum Anschluss von SPI-Bausteinen verwendet werden (Kanal 1). Auch die SPI-Schnittstelle dient zur Kommunikation mit elektronischen Komponenten.
Hinweis
ICs sind elektronische Bauteile, die sich in kleinen schwarzen Plastikboxen befinden und über verschiedene Kontaktbeinchen verfügen. Das IC MCP3008 wird beispielsweise in Kapitel 18 vorgestellt (siehe Abbildung 18.9). Bei SPI-Bausteinen handelt es sich zumeist auch um ICs, die über die SPI-Schnittstelle angesprochen werden.
Pin 12 hat noch eine Spezialaufgabe: Die Ausgabe von Audiosignalen über den Audioausgang der Platine erfolgt über Pin 12. Für den SPI-Kanal 0 sind die Pins 19, 21, 23, 24 und 26 zuständig. (Mit Kanal 0 und 1 lassen sich dann zwei unterschiedliche SPI-Bausteine ansprechen.) Es gibt elektronische Komponenten, wie beispielsweise Sensoren, die über die SPI-Schnittstelle angesprochen werden müssen. Das bereits erwähnte IC MCP3008 wird beispielsweise über die SPI-Schnittstelle gesteuert.
Die Aufzählung weiterer Spezialpins möchte ich an dieser Stelle nicht vornehmen, da diese für unseren Roboterbau nicht vonnöten sind. Das bedeutet, dass die übrigen Pins, die nicht Spannung oder Masse führen, uns als digitale Ein-/Ausgänge dienen können.
Hinweis
Wenn Sie sich nur mit den elektrischen LEGO-Komponenten beschäftigen, brauchen Sie die Pins der GPIO-Schnittstelle nicht zu kennen, da diese von der LEGO-Schnittstelle (BrickPi3) verwendet werden und Sie mit ihnen nicht direkt in Kontakt kommen. Nur wenn Sie mit Fremdkomponenten arbeiten, sind die Pins für Sie wichtig.
In Tabelle 2.1 werden die Pins noch einmal einzeln erläutert.
Pin | Bedeutung |
---|
1, 2, 4, 6, 9, 14, 17, 20, 25, 30, 34, 39 | Verschiedene Spannungen |
3, 5 | I2C-Schnittstelle |
11, 12, 13 | SPI-Schnittstelle (Kanal 1), wobei über Pin 12 auch Audiosignale ausgegeben werden können |
19, 21, 23, 24, 26 | SPI-Schnittstelle (Kanal 0) |
7, 8, 10, 15, 16, 18, 22, 27, 28, 29, 31, 32, 33, 35, 36, 37, 38, 40 | Pins zur Steuerung elektronischer Komponenten |
Der Raspberry Pi verfügt nicht über analoge Eingangsports. Analoge Eingangssignale können aber über einen entsprechenden ADC-Baustein (etwa den MCP3008) eingelesen werden. Ein analoges Ausgangssignal formt man mit der PWM (Pulsweitenmodulation) über einen digitalen Ausgang.
Hinweis
Wenn bestimmte Pins der GPIO-Schnittstelle verwendet werden sollen, müssen sie zunächst initialisiert werden. In Listing 2.1 werden jeweils Pin 12 als Input und Pin 11 als Output konfiguriert.
Listing 2.1: Initialisierung von Pins der GPIO-Schnittstelle
Das erste Statement legt fest, dass wir Pin-Nummern und nicht GPIO-Nummern verwenden können, was ich als praktischer erachte.
Hinweis
Bei der GPIO-Schnittstelle hat die Pin-Nummer 37 die GPIO-Nummer 25, siehe auch Abbildung 2.4. Pin-Nummern sind daher übersichtlicher, da sie sich auf die Pins der Schnittstelle beziehen und beim Kontaktieren einfach abgezählt werden können.
Im Verlaufe des Programms können die Pins als Output-Pin angesteuert oder als Input-Pin abgefragt werden (Listing 2.2).
Listing 2.2: Ansteuerung von Pins der GPIO-Schnittstelle
Erscheint lt. Verlag | 16.9.2021 |
---|---|
Reihe/Serie | mitp Professional |
Verlagsort | Frechen |
Sprache | deutsch |
Themenwelt | Mathematik / Informatik ► Informatik |
Schlagworte | brickpi • Buch • Elektronik • EV3 • KI • LEGO • Maker • Programmieren lernen • Python • Raspberry Pi • Roboter • RPi • Sensoren • Technik |
ISBN-10 | 3-7475-0312-8 / 3747503128 |
ISBN-13 | 978-3-7475-0312-6 / 9783747503126 |
Haben Sie eine Frage zum Produkt? |
Größe: 13,4 MB
Digital Rights Management: ohne DRM
Dieses eBook enthält kein DRM oder Kopierschutz. Eine Weitergabe an Dritte ist jedoch rechtlich nicht zulässig, weil Sie beim Kauf nur die Rechte an der persönlichen Nutzung erwerben.
Dateiformat: EPUB (Electronic Publication)
EPUB ist ein offener Standard für eBooks und eignet sich besonders zur Darstellung von Belletristik und Sachbüchern. Der Fließtext wird dynamisch an die Display- und Schriftgröße angepasst. Auch für mobile Lesegeräte ist EPUB daher gut geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür die kostenlose Software Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür eine kostenlose App.
Geräteliste und zusätzliche Hinweise
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich