2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
Mecanum Robot - Un proiect pe care am vrut să îl construiesc de când l-am văzut pe blogul de mecatronică al lui Dejan: howtomechatronics.com
Dejan a făcut cu adevărat o treabă bună acoperind toate aspectele de la hardware, imprimare 3D, electronică, cod și o aplicație pentru Android (inventatorul aplicației MIT)
Acesta este un mare proiect de revizie care reîmprospătează toate abilitățile unui producător.
Am avut puține schimbări de făcut la proiecte
Nu am vrut să folosesc PCB-ul personalizat pe care l-a folosit, ci un scut vechi GRBL pe care îl aveam acasă.
Am vrut să folosesc BlueTooth
Asa de:
Provizii
Arduino Uno + GRBL Shield
Motoare pas cu pas
Modulul HC-06 BlueTooth
Baterie Lipo de 12V
Pasul 1: Hardware
Am tipărit roțile și le-am asamblat ca aici:
4 motoare pas cu pas conectate la șasiu (în cazul meu un sertar neutilizat cu fața în jos)
Direcționat cablurile către partea de sus a robotului.
Pasul 2: Electronică
Mi-am folosit modulul HC-06 BT, Cel mai greu a fost să setați scutul GRBL să funcționeze cu 4 motoare Stepper, deoarece nu există un ghid bun pentru asta, Este nevoie să puneți Jumpers așa cum se poate vedea în imaginea atașată, pentru a face ieșirea "Instrument" a scutului pentru a controla și un motor pas cu pas. De asemenea, trebuie să puneți „Enable” Jumper
cablarea celor 4 trepte și asta este.
De asemenea, am furnizat energie de la baterii de 12V - două stele - una pentru Arduino și una pentru GRBl Shield
Pasul 3: Cod Arduino
/ * === Robot Arduino Mecanum Wheels === Controlul smartphone-ului prin Bluetooth de Dejan, www. HowToMechatronics.com Biblioteci: RF24, www. HowToMechatronics.com AccelStepper de Mike McCauley: www. HowToMechatronics.com
* / / * 2019-11-12 Gilad Meller (https://www.keerbot.com - modificați codul pentru a funcționa cu ecranul motorului arduino GRBL Motoarele pas cu pas în ecran sunt mapate ca (pas / direcție): 2/5 3 / 6 4/7 12/13 folosind driverul A4988 12V
Codul lui Dejan folosește SoftwareSerial, iar al meu va folosi pinii standard RX, TX (0, 1) ai Arduino Uno Notă: Asigurați-vă că remontați pinii RX TX atunci când actualizați schița pe arduino sau încărcarea va eșua.
*/ #include
// Definiți motoarele pas cu pas și pinii care vor folosi 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; // pentru datele seriale primite int wheelSpeed = 100;
void setup () {Serial.begin (9600); // deschide portul serial, setează rata de date la 9600 bps // Setați valorile inițiale ale semințelor pentru steppers LeftFrontWheel.setMaxSpeed (600); LeftBackWheel.setMaxSpeed (600); RightFrontWheel.setMaxSpeed (600); RightBackWheel.setMaxSpeed (600);
}
bucla void () {if (Serial.available ()> 0) {// citiți octetul de intrare: incomingByte = Serial.read ();
c = incomingByte; switch (c) {case 71: Serial.println („Am primit Rotire dreapta W”); invarte spre dreapta(); pauză; caz 65: Serial.println („Am primit Rotire la stânga Q”); rotiti la stanga(); pauză; cazul 1: Serial.println („Am primit BK / LFT”); moveRightBackward (); pauză; cazul 2: Serial.println („Am primit BK”); mergi inapoi(); pauză; caz 3: Serial.println („Am primit BK / RT”); moveRightBackward (); pauză; caz 4: Serial.println („Am primit STÂNGA”); moveSidewaysLeft ();
pauză; caz 5: Serial.println („Am primit STOP”); nu te mai misca(); pauză; cazul 6: Serial.println („Am primit RT”); moveSidewaysRight (); pauză; caz 7: Serial.println („Am primit FWD / LFT”); moveLeftForward (); pauză; caz 8: Serial.println („Am primit FWD”); mergi inainte(); pauză; cazul 9: Serial.println („Am primit FWD / RT”); moveRightForward (); pauză; implicit: Serial.print („Nu este o comandă”); Serial.println (incomingByte, DEC); pauză; } } //mergi inapoi(); 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); }
Pasul 4: Appinventor
O nouă aplicație appinventor cu funcționalitate diferită și mai simplă (fără înregistrări)
Vă rugăm să trimiteți mesaj și vă trimit - încărcările nu reușesc.
Ai grijă.