Düvelbot

Der Düvelbot ist ein kleiner fahrender Roboter auf Arduino-Basis, der über einen Ultraschallsensor zur Entfernungsmessung und Hindernisvermeidung sowie zwei Infrarot-Sensoren zur Linienverfolgung verfügt. Zusätzlich wird ein Display angebracht, um wichtige Informationen darzustellen, und er kann Töne abgeben. Durch die offene Architektur und die Verwendung von Standard-Arduino-Bauteilen sind einige Erweiterungen denkbar.

duevelbot-fertig
Fertig aufgebauter Düvelbot.

Der Düvelbot geht zurück auf eine Idee von Marco Düvelmeyer, der auf seinem Youtube-Kanal Technikwerkstatt 4.0 Tutorials rund um Arduino, 3D-Druck, CAD-Software und mehr für seinen Profilunterricht anbietet. Die Entwicklungsarbeit hat das Unternehmen Funduino übernommen, das den Düvelbot auch zum Kauf anbietet. Dort gibt es auch eine Montageanleitung für den Düvelbot. Für dieses Skript wurde der Düvelbot jedoch in einigen Bestandteilen angepasst und erweitert, daher findet sich hier eine eigene Anleitung mit einigen Anpassungen.


Übersicht

Dieser Abschnitt gibt eine Übersicht über die benötigten Bauteile und wie diese zu verkabeln sind. Dies dient der Kontrolle und kann auch zunächst übersprungen werden.

Bauteile

Bauteile sammeln und kontrollieren

Suche in den bereitgestellten Kästen alle Kunststoffteile und Elektronikteile heraus, die du für den Düvelbot benötigst.

Kunststoffteile

Bild Bauteil Anzahl STL-Datei zum Drucken
chassis Chassis 1 duevelbot-chassis.zip
slider Slider 1 duevelbot-slider.zip
seitenhaenger Seitenhänger 2 duevelbot-seitenhaenger.zip
anhaenger Anhänger hinten optional duevelbot-batteriehaenger.zip

Elektronikteile

Bild Bauteil Anzahl Hinweise
arduino-uno Arduino Uno 1
expansion-board Expansion Shield mit kleinem Steckbrett und mehreren Pins für GND und 5V 1
l298n-front Motortreiber L298N 1 Aufbau und Funktionsweise / Informationen und Datenblatt zum L298N
getriebemotor-n20 N20 Getriebemotoren (100 RPM, 6V) 2 Die Kabel müssen noch angelötet werden.
raeder Räder mit Felgen 2 passend zum Aufsetzen auf die Motorschäfte
summer Piezo-Summer 1
ultraschallsensor Ultraschallsensor 1
infrarot-sensoren Infrarotsensoren TCRT5000 2 Datenblatt des Sensors TCRT5000
display-ssd1306 OLED-Display SSD1306 0,96" 1
kabel Kabel male - female viele Es wird zusätzlich ein male-male-Kabel benötigt.
9v-block 9V-Block 2 Auch als USB-Akku verfügbar.
clip-mit-zylinderstecker Clip zum Anschluss des 9V-Block mit Zylinderstecker für Arduino 1
clip-mit-offenen-kontakten Clip zum Anschluss des 9V-Block mit offenen Kontakten für Schraubklemme 1

Schaltplan

Der folgende Schaltplan gibt einen Gesamtüberblick über die Schaltung aller Bauteile. Dies wird im folgenden Schritt für Schritt entwickelt.

Schaltplan des Düvelbot
Vollständiger Schaltplan für den Düvelbot.

Basisversion mit Motoren und Piezo-Summer

Ziel: Es soll eine fahrbare Basisversion des Düvelbot gebaut und programmiert werden, sodass der Düvelbot vorwärts und rückwärts fahren, stoppen und lenken kann. Zudem soll er Töne abspielen können.

Wichtige Grundlagen

Für diesen Abschnitt werden folgende Grundlagen benötigt:

Montage

Montage und Verkabelung

Befolge die folgende Anleitung zur Montage und Verkabelung, um die Basisversion des Düvelbots aufzubauen.

Anleitung01

Schritt 1: Führe die Kabel eines Motors durch die Motorhalterung in das Gehäuse.

Anleitung02

Schritt 2: Drücke den Motor in seine Halterung. Die Lasche kann vorsichtig nach unten gedrückt werden, bis die äußere goldene Platte des Getriebes fest in der Lasche sitzt.

Anleitung03

Schritt 3: Verfahre mit dem Motor auf der anderen Seite genauso.

Anleitung04

Schritt 4: Stecke die Kabel des linken Motors in die linke Schraubklemme des Motortreibers L298N und schraube sie fest. Verfahre genauso auf der rechten Seite

Anleitung05

Schritt 5: Stecke die Kabel des Clips mit offenen Kontakten in der Schraubklemme für die Spannungsversorgung am Motortreiber L298N. In der mittleren Schraubklemme muss ein zweites schwarzes Kabel (male-male) ergänzt werden, mit dem ein gemeinsames GND-Potential mit dem Arduino hergestellt wird. Teste durch vorsichtiges Ziehen an den Kabeln, ob sie fest verschraubt sind.

Anleitung06

Schritt 6: Platziere den Motortreiber im Gehäuse, ohne die Kabel zu stark zu knicken.

Anleitung07

Schritt 7: Suche die Räder und den Slider heraus und schiebe sie an ihre Position. Beachte die Kerbe an der Radnabe, die genau auf die Kerbe am Motorschaft passt.

Anleitung08

Schritt 8: Achte darauf, dass beide Räder gleich weit auf dem Motorschaft sitzen, sodass sie genau symmetrisch sind. Die Räder dürfen nicht am Gehäuse schleifen.

Anleitung09a Jumper entfernen

Schritt 9a: Entferne die Jumper für die Enable-Pins auf dem Motortreiber und verstaue sie so, dass sie nicht verloren gehen.

Anleitung09

Schritt 9b: Stecke danach sechs Kabel auf die Pins En1/2, In1, In2, In3, In4 und En3/4. Eine genaue Beschriftung und Erklärung der Pins folgt im nächsten Abschnitt zum Schaltplan. Verwende für jeden Pin eine andere Farbe. Notiere dir, welche Farbe zu welchem Pin gehört.

Anleitung10

Schritt 10: Führe die Kabel durch die dafür vorgesehenen Öffnungen an den Seiten. In der Regel passen zwei Kabel gut durch das gleiche Loch (nacheinander).

Anleitung11

Schritt 11: Bereite den Piezo-Summer vor, indem du zwei Jumper-Kabel anbringst. Beachte das Plus-Symbol auf der oberen Seite - der Pin unter dem Plus muss mit dem Digitalpin am Arduino verbunden werden. Der andere Pin wird mit GND am Arduino verbunden. Am besten verwendest du hier wieder ein schwarzes Kabel für alle GND-Kontakte.

Anleitung12

Schritt 12: Platziere den Piezo-Summer zwischen den beiden Motoren und führe die Kabel durch die Öffnungen an der Seite.

Anleitung13

Schritt 13: Stecke das Expansion-Board auf den Arduino. Achte darauf, dass die Pinleisten genau übereinander liegen und nicht gegeneinander versetzt sind.

Anleitung14

Schritt 14: Verkabele die Kabel der Bauteile entsprechend des Schaltplans mit dem Arduino (siehe nächsten Abschnitt unten). Nutze die GND-Leiste auf dem Expansion-Board (schwarze Kabel im Bild).

Anleitung15

Schritt 15: Schiebe den Arduino vollständig in das Gehäuse.

Anleitung16

Schritt 16: Hake die Seitenhänger in die Öffnungen an der Seite und platziere die zwei 9V-Blöcke darin. Stecke den Clip mit Zylinderanschluss auf einen der 9V-Blöcke.

Anleitung17

Schritt 17: Wenn der Roboter starten soll, werden beide 9V-Blöcke angeschlossen. Wenn der Roboter programmiert werden soll, werden die 9V-Blöcke abgeklemmt und stattdessen ein USB-Kabel an den Arduino angeschlossen.

Schaltplan

Die Verkabelung erfolgt nach dem folgendem Schaltplan.

Schaltplan für die Motoren und den Piezo-Summer
Schaltplan für die Motoren und den Piezo-Summer.

Konfiguration und Programmierung

Erster Test: Töne abspielen

Konfiguriere den Piezo-Summer im Open Roberta Lab und lass den Düvelbot ein paar erste Lebenszeichen spielen!

Funktionsweise des Motortreibers

Der Motortreiber L298N enthält eine H-Brücke, um die Motoren zu steuern. Um dies im Programm nutzen zu können, muss man die Funktionsweise der H-Brücke verstehen. Bearbeite dazu die folgenden Aufgaben aus dem Abschnitt Elektrische Grundlagen - Transistoren und Motoren.

Ergänze damit die folgende Tabelle:

In1 In 2 En1,2 In3 In4 En3,4 Wirkung
vorwärts fahren
stoppen
rückwärts fahren
links vorwärts fahren, rechts stoppen
links stoppen, rechts vorwärts fahren
links vorwärts, rechts rückwärts fahren
links rückwärts, rechts vorwärts fahren

Funktionen zum Steuern

In der Aufgabe Einfachere Steuerung mit Funktionen siehst du, wie man die Steuerung von einem Motor in eine Funktion auslagern kann. Passe dies an, um die folgenden Funktionen zu implementieren.

fkt-vorwaertsFahren

vorwaertsFahren ( leistung ): Lässt den Düvelbot mit der angegebenen Leistung zwischen 0 und 255 vorwärts fahren.

fkt-stoppe

stoppe: Lässt den Düvelbot stoppen.

fkt-rueckwaertsFahren

rueckwaertsFahren ( leistung ): Lässt den Düvelbot mit der angegebenen Leistung zwischen 0 und 255 rückwärts fahren.

fkt-fahreVorwaertsKurve

fahreVorwaertsKurve ( leistungLinks, leistungRechts ): Lässt den Düvelbot eine Vorwärtskurve fahren, wobei der Motor links mit der Leistung leistungLinks und der Motor rechts mit der Leistung leistungRechts gedreht wird (Leistungswerte zwischen 0 und 255).

Für Experten: Passe die Funktionen so an, dass die Leistung in Prozent angegeben wird. Wenn die Leistung also 100 beträgt, dreht sich der Motor mit voller Leistung, wenn die Leistung 0 beträgt, dreht sich der Motor nicht.

Hebelsteuerung

fkt-fahre

prog-fahre-start
Möglicher Beginn der fahre-Funktion. Es werden mehrere Fallunterscheidungen benötigt. Der grüne Block ist ein Kommentar aus der Kategorie Text, der nur der eigenen Übersicht dient.

  1. Implementiere die Funktion fahre ( leistungLinks, leistungRechts ). Die Werte für leistungLinks und leistungRechts können jeweils zwischen -255 und 255 liegen, wobei "-255" eine Drehung des jeweiligen Motors mit voller Leistung nach hinten und "255" eine Drehung des jeweiligen Motors mit voller Leistung nach vorne bedeutet. Achtung: Die Werte für die Enable-Pins müssen immer zwischen 0 und 255 liegen!
  2. Passe die Funktion so an, dass die Werte für leistungLinks und leistungRechts jeweils zwischen -100 und 100 liegen können, wobei "-100" eine Drehung des jeweiligen Motors mit 100%iger Leistung nach hinten und "100" eine Drehung des jeweiligen Motors mit 100%iger Leistung nach vorne bedeutet.
  3. Erkläre, wie man mit dieser Funktion die Wirkung von jeder der vorher programmierten Funktionen erreichen kann.
  4. Erkläre, wie man den Düvelbot mit dieser Funktion auf der Stelle drehen lassen kann.

Erweiterung: Ultraschallsensor

Ziel: Der Düvelbot soll um einen Ultraschallsensor erweitert werden, sodass er Hindernisse erkennen und umfahren kann.

Wichtige Grundlagen

Für diesen Abschnitt werden folgende Grundlagen benötigt:

Montage

Anleitung18

Schritt 18: Stecke vier Kabel auf den Ultraschallsensor.

Anleitung19

Schritt 19: Verkabele den Ultraschallsensor entsprechend des Schaltplans (siehe unten).

Schaltplan

Die Verkabelung des Ultraschallsensors erfolgt nach dem folgenden Schaltplan.

Schaltplan für den Ultraschallsensor
Schaltplan für den Ultraschallsensor.

Konfiguration und Programmierung

Erster Test

  1. Recherchiere die Funktionsweise und Konfiguration des Ultraschallsensors.
  2. Programmiere den Roboter so, dass er geradeaus fährt und möglichst genau 20cm vor einem Hindernis stoppt.

Endlosfahrt

Programmiere den Roboter so, dass er bei freier Bahn geradeaus fährt. Wenn er aber ein Hindernis "sieht", soll er sich um 90 Grad drehen, damit er wieder freie Fahrt hat. Dies wird endlos wiederholt, sodass der Roboter immer weiter fährt.

Variable Geschwindigkeit

Programmiere den Roboter so, dass er schnell fährt, wenn kein Hindernis in Sicht ist und langsamer, wenn er ein Hindernis erkennen kann. Wenn das Hindernis zu nah kommt, dreht sich der Roboter und fährt in eine andere Richtung.

Einparken

Programmiere den Roboter so, dass er möglichst genau 5cm vor einer Wand stoppt. Er wird bereits vorher immer langsamer und gibt dabei Töne ab. Je näher der Roboter dem Hindernis kommt, desto schneller folgen die Töne aufeinander.

Erweiterung: Infrarot-Sensoren und Display

Ziel: Der Düvelbot soll um zwei Infrarot-Sensoren erweitert werden, sodass er einer Linie folgen kann, um Parcours zu absolvieren. Für die Anzeige der Sensorwerte bei der Feinjustierung wird ein Display angebracht.

Wichtige Grundlagen

Für diesen Abschnitt werden folgende Grundlagen benötigt:

Montage

Anleitung20

Schritt 20: Suche die Infrarot-Sensore (IR-Sensoren) und stecke jeweils drei Kabel auf die Pins Vcc, GND und A0. Da der digitale Pin D0 hier nicht genutzt wird, kann er frei bleiben. Notiere dir, welche Farbe zu welchem Pin gehört, damit du sie später richtig verschalten kannst.

Anleitung21

Schritt 21: Schiebe den Arduino etwas zurück und führe die Kabel durch die jeweilige Öffnung in das Chassis und nach oben hinaus.

Anleitung22

Schritt 22: Schiebe die Platinen der IR-Sensoren in die dafür vorgesehene Schiene. Durch die Fertigungstoleranzen kann es dazu kommen, dass die Schiene sehr locker oder sehr eng sitzt. Bitte in keinem Fall grobe Gewalt anwenden!

Anleitung23-Anmerkung

Schritt 23: Führe die Kabel durch die seitliche Öffnung nach außen.

Anleitung24-Anmerkung

Schritt 24: Schließe die Kabel entsprechend des Schaltplans (siehe unten) an. Notiere dir, ob der rechte oder der linke IR-Sensor mit A0 am Arduino verbunden ist (und entsprechend der andere mit A1 am Arduino), damit du dies später im Programm richtig konfigurieren kannst.

Anleitung25

Schritt 25: Stecke das Display in das kleine Steckbrett und verkabele es entsprechend des Schaltplans (siehe unten).

Verkabelung

Die Verkabelung des Ultraschallsensors erfolgt nach dem folgenden Schaltplan.

Schaltplan für die Infrarot-Sensoren und das Display
Schaltplan für die Infrarot-Sensoren und das Display.

Konfiguration und Programmierung

Kantenverfolgung

Linienverfolgung

Linienverfolgung per Steuern und Regeln