Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
„Mecanum Robot“- projektas, kurį norėjau sukurti nuo tada, kai pamačiau jį Dejano greado mechatronikos tinklaraštyje: howtomechatronics.com
Dejanas tikrai padarė gerą darbą, apimdamas visus techninės įrangos, 3D spausdinimo, elektronikos, kodo ir „Android“programos aspektus (MIT programų išradėjas)
Tai puikus kapitalinio remonto projektas, atnaujinantis visus kūrėjo įgūdžius.
Turėjau nedaug pakeitimų projektuose
Nenorėjau naudoti pagal jo užsakymą pagamintos PCB, bet namuose turėjau seną GRBL skydą.
Norėjau naudoti „BlueTooth“
Taigi:
Prekės
„Arduino Uno“+ „GRBL Shield“
Žingsniniai varikliai
„HC-06 BlueTooth“modulis
12V Lipo baterija
1 žingsnis: Aparatūra
Atspausdino ratus ir surinko juos, kaip čia:
Prie korpuso prijungti 4 žingsniniai varikliai (mano atveju nenaudojamas stalčius aukštyn žemyn)
Kabeliai nukreipti į roboto viršų.
2 žingsnis: Elektronika
Aš naudoju savo HC-06 BT modulį, Sunkiausia buvo nustatyti GRBL skydą, kad jis veiktų su 4 žingsniniais varikliais, nes tam nėra gero vadovo, Būtina įdėti džemperius, kaip matyti iš pridedamo paveikslėlio, kad skydo „įrankis“išvestis taip pat valdytų žingsninį variklį. taip pat reikia įdėti jungiklį „Įgalinti“
prijungti 4 žingsnius ir viskas.
Aš taip pat tiekiau maitinimą iš 12 V baterijų - dviejų stalų - vieną „Arduino“ir kitą „GRBl Shield“
3 žingsnis: „Arduino“kodas
/* === „Arduino Mecanum Wheels Robot“=== „Smartphone“valdymas per „Bluetooth“„Dejan“, www. HowToMechatronics.com Bibliotekos: RF24, www. HowToMechatronics.com Mike McCauley „AccelStepper“: www. HowToMechatronics.com
*//* 2019-12-12 Giladas Melleris (https://www.keerbot.com - modifikuokite kodą, kad jis veiktų su GRBL arduino variklio skydu. Skydo žingsniniai varikliai pažymėti taip (žingsnis/kryptis): 2/5 3 /6 4/7 12/13 naudojant A4988 tvarkyklę 12V
Dejano kodas naudoja „SoftwareSerial“, o mano - standartinius „Arduino Uno“RX, TX kaiščius (0, 1).
*/ #įtraukti
// Apibrėžkite žingsninius variklius ir kaiščius, kurie naudos „AccelStepper LeftBackWheel“(1, 2, 5); // (Tipas: vairuotojas, STEP, DIR) - Stepper1 AccelStepper LeftFrontWheel (1, 3, 6); // Stepper2 AccelStepper RightBackWheel (1, 4, 7); // Stepper3 AccelStepper RightFrontWheel (1, 12, 13); // Stepper4
int gaunamas baitas = 0, c; // gaunamiems serijiniams duomenims int wheelSpeed = 100;
void setup () {Serial.begin (9600); // atidaro nuoseklųjį prievadą, nustato duomenų perdavimo spartą iki 9600 bps // Nustatykite pradines žingsnių reikšmes LeftFrontWheel.setMaxSpeed (600); LeftBackWheel.setMaxSpeed (600); RightFrontWheel.setMaxSpeed (600); RightBackWheel.setMaxSpeed (600);
}
void loop () {if (Serial.available ()> 0) {// skaityti gaunamą baitą: inputingByte = Serial.read ();
c = gaunamas baitas; jungiklis (c) {71 atvejis: Serial.println („Gavau pasukti į dešinę W“); rotateRight (); pertrauka; 65 atvejis: Serial.println („Gavau pasukti kairę Q“); rotateLeft (); pertrauka; 1 atvejis: Serial.println („Gavau BK/LFT“); moveRightBackward (); pertrauka; 2 atvejis: Serial.println („Gavau BK“); Judėk atgal(); pertrauka; 3 atvejis: Serial.println („Gavau BK/RT“); moveRightBackward (); pertrauka; 4 atvejis: Serial.println („Gavau LEFT“); moveSidewaysLeft ();
pertrauka; 5 atvejis: Serial.println („Gavau STOP“); stopMoving (); pertrauka; 6 atvejis: Serial.println („Gavau RT“); moveSidewaysRight (); pertrauka; 7 atvejis: Serial.println („Gavau FWD/LFT“); moveLeftForward (); pertrauka; 8 atvejis: Serial.println („Gavau FWD“); judėti į priekį(); pertrauka; 9 atvejis: Serial.println („Gavau FWD/RT“); moveRightForward (); pertrauka; numatytasis: Serial.print ("Ne komanda"); Serial.println (gaunamas baitas, DEC); pertrauka; } } //Judėk atgal(); 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 žingsnis: „Appinventor“
Nauja „Appinventor“programa su skirtingomis ir paprastesnėmis funkcijomis (be įrašų)
Prašome atsiųsti žinutę, o aš jums - įkelti nepavyksta.
Rūpinkitės.