View
241
Download
1
Category
Preview:
Citation preview
Ingmar Stapel
Bauanleitung für ein ferngesteuertes
Roboter Auto
mit dem Raspberry Pi
• Einstieg in die Robotik mit dem Raspberry Pi
• Erklärung der Hardware und Elektronik
• Einführung in die Programmierung mit Scratch und Python zur
Entwicklung der Roboter Software
• Schritt für Schritt Anleitung zum vollständigen Aufbau eines Roboter
Autos mit live Video Streaming
2. vollständig überarbeitete und erweiterte Auflage
Ingmar Stapel studierte technische Informatik und ist aktuell im internationalen Bankenumfeld als IT-
Projektleiter tätig.
Auf seinen privaten Blogs beschäftigt er sich mit den aktuellen Technik Trends und berichtet von seinen
Reisen. Seit 2013 hat er sich Know How im Umfeld der Single Board Computer und der Robotik
erarbeitet. Dieses Wissen teilt er gerne auf Vorträgen zum Thema Robotik mit Interessierten aus der
Do-it-Yourself Szene.
So ist aus seinem neuesten Projekt, ein ferngesteuertes Modellauto auf Basis des Raspberry Pi, dieses
Buch entstanden.
Autor: Ingmar Stapel
Website: http://custom-build-robots.com
E-Mail: book@custom-build-robots.com
Umschlaggestaltung, Illustration: Kathrin Stapel, Ingmar Stapel
Lektorat, Korrektorat: Kathrin Stapel, Joachim Stapel
2. vollständig überarbeitete und erweiterte Auflage, 2016.
Das Werk, einschließlich seiner Teile, ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die direkte schriftliche Zustimmung von Ingmar Stapel urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen. Es wird ausdrücklich darauf hingewiesen, dass die im Buch verwendeten Software- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichen Schutz unterliegen. Die in diesem Buch verwendeten Software, Hardware und Angaben wurden mit größter Sorgfalt getestet und auf Kompatibilität kontrolliert. Der Autor kann nicht für Schäden haftbar gemacht werden, die im Zusammenhang mit der Verwendung dieses Buches entstehen.
Danksagung
I
Danksagung
Bedanken möchte ich mich bei meiner Frau, die mich unterstützt und immer wieder die Verwandlung
des Wohnzimmers in eine kleine Werkstatt erträgt.
Inhaltsverzeichnis
II
Inhaltsverzeichnis
Danksagung ............................................................................................................................................. I
Inhaltsverzeichnis .................................................................................................................................... II
Abkürzungsverzeichnis ............................................................................................................................ V
1 Einleitung ......................................................................................................................................... 1
2 Einführung elektronische Komponenten .......................................................................................... 3
2.1 Raspberry Pi Single Board Computer .......................................................................................4
2.2 Raspberry Pi Kamera Modul .....................................................................................................5
2.3 W-LAN USB Modul ...................................................................................................................5
2.4 Getriebemotoren .......................................................................................................................6
2.5 Motortreiber ...............................................................................................................................6
2.6 Batterie ......................................................................................................................................7
2.7 Step-Down Converter ................................................................................................................8
2.8 Kabel .........................................................................................................................................9
3 Übersicht Werkzeuge ...................................................................................................................... 9
4 Roboter Auto Chassis .................................................................................................................... 10
4.1 Chassis aus LEGO® Bausteinen ............................................................................................ 10
4.1.1 Aufbau der Getriebemotorhalterung ................................................................................ 11
4.1.2 Fahrgestell montieren ...................................................................................................... 12
4.1.3 Zusammenfassung Chassis aus LEGO® Bausteinen ...................................................... 13
4.2 Chassis aus Acrylglas Bausatz .............................................................................................. 14
4.2.1 Übersicht der Einzelteile .................................................................................................. 14
4.2.2 Zusammenfassung Chassis aus Acrylglas Bausatz ........................................................ 15
4.3 Chassis aus Pappe ................................................................................................................ 16
4.3.1 Cardboard Chassis Modellzeichnung .............................................................................. 17
4.3.2 Einbau der Getriebemotoren und der Elektronik ............................................................. 19
4.3.3 Zusammenfassung Chassis aus Pappe .......................................................................... 21
5 Grundlage der Elektrizitätslehre .................................................................................................... 22
5.1 Elektrische Grundgesetze und Formeln ................................................................................. 22
5.2 Beispielrechnung zu den Grundlagen der Elektrizitätslehre .................................................. 23
5.3 Zusammenfassung – Elektrizitätslehre .................................................................................. 24
6 Verkabelung der elektronischen Komponenten ............................................................................. 25
6.1 Elektronische Komponenten anschließen .............................................................................. 26
6.2 Motortreiber mit Raspberry Pi logisch verbinden ................................................................... 27
6.3 Verkabelung der Getriebemotoren ......................................................................................... 31
6.4 Getriebemotoren mit dem Motortreiber verbinden ................................................................. 32
6.5 Zusammenfassung – Verkabelung ........................................................................................ 32
7 Software Installation und Konfiguration ......................................................................................... 33
7.1 Betriebssystem auf SD Karte vorbereiten .............................................................................. 33
Inhaltsverzeichnis
III
7.2 Raspberry Pi booten .............................................................................................................. 34
7.3 Raspberry Pi aktualisieren ..................................................................................................... 36
7.4 Midnight Commander installieren .......................................................................................... 37
7.5 TightVNC Server und Viewer installieren ............................................................................... 39
7.5.1 TightVNC Server installieren ............................................................................................ 39
7.5.2 TightVNC Viewer installieren ........................................................................................... 40
7.6 Samba Server installieren ...................................................................................................... 41
7.7 PuTTY installieren .................................................................................................................. 44
7.8 Python installieren .................................................................................................................. 44
7.9 W-LAN einrichten ................................................................................................................... 44
7.9.1 Grafische W-LAN Konfiguration ....................................................................................... 44
7.9.2 Manuelle W-LAN Konfiguration........................................................................................ 45
7.10 Notepad++ installieren ........................................................................................................... 48
7.11 Subversion installieren ........................................................................................................... 49
7.12 Video Streaming Server installieren ....................................................................................... 49
7.13 Zusammenfassung – Software Installation ............................................................................ 51
8 Programmieren mit Scratch ........................................................................................................... 52
8.1 Scratch Programmbeispiel ..................................................................................................... 52
8.2 Roboter Auto Steuerungsprogramm in Scratch ..................................................................... 54
8.3 Zusammenfassung – Programmieren mit Scratch................................................................. 55
9 Programmieren mit Python ............................................................................................................ 56
9.1 Steuerungsprogramm in Python ............................................................................................ 56
9.2 Steuerung starten ................................................................................................................... 65
9.3 Zusammenfassung – Programmierung mit Python ............................................................... 65
10 Raspberry Pi Kamera installieren .................................................................................................. 66
10.1 Kameramodul aktivieren ........................................................................................................ 66
10.2 Zusammenfassung – Raspberry Pi Kameramodul ................................................................ 67
11 Live Video Stream ......................................................................................................................... 68
11.1 Kernelmodul bcm2835-v412 laden ........................................................................................ 68
11.2 Mjpg-streamer konfigurieren .................................................................................................. 68
11.3 Modul bcm2835-v4l2 automatisch laden ............................................................................... 70
11.4 Zusammenfassung – Live Video Stream ............................................................................... 71
12 Web-Interface Steuerung über W-LAN .......................................................................................... 72
12.1 WebIOPi Framework installieren ........................................................................................... 72
12.2 Web Interface Steuerung programmieren .............................................................................. 74
12.3 Web-Interface starten ............................................................................................................. 82
12.4 Zusammenfassung – WebIOPi .............................................................................................. 82
13 Autostart der Programme konfigurieren ........................................................................................ 83
13.1 Mjpg-streamer Dienst einrichten ............................................................................................ 83
13.2 RobotControlWeb Dienst einrichten ....................................................................................... 86
Inhaltsverzeichnis
IV
13.3 Zusammenfassung – Dienste automatisch Starten ............................................................... 88
14 Kühlung mit passiven Kühlkörper .................................................................................................. 89
15 Ausblick .......................................................................................................................................... 90
Abkürzungsverzeichnis
V
Abkürzungsverzeichnis
CSI Camera Serial Interface
GPIO General Purpose Input/Output
MAC Media-Access-Control
PWM Pulsweitenmodulation
SID Security Identifier
SSH Secure Shell (Netzwerkprotokoll)
SVN Subversion
VNC Virtual Network Computing
1 Einleitung
1
1 Einleitung
Single Board Computer, wie beispielsweise der Raspberry Pi1, werden immer populärer und haben eine
große Anhängerschaft, die vielfältige Projekte mit den kleinen Rechnern verwirklichen. In Büchern,
Webseiten und Foren werden allgemeine Informationen rund um die Single Board Computer detailliert
erläutert, jedoch fehlt es oft an einer Anleitung zur konkreten Umsetzung eines Projektes. Diese Lücke
wird durch das vorliegende Buch geschlossen, indem der Leser schrittweise durch die einzelnen
Projektphasen geführt wird, mit dem Ergebnis ein individuelles Roboter Auto selbst gebaut zu haben.
Für die Wahl des Raspberry Pi als Steuereinheit für das Roboter Auto, war im Wesentlichen die große
und weltweit aktive Community im Internet ausschlaggebend. Diese unterstützt tatkräftig bei Fragen und
ist ein Nährboden für neue Ideen. Die Computer der Raspberry Pi Foundation werden an Schulen und
in der Forschung verwendet und sind ideal für Do-it-Yourself Projekte wie das hier vorgestellte Roboter
Auto.
Das Buch führt Schritt für Schritt durch das gesamte Projekt bis zum fertigen Roboter Auto. Es wird das
Zusammenspiel aus Hardware, Elektrizität und Software prinzipiell erklärt und anhand konkreter
Beispiele verdeutlicht. So erschließen sich auf spielerische Weise die komplexen Zusammenhänge.
• Dieses Buch beginnt mit einer Vorstellung der elektronischen Komponenten, wie beispielsweise
dem Raspberry Pi und den Motortreiber, die für den Bau des Roboter Autos notwendig sind.
• Anhand von drei Beispielen wird erläutert, wie das Roboter Auto Chassis aus LEGO®2
Bausteinen, aus Pappe oder anhand eines fertigen Bausatzes aufgebaut werden kann.
• Für ein besseres Verständnis der Stromversorgung im Roboter Auto werden die Grundlagen
der Elektrizitätslehre erläutert.
• Anhand zahlreicher Bilder wird die Verkabelung der elektronischen Komponenten
veranschaulicht.
• Die notwendige Software, deren Installation und Konfiguration wird ausführlich erklärt.
• Für Einsteiger in die Programmierung wird in Scratch und in Python jeweils ein Steuerprogramm
für das Roboter Auto beschrieben und zum Download bereitgestellt.
• Die Raspberry Pi Kamera und die Übertragung des live Videos über W-LAN aus dem Roboter
Auto heraus wird ausführlich erläutert.
• Die Steuerung des Roboter Autos über ein Web-Interface sowie das Einrichten von Diensten
wird detailliert beschrieben.
1 Raspberry Pi ist ein eingetragenes Markenzeichen der Raspberry Pi Foundation http://www.raspberry-pi.org. 2 LEGO® ist eine Marke der LEGO® Gruppe, durch die das vorliegende Buch jedoch weder gesponsert noch
autorisiert oder unterstützt wird.
1 Einleitung
2
An wen sich dieses Buch richtet
Die Zielgruppe sind Jugendliche ab einem Alter von 13 Jahren und Erwachsene, die ein Interesse an
Elektronik und Computerhardware haben und selber ein Projekt umsetzen möchten. Grundkenntnisse
in der Programmierung sind nicht zwingend erforderlich.
Zeitaufwand
Das Roboter Auto Projekt ist darauf ausgelegt, dass es an einem Wochenende umgesetzt werden kann.
2 Einführung elektronische Komponenten
3
2 Einführung elektronische Komponenten
Die für den Bau des Roboter Autos notwendigen elektronischen Komponenten werden in diesem Kapitel
vorgestellt. Die wichtigen Basiskomponenten wie beispielsweise der Raspberry Pi, die Getriebemotoren
und die Kamera werden in den nachfolgenden Kapiteln ausführlich erklärt.
Die folgende Übersicht zeigt alle für das Roboter Auto benötigten elektronischen Komponenten
Komponente Beschreibung
Raspberry Pi 2 Modell B Single Board Computer als zentrale Recheneinheit
Raspberry Pi Kamera Ermöglicht das live Video Streaming
SD-Karte (mind. 8 GB) Speicher für Betriebssystem und Programme
W-LAN USB Modul Ermöglicht die Steuerung über WIFI / W-LAN
Getriebemotor Für den Antrieb des Roboter Autos
Motortreiber Regelt die Geschwindigkeit und Drehrichtung der Motoren
6x Mignon Akkus Stromversorgung für das Roboter Auto
Step-Down Converter Erzeugt eine 5V Gleichspannung
Kabel Female to Female Jumper, 2-adriges Kupferkabel und Micro-USB
Kabel für die Verkabelung der Komponenten im Roboter Auto
Tabelle 1 Übersicht der elektronischen Komponenten
Auf der nachfolgenden Webseite sind die möglichen Bezugsquellen der einzelnen Komponenten für
das Roboter Auto aufgeführt.
Website: http://custom-build-robots.com/robot-car-components
Abbildung 1 Roboter Auto Komponentenübersicht
2 Einführung elektronische Komponenten
4
2.1 Raspberry Pi Single Board Computer
Ein Single Board Computer ist ein kleiner mit Elektronik vollgepackter Computer, der meist ein auf Linux
basierendes Betriebssystem nutzt. Diese Scheckkarten großen Computer verfügen in der Regel über
sehr viele Ein- und Ausgänge, die über ein entsprechendes Programm geschaltet werden können. Ein
großer Vorteil dieser kleinen Computer ist, dass sie aus energiesparenden Komponenten aufgebaut
sind und mit einer kleinen Batterie oder Akku betrieben werden können. Der Raspberry Pi wurde von
der britischen Raspberry Pi Foundation entwickelt. Die Idee dabei ist, einen kostengünstigen Rechner
z. B. für Schulen und Jugendliche anzubieten.
Für den Bau des Roboter Autos sind prinzipiell alle aktuell erhältlichen Modelle des Raspberry Pi
geeignet. Auch Modelle von anderen Herstellern wie der Odroid C1+ von Hardkernel oder ein Modell
aus der Arduino Familie eigenen sich generell für den Bau von Roboter Autos.
Für das in diesem Buch beschriebene Roboter Auto Projekt wird der Raspberry Pi 2 Modell B verwendet,
da er mit seiner hohen Rechenleistung den live Video Stream des Roboter Autos hervorragend
verarbeiten kann. Zusätzlich steht für den Raspberry Pi das Wissen einer sehr großen Community in
Foren und Webseiten zur Verfügung. Der Einfachheit halber, wird im weiteren Verlauf des Buches
anstelle von Raspberry Pi 2 Modell B der Begriff Raspberry Pi verwendet.
Abbildung 2 Raspberry Pi 2 Modell B
Auf der Website der Raspberry Pi Foundation stehen weitere Informationen über die Raspberry Pi
Familie zur Verfügung:
Website: http://www.raspberrypi.org/
2 Einführung elektronische Komponenten
7
Kanal der L298N H-Brücke zwei Motoren parallel anzuschließen. Dadurch drehen sich die Motoren auf
einer Seite des Roboter Autos immer gleich schnell.
Der L298N Motortreiber ermöglicht es, die Drehzahl der Motoren beliebig über ein PWM Signal zu
regeln. Diese Geschwindigkeitsansteuerung ist für die Kurvenfahrt, das Drehen auf der Stelle und die
gleichmäßige Beschleunigung bzw. das Bremsen des Roboter Autos sehr wichtig.
Die Motortreiber vom Typ L298N H-Brücke erwarten je nach Modell an den Steuereingängen ein Signal
mit einer Spannung von 5V. Die meisten Single Board Computer sind 3,3V Module. Somit ist bei der
Verwendung des Motortreibers darauf zu achten, dass ein Motortreiber verwendet wird, der mit dem
3,3V Signal des Raspberry Pi zusammenarbeitet. Mit dem in diesem Buch vorgestellten Motortreiber
gibt es keine Probleme im Zusammenspiel mit dem Raspberry Pi und den 3,3V der GPIO Ausgängen.
Auf dem nachfolgenden Bild ist ein Motortreiber auf Basis einer L298N H-Brücke zu sehen. Gut zu
erkennen sind im unteren Teil des Bildes in der Mitte die 6 Eingänge für die logische Ansteuerung des
Motortreibers.
Abbildung 6 Motortreiber L298N H-Brücke
2.6 Batterie
Die im Roboter Auto verbauten Komponenten benötigen unterschiedlich große Spannungen. Der
Raspberry Pi benötigt eine Versorgungsspannung von 5V bei ca. 1,2A. Die Getriebemotoren benötigen
wiederum eine etwas höhere Spannung von 3V bis 6V, aber wesentlich weniger Amper. Möchte man
dann noch sein Auto mit LEDs ausstatten, werden häufig Spannungen von unter 3V benötigt.
Wie sich über viele Versuche herausgestellt hat, ist die beste Lösung für ein Roboter Auto die
Spannungsversorgung über eine einzige Stromquelle. Ein Batteriehalter mit 6 bis 8 AA / Mignon Akkus
hat sich in verschiedenen Modellen bewährt.
4 Roboter Auto Chassis
10
4 Roboter Auto Chassis
Angefangen hatte alles mit der Idee, ein Chassis aus Pappe zu bauen, das sogenannte Cardboard
Roboter Auto. Die Erfahrung hat aber gezeigt, dass der Bau des Chassis aus Pappe zeitaufwändig und
schwierig ist und häufig mehrerer Anläufe bedarf. Als wesentlich einfacher hat sich der Bau eines
Chassis aus LEGO® Bausteinen erwiesen. Eine weitere, sehr komfortable Möglichkeit ist die
Verwendung eines Chassisbausatzes. Die nachfolgenden drei Unterkapitel beschreiben verschiedene
Möglichkeiten, ein Chassis für das Roboter Auto zu bauen:
• Chassis – aus LEGO® Bausteinen
• Chassis – Acrylglas Bausatz
• Chassis – aus Pappe
4.1 Chassis aus LEGO ® Bausteinen
In diesem Kapitel wird beschrieben, wie ein Roboter Auto aus LEGO® Bausteinen aufgebaut wird. Das
Roboter Auto ist aus den LEGO® Bausteinen einfach und schnell zusammengesteckt. Es werden auch
keine speziellen Werkzeuge oder besondere handwerkliche Fähigkeiten benötigt.
Zeitaufwand:
Der Zeitaufwand für den Bau des Chassis beläuft sich auf ca. 20 Minuten.
Abbildung 10 Modell aus LEGO® Bausteinen
Die notwendigen Bausteine für die Motorhalterung können auch im Internet bei spezialisierten
Onlineshops einzeln gekauft werden. Das Wesentliche bei dieser Bauanleitung ist die Motorenhalterung
aus LEGO® Bausteinen. Um die Motorenhalterung herum wird dann das eigentliche Chassis des
Roboter Autos individuell aufgebaut.
6 Verkabelung der elektronischen Komponenten
25
6 Verkabelung der elektronischen Komponenten
In diesem Kapitel geht es darum, alle Komponenten des Roboter Autos miteinander zu verkabeln. Für
die Kommunikation zwischen Raspberry Pi und dem Motortreiber werden 6 der 40 Anschlüsse der
Stiftleiste des Raspberry Pis benötigt.
Zeitaufwand:
Die Verkabelung mit den kleineren Lötarbeiten dauert ca. 90 Minuten.
Das nachfolgende Bild zeigt die Stiftleiste auf einem Raspberry Pi:
Abbildung 28 Raspberry Pi 40 polige Stiftleiste
Für die ersten Tests wird das Modell am besten stationär betrieben, um nicht den Akku anschließen zu
müssen. Für den stationären Betrieb wird ein Netzteil benötigt mit min. 7V bis max. 9V Gleichstrom und
mindestens 2A. Sollte kein Netzteil wie beschrieben verfügbar sein, können die weiteren Schritte auch
mit dem Akku durchgeführt werden.
Benötigte Komponenten
• 1 x Raspberry Pi
• 4 x Getriebemotor
• 1 x micro-USB Kabel
• 1 x L298N H-Brücke / Motortreiber
• 1 x Step-Down Converter
• 5 x 20cm Kupferkabel zweiadrig
• 1 x Batteriehalter
• 1 x Kabel mit Druckknopfanschluss am Batteriehalter
• 6 x Female to Female Jumper Kabel
6 Verkabelung der elektronischen Komponenten
26
Die Verkabelung der elektronischen Komponenten ist in 4 Abschnitte unterteilt.
• Anschließen der elektronischen Komponenten an die Batterie für die Stromversorgung
• Motortreiber mit Raspberry Pi logisch verbinden
• Verkabelung der Getriebemotoren
• Getriebemotortreiber mit dem Motortreiber verbinden
6.1 Elektronische Komponenten anschließen
Der Motortreiber wird zusammen mit dem Step-Down Converter von der Batterie mit Strom versorgt.
Der Motortreiber hat zwei Lüsterklemmen (blau) die als Eingänge (VMS/GND) für die Stromversorgung
vorgesehen sind. In die beiden Lüsterklemmen des Motortreibers wird eines der 20cm langen
zweiadrigen Kupferkabel sowie das Druckknopfanschlusskabel für die Batterie angeschlossen.
Bitte darauf achten, dass die Pole VMS für + und GND für - richtig angeschlossen werden.
Auf dem nachfolgenden Bild ist der Step-Down Converter und die Batterie zu sehen die zusammen an
dem Motortreiber angeschlossen sind.
Abbildung 29 Stromversorgung Motortreiber
Der Raspberry Pi wird mit einem micro-USB Kabel an den Step-Down Converter angeschlossen. Da
noch keine SD-Karte mit dem benötigten Betriebssystem in den Raspberry Pi eingesteckt ist, passiert
noch nichts, wenn jetzt die Stromversorgung über den Step-Down Converter aktiviert wird.
7 Software Installation und Konfiguration
33
7 Software Installation und Konfiguration
In diesem Kapitel wird erklärt, welche Software auf dem Raspberry Pi und dem PC installiert wird. Da
das Roboter Auto mobil ist und weder Monitor noch Tastatur besitzt, wird es so konfiguriert, dass remote
auf den Raspberry Pi für die Programmierung, Konfiguration und Steuerung zugegriffen werden kann.
Remote bedeutet, dass der Zugriff über W-LAN auf den Raspberry Pi erfolgt.
Die nachfolgende Tabelle stellt eine Übersicht der zu installierenden Programme bereit.
Was Wo Nutzen
Raspbian Raspberry Pi Raspberry Pi Betriebssystem inkl. Programme
Midnight Commander Raspberry Pi Dateiexplorer für das Terminal Fenster
TightVNC Server Raspberry Pi Remote Desktop Server
TightVNC Viewer Windows Rechner Remote Desktop Viewer
Samba Server Raspberry Pi Netzwerkfreigabe
PuTTY Windows Rechner Zugriff über eine Remote Shell
Python Raspberry Pi Programmiersprache
W-LAN Raspberry Pi Netzwerkzugriff über W-LAN
Notepad++ Windows Rechner Erweiterter Texteditor unter Windows
Subversion Raspberry Pi Zentrale Software Versionsverwaltung
Mjpg-streamer Raspberry Pi Live Video Streaming
Tabelle 9 Software Auswahl
Die nachfolgenden Kapitel beschreiben detailliert die Software Installation und Konfiguration.
7.1 Betriebssystem auf SD Karte vorbereiten
Das für dieses Projekt verwendete Raspberry Pi Betriebssystem basiert auf Debian, einer Linux
Distribution, und wird von der Raspberry Pi Foundation unter dem Namen Raspbian (Raspberry Pi +
Debian = Raspbian) veröffentlicht.
Als erstes wird die SD-Karte soweit konfiguriert, dass der Raspberry Pi hochgefahren werden kann.
Dazu wird eine sogenannte Image Datei mit Raspbian als Betriebssystem benötigt. Es stehen
verschiedene Image Dateien auf der Seite von RaspberryPi.org zum Download bereit. Bitte wählt dort
das neueste Raspbian Image (full version) aus:
Website : http://www.raspberrypi.org/downloads/
Wenn das Image als ZIP Datei heruntergeladen ist, dieses bitte entpacken. In einem nächsten Schritt
muss das entpackte Image auf die SD Karte installiert werden. Dazu gibt es verschiedene Tools, die
die Installation durchführen.
Eine Anleitung, wie das Image auf der SD-Karte installiert wird, folgt hier:
8 Programmieren mit Scratch
52
8 Programmieren mit Scratch
Scratch5 ist eine Programmierumgebung, die von dem MIT-Scratch-Team für Kinder und Jugendliche
entwickelt wurde. In der Scratch eigenen Entwicklungsumgebung werden Programme visuell entwickelt.
So ist es möglich, Kindern und Jugendlichen die Grundprinzipien der Computerprogrammierung
spielerisch beizubringen.
Seit September 2015 wird Scratch von der Raspberry Pi Foundation für den Einsatz auf dem Raspberry
Pi zusammen mit dem Raspbian Jessie Betriebssystem angeboten. Interessant ist Scratch für das
Roboter Auto Projekt geworden, da die Ansteuerung der GPIOs mit einem PWM Signal ermöglicht wird.
So ist es möglich, die Geschwindigkeit der Motoren des Roboter Autos zu regeln.
Die Entwicklungsumgebung Scratch wird über das grafische Menü des Raspberry pi unter „Menu ->
Programming -> Scratch“ aufgerufen.
Abbildung 49: Scratch Entwicklungsumgebung
8.1 Scratch Programmbeispiel
Die Programmierung mit Scratch beginnt mit der Initialisierung der GPIO Pins. In diesem Beispiel soll
der GPIO Pin 4 als „out“ / „pwm“ konfiguriert werden. Damit kann ein PWM Signal über den Pin 4 an
den Motortreiber gesendet und somit die Geschwindigkeit eines Motors geregelt werden. Mit den beiden
GPIO Pins 22, 27 wird die Drehrichtung des Motors festgelegt.
Im Folgenden wird die Auswahl der Funktionsbausteine zur Erstellung eines Einführungsprogramms in
Scratch beschrieben, um die Basisfunktionen kennen zu lernen:
1. Im Menüpunkt „Control“ (gelber Button) wird die Funktion „When clicked“ mit der grünen Fahne
ausgewählt. Diese Initialfunktion dient zum Starten des Programmes und muss zum
Programmstart mit der linken Maustaste angeklickt werden um diese zu starten.
5 Viele Informationen rund um Scratch sind auf der folgenden Webseite zu finden: https://scratch.mit.edu
8 Programmieren mit Scratch
53
2. Daran anschließend wird die Funktion „broadcast“ angefügt. Sie hat in diesem Beispiel die
Aufgabe den GPIO-Server zu starten. Dazu wird der Befehl „gpioserveron“ in der Funktion
eingetragen.
3. Es folgt eine „broadcast“ Funktion die den GPIO Pin 22 als „out“ definiert.
4. Es folgt eine weitere „broadcast“ Funktion die den GPIO Pin 27 ebenfalls als „out“ definiert.
5. In einer weiteren „broadcast“ Funktion wird der GPIO Pin 22 auf „on“ gesetzt.
6. Daran anschließend folgt eine „broadcast“ Funktion die den GPIO Pin 27 als „off“ definiert.
7. Daran angefügt kommt eine „broadcast“ Funktion, die den GPIO Pin 4 mit dem Befehl
„config4outputpwm“ als „pwm out“ bestimmt.
8. Die jetzt folgende broadcast Funktion ist eine Kombination aus „broadcast“ und „join“ Funktion.
Die join Funktion findet sich unter dem grünen Menüpunkt von Scratch mit dem Namen
„Operators“. Diese beiden kombinierten Funktionen steuern die Geschwindigkeit der Motoren.
In diesem Beispiel wird ein Signal von 50% erzeugt, sodass 50% der maximalen Leistung am
Motor anliegt.
9. Anschließend wird mit der Funktion „wait“ 2 Sekunden lang das PWM Signal am Pin 4 erzeugt,
damit sich der Motor 2 Sekunden lang dreht.
10. Mit der letzten Funktion wird das PWM Signal am GPIO Pin 4 wieder auf 0% gesetzt, sprich der
Motor wird gestoppt.
In Scratch programmiert sieht das Programm wie folgt aus.
Abbildung 50 Scratch Beispiel
Dieses einfache Scratch Programm zeigt wie durch die Auswahl der geeigneten Funktionsbausteine ein
Motor 2 Sekunden lang gedreht werden kann. Im jetzt folgenden Abschnitt wird das wesentlich
komplexere Steuerungsprogramm für das Roboter Auto vorgestellt.
9 Programmieren mit Python
56
9 Programmieren mit Python
In diesem Kapitel geht es um die Programmierung des Python Programms für die Fahrzeugsteuerung.
Das Ziel ist es, mit dem ersten selbst geschriebenen Python Programm das Roboter Auto über die
Konsole mit der Tastatur fernzusteuern. Mit diesem Verständnis können neben dem Roboter Auto noch
viele weitere Projekte entstehen wie z. B. die Steuerung eines Bootes oder das einfache Blinken lassen
von LEDs.
Im folgenden Kapitel werden die ersten Erfahrungen gesammelt, wie die Ansteuerung der GPIOs mit
einem Python Programm funktioniert. In Kapitel 12 wird die Steuerung über ein Web-Interface vorgestellt
und programmiert.
Voraussetzungen prüfen:
Die erste Voraussetzung, die erfüllt sein muss, ist die vollumfängliche Abarbeitung des Kapitels 7.
9.1 Steuerungsprogramm in Python
Bitte einen neuen Ordner im Home-Verzeichnis des Users Pi mit dem Namen z. B. „robot“ anlegen.
Diesen mit den entsprechenden Rechten über das Terminal Fenster versehen, so dass dieser Ordner
über die Samba Freigabe zugreifbar ist. Der entsprechende Befehl für die Anpassung der Rechte des
Ordners ist wie folgt.
Befehl:
sudo chmod a+rw robot
Jetzt ist dieser Ordner über die Samba Freigabe für den Windows PC erreichbar, und es können die
beiden Python Programme „RobotControl.py“ und „L298NHBridge.py“ direkt dort abgelegt werden.
Die Python Programme werden mit dem Texteditor Notepad++ erstellt. Die Datei für die Steuerung über
die Tastatur soll den Namen „RobotControl.py“ erhalten. Die zweite Datei für die Ansteuerung des
Motortreibers erhält den Namen „L298NHBridge.py“.
Abbildung 52 RobotControl.py Python Programm
9 Programmieren mit Python
57
Python Programm – RobotControl.py
Mit dem Programm „RobotControl.py“ wird das Roboter Auto über das Terminal Fenster oder über
PuTTY ferngesteuert. Wird das Programm ausgeführt, erscheint ein kleines Menü in der Konsole, das
die Tastaturbelegung erläutert.
Den nachfolgend grau markierten Quellcode des Programmes bitte in die Zwischenablage kopieren und
im Notepad++ in die Datei „RobotControl.py“ einfügen und in dem Ordner „/home/pi/robot“ auf dem
Raspberry Pi abspeichern.
# Autor: Ingmar Stapel
# Date: 20151221
# Version: 1.1
# Homepage: http://custom-build-robots.com
import sys, tty, termios, os, time
import L298NHBridge as HBridge
speedleft = 0
speedright = 0
# Instructions for when the user has an interface
print("w/s: direction")
print("a/d: steering")
print("q: stops the motors")
print("p: print motor speed (L/R)")
print("x: exit")
# The catch method can determine which key has been pressed
# by the user on the keyboard.
def getch():
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setraw(sys.stdin.fileno())
ch = sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
return ch
# Infinite loop
# The loop will not end until the user presses the
9 Programmieren mit Python
58
# exit key 'X' or the program crashes...
def printscreen():
# Print the motor speed just for interest
os.system('clear')
print("w/s: direction")
print("a/d: steering")
print("q: stops the motors")
print("x: exit")
print("========== Speed Control ==========")
print "left motor: ", speedleft
print "right motor: ", speedright
while True:
# Keyboard character retrieval method. This method will save
# the pressed key into the variable char
char = getch()
# The car will go into forward mode when the "w" key is pressed
if(char == "w"):
# accelerate the RaPi car
speedleft = speedleft + 0.1
speedright = speedright + 0.1
if speedleft > 1:
speedleft = 1
if speedright > 1:
speedright = 1
HBridge.setMotorLeft(speedleft)
HBridge.setMotorRight(speedright)
printscreen()
# The car will go into reverse mode when the "s" key is pressed
if(char == "s"):
# slow down the RaPi car
speedleft = speedleft - 0.1
speedright = speedright - 0.1
if speedleft < -1:
speedleft = -1
if speedright < -1:
speedright = -1
11 Live Video Stream
68
11 Live Video Stream
Für die Konfiguration des live Video Streamings sind Systemanpassungen an der Installation des
Raspberry Pi notwendig. So muss der von der Raspberry Pi Foundation und Broadcom entwickelte
V4L2 Treiber installiert werden bzw. das dazugehörige Modul geladen werden.
Anschließend müssen kleinere Anpassungen vorgenommen werden, bis die volle Funktionalität des
Videostreamings funktioniert. Dazu dann mehr in den folgenden Unterkapiteln.
Zeitaufwand:
Der Zeitaufwand beträgt ca. 45 Minuten.
11.1 Kernelmodul bcm2835-v412 laden
Für das Laden des Kernelmoduls „bcm2835-v4l2“ muss folgender Befehl ausgeführt werden.
Befehl:
sudo modprobe bcm2835-v4l2
� Wichtig ist, dass die Raspberry Pi Kamera angeschlo ssen ist und in der
Konfiguration des Raspberry Pi aktiviert wurde. And ernfalls kommt es zu
einem Fehler bei dem Ausführen des Befehls.
Der folgende Befehl zeigt alle geladenen Kernelmodule. Damit lässt sich beispielsweise überprüfen, ob
das Modul „bcm2835-v4l2“ geladen ist.
Befehl:
sudo lsmod
Auf der folgenden Website erfährt man mehr zu Ubuntu und den Kernelmodulen im Allgemeinen.
Website: http://wiki.ubuntuusers.de/Kernelmodule
11.2 Mjpg-streamer konfigurieren
Jetzt erfolgt die finale Konfiguration des mjpg-streamers unter Raspbian.
Dazu bitte wieder mit dem Midnight Commander die Datei „/opt/mjpg-streamer/start.sh“ öffnen und die
nachfolgende Zeile suchen:
./mjpg_streamer -i "./input_uvc.so" -o "./output_ht tp.so -w ./www"
12 Web-Interface Steuerung über W-LAN
72
12 Web-Interface Steuerung über W-LAN
Dieses Kapitel behandelt die Umsetzung eines Web-Interfaces zur Steuerung des Roboter Autos mit
einem Web-Browser. Das Web-Interface des Roboter Autos kann über einen Web-Browser von einem
Smartphone, Laptop oder Tablet aus aufgerufen werden. Das Interface zeigt dann die für die Steuerung
des Autos notwendigen Funktionen sowie das live Video aus dem Auto heraus an.
Als einfache Website mit einem Overlay realisiert, zeigt das Web-Interface die vier Tasten für die
Vorwärts-, Rückwärts-, Links- und Rechts- Fahrt an. Die fünfte Taste in der Mitte des Bedienfeldes
stoppt die Motoren. Als Hintergrundbild der Steuerung wird die aktuelle Sicht aus dem Roboter Auto
heraus angezeigt.
Zeitaufwand:
Der Zeitaufwand für die Konfiguration und Entwicklung des Web-Interface beträgt ca. 2 Stunden.
Abbildung 58 Web-Interface Steuerung
12.1 WebIOPi Framework installieren
Für die Kommunikation zwischen Webseite (Web-Interface) und den GPIOs des Raspberry Pi wird
WebIOPi eingesetzt. Die hier beschriebene Anleitung bezieht sich auf die Version 0.7.1 von WebIOPi.
WebIOPi übernimmt hier neben der Ansteuerung der GPIOs zusätzlich die Funktion eines Web-Servers
und stellt für den Webzugriff die Website online. So kann über die IP Adresse des Raspberry Pi das
Web-Interface aufgerufen werden.
Auf der Website von WebIOPi gibt es neben einer ausführlichen Einführung und Programmierbeispielen
das WebIOPi Paket zum Download.
Website: http://webiopi.trouch.com/
12 Web-Interface Steuerung über W-LAN
82
12.3 Web-Interface starten
Nachdem alle Dateien abgelegt wurden kann die Web-Steuerung gestartet werden. Dazu wird mit dem
folgenden Befehl das Python Programm „RobotControlWeb.py“ in der Konsole gestartet.
Befehl:
python RobotControlWeb.py
Im Browser muss die folgende URL des Raspberry Pi aufgerufen werden.
URL:
http://<IP Roboter Auto>:8000/rapicarweb.html (für die Touch Bedienung)
oder
http://<IP Roboter Auto>:8000/keyweb.html (für die Bedienung über die Pfeiltaten)
Auf dem Smartphones ist die Web-Oberfläche für die Steuerung des Roboter Autos zu sehen. Mit dem
Touchscreen des Smartphones kann das Roboter Auto über die Pfeiltasten gesteuert werden.
Abbildung 59 Web-Interface Steuerung mit Smartphone
12.4 Zusammenfassung – WebIOPi
Mit dem Abschluss dieses Kapitels wurde das Roboter Auto um die Steuerung über ein Web-Interface
erweitert. Mit dieser Web-Oberfläche ist es jetzt möglich, das Auto von beliebigen Geräten aus zu
steuern.
Mit der vollständigen Automatisierung des Startprozesses, wie im Kapitel 13 beschrieben, müssen die
Programme nicht mehr einzeln von Hand gestartet werden. Es reicht dann aus, das Auto einzuschalten
und die entsprechende URL aufzurufen, um das Roboter Auto lenken zu können und um das live Video
zu sehen.
15 Ausblick
90
15 Ausblick
Das vermittelte Wissen aus diesem Buch kann als Basis gesehen werden, weitere Projekte mit dem
Raspberry Pi umzusetzen. Die Erfahrung, wie der Raspberry Pi in Interaktion mit der Außenwelt treten
kann, ermöglicht die Umsetzung vieler Ideen vor allem im Bereich des Internet of Things, dem Internet
der Dinge. Das Beispiel des hier in diesem Buch gebauten Roboter Autos zeigt genau diesen Trend
auf. Das Roboter Auto hat eine eindeutige IP Adresse und ist aus dem Internet heraus erreichbar und
steuerbar. So sind viele Anwendungsmöglichkeiten denkbar, wie der Prototyp des Discoverer zeigt, ein
mit GPS Empfänger und Metalldetektor ausgestattetes Schatz- bzw. Metallsuchfahrzeug.
Abbildung 63 Roboter Auto - Discoverer
Durch die fortschreitende Miniaturisierung und z. B. die Entwicklung von Wearables, sehr kleinen
Computern eingenäht in Kleidungsstücke, ist eine Entwicklung im Gange, der man sich kaum noch
verschließen kann, aber die man verstehen und beurteilen können sollte.
Weitere Ideen für Roboter Autos und Bilder aus der Community gibt es hier:
Website : http://custom-build-robots.com/hall-of-fame
Wer sein Roboter Auto ebenfalls auf der Webseite zeigen möchte, schickt ein Bild an:
E-Mail: halloffame@custom-build-robots.com
Recommended