Spisu treści:

Mecanum Omni Wheels Robot z silnikami krokowymi GRBL Arduino Shield: 4 kroki
Mecanum Omni Wheels Robot z silnikami krokowymi GRBL Arduino Shield: 4 kroki

Wideo: Mecanum Omni Wheels Robot z silnikami krokowymi GRBL Arduino Shield: 4 kroki

Wideo: Mecanum Omni Wheels Robot z silnikami krokowymi GRBL Arduino Shield: 4 kroki
Wideo: WRO 2016 - labyrinth, omni wheels. WRO 2016 - лабиринт, шасси на основе omni-колес. 2024, Listopad
Anonim
Mecanum Omni Wheels Robot z silnikami krokowymi GRBL Arduino Shield
Mecanum Omni Wheels Robot z silnikami krokowymi GRBL Arduino Shield
Mecanum Omni Wheels Robot z silnikami krokowymi GRBL Arduino Shield
Mecanum Omni Wheels Robot z silnikami krokowymi GRBL Arduino Shield
Mecanum Omni Wheels Robot z silnikami krokowymi GRBL Arduino Shield
Mecanum Omni Wheels Robot z silnikami krokowymi GRBL Arduino Shield

Robot Mecanum - Projekt, który chciałem zbudować, odkąd zobaczyłem go na wspaniałym blogu Mechatroniki Dejana: howtomechatronics.com

Dejan naprawdę wykonał dobrą robotę, obejmując wszystkie aspekty, od sprzętu, drukowania 3D, elektroniki, kodu i aplikacji na Androida (wynalazca aplikacji MIT)

To świetny projekt overhoul, który odświeża wszystkie umiejętności twórcy.

Miałem kilka zmian do wykonania w projektach

Nie chciałem używać wykonanej na zamówienie płytki drukowanej, której użył, ale starej osłony GRBL, którą miałem w domu.

Chciałem użyć BlueTooth

Więc:

Kieszonkowe dzieci

Arduino Uno + Tarcza GRBL

Silniki krokowe

Moduł HC-06 BlueTooth

Akumulator Lipo 12 V

Krok 1: Sprzęt

Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy

Wydrukowałem koła i zmontowałem je jak tutaj:

Podłączone 4 silniki krokowe do podwozia (w moim przypadku nieużywana szuflada do góry nogami)

Poprowadziłem kable do górnej części robota.

Krok 2: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika

użyłem mojego modułu HC-06 BT, Najtrudniejszą częścią było ustawienie osłony GRBL do pracy z 4 silnikami krokowymi, ponieważ nie ma dobrego przewodnika do tego, Istnieje potrzeba umieszczenia zworek, jak widać na załączonym obrazku, aby wyjście "Narzędzia" tarczy również sterowało silnikiem krokowym. należy również umieścić zworkę "Włącz"

okablowanie 4 stepperów i to wszystko.

Dostarczyłem też zasilanie z akumulatorów 12V - dwa stesy - jeden do Arduino i jeden do GRBl Shield

Krok 3: Kod Arduino

/* === Arduino Mecanum Wheels Robot === Sterowanie smartfonem przez Bluetooth przez Dejana, www. HowToMechatronics.com Biblioteki: RF24, www. HowToMechatronics.com AccelStepper przez Mike McCauley: www. HowToMechatronics.com

*/ /* 12.11.2019 Gilad Meller (https://www.keerbot.com - zmodyfikuj kod do pracy z osłoną silnika arduino GRBL Silniki krokowe w osłonie są odwzorowane jako (krok/kierunek): 2/5 3 /6 4/7 12/13 za pomocą sterownika A4988 12V

Kod Dejana używa SoftwareSerial, a mój użyje standardowych pinów RX, TX (0, 1) Arduino Uno Uwaga: Upewnij się, że rempve piny RX TX podczas przesyłania szkicu do arduino lub przesyłanie się nie powiedzie.

*/ #włączać

// Zdefiniuj silniki krokowe i piny, które będą używać AccelStepper LeftBackWheel(1, 2, 5); // (Type:driver, STEP, DIR) - Stepper1 AccelStepper LeftFrontWheel(1, 3, 6); // Stepper2 AccelStepper RightBackWheel(1, 4, 7); // Stepper3 AccelStepper RightFrontWheel(1, 12, 13); // Stepper4

int przychodzącyByte = 0, c; // dla przychodzących danych szeregowych int wheelSpeed = 100;

void setup() { Serial.begin(9600); // otwiera port szeregowy, ustawia szybkość transmisji danych na 9600 bps // ustawia początkowe wartości początkowe dla stepperów LeftFrontWheel.setMaxSpeed(600); LeftBackWheel.setMaxSpeed(600); Prawoprzednie koło.setMaxSpeed(600); RightBackWheel.setMaxSpeed(600);

}

void loop() { if (Serial.available() > 0) { // odczytaj przychodzący bajt: initialByte = Serial.read();

c = bajt przychodzący; switch (c) { przypadek 71: Serial.println("Otrzymałem Obróć w prawo W"); Obróć w prawo(); przerwa; case 65: Serial.println("Otrzymałem Obróć w lewo Q"); obrót w lewo(); przerwa; przypadek 1: Serial.println("Otrzymałem BK/LFT"); przesuńw prawo do tyłu(); przerwa; przypadek 2: Serial.println("Otrzymałem BK"); przesuńWstecz(); przerwa; przypadek 3: Serial.println("Otrzymałem BK/RT"); przesuńw prawo do tyłu(); przerwa; przypadek 4: Serial.println("Otrzymałem LEWO"); przesuńW BokW Lewo();

przerwa; przypadek 5: Serial.println("Otrzymałem STOP"); przestań sięruszać(); przerwa; przypadek 6: Serial.println("Otrzymałem RT"); przesuń na boki w prawo(); przerwa; przypadek 7: Serial.println("Otrzymałem FWD/LFT"); ruch w lewo do przodu(); przerwa; przypadek 8: Serial.println("Otrzymałem FWD"); ruszaj naprzód(); przerwa; przypadek 9: Serial.println("Otrzymałem FWD/RT"); przesuńw prawo do przodu(); przerwa; domyślnie: Serial.print("Nie jest to polecenie"); Serial.println(bajt przychodzący, DEC); przerwa; } } //przesuńWstecz(); moveRobot();

}

void moveRobot() { LeftBackWheel.runSpeed(); LeweKołoPrzednie.runSpeed(); RightFrontWheel.runSpeed(); PrawoBackWheel.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); }

Krok 4: Wynalazca aplikacji

Nowa aplikacja appinventor z inną i prostszą funkcjonalnością (bez nagrań)

Proszę wyślij msg, a ja wyślę do Ciebie - przesyłanie nie powiodło się.

Trzymaj się.

Zalecana: