Sommario:

Robot Mecanum Omni Wheels con motori passo-passo GRBL Arduino Shield: 4 passaggi
Robot Mecanum Omni Wheels con motori passo-passo GRBL Arduino Shield: 4 passaggi

Video: Robot Mecanum Omni Wheels con motori passo-passo GRBL Arduino Shield: 4 passaggi

Video: Robot Mecanum Omni Wheels con motori passo-passo GRBL Arduino Shield: 4 passaggi
Video: Arduino Mecanum Wheels Robot 2024, Dicembre
Anonim
Robot Mecanum Omni Wheels con motori passo-passo GRBL Arduino Shield
Robot Mecanum Omni Wheels con motori passo-passo GRBL Arduino Shield
Robot Mecanum Omni Wheels con motori passo-passo GRBL Arduino Shield
Robot Mecanum Omni Wheels con motori passo-passo GRBL Arduino Shield
Robot Mecanum Omni Wheels con motori passo-passo GRBL Arduino Shield
Robot Mecanum Omni Wheels con motori passo-passo GRBL Arduino Shield

Mecanum Robot - Un progetto che volevo realizzare sin da quando l'ho visto sul grande blog di meccatronica di Dejan: howtomechatronics.com

Dejan ha davvero fatto un buon lavoro coprendo tutti gli aspetti dall'hardware, la stampa 3D, l'elettronica, il codice e un'app Android (inventore dell'app del MIT)

Questo è un grande progetto di revisione che rinfresca tutte le abilità di un creatore.

Ho avuto poche modifiche da fare ai progetti

Non volevo usare il PCB personalizzato che usava, ma un vecchio scudo GRBL che avevo a casa.

Volevo usare BlueTooth

Così:

Forniture

Arduino Uno + Scudo GRBL

Motori passo-passo

Modulo HC-06 BlueTooth

Batteria Lipo 12V

Passaggio 1: hardware

Hardware
Hardware
Hardware
Hardware

Stampato le ruote e assemblato come qui:

Collegati 4 motori passo passo allo chassis (nel mio caso un cassetto inutilizzato capovolto)

Instradato i cavi nella parte superiore del robot.

Passaggio 2: elettronica

Elettronica
Elettronica
Elettronica
Elettronica
Elettronica
Elettronica

Ho usato il mio modulo HC-06 BT, La parte più difficile è stata impostare lo scudo GRBL per funzionare con 4 motori passo-passo poiché non esiste una buona guida per questo, C'è bisogno di mettere dei Jumper come si può vedere nell'immagine allegata, in modo da rendere l'uscita "Tool" dello shield per controllare anche un motore passo-passo. anche bisogno di mettere "Abilita" Jumper

cablare i 4 stepper e basta.

Ho anche fornito l'alimentazione da batterie da 12V - due ste - una per l'Arduino e una per il GRBl Shield

Passaggio 3: codice Arduino

/* === Arduino Mecanum Wheels Robot === Controllo smartphone tramite Bluetooth di Dejan, www. HowToMechatronics.com Librerie: RF24, www. HowToMechatronics.com AccelStepper di Mike McCauley: www. HowToMechatronics.com

*/ /* 2019-11-12 Gilad Meller (https://www.keerbot.com - modificare il codice per funzionare con GRBL arduino motor shield I motori passo passo nello shield sono mappati come (passo/direzione): 2/5 3 /6 4/7 12/13 con driver A4988 12V

Il codice di Dejan utilizza SoftwareSerial e il mio utilizzerà i pin standard RX, TX (0, 1) di Arduino Uno Nota: assicurati di ripristinare i pin RX TX quando carichi lo schizzo su arduino o il caricamento non riuscirà.

*/ #includere

// Definisce i motori passo passo ei pin che utilizzeranno AccelStepper LeftBackWheel(1, 2, 5); // (Tipo: driver, STEP, DIR) - Stepper1 AccelStepper LeftFrontWheel(1, 3, 6); // Stepper2 AccelStepper RightBackWheel(1, 4, 7); // Stepper3 AccelStepper RightFrontWheel(1, 12, 13); // Stepper4

int byte in entrata = 0, c; // per i dati seriali in entrata int wheelSpeed = 100;

void setup() { Serial.begin(9600); // apre la porta seriale, imposta la velocità dei dati a 9600 bps // imposta i valori iniziali del seme per gli stepper LeftFrontWheel.setMaxSpeed(600); LeftBackWheel.setMaxSpeed(600); RightFrontWheel.setMaxSpeed(600); RightBackWheel.setMaxSpeed(600);

}

void loop() { if (Serial.available() > 0) { // legge il byte in arrivo: incomingByte = Serial.read();

c = byte in entrata; switch (c) { case 71: Serial.println("Ho ricevuto Ruota a destra W"); ruota a destra(); rottura; caso 65: Serial.println("Ho ricevuto Ruota Q a sinistra"); gira a sinistra(); rottura; caso 1: Serial.println("Ho ricevuto BK/LFT "); moveRightBackward(); rottura; caso 2: Serial.println("Ho ricevuto BK"); tornare indietro(); rottura; caso 3: Serial.println("Ho ricevuto BK/RT "); moveRightBackward(); rottura; caso 4: Serial.println("Ho ricevuto LEFT"); moveSidewaysLeft();

rottura; caso 5: Serial.println("Ho ricevuto STOP"); fermati(); rottura; caso 6: Serial.println("Ho ricevuto RT"); moveSidewaysRight(); rottura; caso 7: Serial.println("Ho ricevuto FWD/LFT "); moveLeftForward(); rottura; caso 8: Serial.println("Ho ricevuto FWD"); moveForward(); rottura; caso 9: Serial.println("Ho ricevuto FWD/RT "); moveRightForward(); rottura; default: Serial.print("Non è un comando"); Serial.println(incomingByte, DEC); rottura; } } //tornare indietro(); 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); }

Passaggio 4: Appinventor

Una nuova app appinventor con funzionalità diverse e più semplici (Nessuna registrazione)

Si prega di inviare un messaggio e te lo invio - i caricamenti falliscono.

Stai attento.

Consigliato: