Roboter programmieren mit Arduino (Teil 1: Konzept und Inbetriebnahme)

 

 

 

 

Die Robotik ist einer der faszinierendsten technischen Bereiche. Doch bislang war sie fast ausschließlich absoluten Experten vorbehalten, denn die Software-Entwicklung war extrem komplex und umfangreich und die verfügbare Hardware unerschwinglich. Doch mittlerweile gibt es günstige Einsteigermodelle und hoch effiziente Software-Technologien, die es jedem ermöglichen, sich dieser geheimnisvollen Technologie zu nähern. Doch es ist Vorsicht geboten, denn wenn man sich einmal darauf einlässt, kommt man nur schwer wieder davon los ;o) Die Möglichkeiten, die sich eröffnen sind fesselnd und unerschöpflich zugleich.

 

Aber wenn Sie sich trauen, dann lassen Sie uns die ersten Schritte zusammen unternehmen. Dazu wählen wir als Hardware unseren Experimentier-Roboter Böcker RoverROM-B3000 und für die Software-Entwicklung das Arduino-System. Falls Sie noch nichts von Arduino gehört haben, schauen Sie sich zunächst einmal unser Tutorial "Was ist Arduino bzw. DFRduino" an. Dort erfahren Sie die wichtigsten Grundlagen.

 

Das Konzept des RoverROM-B3000 

Der RoverROM-B3000 besteht im Auslieferungszustand aus 3 Ebenen:

 

RoverROM-B3000_Ebenen

 

Ganz unten (Ebene 1) befindet sich das Fahrwerk mit den beiden Getriebemotoren und den Encodern. Die Grundplatte weist eine Vielzahl von Bohrungen auf, um die entsprechenden Sensoren (z. B. die beiden Linetracker) aufzunehmen.

Ebene 2 bildet der Controller und Ebene 3 ist die Oberdeckplatte mit dem schwenkbaren Abstandssensor.

Alle Sensorelemente werden beim RoverROM-B3000 mit Schraubbolzen an einer geeigneten Stelle befestigt und über ein Steckkabel mit dem Controller verbunden. Wenn die Anzahl der Ein-/Ausgänge für eine bestimmte Sensorkombination nicht ausreicht, können Sie nicht benötigte Sensoren sehr leicht entfernen und später wieder einsetzen. Mit der Zeit können Sie sich so einen Robotik-Baukasten aufbauen und die unterschiedlichsten Technologien ausprobieren und miteinander vergleichen. 

 

Die Stromversorgung des RoverROM-B3000 

Im Fahrbetrieb wird der Roboter mit 6 Batterien oder Akkus vom Typ Mignon (AA) betrieben. Die Spannung beträgt dabei also 7,2 V (Akkus) bzw. 9 V (Batterien). Diese Spannung liegt bei voller Geschwindigkeit dann auch an den Motoren an. Die Höchstgeschwindigkeit hängt also auch vom Zustand der Batterien ab. Sie können anstelle des Batteriefachs auch einen anderen Akku anschließen, die Spannung sollte 12 V aber nicht überschreiten. Die Spannung für die Elektronik wird über einen Spannungsregler reduziert. Die Batterieversorgung kann über eine Schiebschalter ein- und ausgeschaltet werden. Im Bild (Nr. 2) ist der Schalter in der Aus-Position. 

 

Romeo_Board_1

 

Für eine erste Kontaktaufnahme können Sie den RoverROM-B3000 aber auch über die USB-Schnittstelle (Nr. 1 im Bild)  versorgen. Der Motorbetrieb könnte aber Ihre USB-Schnittstelle so sehr belasten, dass die Spannung zusammenbricht und  es zu unerwünschten Ergebnissen oder auch einem Ausfall kommt. Programmieren Sie in diesem Fall Ihren RoverROM-B3000 mit Batterien und in eingeschaltetem Zustand.

 
Die Kommunikation mit dem Roboter

Um ein erstes Programm in Ihrem RoverROM-B3000 zu laden, müssen Sie die folgenden Schritte ausführen:

 

1. Installieren bzw. kopieren Sie den Ordner "Arduino IDE" (IDE = Integrated Development Environment, deutsch: integrierte Entwicklungsumgebung) von der CD auf Ihren PC. Wahlweise können Sie die Entwicklungsumgebung auch von der Webseite www.arduino.cc herunterladen und die Beispieldateien von der CD in Ihren Sketch-Ordner kopieren. 

 

2. Schließen Sie nun den RoverROM-B3000 über das mitgelieferte USB-Kabel an Ihren PC an. Dieser wollte das Romeo-Board erkennen und nach den Treibern fragen. Die Treiber befinden sich in Ihrem Arduino-Verzeichnis im Ordner "drivers". Lassen Sie den PC nicht nach den Treibern suchen, sondern geben Sie diesen Pfad an. Die Treiber werden daraufhin installiert. 

 

3. Rufen Sie jetzt das Programm arduino.exe auf, das sich ebenfalls im Intallationsverzeichnis von Arduino befindet. Sie sollten nun das folgende Bild oder zumindest ein sehr ähnliches Bild (je nach Programmversion) sehen: 

 

Arduino_IDE-1

 

Die Arduino-IDE vergibt beim Start automatisch einen Namen für das neue Programm, das sich aus dem Wort "sketch", dem Datum und einem folgenden Buchstaben zusammensetzt. Ein Arduino-Programm wird auch als Sketch bezeichnet. Lassen Sie sich aber nicht beirren, es ist und bleibt ein C- oder C++-Programm (s. dazu auch "Was ist Arduino bzw. DFRduino") . 

Wir wollen mit einem ganz simplen Programm beginnen und lediglich den Buzzer (Summer) zu einer hörbaren Äußerung animieren. Das fertige Programm sieht folgendermaßen aus und ich werde es Schritt für Schritt erklären:

 

Arduino_Summer

 

Ganz oben finden wir einen Kommentar (beginnt mit //), der eine kurze Beschreibung zum Programm liefert.

Mit dem Statement "#define BUZZER 10" wird dem Compiler lediglich mitgeteilt, dass er im folgenden Code an allen Stellen, wo BUZZER steht, dieses Wort durch die Zahl 10 ersetzt und 10 ist nichts anderes als der Anschlusspin, an dem sich unser Summer befindet. Würden wir den Anschluss ändern, müssten wir dies auch mühsam in allen Funktionen tun, die auf ihn zugreifen. Das können wir umgehen, indem wir ganz am Anfang ein #define verwenden. Dann reicht einer Änderung an dieser zentralen Stelle.

In der nächsten Zeile definieren wir eine Variable "i" vom Typ unsigned char, das ist ein vorzeichenloses Byte, kann also Werte zwischen 0 und 255 annehmen. Diese Variable brauchen wir später zum Zählen. 

Ein Arduino-Programm besteht in der Regel aus einer setup-Funktion, in der z. B. die Anschlüsse definiert werden und einer loop-Funktion, also einer Schleife, in der sich das eigentliche Programm befindet. Diesen Aufbau hat auch unser Mini-Programm. Die setup-Funktion wird einmal wiederholt, die loop-Funktion ständig. 

Die Funktion "pinMode()" gehört zur Arduino-Bibliothek und ermöglicht die Konfiguration der Controller-Anschlüsse. Mit dem Befehl "pinMode(BUZZER, OUTPUT)" schalten wir den Anschluss-Pin 10 (BUZZER) in den Ausgangsmodus. Das Einbinden der Bibliothek "arduino.h" übernimmt die IDE, darum müssen wir uns also nicht kümmern.

In der loop-Funktion beginnen wir mit einer for-Schleife, der Inhalt dieses Anweisungsblocks wird 100 Mal wiederholt. Die Funktion "digitalWrite(BUZZER, HIGH)" schaltet den Anschluss-Pin 10 auf 5 Volt, danach wartet das Programm 1 ms. Im Anschluss wird Pin 10 durch "digitalWrite(BUZZER, LOW)" auf 0 Volt gezogen und wieder 1 ms gewartet. Es entsteht also ein Rechtecksignal mit einer Periodendauer von 2 ms (500 Hz) und 100 Schwingungen. Danach folgen 20 Schwingungen mit einer Periodendauer von 10 ms (100 Hz). 20 x 10 ms entspricht der gleichen Tonlänge wie 100 x 2 ms, die Töne müssten also gleich lang sein. 

Sie können nun Ihr Programm zunächst prüfen, indem Sie es lediglich kompilieren, dazu klicken Sie auf dem Haken ganz oben links im Menü oder Sie sind mutiger und übertragen es in den RoverROM-B3000 durch einen Klick auf den Pfeil rechts neben dem Haken (in diesem Fall wird das Programm aber auch übersetzt und bei einem Fehler erfolgt ein Abbruch):

 

1st_Code_1b.png

 

Bevor Sie allerdings das Programm auf den RoverROM übertragen, müssen wir noch 2 Einstellungen vornehmen:

Zunächst wählen Sie im Menü unter  "Tools -> Board" den Eintrag "Arduino Leonardo". Das Romeo-Board verwendet nämlich einen Leonardo-Bootloader. 

Außerdem müssen Sie noch die korrekte serielle Schnittstelle wählen. Das tun Sie im Menüpunkt "Tools -> serieller Port". In der Regel ist der letzte Eintrag der korrekte. Wenn Sie es aber nicht wissen, dann können Sie im Gerätemanager nachschauen. Dort finden Sie unter "Anschlüsse" den Eintrag "Arduino Leonardo (COMx)". COM x ist der Port, den Sie benötigen. 

 

Geraetemanager

 

Probieren Sie es nun erneut und klicken Sie auf den Pfeil und Sie haben Ihr erstes Programm in Ihren Böcker RoverROM-B3000 geladen. 

Und weiter geht es mit der Antriebstechnik im 2. Tutorial.

 

 

Für weitere Informationen und Bestellungen des

RoverROM-B3000

einfach auf nachfolgenden Link klicken: Böcker RoverROM-B3000 Version 2

oder als Bausatz: Böcker RoverROM-B3000 Version 2 Bausatz

 

Sie wollen Arduino-Profi werden? Dann ist unser Video Mikrocontroller-Lehrgang MC1 genau das Richtige für Sie!

 

Falls Sie Fragen zum Thema haben, wenden Sie sich einfach an uns.

Wir helfen Ihnen gern weiter!

 

Ihr Team von Böcker Systemelektronik

 

Hinweis: Unser Tutorialangebot wird in unregelmäßigen Abständen erweitert. Wenn Sie sofort über eine Neuerscheinung informiert werden möchten, tragen Sie sich bitte hier in unsere Benachrichtigungsliste "Tutorials" ein. Sie können diesen unverbindlichen Service jederzeit in Ihrem Kundenkonto oder per E-Mail wieder abbestellen.  

 

 

Copyright © Böcker Systemelektronik