Diese Anleitung ist eins der einfachen Wege, um dir einen schnellen Start in die Welt der selbstgebauten Roboter zu verschaffen. Nebenbei wirst du viele nützliche Sachen lernen, die dich beim Bau deines nächsten Roboters begleiten werden.
Die Anleitung wurde so ausgelegt, dass du schnell deinen ersten Erfolg erzielen kannst, denn gerade als Einsteiger, möchte man möglichst schnell Ergebnisse sehen. Und hiermit wird Dein erstes Ergebnis, ein programmierbarer Roboter.
Die einzelnen Teile werden zwar mit doppelseitigem Klebeband befestigt, dies erspart aber die Konstruktion oder den Kauf eines Chassis.
Der Vorteil ist, dass man das schnell wieder auseinander nehmen und die Sachen für andere Projekte verwenden kann. Wenn dir die Form des Roboters doch gefällt, kannst du die Motoren und Servo, mit Hilfe von Heißkleber, am Batteriehalter befestigen. Man kann dann immernoch alles auseinander reißen (mit etwas mehr Mühe) 😉
Nachteil: natürlich ist der Aufbau mit Heißkleber oder Klebeband nicht so elegant, wie mit Schrauben und Muttern und evtl. noch Kunststoffplatten. Der Roboter lässt sich dann aus Platz- und Energiemangel auch kaum erweitern. Aber so beschränkt man sich nur auf die wichtigsten Teile, um direkt kostengünstig (mit original Arduino Teilen und relativ guten Motoren).
Material
Es gibt zur Zeit leider keine Online-Händler, bei dem man alle nötigen Teile auf ein mal bestellen kann.
Der aktuelle Stand ist, dass man das in mehr als nur einem Shop bestellen muss oder man hat den einen oder anderen Teil schon zuhause liegen.
Hier ist eine kurze Aufzählung der Bauteile, die du für den Aufbau deines eigenen Roboters benötigst.
1 Arduino UNO Rev. 3
Arduino ist eine Entwicklungsplattform, bestehend aus Software und Hardware. Die Plattform wurde extra dafür entwickelt, ohne einer langen Lernphase, direkt in die Welt der Mikrocontroller-Projekte einzusteigen. Im Prinzip wurde Arduino für Nichtelektroniker entwickelt.
1 Arduino Motor Shield
Motor Shield ist eine wichtige Erweiterung für den Arduino. Da der Arduino nicht in der Lage ist, genug Strom von den Batterien zu den Motoren umzuleiten, übernimmt das der L298 Treiber auf dem Motor Shield, der von Arduino gesteuert wird. Außerdem bietet das Motor Shield weitere Anschlüsse für Sensoren und Aktoren. Diese Anschlüsse sind auch mit dem TinkerKit kompatibel.
5 oder mehr 100mm Female-Female (FF) Jumper Wires
Diese kleine Leitungen ersparen einem einige Lötarbeiten und erhöhen die Flexibilität beim Aufbau.
Etwas Draht
Der Draht muss ca. 0,25mm² Querschnitt und ca. 20-30cm langes Stück reicht hier vollkommen aus.
1 Batterieclip
Hier muss man wohl nicht viel erzählen. Ist eben dazu da, um die Batterien mit der Elektronik zu verbinden.
1 Standard Servo
Servomotoren sind in Robotik sehr verbreitet. Im Inneren des Servos befindet sich ein kleiner Motor, mehrere Zahnräder und etwas „schlaue“ Elektronik. Ein Servo besitzt drei Anschlüsse für Plus, Minus und Signal. Über die Signalleitung sendet der Mikrocontroller (in unserem Fall Arduino) ein Signal zum Servo. Dadurch „weiß“ der Servo, in welche Richtung es drehen und an welcher Stelle anhalten soll. Diese Stelle liegt meistens zwischen 0° und 180°.
1 Sharp Infrarot Distanzmesser
Der Distanzmesser besitzt drei Anschlussdrähte und so zu sagen „zwei Augen“. Ein Auge erzeugt einen Lichtstrahl, der für menschliche Augen nicht sichtbar ist. Also wundert euch nicht, wenn der Sensor nicht leuchtet. Das ist schon richtig so =). Sollte vor diesem Strahl ein Gegenstand auftauchen, wird dieses Licht zurück reflektiert und von dem „zweiten Auge“ des Sensors erkannt. In diesem Augenblick, wo das Hindernis von dem Sensor erkannt wurde, steigt die Spannung an der Signalleitung des Sensors und zwar je näher das Hindernis, desto höher die Spannung an der Signalleitung. Der Mikrocontroller kann dieses Signal auswerten und den Roboter ausweichen lassen.
Achte bitte darauf, dass der Sensor entweder mit Anschlusskabel (siehe auf dem Bild) geliefert wird oder bestell diesen mit.
Batteriehalter für 4 AA Batterien (1,5Volt)
Die 4 Batterien hintereinander angeschlossen, erzeugen insgesamt 6 Volt, die in die Steckerbuchse des Arduinos gehen. Auf dem Board ist ein Spannungsregler, der die 6Volt in 5Volt umwandelt. 5Volt ist quasi die Standardspannung, mit der fast gesamte Elektronik des Roboters arbeitet.
4 AA 1,5Volt Batterien
Aus den Batterien wird der Roboter mit Strom versorgt. Diese Batterien sind fast in jedem Laden erhältlich und sind relativ günstig.
2 Getriebemotoren und 2 Räder
Das Getriebe des Getriebemotors besteht aus mehreren Zahnrädern, die die Drehzahl der Räder zwar reduzieren (Untersetzung), verleihen ihnen aber mehr Kraft (Drehmoment). Dadurch kann der Roboter auch leichte Neigungen hoch fahren und rollt nicht zurück.
Es gibt Räder, die direkt auf die GM9 Motoren passen, z.B. Räder der Firma Solabotics.
1 Rolle doppelseitiges Klebeband
Dieses Band ist eine gute Methode zwei kleine Gegenstände miteinander zu verkleben und ist in unserem Fall eine gute Alternative zum Sekundenkleber etc.. Falls du deinen Roboter modifizieren/umbauen möchtest, geht es viel leichter alles auseinander zu nehmen, als wenn es geklebt wäre.
1 Schrumpfschlauch (3-5mm Durchmesser)
Während des Aufbaus deines Roboters, müssen einige Leitungen miteinander verlötet werden, z.B. die Anschlüsse des Sharp Sensors. Damit diese Leitungen kein Kurzschluss verursachen, sollten sie mit Hilfe von Schrumpfschlauch (oder Klebeband) isoliert werden. Wichtig ist, dass du den Schrumpfschlauch vor dem Verlöten auf die Leitungen drauf machst. Wenn man den Schrumpfschlauch erwärmt, schrumpft dieser zusammen.
Werkzeug
Ein Feuerzeug um Schrumpfschlauch zu erwärmen, Seitenschneider um Drähte und doppelseitiges Klebeband abzuschneiden, kleinen Schlitz-Schraubendreher (2-3mm breit) und eine Abisolierzange um die Drahtenden von der Isolation zu befreien.
Lötkolben und Lötzinn
Während des Aufbaus muss man einige Leitungen miteinander verlöten. Dazu braucht man Lötzinn und einen Lötkolben um den zum Schmelzen zu bringen.
Ein Computer mit Internetverbindung und einem freien USB-Anschluss
Der Programm-Code für den Roboter wird mit Hilfe von USB-Kabel auf den Mikrocontroller übertragen. Die Arduino Programmierumgebung ist kostenlos und läuft unter Mac OS, Linux und Windows.
Zusammenbau
Hast du alles? Dann auf geht’s!!!
Ca. 4cm langes Stück doppelseitiges Klebeband abschneiden und auf einer Seite die Schutzfolie abziehen. Jetzt das Band mit der klebrigen Seite am Batteriehalter anbringen und drücke es mit etwas kraft zusammen.
Jetzt entferne die andere Schutzfolie und klebe den Servo drauf und drücke das Ganze mit etwas Kraft zusammen.
Schneide dir zwei 3 cm lange Stücke des Klebebandes ab und klebe sie auf den hinteren Bereich des Batteriehalters drauf.
Schneide dir 5 cm lange Stücke von dem Draht ab (4 Stück) und entferne mit Hilfe der Abisolierzange jeweils ca. 5mm der Isolierung ab.
Die GM9 Motoren haben jeweils zwei Anschlüsse. Je nach dem an welchem Anschluss Plus oder Minus angeschlossen wird, kann der Motor entweder in die eine oder andere Richtung drehen. Löte an jeden der Anschlüsse jeweils eine Leitung an, die du in Schritt 4 vorbereitet hast. Achte dabei darauf, dass die Lötspitze die Kunststoffteile der Motoren nicht berührt. Achte auch darauf, dass es keine Lötverbindungen zwischen Anschlüssen und dem metallischen Gehäuse des Motors gibt.
Jetzt werden die Motoren auf den Batteriehalter geklebt. Greife jetzt noch Mal zum doppelseitigen Klebeband und klebe es auf die Motoren oben drauf so dass auch die Metallfläche bedeckt ist.
Jetzt werden die Räder auf die Motorachsen montiert.
So langsam sieht es nach was aus, nicht Wahr?
Befestige den Arduino oben auf den beiden Motoren und lass etwas Abstand zwischen dem Servo und Arduino.
Auf den Arduino-Board wird nun das Motor Shield aufgesteckt. Achte dabei darauf, dass die Stiftleisten des Motor Shields sich nicht verbiegen und die Buchsenleisten richtig getroffen werden. Lass dir dabei etwas Zeit 😀
Nun kommen wir zu den Anschlüssen des Servo Motors. Wenn du es dir anschaust, wirst du feststellen, dass man etwas von den Anschlüssen sieht. Damit diese Kontakte nicht raus rutschen, hat der Servo-Anschluss drei kleine Klappen.
Bei diesem Schritt kann man zwischen zwei Varianten wählen.
Variante 1: Biege die Klappen mit dem Schlitz-Schraubendreher nach oben und ziehe die Leitungen mit der Kontakthülse raus Siehe Bild). Lass dir dabei etwas Zeit – wir haben es wirklich nicht eilig 😀
Variante 2: Man zieht nur die rote und die orangene Leitungen raus und vertauscht sie. In den Bildern wird nur die Variante 1 gezeigt. Es spielt keine Rolle ob du dich für 1 oder 2 entscheidest, denn die Funktion bleibt trotzdem gleich 😀
Wenn du alle drei Leitungen raus gezogen hast, sollte es ungefähr so aussehen (siehe Bild)
Schneide jetzt drei 1,5cm kurze Stücke von dem Schrumpfschlauch ab und setze sie auf die Anschlusshülsen der Servo-Anschlussleitungen (was für ein Wort, oder?) auf.
Nun werden die Schrumpfschläuche mit dem Feuerzeug erwärmt. Bring bitte nicht die Leitungen zum Schmelzen 😀 Zwei bis drei Sekunden reichen vollkommen aus.
Der Servo wird an den orangenen Steckern OUT ~5 auf dem Motor Shield angeschlossen. Wenn man den halbfertigen Roboter mit dem Servo zu sich hält, wird an den Linken Pin die Braune (Minus) Leitung, an den mittleren Pin die orangene (Signal) und an den rechten Pin die rote (Plus) Leitung angeschlossen. Bitte achte darauf, dass es richtig angeschlossen ist, sonst funktioniert der Servo nicht 😀
Nun werden die Motoren angeschlossen. Wir fangen mit dem linken Motor an. Stecke die obere Leitung des linken Motors in die aller linke (Minus) Schraubklemme rein und schraube sie zu. Die untere Leitung des Motors wird an die zweite Klemme von links (Plus) angeschraubt. Bitte wende beim Zusammenschrauben keine Gewalt an.
Jetzt ist der rechte Motor an der Reihe. Hier gilt dasselbe – also obere Leitung an Minus-Klemme (dritte von links) und die untere Leitung an Plus (vierte von links).
Batterieclip an den Batteriehalter anschließen (Batterien bleiben erst mal draußen). Die rote Leitung (Plus) wird an Vin (fünfte Klemme von links) und die schwarze Leitung (Minus) an GND (Schraubklemme ganz rechts) angeschlossen.
Nun kommt wieder mein Lieblingswerkzeug ins Spiel, nämlich ein Lötkolben 😀 Nimm dir drei Jumper Wires und zwar möglichst in denselben Farben, wie die Anschlussdrähte des IR-Distanzmessers. Manchmal werden die Jumper Wires in zufälligen Farben geliefert. Das macht aber nichts. Wichtig ist, dass du weißt welche Leitungen des Jumper Wires mit welchen Leitungen des Distanzmessers verbunden sind. Schneide alle drei Jumper Wires in der Mitte durch.
Die Leitungen vom IR-Sensor und Jumper Wires (ich weiß, ich wiederhole das Wort viel zu oft) werden an den Enden ca. 1,5cm abisoliert und die Schrumpfschläuche (ca. 2cm) werden aufgesetzt (siehe Bild).
Ein Jumper Wire und eine Leitung des Sensors miteinander verdrillen und anschließend miteinander verlöten.
Über jede dieser Lötstellen wird nun der Schrumpfschlauch drüber gezogen. Die verlöteten Spitzen, die im Weg stehen, werden einfach parallel zu Leitungen gebogen. Hier auch die Schrumpfschläuche mit dem Feuerzeug erwärmen, damit sie fest sitzen.
Da ich keine Jumper Wires in passender Farbe hatte, muss ich mir merken (und du vielleicht auch), welche Sensorleitung mit welcher Anschlussleitung verbunden wurde. Bei mir geht Rot auf Orange, Schwarz auf Braun, Weiß auf Grau.
Als nächstes wird der vorbereitete IR-Distanzmesser an den weißen IN 2 Pin wie im Bild angeschlossen. Die Pinbelegung der drei Anschlusspins ist zum Servo identisch. Wenn man den Roboter mit dem Servo zu sich hält, ist links die Minusleitung (schwarz beim Sensor), mittig die Signalleitung (weiß beim Sensor) und rechts die Plusleitung (Plus beim Sensor).
Und nun wird der Infrarotsensor mit Hilfe des doppelseitigen Klebebands am Servo befestigt.
uuuund…… !!! TADAAAAA 😀 !!! Den mechanischen Aufbau hast du fertig.
Programmierung
Das Programm für diesen Roboter, wurde von Bekannten von mir geschrieben. Mein Code hat nicht so gut funktioniert, deswegen veröffentliche ich hier seinen 😉
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 |
/*****************************************************************************/ /*** Datei: WMRprogrammcode.ino ***/ /*** Version: 1.0 ***/ /*** Datum: 15.02.2013 ***/ /*** ***/ /*** ***/ /*** Weiter-Entwicklung erwünscht! Aber bitte erzählt uns davon... ;-) ***/ /*** ***/ /*** Das Programm wurde geschrieben von Florian H. ***/ /*****************************************************************************/ // Nützliche Funktionen für die Servo Ansteuerung kommen von hier: #include <Servo.h> // Welcher Pin hat welche Funktion??? // Funktion Pin Beschreibung #define IR_SENSOR 2 // Der Sharp IR Sesor ist an Pin 2 #define DIR_B 13 // Richtung B #define DIR_A 12 // Richtung A #define PWM_B 11 // Geschwindigkeit B #define BRAKE_A 9 // Bremse A #define BRAKE_B 8 // Bremse B #define PWM_A 3 // Geschwindigkeit A #define SERVO 5 // Servo wird an Pin 5 angesteuert // Nützliche Einstellungen: #define FULL_SPEED 128 // Vollgas ist 255, höher geht nicht. Erstmal nur die halbe Geschwindigkeit... #define TURN_SPEED 255 // schnell Drehen #define LEFT LOW // Links drehen bei LOW #define RIGHT HIGH // ... und Rechts bei HIGH #define CLOSEST_DISTANCE 350 // Bei diesem Wert am IR Sensor soll der Roboter anhalten --> Ist der Wert KLEINER hält der Roboter FRÜHER an #define SERVO_RIGHT 55 // Mit welchem Winkel stößt der Sensor auf dem Servo Rechts an? #define SERVO_LEFT 125 // Das gleiche mit Links Servo SensorServo; // Mit diesem Element wird der Servo gesteuert // An welcher Servo Position ist die Distanz zur Gefahr am geringsten? int SeekingPositionWithClosestDanger() { // Erst mal anhalten digitalWrite(BRAKE_A, HIGH); digitalWrite(BRAKE_B, HIGH); int ServoPosition; int MinimumDistance = 0; int MinimumServoPosition = 0; // Von Rechts (SERVO_RIGHT = 55) nach Links (SERVO_LEFT=125) alle Servo Positionen anfahren. mit ServoPosition++ wird Wert immer um 1 erhöht for(ServoPosition = SERVO_RIGHT;ServoPosition <= SERVO_LEFT; ServoPosition++) { // Servo Wert einstellen SensorServo.write(ServoPosition); delay(10); // ist der aktuelle Wert näher, als der minimale Wert? if(analogRead( IR_SENSOR ) > MinimumDistance ) { // Ja: aktueller Wert ist neues Minimum MinimumDistance = analogRead( IR_SENSOR ); // Außerdem merken wir uns die Servo Position MinimumServoPosition = ServoPosition; } } // Die gefundene Position wieder einstellen und Wert zurückgeben SensorServo.write(MinimumServoPosition); return MinimumServoPosition; } byte ServoPosition = 90; boolean TurnServo = RIGHT; // Vorwärts fahren und dabei den Sensor hin und her schwenken void DriveForward() { SensorServo.write( ServoPosition ); //Beide Motoren auf Geradeaus stellen, ... digitalWrite( DIR_A, HIGH ); digitalWrite( DIR_B, HIGH ); // ... Vollgas und ... analogWrite( PWM_A, FULL_SPEED ); analogWrite( PWM_B, FULL_SPEED ); // ..Bremsen lösen! digitalWrite( BRAKE_A, LOW ); digitalWrite( BRAKE_B, LOW ); // Dreht sich der Servo nach Rechts? if( TurnServo == LEFT ) ServoPosition = ServoPosition+1; // Weiter nach Rechts drehen. d.h. Wert um 1 erhöhen if( TurnServo == RIGHT ) ServoPosition = ServoPosition-1; // Sonst nach Links drehen, also 1 vom Wert abziehen // Hat der Servo das Linke Ende erreicht? if( ServoPosition > SERVO_LEFT ) TurnServo = RIGHT; // Jetzt nach Rechts drehen if( ServoPosition < SERVO_RIGHT ) TurnServo = LEFT; // Sonst nach Links drehen... } // Drehen! Aber in welche Richtung??? LEFT für Links(gegen den Uhrzeiger) RIGHT für Rechts (im Uhrzeigersinn) void Turn( boolean Direction ) { // Bremsen digitalWrite( BRAKE_A, HIGH ); digitalWrite( BRAKE_B, HIGH ); delay( 500 ); digitalWrite( DIR_A, Direction ); // Motor A in die "RICHTUNG" drehen digitalWrite( DIR_B, !Direction ); // Motor B in entgegen der "RICHTUNG" drehen // Geschwindigkeit für das Drehen einstellen analogWrite( PWM_A, TURN_SPEED ); analogWrite( PWM_B, TURN_SPEED ); // Bremsen lösen digitalWrite( BRAKE_A, LOW ); digitalWrite( BRAKE_B, LOW ); // Solange drehen, bis der Sensor eine 10% weitere Entfernung misst while( ( CLOSEST_DISTANCE * 1 ) < analogRead( IR_SENSOR ) ) { delay( 50 ); } // Halt! digitalWrite( BRAKE_A, HIGH ); digitalWrite( BRAKE_B, HIGH ); delay(1000); } // Bevor es los geht... Diese Funktion wird am Anfang genau einmal ausgeführt void setup( ) { //Motor A (rechts) initialisieren pinMode( DIR_A, OUTPUT ); // Pin für Richtung Motor A als Ausgang definieren pinMode( BRAKE_A, OUTPUT ); // Pin für Bremse Motor A als Ausgang definieren //Motor B (links) initialisieren pinMode( DIR_B, OUTPUT ); // Pin für Richtung Motor B als Ausgang definieren pinMode( BRAKE_B, OUTPUT ); // Pin für Bremse Motor B als Ausgang definieren // Beide Bremsen anziehen, HIGH = Bremsen! digitalWrite( BRAKE_A, HIGH ); digitalWrite( BRAKE_B, HIGH ); // Servo initialiseren und auf 90° stellen SensorServo.attach( SERVO ); SensorServo.write( 90 ); delay( 500 ); // Warten bis etwas vor dem Sensor ist while( CLOSEST_DISTANCE > analogRead( IR_SENSOR ) ) { // solange warten... delay( 100 ); } // Los geht's!!! } // Der eigentliche Programmablauf. Nachdem setup() fertig ist wird die Funktion loop() endlos nacheinander ausgeführt void loop( ) { int DangerPosition; int Distance; Distance = analogRead( IR_SENSOR ); // was misst der Sensor? if(Distance > CLOSEST_DISTANCE ) // nah genug? Ist ein Hindernis nah, kommt ein großer Wert zurück. Sonst ein kleiner. { DangerPosition = SeekingPositionWithClosestDanger(); // Nochmal alles scannen um zu wissen, wo genau die Gefahr am nächsten ist... // Gefahr Links? if(DangerPosition <= 90) { Turn( RIGHT ); // Rechts drehen } // Oder doch Rechts? if( DangerPosition > 90 ) { Turn( LEFT ); // dann Links drehen } } DriveForward(); // Immer gerade aus!!! delay( 10 ); } |
Hier ist noch etwas Nachhilfe, falls der Roboter nicht das tut, was es eigentlich soll.
Frage: Mein Roboter hält immer wieder ohne Grund an, bewegt den Kopf hin und her, versucht wieder anzufahren und bleibt wieder stehen. Woran lilegt das?
Antwort: Es liegt entweder an den zu schwachen Batterien oder an dem Servo. Manche Servos ziehen sehr viel Strom, sodass die Spannung kurzzeitig sehr niedrig wird. Dadurch spinnt dann die Elektronik.
Frage: Wieso fährt der Roboter, bei einem Hindernis auf der linken Seite, auch nach Links, obwohl er nach rechts fahren sollte?
Antwort: Das hängt so bisschen mit dem Servo und dem Programmcode zusammen. Die üblichen Servos haben einen Stellwinkel zwischen 0° und 180°. Bei manchen Servos liegen die 180° ganz links und 0° ganz rechts. Und bei manchen Servos genau umgekehrt. Im Programmcode wird abgefragt, wo der Servo sich gerade befindet, also in welche Richtung es gerade guckt. Entsprechend werden dann die Motoren so angesteuert, dass der Roboter sich vom Hindernis weg bewegt.
So wird der Controller von dem Servo manchmal rein gelegt und der “Controller” denkt, dass das Hindernis sich links befindet, obwohl das nicht stimmt. Als Lösung sollte man die Drahtpaare der Motoren gegeneinander tauschen. D.h. dort wo der rechte Motor angeschlossen war, wird der linke Motor angeschlossen und dort wo der linke Motor war, wird der rechte Motor angeschlossen.
Hallo,
Sobald die Batterien im Arduino Uno drin sind bewegt er seinen Kopf ( wie vorgesehen) aber danach dreht er sich nur noch auf der Stelle immer weiter nach Links !
Was habe ich falsch gemacht ?
Hi,
dreht er sich um seine eigene Achse oder fährt er einen Bogen?
Wenn er sich um seine eigene Achse dreht, vertausche mal die Leitungen des Motors, der rückwärts dreht.
Ansonsten im ausgeschaltetem Zustand die Motoren mit der Hand kurz drehen, ob sich ein Motor viel schwerer drehen lässt, als der andere.
Er hatte sich um seine eigene Achse gedreht. Nun fährt er gerade aus. Er erkennt aber keine Gegenstände, er fährt einfach dagegen. Was muss ich verändern ?
Vermultich ist der Sensor falsch angeschlossen worden. Schau nochmal in die Anleitung rein und überprüfe die Verdrahtung.
Ok mach ich. Danke für deine hilfe. 😀
Jo daran hat es gelegen. 😀 😀 😀
PS: Das Video und die Bilder stimmen bei der reihen folge der Anschlüsse des Sensors nicht überein (bei mir waren die Bilder der richtige Weg):D
Danke dass es Menschen gibt wie dich.Die anderen helfen.
Like you bro !!!
Vielen Dank für die Blumen. Viel Spaß damit 😉
Könnte jemand einen Link von dem Programm schicken?
Das Programm ist in der Beschreibuing dabei. Fast ganz unten, nach dem letzten Bild, unter „Programmierung“.
Hallo
Danke für die Anleitung, mein Kleiner läuft.
Jetzt versuch ich das Programm auf Ultraschallsensor umzustricken. ( mein erster Versuch)
Hi,
coole Sache! Gratulation zum funktionierenden Roboter! 🙂
Kannst dann ja berichten, ob es mit US-Sensor geklappt hat. Wünsche dabei auf jeden Fall viel Erfolg 😉
Hi,
super Video ich würde gerne mehr darüber erfahren würde mich auch freuen wenn du mir eine E-Mail schreiben würdest
Viele Grüße
Hallo, super Anleitung!
gibt es denn inzwischen eine Variante mit Ultraschallsensoren?
Macht es Sinn, anstatt der AA-Batterien LithiumIonen-Akkus (2 x 18650, á 3,7V) zu verbauen?
V.G.!
Ich hab versucht den Roboter mit einem SainSmart L293D Motor Drive Shield nachzubauen. Aber irgendwie komme ich mit der Pinbelegung nicht zurecht. Bin auch nicht grad ein Genie um ein neues Program zu schreiben 😉
Hast du vielleicht einen Tip?
p.s.
Sehr schönes Block
Ich gehe davon aus, dass der SainSmart Shield ein Klon des Adafruit’s Shields ist. https://www.adafruit.com/products/81
Die Ansteuerung der beiden Motor Shields ist unterschiedlich. Es reicht auch nicht, nur 1-2 Zeilen Code zu ändern, damit es mit dem Shield funktioniert.
Wenn du nur den Roboter nachbauen willst, kannst du dir vielleicht überlegen, das Arduino Motor Shield (wie in der Anleitung) zu kaufen oder du beschäftigst dich halt mit der Programmierung der Mikrocontroller, um das SainSmart Shield zum laufen zu bringen bzw. um das Programm an deine Bedürfnisse anpassen zu können 🙂
Wo habt ihr die Motoren + Räder bekommen? Ich hab mir schon die Finger rot gegoogelt!
Die Motoren sind von Solarbotics, bzw. von Pololu. Au der Seite von Pololu gibt es eine Liste mit Distributoren in DE. Einfach mal bei Ihnen vorbeischauen, bzw. anfragen. Diese Motoren werden meistens als „GM9“ bezeichnet.
https://www.pololu.com/distributors#germany
hallo
ich habe die programierung draufgeladen und so
aber es funktst. nicht. (das heist der Servo bewgt sich kein stück)
Ich habe auch alles nach anweisungen angesteckt.
Könnt ihr mir bitte helfen.
Wen es interessiert, ich habe es auch mit größeren Motoren und ESCs von Conrad gemacht: http://www.kammerath.net/motorsteuerung-mit-arduino.html
Ist etwas aufwendiger, aber funktioniert richtig gut. Insbesondere, wenn man im RC Bereich oder mit noch größeren Motoren arbeiten möchte.
Hallo was ist wenn ich ein L293D habe. Ich habe mich durchgelesen und eingesteckt, jedoch funktioniert dann der Sensor nicht. Irgendwelche tipps? Würde mich über eine Antwort freuen.
Hi,
wenn du von der Anleitung abweichst, dann musst du schon so bisschen wissen, was du da tust. Hast du einfach nur den Chip eingesetzt oder ein Shield mit dem L293D genommen?
In beiden Fällen, würde ich vermuten, dass es nicht 100% mit dem Arduino Motor Shield kompatibel ist.
Ok danke. Die Motoren funktionieren zwar aber der Infrarot halt nicht. Das heisst mehr rumprobieren 😀
Hallo,
ich habe diesen Sketch versucht zu kompilieren: Es kommen aber folgende Fehlermeldungen:
sketch_oct11a:35: error: ‚Servo‘ does not name a type
sketch_oct11a.ino: In function ‚int SeekingPositionWithClosestDanger()‘:
sketch_oct11a:51: error: ‚SensorServo‘ was not declared in this scope
sketch_oct11a:63: error: ‚SensorServo‘ was not declared in this scope
sketch_oct11a.ino: In function ‚void DriveForward()‘:
sketch_oct11a:72: error: ‚SensorServo‘ was not declared in this scope
sketch_oct11a.ino: In function ‚void setup()‘:
sketch_oct11a:143: error: ‚SensorServo‘ was not declared in this scope
Hallo zusammen,
nach meinem Quadrocopter Projekt hat mich jetzt auch das Arduinofieber gepackt.
Den obigen Robi hab ich schon nachgebaut und hab jetzt zum Leid meiner Frau neue Sachen im Kopf.
Nach dem Vorbild deines Robis würde ich gern einen Rasenmäher Roboter bauen.
Der Plan ist für den Antrieb zwei 6V oder 12V 40RRPM Getriebemotoren zu verwenden
Anstatt des Servos würde ich einen Brushlesregler an den Pin stecken mit einem zugehörigem Motor und Stromverteiler für das Schneidwerk.
Als Spannungsversorgung dachte ich an 3S Lipos oder besser noch eine 12V Gel-Akkus.
Bei den Sensoren macht die Anordnung deines Bubble Roboters Sinn.
Er soll einfach nur nach dem Chaotischenprinzip den Rasen bearbeiten.
Jetzt kommen meine Probleme… ich bin Mechaniker, die technische Umsetzung ist absolut kein Problem aber ich bekomme die Programmierung nicht in meinen Kopf.
Könntest du mir da helfen?
Und ist für dich die Anordnung der Bauteile plausibel?
Beste Grüße
Micha
Hallo,
ich möchte mir auch einen Arduino Roboter zulegen. Ich habe jetzt eine Frage ob man an diesen Roboter eine Fernbedinung anschliesen kann, da ich nicht nur im Autopilot sondern auch mal selber am steuer durch das Haus fahren will.
Danke im Voraus!
Hi! Ich finde das Projekt super und wollte es mal selber versuchen.
Meine Frage hier nun ist ob es wirklich genau die selbern Bauteile sein müssen? Denn ich bekomme nicht den selben Servo Motor also den RS-2 und auch nicht den selben IR-Sensor also den 2Y0A21 F 2Y.
Statdessen den Standard-Servo BMS-410C Analog und 2Y0A21 F 9Y.
Beide sind aber von Modelcraft und Sharp
Wie wird der Arduino denn gesteuert ich habe es in dem Inhalt auf der Seite nicht gelesen. WIrd er über eine Fernsteuerung oder über eine App am Smartphone gesteuert
mfg
Gibt es eine Programmierung, wo ich anstelle des IR-Sensors ein Ultraschallsensor verbauen kan HC-SR04 ???
Den IR-Sensor will ich aber als Absturzdetektor(vorne) behalten.
Hat da jemand ein passendes Sketch??
Gruß Mario
Hi eine Frage,
Wollte diesen Roboter für die Schule bauen. Das Thema wäre Autonomie. Zählt dieser Roboter schon zu autonom ?
Hi,
eine Frage, macht es was aus wenn ich statt der L298 eine L298N oder L298P Platine nehme?
Hallo der Roboter funktioniert soweit sehr gut, allerdings möchte ich wenn der IR Sensor ein Hindernis erkennt erst mal ein paar CM zurückfahren dann in die freie Richtung drehen.
Gibt es hierzu schon einen Code ?
Hallo ihr Tüfler,
ich habe ein Problem!
mein Anrieb B lauft nicht!
in Zeile 107 steht ein ! vor dem Direction ist das so in Ordnung?
digitalWrite( DIR_A, Direction ); // Motor A in die „RICHTUNG“ drehen
digitalWrite( DIR_B, !Direction ); // Motor B in entgegen der „RICHTUNG“ drehen
habe keine Lösung, bin fuer jeden Typ dankbar.