INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
Mecanum Robot - 'n Projek wat ek wou bou sedert ek dit op die Dejan's gread mechatronics blog gesien het: howtomechatronics.com
Dejan het regtig 'n goeie taak gedoen om al die aspekte van hardeware, 3D -drukwerk, elektronika, kode en 'n Android -app te dek (MIT se App -uitvinder)
Dit is 'n wonderlike projek wat al die vaardighede van 'n vervaardiger verfris.
Ek het min veranderinge aan die projekte aangebring
Ek wou nie die pasgemaakte PCB wat hy gebruik het nie, maar 'n ou GRBL -skild wat ek by die huis gehad het.
Ek wou BlueTooth gebruik
Dus:
Voorrade
Arduino Uno + GRBL -skild
Stapmotors
HC-06 BlueTooth-module
12V Lipo battery
Stap 1: Hardeware
Die wiele gedruk en aangebring soos hier:
4 stapmotors aan die onderstel gekoppel (in my geval 'n ongebruikte laai onderstebo)
Die kabels na die bokant van die robot gelei.
Stap 2: Elektronika
Ek het my HC-06 BT-module gebruik, Die moeilikste was om die GRBL -skild met vier trapmotore te laat werk, aangesien daar geen goeie gids daarvoor is nie, Daar is 'n behoefte om Jumpers te plaas, soos gesien kan word in die aangehegte foto, om die "Tool" -uitset van die skild te maak om ook 'n stapmotor te beheer. moet ook 'Enable' Jumper plaas
bedrading van die 4 steppers en dit is dit.
Ek het ook die krag voorsien van 12V batterye - twee stes - een vir die Arduino en een vir die GRBl -skild
Stap 3: Arduino -kode
/* === Arduino Mecanum Wheels Robot === Smartphone -beheer via Bluetooth deur Dejan, www. HowToMechatronics.com Libraries: RF24, www. HowToMechatronics.com AccelStepper deur Mike McCauley: www. HowToMechatronics.com
*** /6 4/7 12/13 met behulp van A4988 bestuurder 12V
Dejan se kode gebruik SoftwareSerial en myne gebruik die standaard RX, TX -penne (0, 1) van die Arduino Uno Nota: maak seker dat u die RX TX -penne weer oplaai as u die skets na die arduino oplaai, anders kan die oplaai misluk.
*/ #insluit
// Definieer die stepper motors en die penne wat AccelStepper LeftBackWheel (1, 2, 5) sal gebruik; // (Type: driver, STEP, DIR) - Stepper1 AccelStepper LeftFrontWheel (1, 3, 6); // Stepper2 AccelStepper RightBackWheel (1, 4, 7); // Stepper3 AccelStepper RightFrontWheel (1, 12, 13); // Stepper4
int incomingByte = 0, c; // vir inkomende seriële data int wheelSpeed = 100;
ongeldige opstelling () {Serial.begin (9600); // maak seriële poort oop, stel datatempo op 9600 bps // Stel aanvanklike saadwaardes vir die steppers LeftFrontWheel.setMaxSpeed (600); LeftBackWheel.setMaxSpeed (600); RightFrontWheel.setMaxSpeed (600); RightBackWheel.setMaxSpeed (600);
}
void loop () {if (Serial.available ()> 0) {// lees die inkomende byte: incomingByte = Serial.read ();
c = inkomendeByte; skakelaar (c) {saak 71: Serial.println ("Ek het Draai regs W" ontvang); rotateRight (); breek; saak 65: Serial.println ("Ek het links draai Q"); rotateLeft (); breek; saak 1: Serial.println ("Ek het BK/LFT ontvang"); moveRightBackward (); breek; saak 2: Serial.println ("Ek het BK ontvang"); moveBackward (); breek; saak 3: Serial.println ("Ek het BK/RT ontvang"); moveRightBackward (); breek; saak 4: Serial.println ("Ek het LEFT ontvang"); moveSidewaysLeft ();
breek; saak 5: Serial.println ("Ek het STOP ontvang"); stopMoving (); breek; saak 6: Serial.println ("Ek het RT ontvang"); moveSidewaysRight (); breek; saak 7: Serial.println ("Ek het FWD/LFT ontvang"); moveLeftForward (); breek; saak 8: Serial.println ("Ek het FWD ontvang"); beweeg voorentoe(); breek; saak 9: Serial.println ("Ek het FWD/RT ontvang"); moveRightForward (); breek; standaard: Serial.print ("Nie 'n opdrag nie"); Serial.println (inkomendeByte, DEC); breek; }}} // moveBackward (); 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); } ongeldig moveBackward () {LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed (-wheelSpeed); RightFrontWheel.setSpeed (-wheelSpeed); RightBackWheel.setSpeed (-wheelSpeed); } void moveSidewaysRight () {LeftFrontWheel.setSpeed (wheelSpeed); LeftBackWheel.setSpeed (-wheelSpeed); RightFrontWheel.setSpeed (-wheelSpeed); RightBackWheel.setSpeed (wheelSpeed); } void moveSidewaysLeft () {LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed (wheelSpeed); RightFrontWheel.setSpeed (wheelSpeed); RightBackWheel.setSpeed (-wheelSpeed); } leegte rotateLeft () {LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed (-wheelSpeed); RightFrontWheel.setSpeed (wheelSpeed); RightBackWheel.setSpeed (wheelSpeed); } leegte rotateRight () {LeftFrontWheel.setSpeed (wheelSpeed); LeftBackWheel.setSpeed (wheelSpeed); RightFrontWheel.setSpeed (-wheelSpeed); RightBackWheel.setSpeed (-wheelSpeed); } void moveRightForward () {LeftFrontWheel.setSpeed (wheelSpeed); LeftBackWheel.setSpeed (0); RightFrontWheel.setSpeed (0); RightBackWheel.setSpeed (wheelSpeed); } ongeldig moveRightBackward () {LeftFrontWheel.setSpeed (0); LeftBackWheel.setSpeed (-wheelSpeed); RightFrontWheel.setSpeed (-wheelSpeed); RightBackWheel.setSpeed (0); } void moveLeftForward () {LeftFrontWheel.setSpeed (0); LeftBackWheel.setSpeed (wheelSpeed); RightFrontWheel.setSpeed (wheelSpeed); RightBackWheel.setSpeed (0); } void moveLeftBackward () {LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed (0); RightFrontWheel.setSpeed (0); RightBackWheel.setSpeed (-wheelSpeed); } void stopMoving () {LeftFrontWheel.setSpeed (0); LeftBackWheel.setSpeed (0); RightFrontWheel.setSpeed (0); RightBackWheel.setSpeed (0); }
Stap 4: Appinventor
'N Nuwe app -uitvinder -app met 'n ander en eenvoudiger funksionaliteit (geen opnames)
Stuur asseblief boodskap en ek stuur vir u - die oplaai misluk.
Pas jou op.