Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Mecanum Robot - Een project dat ik wilde bouwen sinds ik het zag op de geweldige mechatronics-blog van Dejan: howtomechatronics.com
Dejan heeft echt goed werk geleverd met alle aspecten van hardware, 3D-printen, elektronica, code en een Android-app (MIT's App-uitvinder)
Dit is een geweldig overhou-project dat alle vaardigheden van een maker opfrist.
Ik had weinig veranderingen te doen aan de projecten
Ik wilde niet de op maat gemaakte PCB gebruiken die hij gebruikte, maar een oud GRBL-schild dat ik thuis had.
Ik wilde BlueTooth gebruiken
Dus:
Benodigdheden
Arduino Uno + GRBL-schild
Stappenmotoren
HC-06 BlueTooth-module
12V Lipo-batterij
Stap 1: Hardware
De wielen geprint en geassembleerd zoals hier:
4 Stappenmotoren aangesloten op het chassis (in mijn geval een ongebruikte lade ondersteboven)
Leidde de kabels naar de bovenkant van de robot.
Stap 2: Elektronica
Ik heb mijn HC-06 BT-module gebruikt, Het moeilijkste was om het GRBL-schild aan het werk te zetten met 4 stappenmotoren, omdat daar geen goede handleiding voor is, Er moeten jumpers worden geplaatst, zoals te zien is op de bijgevoegde afbeelding, om de "Tool" -uitgang van het schild te maken om ook een stappenmotor te besturen. moet ook "Enable" Jumper zetten
bedrading van de 4 steppers en dat is het.
Ik leverde ook de stroom van 12V-batterijen - twee stes - een voor de Arduino en een voor het GRBl-schild
Stap 3: Arduino-code
/* === Arduino Mecanum Wheels Robot === Smartphone-besturing via Bluetooth door Dejan, www. HowToMechatronics.com Bibliotheken: RF24, www. HowToMechatronics.com AccelStepper door Mike McCauley: www. HowToMechatronics.com
*/ /* 2019-11-12 Gilad Meller (https://www.keerbot.com - wijzig de code om te werken met GRBL arduino-motorschild Stappenmotoren in het schild worden in kaart gebracht als (stap/richting): 2/5 3 /6 4/7 12/13 met A4988-driver 12V
Dejan's code gebruikt SoftwareSerial en de mijne gebruikt de standaard RX, TX-pinnen (0, 1) van de Arduino Uno. Opmerking: zorg ervoor dat u de RX TX-pinnen verwisselt wanneer u de schets naar de Arduino uploadt, anders mislukt het uploaden.
*/ #erbij betrekken
// Definieer de stappenmotoren en de pinnen die AccelStepper LeftBackWheel (1, 2, 5) zullen gebruiken; // (Type: driver, STEP, DIR) - Stepper1 AccelStepper LeftFrontWheel (1, 3, 6); // Stepper2 AccelStepper RightBackWheel (1, 4, 7); // Stepper3 AccelStepper Rechtsvoorwiel (1, 12, 13); // Stepper4
int inkomendeByte = 0, c; // voor inkomende seriële gegevens int wheelSpeed = 100;
void setup() { Serial.begin(9600); // opent seriële poort, stelt datasnelheid in op 9600 bps // Stel initiële seed-waarden in voor de steppers LeftFrontWheel.setMaxSpeed(600); LeftBackWheel.setMaxSpeed(600); Rechtervoorwiel.setMaxSpeed(600); RightBackWheel.setMaxSpeed(600);
}
void loop() {if (Serial.available() > 0) { // lees de inkomende byte: inkomendeByte = Serial.read();
c = inkomende Byte; switch (c) { case 71: Serial.println ("Ik heb ontvangen Draai naar rechts W"); draai naar rechts(); pauze; case 65: Serial.println ("Ik heb Rotate left Q ontvangen"); draai naar links(); pauze; geval 1: Serial.println ("Ik heb BK/LFT ontvangen "); moveRightBackward(); pauze; geval 2: Serial.println ("Ik heb BK ontvangen "); moveBackward(); pauze; geval 3: Serial.println ("Ik heb BK/RT ontvangen "); moveRightBackward(); pauze; geval 4: Serial.println ("Ik heb LINKS ontvangen "); moveSidewaysLeft();
pauze; geval 5: Serial.println ("Ik heb STOP ontvangen "); stop met bewegen(); pauze; geval 6: Serial.println ("Ik heb RT ontvangen "); moveSidewaysRight(); pauze; geval 7: Serial.println ("Ik heb FWD/LFT ontvangen "); moveLeftForward(); pauze; geval 8: Serial.println ("Ik heb FWD ontvangen "); moveForward(); pauze; geval 9: Serial.println ("Ik heb FWD/RT ontvangen "); moveRightForward(); pauze; standaard: Serial.print("Geen opdracht "); Serial.println (incomingByte, DEC); pauze; } } //moveBackward(); moveRobot();
}
void moveRobot() { LeftBackWheel.runSpeed(); LeftFrontWheel.runSpeed(); Rechtsvoorwiel.runSpeed(); RightBackWheel.runSpeed(); }
void moveForward() { LeftFrontWheel.setSpeed(wheelSpeed); LeftBackWheel.setSpeed (wheelSpeed); RechtsVoorwiel.setSpeed (wielSpeed); RightBackWheel.setSpeed (wielSpeed); } void moveBackward() { LeftFrontWheel.setSpeed(-wheelSpeed); LeftBackWheel.setSpeed(-wheelSpeed); RechtsVoorwiel.setSpeed(-wheelSpeed); RightBackWheel.setSpeed(-wheelSpeed); } void moveSidewaysRight() { LeftFrontWheel.setSpeed(wheelSpeed); LeftBackWheel.setSpeed(-wheelSpeed); RechtsVoorwiel.setSpeed(-wheelSpeed); RightBackWheel.setSpeed (wielSpeed); } void moveSidewaysLeft() { LeftFrontWheel.setSpeed(-wheelSpeed); LeftBackWheel.setSpeed (wheelSpeed); RechtsVoorwiel.setSpeed (wielSpeed); RightBackWheel.setSpeed(-wheelSpeed); } void roterendeLeft() { LeftFrontWheel.setSpeed(-wheelSpeed); LeftBackWheel.setSpeed(-wheelSpeed); RechtsVoorwiel.setSpeed (wielSpeed); RightBackWheel.setSpeed (wielSpeed); } void roterendeRight() { LeftFrontWheel.setSpeed(wheelSpeed); LeftBackWheel.setSpeed (wheelSpeed); RechtsVoorwiel.setSpeed(-wheelSpeed); RightBackWheel.setSpeed(-wheelSpeed); } void moveRightForward() { LeftFrontWheel.setSpeed(wheelSpeed); LeftBackWheel.setSpeed(0); RechtsVoorwiel.setSpeed(0); RightBackWheel.setSpeed (wielSpeed); } void moveRightBackward() { LeftFrontWheel.setSpeed(0); LeftBackWheel.setSpeed(-wheelSpeed); RechtsVoorwiel.setSpeed(-wheelSpeed); RightBackWheel.setSpeed(0); } void moveLeftForward() { LeftFrontWheel.setSpeed(0); LeftBackWheel.setSpeed (wheelSpeed); RechtsVoorwiel.setSpeed (wielSpeed); RightBackWheel.setSpeed(0); } void moveLeftBackward() { LeftFrontWheel.setSpeed(-wheelSpeed); LeftBackWheel.setSpeed(0); RechtsVoorwiel.setSpeed(0); RightBackWheel.setSpeed(-wheelSpeed); } void stopMoving() { LeftFrontWheel.setSpeed(0); LeftBackWheel.setSpeed(0); RechtsVoorwiel.setSpeed(0); RightBackWheel.setSpeed(0); }
Stap 4: Appinventor
Een nieuwe appinventor-app met andere en eenvoudigere functionaliteit (geen opnames)
Stuur alstublieft een bericht en ik stuur het naar u - het uploaden mislukt.
Wees voorzichtig.