Sie sind hier
E-Book

Roboter mit Raspberry Pi

Mit Motoren, Sensoren, LEGO® und Elektronik eigene Roboter mit dem Pi bauen, die Spaß machen und Ihnen lästige Aufgaben abnehmen

AutorE. F. Engelhardt
VerlagFranzis
Erscheinungsjahr2016
Seitenanzahl257 Seiten
ISBN9783645203432
FormatPDF/ePUB
KopierschutzWasserzeichen/DRM
GerätePC/MAC/eReader/Tablet
Preis19,99 EUR
Roboter sind längst Teil unseres täglichen Lebens, als Rasenmäher, Staubsauger oder auch in der Industrie. Für Maker sind Roboter ein optimales Betätigungsfeld: Handwerk, Elektronik und Informatik verbinden sich zur perfekten Symbiose. Der Raspberry Pi ist als vollwertiger Minicomputer das perfekte Gehirn für Ihren Roboter. E. F. Engelhardt zeigt Ihnen, wie Sie am besten die Synapsen mit Leben füllen. Für maschinelle Bewegung bieten sich Motoren an. Damit diese Bewegungen einer gewissen Genauigkeit folgen, sind Schrittmotoren erforderlich. Wie Sie Motoren über die GPIO ansteuern, zeigt Ihnen ein ausführliches Kapitel. Damit der Roboter nicht einfach ohne Strom stehen bleibt, lernen Sie, wie eine USV integriert werden kann. Damit ist der Tagesausflug mit Roboter gesichert. Das erlernte Wissen setzt Engelhardt direkt in konkreten Projekten um: Bauen Sie eine eigene Pan-/Tilt-Kamera. Ein RC-Car lässt sich sehr einfach mit dem Pi steuern und der Staubsaugerroboter ist auch schnell angezapft. Mit der GPIO und dem zuvor gezeigten Basiswissen lassen sich vielfältige Roboterprojekte umsetzen. Die LEGO®-Mindstorms-Serie stellt bereits Roboter zur Programmierung zur Verfügung. Über den BrickPi lassen sich diese sehr gut mit dem Raspberry Pi steuern - eine aufregende Kombination. Mit dem BrickPi können Sie auch wunderbar einen Roboter mit LEGO®, aber ohne LEGO®-Mindstorms, realisieren. Holen Sie die alten LEGO®-Steine hervor und machen Sie den Lötkolben heiß! Und nicht vergessen: Türe schließen, sonst läuft der Roboter raus.

E.F. Engelhardt, Jahrgang 1975, hat bereits über 40 Computerbücher veröffentlicht - und keines dieser Bücher ist wie andere Computerbücher: Der Autor beginnt direkt mit der Praxis, ohne langatmige, weitschweifende und überflüssige Technikerläuterungen. E.F. Engelhardt ist Autor des Bestsellers 'Hausautomation mit Raspberry Pi'. Hier hat er eindrucksvoll seine große Erfahrung mit dem Raspberry Pi gezeigt. Und er hat immer noch nicht genug: Dieses Mal werden Roboter gebaut und programmiert. Wie in allen seinen Büchern hat er die Projekte komplett selbst entwickelt. Sie haben als Leser damit die Sicherheit, dass alles funktioniert.

Kaufen Sie hier:

Horizontale Tabs

Leseprobe

Fahren und bremsen – Motorsteuerung mit dem Raspberry Pi


Egal ob manuell oder autonom – ein Fahrzeug besteht in der Regel aus mindestens einem Motor, der für die Bewegung zuständig ist. Meist sorgt ein zweiter Motor für die Richtungsänderung, und damit lässt sich schon mal experimentell starten. Für das Umsetzen einer ersten Motorschaltung über die GPIO-Schnittstelle des Raspberry Pi ist es empfehlenswert, diese Motoranschlüsse mithilfe eines Steckboards zunächst über einfache LEDs sozusagen zu emulieren, um etwaige Fehler im Schaltungsdesign von vornherein aufzuspüren. Auch ist so eine Motorersatzschaltung verhältnismäßig schnell aufgebaut, um mal schnell das Shell-Skript oder Python-Code mithilfe der GPIO-Schnittstelle zu testen, ohne den teuren Steppermotor zu beschädigen.

2.1Die erste Schaltung – LEDs mit ULN2803A steuern


Zum Einstieg in dieses Projekt wird die erste Schaltung zunächst auf dem Steckboard umgesetzt, was gerade für Einsteiger recht bequem ist, da es erst einmal ohne löten geht. In diesem Schritt wird ein GPIO-Anschluss auf die Plusleitung des Steckboards gelegt, der sich anschließend per Shell-Befehl schalten lässt. Sie haben damit einen einfachen Lichtschalter per Software realisiert.

Welcher GPIO-Anschluss ist der richtige? Grundsätzlich sind sämtliche Anschlüsse schaltbar, doch um beispielsweise das Skript oder das Programm so flexibel wie möglich zu halten, sollten Sie primär GPIO-Pins nutzen, die auf allen Raspberry-Pi-Modellen gleich implementiert sind. Dies gilt umso mehr, wenn Sie daran denken, den Quelltext für Ihre Skripte und Programme im Internet weiterzugeben oder selbst unterschiedliche Raspberry-Pi-Revisionen zu betreiben.

Achtung –Vorwiderstand für LED-Einsatz zwingend notwendig!

LEDs (Licht emittierende Dioden) dürfen nie direkt an die Stromversorgung angeschlossen werden. Bei einem direkten Anschluss sollte immer mindestens ein Vorwiderstand von 200 bis 300 Ω vorgeschaltet werden, damit der Strom auf einen zulässigen Wert begrenzt ist und die LED auch funktionsfähig bleibt.

Da für die Steuerung der Motoren in einem späteren Projekt ein ULN2803A-IC (NPN Darlington-Array) zum Einsatz kommt, weil es intern bereits die nötigen Widerstände in seiner Transistorschaltung integriert hat, wird dieser IC auch in diesem Beispiel für die LED-Lampen verwendet. Liegt bei dem ULN2803A-IC an den einzelnen acht Eingängen ein Signal an, wird der Schaltkreis mit der Masse geschlossen und nach dem entsprechenden Ausgang geschaltet.

Hierbei müssen Sie nur beachten, dass Sie die Masse von Eingang und Ausgang zusammenlegen, falls Eingang und Ausgang mal unterschiedliche Versorgungsspannungen verwenden. In der schematischen Darstellung sind vier LED-Dioden an den ULN2803-NPN angeschlossen, die sich jeweils per GPIO schalten lassen.

Bild 2.1: Schematische Darstellung der Schaltung mit der Steckboard-Emulation Fritzing.

Im nächsten Schritt setzen Sie die Schaltung auf dem Steckboard um. Dabei merken Sie schnell, dass das Steckboard zwar groß wirkt, es aber beim Bestücken der Widerstände und LEDs schnell eng zugeht. Der Grund ist der praktische Umstand, dass jede Leiterbahn schon mit den Nachbarpins verdrahtet ist. Wenn Sie eine Diode oder einen Widerstand mit beiden Beinchen in eine Reihe stecken, passiert erst mal gar nichts, da kein bzw. ein geringer Stromfluss durch die Diode fließt.

Das Ziel ist, auf dem Steckboard einen Stromkreis zu kreieren. Die fertige Schaltung haben wir auf dem Steckboard aus Platzgründen mit zwei LEDs an zwei Eingängen realisiert, was für Demonstrationszwecke völlig ausreicht.

Bild 2.2: Erfolgreich: Die beiden LEDs lassen sich erfolgreich mit dem IC gekoppelt über die beiden GPIO-Anschlüsse steuern.

In dieser Beispielschaltung wird das Steckboard wie folgt mit dem Raspberry Pi verbunden:

Die Ausgänge des ULN2803A werden jeweils mit einem Widerstand verbunden (200 Ω), das zweite Beinchen des Widerstands geht an die Kathode der LED. Wie herum der Widerstand aufgesteckt wird, ist egal, die Polung spielt bei Widerständen keine Rolle.

Die Anode der beiden LEDs wird mit der 5-V-Stromversorgung sowie mit Pin 15 des ULN2803 verbunden. Nun ist die Schaltung komplett, auf dem Schaltplan stellt sich diese wie folgt dar:

Bild 2.3: Schaltplan: Hier werden nur zwei der verfügbaren acht Eingänge genutzt, um die beiden LEDs unabhängig voneinander schalten zu können.

Im nächsten Schritt können Sie die Schaltung in der Praxis testen. Dafür nehmen Sie per SSH mit dem Raspberry Pi Verbindung auf und prüfen auf der Konsole die beiden GPIO-Anschlüsse, die Sie für die LEDs reserviert haben. In diesem Beispiel wurden dafür GPIO23 und GPIO24 verwendet.

2.2GPIO-Steuerung über die Konsole und Python


Grundsätzlich werden die GPIO-Ausgänge des Raspberry Pi über virtuelle Dateien bzw. über deren Dateimanipulation gesteuert. Vereinfacht bedeutet dies: Steht in einer solchen Steuerdatei der Wert 0, ist der Schalter geschlossen, und es fließt kein Strom, steht hingegen dort der Wert 1, ist der Stromkreis geschlossen, und die angeschlossene Schaltung wird aktiviert.

Bild 2.4: Nach dem »Aktivieren« des GPIO-Pins steht im Verzeichnis /sys/class/gpio die entsprechende Steuerdatei zur Verfügung.

Die virtuellen Dateien für den GPIO-Pfostenstecker finden Sie im Verzeichnis /sys/class/gpio. Mit dem Kommando

ls /sys/class/gpio

stellen Sie fest, dass sich dort die Dateien export und unexport befinden. Der Trick ist hier zunächst, den oder die gewünschten GPIO-Pins auf dem Raspberry Pi zu aktivieren, dies erledigen Sie mit dem Eintragen der entsprechenden GPIO-Nummer in die export-Datei. Dadurch wird beispielsweise GPIO24 und GPIO23 mitgeteilt, dass sie womöglich bald genutzt werden:

sudo echo "24" > /sys/class/gpio/export

sudo echo "23" > /sys/class/gpio/export

Nun verwenden wir die vorhandene Schaltung mit den beiden LEDs an GPIO23 und GPIO24, die an Pin 17 und Pin 18 auf dem Raspberry Pi gekoppelt sind.

Schalten per Konsole


Grundsätzlich kann ein GPIO-Anschluss auf dem Raspberry als Ausgang, aber auch als Eingang genutzt werden. In diesem Fall ist der Raspberry der Aktor, denn wir wollen etwas einschalten: Um die erste Diode dauerhaft einzuschalten, müssen Sie beide GPIO-Pins zunächst als Ausgang definieren:

sudo echo "out" > /sys/class/gpio/gpio23/direction

sudo echo "out" > /sys/class/gpio/gpio24/direction

Im umgekehrten Fall – beispielsweise wenn an dem GPIO-Anschluss ein Sensor angebracht wäre und Sie den Wert im Raspberry Pi weiterverarbeiten wollten – würden Sie den Anschluss als Eingang definieren und stattdessen

sudo echo "in" > /sys/class/gpio/gpio23/direction

in die Konsole eingeben. Die oben definierten GPIO-Anschlüsse 23 und 24 liegen auf 0 V, der Stromkreis ist also noch nicht geschlossen, und die gekoppelten LEDs leuchten nicht. Um diese zu schalten, nutzen Sie die Befehle:

sudo echo "1" > /sys/class/gpio/gpio23/value

sudo echo "1" > /sys/class/gpio/gpio24/value

Hier tragen Sie jeweils den Wert 1 in die Datei mit der Bezeichnung value ein. In diesem Fall werden nun sowohl Pin 16 als auch Pin 18 mit Strom versorgt, die beiden LEDs sollten jetzt dauerhaft leuchten. Um die LEDs wieder abzuschalten, setzen Sie den Pegel von HIGH auf LOW. Dies erledigen Sie, indem Sie einfach statt der "1" den Wert "0" in die value-Datei des entsprechenden GPIO-Verzeichnisses schreiben:

sudo echo "0" > /sys/class/gpio/gpio23/value

sudo echo "0" > /sys/class/gpio/gpio24/value

Für das einmalige Experimentieren auf der Kommandozeile macht dies eine Zeit lang Spaß, auf Dauer jedoch sind lange Kommandozeilenbefehle lästig und fehleranfällig.

Bild 2.5: Vier Befehle pro genutztem GPIO-Anschluss sind notwendig, um diesen für die Schaltung ordnungsgemäß zu präparieren.

Deshalb ist es sinnvoll, sämtliche bzw. zumindest die benötigten virtuellen Dateien der entsprechenden GPIOs bereits beim Systemstart des Raspberry Pi automatisch zu starten. Erstellen Sie einfach ein Shell-Skript mit der Bezeichnung gpiostart.sh mit folgendem Inhalt:

#!/bin/sh

# Roboter mit Raspberry Pi

echo "23" > /sys/class/gpio/export

echo "24" > /sys/class/gpio/export

echo "out" > /sys/class/gpio/gpio23/direction

echo "out" > /sys/class/gpio/gpio24/direction

chmod 666 /sys/class/gpio/gpio23/value

chmod...

Blick ins Buch
Inhaltsverzeichnis
Roboter mit Raspberry Pi1
Impressum4
Vorwort5
Zusatzinformationen zum Produkt6
Inhaltsverzeichnis7
1. Lenken und Steuern mit der GPIO-Schnittstelle11
1.1 Betriebssystem und Treiber aktualisieren15
1.2 Analog-digital-Wandler MCP3008 nachrüsten16
Datenblatt prüfen, Funktionen verstehen16
MCP3008 auf dem Steckboard nutzen17
Programmierung des MCP3008 mit Python21
SPI-Schnittstelle aktivieren26
SPI-Nutzung ohne Umwege: py-spidev-Modul installieren28
1.3 Joystick-Steuerung mit dem Raspberry Pi30
GPIO-Eingang schalten: Risiken und Nebenwirkungen31
Schaltungsdesign vom Steckboard auf die Rasterplatine34
Joystick-Steuerung mit Python35
Richtungsbestimmung mittels ADC-Werten37
1.4 I2C-Bus – Schnittstelle wecken und checken41
I2C-Geräte und Raspberry-Pi-Revision45
1.5 Schalten und walten mit Touchsensor46
Touch- und Drucksensor – Dateneingabe über den I2C-Bus47
Flexibler Zugriff dank I2C- und MRP121-Bibliothek48
Inbetriebnahme des MRP121-Touchsensors50
2. Fahren und bremsen – Motorsteuerung mit dem Raspberry Pi53
2.1 Die erste Schaltung – LEDs mit 10ULN2803A steuern53
2.2 GPIO-Steuerung über die Konsole und Python56
Schalten per Konsole57
2.3 Motoren und Steppermotoren59
2.4 Motorsteuerung versus Motortreiber63
Mehr Kontrolle – Schrittmotorcontroller64
2.5 Unipolaren Steppermotor mit ULN2803-IC steuern65
Schaltung auf Steckboard umsetzen65
Vollschritt- vs. Halbschrittverfahren im Detail69
Schritt für Schritt: Vollschritt- und Halbschrittverfahren einsetzen70
Vorwärts- und Rückwärtsbewegungen74
2.6 Praktisch und sicher – USV für den Raspberry Pi76
Pi USV in Betrieb nehmen77
Ohne Strom nix los – Akkupack auswählen78
Pi-USV-Software in Betrieb nehmen79
Status der Pi USV erkennen81
Status der Pi USV mit Python auslesen82
3. Pan/Tilt-Kamera im Eigenbau85
3.1 Raspberry-Pi-Kamera im Robotik-Einsatz86
Kameramodul mit dem Raspberry Pi koppeln86
Inbetriebnahme per Software87
raspistill – Fotografieren über die Kommandozeile91
LED abschalten und heimlich fotografieren93
Programmierung der Raspberry-Pi-Kamera93
3.2 Einzellösung: Tower-SG90-Servomotor96
3.3 Hardware-PWM-Ausgang mit LED testen99
3.4 Servoblaster-Treiber installieren101
3.5 Motoren mit Servoblaster in Betrieb nehmen103
3.6 Servomotor mit Python steuern105
3.7 Pan/Tilt-Achse und Kamera steuern106
3.8 Steuerung der Raspberry-Pi-Kamera108
3.9 Bewegungen und Aufnahmen steuern109
3.10 Hürden bei der Inbetriebnahme umgehen114
Automatischer Log-in: pi vom Start weg114
Autostart nach dem Einschalten115
4. Haushaltshilfe: Staubsauger-Modding117
4.1 Vorwerk vs. Neato – mehr als nur eine Kopie118
Einrichtung und Treiberinstallation119
Zugriff über PuTTY auf das Betriebssystem124
4.2 Staubsauger über Raspberry Pi steuern126
Staubsaugerroboter mit Raspberry Pi verbinden126
minicom-Modemzugang zum Staubsauger einrichten129
minicom-Steuerung für den Staubsauger131
Staubsaugerkommandozeile im Überblick134
Python-Programmierung über python-serial135
Spazierfahrt mit der Kommandozeile – Staubsauger fortbewegen138
Zeitplanung für den Staubsauger140
4.3 Staubsauger und Raspberry Pi koppeln144
Aufwecken aus dem Schlafmodus144
USB-Geräte über GPIO schalten146
Staubsauger mit dem Raspberry Pi verbinden148
Schaltung über Kommandozeile prüfen150
4.4 Roboter über die Webseite steuern151
Python-Zugriff über Browser – Bottle im Einsatz152
4.5 Videostreaming installieren und einbinden158
Streaming-Werkzeug laden und installieren159
MJPG-Streamer als Live-View-Quelle162
Live-View und Steuerung verheiraten165
Fotografieren mit dem Vorwerk/Neato-Staubsauger170
4.6 Drahtlos-Raspberry-Pi einrichten171
Raspberry Pi mit drahtloser Stromversorgung172
Akkupack und USV für Raspberry Pi kombinieren173
WLAN-Netzwerk einrichten und Verbindung aufnehmen174
Umschalten zwischen WLAN-Verbindungen178
WLAN-Verbindung mit Python steuern180
4.7 Staubsaugerroboter mit dem Smartphone steuern183
USB-Debugging-Modus – Smartphone einrichten183
Staubsaugerroboter mit dem Smartphone koppeln185
5. Schrauben, löten, programmieren: RC-Car-Modding187
5.1 Basis für das RaspiRoboCAR-Projekt188
5.2 Lenken und Steuern über die Tastatur191
5.3 Google-Streetview-RC-Car mit der Raspberry-Pi-Kamera203
6. LEGO® Pi mit Mindstorms EV3 und LEGO®-Technic205
6.1 Viel kreativer Spielraum für Technikfantasien205
6.2 LEGO®-Technic und LEGO®-Mindstorms mit Raspberry Pi aufmotzen208
6.3 BrickPi: LEGO®-Mindstorms im Eigenbau209
BrickPi-Treiber in Betrieb nehmen210
BrickPi-Schnittstellen aktivieren212
Python-Bibliothek für BrickPi installieren213
Motoren und Sensoren im BrickPi-Einsatz215
6.4 Legokran- und -greifer-Steuerung mit demRaspberry Pi216
Basis, Neigung und Greifer: drei Motoren für den Kran218
6.5 LEGO®-Modding: Mindstorms im Eigenbau224
LEGO®-Steine mit LED-Birnen nachrüsten225
Servomotor-Modding für LEGO®-Technic226
LEGO®-Extrem-Modding: bis zu 16 Servomotoren steuern228
Adressbelegung für den Anschluss am I2C-Bus230
Mehrere Servomotoren im Zusammenspiel232
Anhang239
A Python-Basics auf dem Raspberry Pi239
Schneller Zugriff über die Wiring-Pi-API245
Raspberry-Pi-Revision 2: zusätzlicher GPIO-Sockel248
Stichwortverzeichnis253

Weitere E-Books zum Thema: Hardware - Rechnerarchitektur - Softwaresysteme

SAP für Java-Entwickler

E-Book SAP für Java-Entwickler
Konzepte, Schnittstellen, Technologien Format: PDF

Seit kurzem forciert SAP die Verbreitung der Netweaver-Technologie und initiiert damit eine Gleichstellung von Java und ABAP als Sprachen zur SAP-Programmierung. Dieses Buch leistet einem erfahrenen…

SAP für Java-Entwickler

E-Book SAP für Java-Entwickler
Konzepte, Schnittstellen, Technologien Format: PDF

Seit kurzem forciert SAP die Verbreitung der Netweaver-Technologie und initiiert damit eine Gleichstellung von Java und ABAP als Sprachen zur SAP-Programmierung. Dieses Buch leistet einem erfahrenen…

SAP für Java-Entwickler

E-Book SAP für Java-Entwickler
Konzepte, Schnittstellen, Technologien Format: PDF

Seit kurzem forciert SAP die Verbreitung der Netweaver-Technologie und initiiert damit eine Gleichstellung von Java und ABAP als Sprachen zur SAP-Programmierung. Dieses Buch leistet einem erfahrenen…

SAP für Java-Entwickler

E-Book SAP für Java-Entwickler
Konzepte, Schnittstellen, Technologien Format: PDF

Seit kurzem forciert SAP die Verbreitung der Netweaver-Technologie und initiiert damit eine Gleichstellung von Java und ABAP als Sprachen zur SAP-Programmierung. Dieses Buch leistet einem erfahrenen…

SAP für Java-Entwickler

E-Book SAP für Java-Entwickler
Konzepte, Schnittstellen, Technologien Format: PDF

Seit kurzem forciert SAP die Verbreitung der Netweaver-Technologie und initiiert damit eine Gleichstellung von Java und ABAP als Sprachen zur SAP-Programmierung. Dieses Buch leistet einem erfahrenen…

Sicheres Netzwerkmanagement

E-Book Sicheres Netzwerkmanagement
Konzepte, Protokolle, Tools Format: PDF

Die Administration komplexer Rechnernetzwerke verlangt durch die ständige Weiterentwicklung etablierter Standards und die Integration gänzlich neuer Technologien ein umfassendes technisches Know-how…

Sicheres Netzwerkmanagement

E-Book Sicheres Netzwerkmanagement
Konzepte, Protokolle, Tools Format: PDF

Die Administration komplexer Rechnernetzwerke verlangt durch die ständige Weiterentwicklung etablierter Standards und die Integration gänzlich neuer Technologien ein umfassendes technisches Know-how…

Sicheres Netzwerkmanagement

E-Book Sicheres Netzwerkmanagement
Konzepte, Protokolle, Tools Format: PDF

Die Administration komplexer Rechnernetzwerke verlangt durch die ständige Weiterentwicklung etablierter Standards und die Integration gänzlich neuer Technologien ein umfassendes technisches Know-how…

Sicheres Netzwerkmanagement

E-Book Sicheres Netzwerkmanagement
Konzepte, Protokolle, Tools Format: PDF

Die Administration komplexer Rechnernetzwerke verlangt durch die ständige Weiterentwicklung etablierter Standards und die Integration gänzlich neuer Technologien ein umfassendes technisches Know-how…

Softwareentwicklung eingebetteter Systeme

E-Book Softwareentwicklung eingebetteter Systeme
Grundlagen, Modellierung, Qualitätssicherung Format: PDF

Eingebettete Systeme übernehmen komplexe Steuerungs- und Regelungsaufgaben für technische Systeme. Ihre Funktionalität wird durch das Zusammenspiel von Spezialhardware, Standardprozessoren,…

Weitere Zeitschriften

Arzneimittel Zeitung

Arzneimittel Zeitung

Die Arneimittel Zeitung ist die Zeitung für Entscheider und Mitarbeiter in der Pharmabranche. Sie informiert branchenspezifisch über Gesundheits- und Arzneimittelpolitik, über Unternehmen und ...

BMW Magazin

BMW Magazin

Unter dem Motto „DRIVEN" steht das BMW Magazin für Antrieb, Leidenschaft und Energie − und die Haltung, im Leben niemals stehen zu bleiben.Das Kundenmagazin der BMW AG inszeniert die neuesten ...

caritas

caritas

mitteilungen für die Erzdiözese FreiburgUm Kindern aus armen Familien gute Perspektiven für eine eigenständige Lebensführung zu ermöglichen, muss die Kinderarmut in Deutschland nachhaltig ...

DGIP-intern

DGIP-intern

Mitteilungen der Deutschen Gesellschaft für Individualpsychologie e.V. (DGIP) für ihre Mitglieder Die Mitglieder der DGIP erhalten viermal jährlich das Mitteilungsblatt „DGIP-intern“ ...

die horen

die horen

Zeitschrift für Literatur, Kunst und Kritik."...weil sie mit großer Aufmerksamkeit die internationale Literatur beobachtet und vorstellt; weil sie in der deutschen Literatur nicht nur das Neueste ...