Kaffka | LEGO®-Roboter bauen, steuern und programmieren mit Raspberry Pi und Python | E-Book | sack.de
E-Book

E-Book, Deutsch, 344 Seiten

Reihe: mitp Professional

Kaffka LEGO®-Roboter bauen, steuern und programmieren mit Raspberry Pi und Python


1. Auflage 2021
ISBN: 978-3-7475-0312-6
Verlag: mitp Verlags GmbH & Co.KG
Format: EPUB
Kopierschutz: 0 - No protection

E-Book, Deutsch, 344 Seiten

Reihe: mitp Professional

ISBN: 978-3-7475-0312-6
Verlag: mitp Verlags GmbH & Co.KG
Format: EPUB
Kopierschutz: 0 - No protection



Bau- und Programmieranleitungen für mehr als 10 spannende Roboter-ProjekteLabyrinthe lösen, Pappkarten per Bilderkennung abschießen, Formen mit einem neuronalen Netz erkennen u.v.m.Programmcode und Bauanleitungen für alle Roboter zum DownloadLEGO®-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 ausweichenLösen eines Labyrinths mithilfe von künstlicher IntelligenzLinienverfolgung und Formen erkennen mit einem neuronalen NetzPappkarten abschießen per BilderkennungSammeln farbiger JoghurtbecherTexte morsen inkl. Anleitung zum Basteln eines eigenen Touch-SensorsBei 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.
Kaffka LEGO®-Roboter bauen, steuern und programmieren mit Raspberry Pi und Python jetzt bestellen!

Zielgruppe


Alle, die gerne mit Lego und Elektronik basteln


Autoren/Hrsg.


Weitere Infos & Material


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 Mit ?Spannung ist die Stärke einer Spannungsquelle gemeint. Der Raspberry Pi arbeitet mit 3,3 und 5 Volt. Die Abkürzung ?GND steht für Ground oder ?Masse. Elektrischer Strom fließt zwischen der Spannungsquelle und Masse. Daher benötigen elektronische Komponenten immer beide Anschlüsse. 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. Tabelle 2.1: Bedeutung der Pins der GPIO-Schnittstelle 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 ?ADC ist eine Abkürzung für ?Analog / Digital Converter. Es handelt sich um einen Baustein, der eine Spannung (analog) in eine Zahl (digital) umwandeln kann. ?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. GPIO.setmode(GPIO.BOARD) GPIO.setup(11, GPIO.OUT) GPIO.setup(12, GPIO.IN) 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). GPIO.output(11, HIGH) if (GPIO.input(12) == 0): pass Listing 2.2: Ansteuerung von Pins der GPIO-Schnittstelle 2.3  Den ?Raspberry Pi konfigurieren
Bevor der...


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.



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.