2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Mecanum Robot - Projekt koji sam želio izgraditi otkad sam ga vidio na Dejanovom blogu mehatronike gread: howtomechatronics.com
Dejan je zaista napravio dobar posao pokrivajući sve aspekte od hardvera, 3D ispisa, elektronike, koda i aplikacije za Android (MIT -ov izumitelj aplikacija)
Ovo je sjajan nadgradni projekt koji osvježava sve vještine proizvođača.
Imao sam nekoliko promjena na projektima
Nisam htio koristiti PCB po mjeri koji je on koristio, ali stari GRBL štit koji sam imao kod kuće.
Htio sam koristiti BlueTooth
Tako:
Pribor
Arduino Uno + GRBL štit
Koračni motori
HC-06 BlueTooth modul
12V Lipo baterija
Korak 1: Hardver
Ispisali su kotače i sastavili ih kao ovdje:
Priključena su 4 koračna motora na šasiju (u mom slučaju nekorištena ladica okrenuta prema dolje)
Provucite kabele do vrha robota.
Korak 2: Elektronika
Koristio sam svoj HC-06 BT modul, Najteže je bilo postaviti GRBL štit na 4 koračna motora jer za to nema dobrog vodiča, Postoji potreba za postavljanjem skakača kao što se može vidjeti na priloženoj slici, kako bi izlaz "Alat" štitnika također upravljao koračnim motorom. također je potrebno staviti kratkospojnik "Omogući"
ožičenje 4 stepenika i to je to.
Također sam napajao iz 12V baterija - dvije strane - jedna za Arduino i jedna za GRBl Shield
Korak 3: Arduino kod
/* === Arduino Mecanum Wheel Robot === Upravljanje pametnim telefonom putem Bluetootha, Dejan, www. HowToMechatronics.com Knjižnice: RF24, www. HowToMechatronics.com AccelStepper by Mike McCauley: www. HowToMechatronics.com
*//* 2019-11-12 Gilad Meller (https://www.keerbot.com - izmijenite kôd za rad sa štitnikom motora GRBL arduino Koračni motori u štitu su mapirani kao (korak/smjer): 2/5 3 /6 4/7 12/13 pomoću A4988 upravljačkog programa 12V
Dejanov kôd koristi SoftwareSerial, a moj će koristiti standardne RX, TX pinove (0, 1) Arduino Uno Napomena: Obavezno oporavite RX TX pinove prilikom nadogradnje skice na arduino ili prijenos neće uspjeti.
*/ #include
// Definirajte koračne motore i igle koje će koristiti AccelStepper LeftBackWheel (1, 2, 5); // (Tip: 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; // za dolazne serijske podatke int wheelSpeed = 100;
void setup () {Serial.begin (9600); // otvara serijski port, postavlja brzinu prijenosa podataka na 9600 bps // Postavlja početne početne vrijednosti za stepere LeftFrontWheel.setMaxSpeed (600); LeftBackWheel.setMaxSpeed (600); RightFrontWheel.setMaxSpeed (600); RightBackWheel.setMaxSpeed (600);
}
void loop () {if (Serial.available ()> 0) {// čitanje dolaznog bajta: incomingByte = Serial.read ();
c = dolazniByte; switch (c) {case 71: Serial.println ("Primio sam Rotate right W"); rotateRight (); pauza; slučaj 65: Serial.println ("Primio sam Zakreni lijevo Q"); rotateLeft (); pauza; slučaj 1: Serial.println ("Primio sam BK/LFT"); moveRightBackward (); pauza; slučaj 2: Serial.println ("primio sam BK"); moveBackward (); pauza; slučaj 3: Serial.println ("Primio sam BK/RT"); moveRightBackward (); pauza; slučaj 4: Serial.println ("primio sam LIJEVO"); moveSidewaysLeft ();
pauza; slučaj 5: Serial.println ("Primio sam STOP"); stopMoving (); pauza; slučaj 6: Serial.println ("Primio sam RT"); moveSidewaysRight (); pauza; slučaj 7: Serial.println ("Primio sam FWD/LFT"); moveLeftForward (); pauza; slučaj 8: Serial.println ("Primio sam FWD"); kreni naprijed(); pauza; slučaj 9: Serial.println ("Primio sam FWD/RT"); moveRightForward (); pauza; zadano: Serial.print ("Nije naredba"); Serial.println (dolazniByte, DEC); pauza; }} // 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); }
Korak 4: Appinventor
Nova aplikacija appinventor s različitim i jednostavnijim funkcijama (bez snimanja)
Molimo pošaljite poruku i ja vam šaljem - učitavanja ne uspijevaju.
Čuvaj se.