2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Mecanum Robot - Projekt, ktorý som chcel vybudovať odkedy som ho videl na blogu Dejan's gread mechatronics: howtomechatronics.com
Dejan odviedol dobrú prácu pokrývajúcu všetky aspekty od hardvéru, 3D tlače, elektroniky, kódu a aplikácie pre Android (vynálezca aplikácie MIT)
Jedná sa o rozsiahly projekt, ktorý obnovuje všetky schopnosti tvorcu.
Na projektoch som urobil niekoľko zmien
Nechcel som použiť PCB na mieru, ktorú použil, ale starý štít GRBL, ktorý som mal doma.
Chcel som použiť BlueTooth
Takže:
Zásoby
Štít Arduino Uno + GRBL
Krokové motory
Modul HC-06 BlueTooth
12V Lipo batéria
Krok 1: Hardvér
Vytlačte kolesá a zostavte ich ako tu:
K podvozku sú pripojené 4 krokové motory (v mojom prípade nepoužívaná zásuvka hore dole)
Veďte káble k hornej časti robota.
Krok 2: Elektronika
Použil som svoj modul HC-06 BT, Najťažšie bolo nastaviť štít GRBL na prácu so 4 krokovými motormi, pretože na to neexistuje dobrý sprievodca.
Je potrebné vložiť prepojky, ako je vidieť na priloženom obrázku, aby výstup štítu „Nástroj“mohol ovládať aj krokový motor. Tiež je potrebné dať prepojku "Povoliť"
zapojenie 4 stepperov a je to.
Napájal som tiež z batérií 12V - dva stupne - jeden pre Arduino a jeden pre GRBl Shield
Krok 3: Arduino kód
/* === Arduino Mecanum Wheels Robot === Ovládanie smartfónu cez Bluetooth od Dejan, www. HowToMechatronics.com Knižnice: RF24, www. HowToMechatronics.com AccelStepper od Mike McCauley: www. HowToMechatronics.com
*//* 2019-11-12 Gilad Meller (https://www.keerbot.com - upravte kód tak, aby fungoval so štítom motora GRBL arduino Krokové motory v štíte sú mapované ako (krok/smer): 2/5 3 /6 4/7 12/13 pomocou ovládača A4988 12V
Dejanov kód používa SoftwareSerial a môj bude používať štandardné piny RX, TX (0, 1) Arduino Uno Poznámka: Uistite sa, že ste odpájali piny RX TX, keď aktualizujete náčrt na arduino alebo sa načítanie nepodarí.
*/ #include
// Definujte krokové motory a kolíky, ktoré budú používať AccelStepper LeftBackWheel (1, 2, 5); // (Typ: ovládač, 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; // pre prichádzajúce sériové údaje int wheelSpeed = 100;
void setup () {Serial.begin (9600); // otvára sériový port, nastavuje rýchlosť prenosu dát na 9600 bps // Nastavuje počiatočné hodnoty počiatočných hodnôt pre steppery LeftFrontWheel.setMaxSpeed (600); LeftBackWheel.setMaxSpeed (600); RightFrontWheel.setMaxSpeed (600); RightBackWheel.setMaxSpeed (600);
}
void loop () {if (Serial.available ()> 0) {// prečítajte prichádzajúci bajt: incomingByte = Serial.read ();
c = incomingByte; prepínač (c) {prípad 71: Serial.println ("Prijal som Otočiť doprava W"); rotateRight (); prestávka; prípad 65: Serial.println („Dostal som Otočiť doľava Q“); otočiť doľava(); prestávka; prípad 1: Serial.println („Prijal som BK/LFT“); moveRightBackward (); prestávka; prípad 2: Serial.println („Prijal som BK“); moveBackward (); prestávka; prípad 3: Serial.println („Prijal som BK/RT“); moveRightBackward (); prestávka; prípad 4: Serial.println („Prijal som VĽAVO“); moveSidewaysLeft ();
prestávka; prípad 5: Serial.println („Dostal som STOP“); stopMoving (); prestávka; prípad 6: Serial.println („Prijal som RT“); moveSidewaysRight (); prestávka; prípad 7: Serial.println („Prijal som FWD/LFT“); moveLeftForward (); prestávka; prípad 8: Serial.println („Dostal som FWD“); pohnúť sa vpred(); prestávka; prípad 9: Serial.println („Dostal som FWD/RT“); moveRightForward (); prestávka; predvolené: Serial.print ("Nie je to príkaz"); Serial.println (incomingByte, DEC); prestávka; }} // 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 (speedSpeed); } 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); } neplatný ťahLeftForward () {LeftFrontWheel.setSpeed (0); LeftBackWheel.setSpeed (wheelSpeed); RightFrontWheel.setSpeed (wheelSpeed); RightBackWheel.setSpeed (0); } neplatný ťahLeftBackward () {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); }
Krok 4: Appinventor
Nová aplikácia appinventor s inou a jednoduchšou funkčnosťou (žiadne nahrávky)
Pošlite prosím správu a ja vám ju pošlem - nahrávanie zlyhá.
Opatruj sa