Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
Mecanum Robot - Projekt, ki sem ga želel zgraditi, odkar sem ga videl na Dejanovem blogu mehatronike poželenih: howtomechatronics.com
Dejan je res dobro opravil vse vidike strojne opreme, 3D tiskanja, elektronike, kode in aplikacije za Android (MIT -ov izumitelj aplikacij)
To je odličen nadgradni projekt, ki osveži vse sposobnosti izdelovalca.
Pri projektih sem imel nekaj sprememb
Nisem hotel uporabiti PCB po meri, ki ga je uporabil, ampak star ščit GRBL, ki sem ga imel doma.
Hotel sem uporabiti BlueTooth
Torej:
Zaloge
Arduino Uno + GRBL ščit
Koračni motorji
Modul HC-06 BlueTooth
12V Lipo baterija
1. korak: Strojna oprema
Kolesa so natisnili in jih sestavili, kot je prikazano tukaj:
Priključeni 4 koračni motorji na ohišje (v mojem primeru neuporabljen predal s stranjo navzdol)
Kable napeljite na vrh robota.
2. korak: Elektronika
Uporabil sem svoj HC-06 BT modul, Najtežje je bilo nastaviti ščitnik GRBL za delo s štirimi koračnimi motorji, saj za to ni dobrega vodila, Obstaja potreba po namestitvi skakalcev, kot je prikazano na priloženi sliki, da bo izhod "Orodje" ščita tudi za krmiljenje koračnega motorja. Prav tako morate postaviti mostiček "Omogoči"
ožičenje 4 korakov in to je to.
Napajal sem tudi iz 12V baterij - dve strani - eno za Arduino in eno za GRBl Shield
3. korak: Arduino koda
/* === Arduino Mecanum Wheels Robot === Upravljanje pametnega telefona prek Bluetootha Dejan, www. HowToMechatronics.com Knjižnice: RF24, www. HowToMechatronics.com AccelStepper avtorja Mike McCauley: www. HowToMechatronics.com
*//* 2019-11-12 Gilad Meller (https://www.keerbot.com - spremenite kodo za delo s ščitnikom motorja GRBL arduino Koračni motorji v ščitu so preslikani kot (korak/smer): 2/5 3 /6 4/7 12/13 z uporabo gonilnika A4988 12V
Dejanova koda uporablja programsko opremo SoftwareSerial, moja pa bo uporabljala standardne zatiče RX, TX (0, 1) Arduino Uno Opomba: Poskrbite, da boste zatiči RX TX pri nadgradnji skice na arduino ali nalaganje ne uspeli.
*/ #vključi
// Določimo koračne motorje in zatiče, ki bodo uporabljali AccelStepper LeftBackWheel (1, 2, 5); // (Vrsta: voznik, 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; // za dohodne serijske podatke int wheelSpeed = 100;
void setup () {Serial.begin (9600); // odpre zaporedna vrata, nastavi hitrost prenosa podatkov na 9600 b/ s // Nastavi začetne vrednosti semena za koračnike LeftFrontWheel.setMaxSpeed (600); LeftBackWheel.setMaxSpeed (600); RightFrontWheel.setMaxSpeed (600); RightBackWheel.setMaxSpeed (600);
}
void loop () {if (Serial.available ()> 0) {// preberite dohodni bajt: incomingByte = Serial.read ();
c = dohodniByte; stikalo (c) {primer 71: Serial.println ("Prejel sem Zavrti desno W"); rotateRight (); zlom; primer 65: Serial.println ("Prejel sem Zavrti levo Q"); rotateLeft (); zlom; primer 1: Serial.println ("prejel sem BK/LFT"); moveRightBackward (); zlom; primer 2: Serial.println ("prejel sem BK"); moveBackward (); zlom; primer 3: Serial.println ("prejel sem BK/RT"); moveRightBackward (); zlom; primer 4: Serial.println ("prejel sem LEFT"); moveSidewaysLeft ();
zlom; primer 5: Serial.println ("Prejel sem STOP"); stopMoving (); zlom; primer 6: Serial.println ("prejel sem RT"); moveSidewaysRight (); zlom; primer 7: Serial.println ("prejel sem FWD/LFT"); moveLeftForward (); zlom; primer 8: Serial.println ("prejel sem FWD"); premikaj se naprej(); zlom; primer 9: Serial.println ("prejel sem FWD/RT"); moveRightForward (); zlom; privzeto: Serial.print ("Ni ukaz"); Serial.println (incomingByte, DEC); zlom; }} // 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); } 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); }
4. korak: Appinventor
Nova aplikacija appinventor z drugačno in enostavnejšo funkcijo (brez posnetkov)
Prosim, pošljite sporočilo in jaz vam pošljem - nalaganje ne uspe.
Poskrbite.