Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Mecanum Robot - Et prosjekt jeg ønsket å bygge helt siden jeg så det på Dejans gread mekatronikkblogg: howtomechatronics.com
Dejan gjorde virkelig en god jobb med å dekke alle aspektene fra maskinvare, 3D -utskrift, elektronikk, kode og en Android -app (MITs App -oppfinner)
Dette er et flott overhoul -prosjekt som oppdaterer alle ferdighetene til en maker.
Jeg hadde få endringer i prosjektene
Jeg ønsket ikke å bruke den skreddersydde PCB han brukte, men et gammelt GRBL -skjold jeg hadde hjemme.
Jeg ønsket å bruke BlueTooth
Så:
Rekvisita
Arduino Uno + GRBL Shield
Trinnmotorer
HC-06 BlueTooth-modul
12V Lipo batteri
Trinn 1: Maskinvare
Skrev ut hjulene og monterte dem som her:
Koblet 4 trinnmotorer til kabinettet (i mitt tilfelle en ubrukt skuff opp ned)
Førte kablene til toppen av roboten.
Trinn 2: Elektronikk
Jeg brukte min HC-06 BT-modul, Det vanskeligste var å sette GRBL -skjoldet til å fungere med 4 trinnmotorer siden det ikke er noen god guide for det, Det er et behov for å sette Jumpers som det kan sees på det vedlagte bildet, for å få "Tool" -utgangen til skjermen til også å styre en trinnmotor. må også sette "Enable" Jumper
tilkobling av de fire stepperne og det er det.
Jeg leverte også strøm fra 12V batterier - to ruter - en for Arduino og en for GRBl -skjoldet
Trinn 3: Arduino -kode
/* === Arduino Mecanum Wheels Robot === Smarttelefonkontroll via Bluetooth av Dejan, www. HowToMechatronics.com Libraries: RF24, www. HowToMechatronics.com AccelStepper av Mike McCauley: www. HowToMechatronics.com
*** /6 4/7 12/13 ved bruk av A4988 driver 12V
Dejans kode bruker SoftwareSerial, og min vil bruke standard RX, TX -pinner (0, 1) til Arduino Uno Merk: Sørg for å rempve RX TX -pinnene når du laster opp skisse til arduinoen, ellers vil opplastingen mislykkes.
*/ #include
// Definer stepper motorer og pins som vil bruke AccelStepper LeftBackWheel (1, 2, 5); // (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; // for innkommende serielle data int wheelSpeed = 100;
ugyldig oppsett () {Serial.begin (9600); // åpner seriell port, setter datahastigheten til 9600 bps // Angi innledende frøverdier for trinnene LeftFrontWheel.setMaxSpeed (600); LeftBackWheel.setMaxSpeed (600); RightFrontWheel.setMaxSpeed (600); RightBackWheel.setMaxSpeed (600);
}
void loop () {if (Serial.available ()> 0) {// read the incoming byte: incomingByte = Serial.read ();
c = incomingByte; switch (c) {case 71: Serial.println ("Jeg mottok Rotate right W"); roter til høyre(); gå i stykker; sak 65: Serial.println ("Jeg mottok Roter til venstre Q"); Rotér mot venstre(); gå i stykker; sak 1: Serial.println ("jeg mottok BK/LFT"); moveRightBackward (); gå i stykker; sak 2: Serial.println ("jeg mottok BK"); Flytt tilbake(); gå i stykker; sak 3: Serial.println ("jeg mottok BK/RT"); moveRightBackward (); gå i stykker; sak 4: Serial.println ("Jeg mottok VENSTRE"); moveSidewaysLeft ();
gå i stykker; sak 5: Serial.println ("Jeg mottok STOPP"); stopMoving (); gå i stykker; sak 6: Serial.println ("jeg mottok RT"); moveSidewaysRight (); gå i stykker; sak 7: Serial.println ("Jeg mottok FWD/LFT"); moveLeftForward (); gå i stykker; sak 8: Serial.println ("Jeg mottok FWD"); gå fremover(); gå i stykker; sak 9: Serial.println ("Jeg mottok FWD/RT"); moveRightForward (); gå i stykker; standard: Serial.print ("Ikke en kommando"); Serial.println (incomingByte, DEC); gå i stykker; } } //Flytt tilbake(); 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); } void 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); } void rotateLeft () {LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed (-wheelSpeed); RightFrontWheel.setSpeed (wheelSpeed); RightBackWheel.setSpeed (wheelSpeed); } void 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); } void 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); }
Trinn 4: Appinventor
En ny appinventor -app med annerledes og enklere funksjonalitet (ingen opptak)
Send melding og jeg sender til deg - opplastningene mislykkes.
Ha det fint.