Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
Mecanum Robot - Ein Projekt, das ich bauen wollte, seit ich es auf Dejans großem Mechatronik-Blog gesehen habe: howtomechatronics.com
Dejan hat wirklich gute Arbeit geleistet und alle Aspekte von Hardware, 3D-Druck, Elektronik, Code und einer Android-App abgedeckt (MIT-App-Erfinder)
Dies ist ein großartiges Overhoul-Projekt, das alle Fähigkeiten eines Herstellers auffrischt.
Ich musste einige Änderungen an den Projekten vornehmen
Ich wollte nicht die von ihm verwendete maßgeschneiderte Platine verwenden, sondern ein altes GRBL-Schild, das ich zu Hause hatte.
Ich wollte BlueTooth verwenden
So:
Lieferungen
Arduino Uno + GRBL-Schild
Schrittmotoren
HC-06 BlueTooth-Modul
12V Lipo-Batterie
Schritt 1: Hardware
Habe die Räder ausgedruckt und wie hier zusammengebaut:
4 Schrittmotoren mit dem Chassis verbunden (in meinem Fall eine unbenutzte Schublade auf den Kopf gestellt)
Verlegen Sie die Kabel zur Oberseite des Roboters.
Schritt 2: Elektronik
Ich habe mein HC-06 BT-Modul verwendet, Der schwierigste Teil war, den GRBL-Schild so einzustellen, dass er mit 4 Schrittmotoren funktioniert, da es dafür keine gute Anleitung gibt.
Es müssen Jumper gesetzt werden, wie im beigefügten Bild zu sehen ist, damit der "Tool" -Ausgang des Schilds auch einen Schrittmotor steuert. müssen auch "Enable" Jumper setzen
Verkabelung der 4 Stepper und das wars.
Ich habe auch den Strom von 12V-Batterien geliefert - zwei stes - eine für das Arduino und eine für das GRBl Shield
Schritt 3: Arduino-Code
/* === Arduino Mecanum Wheels Robot === Smartphone-Steuerung über Bluetooth von Dejan, www. HowToMechatronics.com Bibliotheken: RF24, www. HowToMechatronics.com AccelStepper von Mike McCauley: www. HowToMechatronics.com
*/ /* 2019-11-12 Gilad Meller (https://www.keerbot.com - Ändern Sie den Code, um mit dem GRBL-Arduino-Motorschild zu arbeiten Schrittmotoren im Schild sind abgebildet als (Schritt / Richtung): 2/5 3 /6 4/7 12/13 mit A4988 Treiber 12V
Dejans Code verwendet SoftwareSerial und meiner verwendet die Standard-RX, TX-Pins (0, 1) des Arduino Uno Hinweis: Stellen Sie sicher, dass Sie die RX-TX-Pins rempve, wenn Sie die Skizze auf das Arduino hochladen, sonst schlägt der Upload fehl.
*/ #enthalten
// Definieren Sie die Schrittmotoren und die Pins, die AccelStepper LeftBackWheel (1, 2, 5) verwenden; // (Typ:Treiber, STEP, DIR) - Stepper1 AccelStepper LeftFrontWheel(1, 3, 6); // Stepper2 AccelStepper RightBackWheel(1, 4, 7); // Stepper3 AccelStepper RightFrontWheel (1, 12, 13); // Stepper4
int eingehendesByte = 0, c; // für eingehende serielle Daten Int WheelSpeed = 100;
Void setup () { Serial.begin (9600); // öffnet den seriellen Port, setzt die Datenrate auf 9600 bps // Setzt die anfänglichen Seed-Werte für die Stepper LeftFrontWheel.setMaxSpeed(600); LeftBackWheel.setMaxSpeed(600); RightFrontWheel.setMaxSpeed(600); RightBackWheel.setMaxSpeed(600);
}
Void loop () { if (Serial.available () > 0) {// das eingehende Byte lesen: eingehendeByte = Serial.read ();
c = eingehendesByte; Schalter (c) {Fall 71: Serial.println ("Ich habe Rotate Right W erhalten"); nach rechts drehen(); brechen; Fall 65: Serial.println ("Ich habe Rotate left Q erhalten"); Nach links drehen(); brechen; Fall 1: Serial.println ("Ich habe BK/LFT erhalten"); moveRightBackward(); brechen; Fall 2: Serial.println ("Ich habe BK erhalten"); rückwärts bewegen(); brechen; Fall 3: Serial.println ("Ich habe BK/RT erhalten"); moveRightBackward(); brechen; Fall 4: Serial.println ("Ich habe LINKS erhalten"); moveSidewaysLeft();
brechen; Fall 5: Serial.println ("Ich habe STOP erhalten"); nicht bewegen(); brechen; Fall 6: Serial.println ("Ich habe RT erhalten"); moveSidewaysRight(); brechen; Fall 7: Serial.println ("Ich habe FWD/LFT erhalten"); moveLeftForward(); brechen; Fall 8: Serial.println ("Ich habe FWD erhalten"); moveForward(); brechen; Fall 9: Serial.println ("Ich habe FWD/RT erhalten"); moveRightForward(); brechen; Standard: Serial.print ("Kein Befehl"); Serial.println (incomingByte, DEC); brechen; } } //rückwärts bewegen(); moveRobot();
}
Void moveRobot () { LeftBackWheel.runSpeed (); LeftFrontWheel.runSpeed(); RightFrontWheel.runSpeed(); RightBackWheel.runSpeed(); }
Void moveForward () { LeftFrontWheel.setSpeed (wheelSpeed); LeftBackWheel.setSpeed(wheelSpeed); RightFrontWheel.setSpeed(wheelSpeed); RightBackWheel.setSpeed(wheelSpeed); aufrechtzuerhalten. Void moveBackward () { LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed(-wheelSpeed); RightFrontWheel.setSpeed(-wheelSpeed); RightBackWheel.setSpeed(-wheelSpeed); aufrechtzuerhalten. Void moveSidewaysRight () { LeftFrontWheel.setSpeed (wheelSpeed); LeftBackWheel.setSpeed(-wheelSpeed); RightFrontWheel.setSpeed(-wheelSpeed); RightBackWheel.setSpeed(wheelSpeed); aufrechtzuerhalten. Void moveSidewaysLeft () { LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed(wheelSpeed); RightFrontWheel.setSpeed(wheelSpeed); RightBackWheel.setSpeed(-wheelSpeed); aufrechtzuerhalten. Void rotationLeft () { LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed(-wheelSpeed); RightFrontWheel.setSpeed(wheelSpeed); RightBackWheel.setSpeed(wheelSpeed); aufrechtzuerhalten. Void rotationRight () { LeftFrontWheel.setSpeed (wheelSpeed); LeftBackWheel.setSpeed(wheelSpeed); RightFrontWheel.setSpeed(-wheelSpeed); RightBackWheel.setSpeed(-wheelSpeed); aufrechtzuerhalten. Void moveRightForward () { LeftFrontWheel.setSpeed (wheelSpeed); LeftBackWheel.setSpeed(0); RightFrontWheel.setSpeed(0); RightBackWheel.setSpeed(wheelSpeed); aufrechtzuerhalten. Void moveRightBackward () { LeftFrontWheel.setSpeed (0); LeftBackWheel.setSpeed(-wheelSpeed); RightFrontWheel.setSpeed(-wheelSpeed); RightBackWheel.setSpeed(0); aufrechtzuerhalten. Void moveLeftForward () { LeftFrontWheel.setSpeed (0); LeftBackWheel.setSpeed(wheelSpeed); RightFrontWheel.setSpeed(wheelSpeed); RightBackWheel.setSpeed(0); aufrechtzuerhalten. Void moveLeftBackward () { LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed(0); RightFrontWheel.setSpeed(0); RightBackWheel.setSpeed(-wheelSpeed); aufrechtzuerhalten. Void stopMoving () { LeftFrontWheel.setSpeed (0); LeftBackWheel.setSpeed(0); RightFrontWheel.setSpeed(0); RightBackWheel.setSpeed(0); }
Schritt 4: Appinventor
Eine neue Appinventor-App mit anderer und einfacherer Funktionalität (keine Aufzeichnungen)
Bitte senden Sie eine Nachricht und ich sende Ihnen - der Upload schlägt fehl.
Aufpassen.