หุ่นยนต์ Mecanum Omni Wheels พร้อม GRBL Stepper Motors Arduino Shield: 4 ขั้นตอน
หุ่นยนต์ Mecanum Omni Wheels พร้อม GRBL Stepper Motors Arduino Shield: 4 ขั้นตอน
Anonim
หุ่นยนต์ Mecanum Omni Wheels พร้อม GRBL Stepper Motors Arduino Shield
หุ่นยนต์ Mecanum Omni Wheels พร้อม GRBL Stepper Motors Arduino Shield
หุ่นยนต์ Mecanum Omni Wheels พร้อม GRBL Stepper Motors Arduino Shield
หุ่นยนต์ Mecanum Omni Wheels พร้อม GRBL Stepper Motors Arduino Shield
หุ่นยนต์ Mecanum Omni Wheels พร้อม GRBL Stepper Motors Arduino Shield
หุ่นยนต์ Mecanum Omni Wheels พร้อม GRBL Stepper Motors Arduino Shield

Mecanum Robot - โครงการที่ฉันอยากจะสร้างตั้งแต่ฉันเห็นมันในบล็อก gread mechatronics ของ Dejan: howtomechatronics.com

Dejan ทำได้ดีจริงๆ ครอบคลุมทุกด้านตั้งแต่ฮาร์ดแวร์ การพิมพ์ 3 มิติ อุปกรณ์อิเล็กทรอนิกส์ โค้ด และแอป Android (ผู้ประดิษฐ์แอปของ MIT)

นี่เป็นโครงการยกเครื่องที่ยอดเยี่ยมที่จะรีเฟรชทักษะทั้งหมดของผู้ทำ

ฉันมีการเปลี่ยนแปลงเล็กน้อยที่ต้องทำกับโครงการ

ฉันไม่ต้องการใช้ PCB แบบกำหนดเองที่เขาใช้ แต่มีโล่ GRBL แบบเก่าที่ฉันมีที่บ้าน

ฉันต้องการใช้ BlueTooth

ดังนั้น:

เสบียง

Arduino Uno + GRBL Shield

สเต็ปเปอร์มอเตอร์

HC-06 โมดูลบลูทูธ

แบตเตอรี่ Lipo 12V

ขั้นตอนที่ 1: ฮาร์ดแวร์

ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์

พิมพ์ล้อและประกอบเข้าด้วยกันดังนี้:

เชื่อมต่อสเต็ปเปอร์มอเตอร์ 4 ตัวเข้ากับแชสซี (ในกรณีของฉันลิ้นชักที่ไม่ได้ใช้คว่ำลง)

เดินสายเคเบิลไปที่ด้านบนของหุ่นยนต์

ขั้นตอนที่ 2: อุปกรณ์อิเล็กทรอนิกส์

อิเล็กทรอนิกส์
อิเล็กทรอนิกส์
อิเล็กทรอนิกส์
อิเล็กทรอนิกส์
อิเล็กทรอนิกส์
อิเล็กทรอนิกส์

ฉันใช้โมดูล HC-06 BT ของฉัน

ส่วนที่ยากที่สุดคือการตั้งค่าชิลด์ GRBL ให้ทำงานกับสเต็ปเปอร์มอเตอร์ 4 ตัว เนื่องจากไม่มีแนวทางที่ดี

จำเป็นต้องใส่จัมเปอร์ดังที่เห็นในภาพที่แนบมา เพื่อให้เอาต์พุต "เครื่องมือ" ของชิลด์ควบคุมสเต็ปเปอร์มอเตอร์ได้ด้วย ต้องใส่ "Enable" Jumper ด้วย

เดินสายสเต็ปเปอร์ 4 ตัว เท่านี้ก็เรียบร้อย

ฉันยังจ่ายไฟจากแบตเตอรี่ 12V - สองสเต็ป - หนึ่งอันสำหรับ Arduino และอีกอันสำหรับ GRBl Shield

ขั้นตอนที่ 3: รหัส Arduino

/* === Arduino Mecanum Wheels Robot === การควบคุมสมาร์ทโฟนผ่าน Bluetooth โดย Dejan, www. HowToMechatronics.com ห้องสมุด: RF24, www. HowToMechatronics.com AccelStepper โดย Mike McCauley: www. HowToMechatronics.com

*/ /* 2019-11-12 Gilad Meller (https://www.keerbot.com - แก้ไขโค้ดเพื่อทำงานกับ GRBL arduino motor shield มอเตอร์สเต็ปในชิลด์ถูกแมปเป็น (ขั้นตอน/ทิศทาง): 2/5 3 /6 4/7 12/13 ใช้ไดรเวอร์ A4988 12V

รหัสของ Dejan ใช้ SoftwareSerial และของฉันจะใช้ RX, TX pins (0, 1) มาตรฐานของ Arduino Uno หมายเหตุ: ตรวจสอบให้แน่ใจว่าได้ถอดหมุด RX TX ออกเมื่อทำการอัพร่างไปยัง Arduino ไม่เช่นนั้นการอัปโหลดจะล้มเหลว

*/ #รวม

// กำหนดสเต็ปเปอร์มอเตอร์และพินที่จะใช้ AccelStepper LeftBackWheel(1, 2, 5); // (ประเภท:ไดรเวอร์, STEP, DIR) - Stepper1 AccelStepper LeftFrontWheel(1, 3, 6); // Stepper2 AccelStepper RightBackWheel (1, 4, 7); // Stepper3 AccelStepper RightFrontWheel (1, 12, 13); // Stepper4

int ขาเข้าไบต์ = 0, c; // สำหรับข้อมูลอนุกรมขาเข้า int wheelSpeed = 100;

การตั้งค่าเป็นโมฆะ () { Serial.begin (9600); // เปิดพอร์ตอนุกรมกำหนดอัตราข้อมูลเป็น 9600 bps // ตั้งค่าเริ่มต้นเริ่มต้นสำหรับ steppers LeftFrontWheel.setMaxSpeed (600); LeftBackWheel.setMaxSpeed(600); ล้อหน้าขวา.setMaxSpeed(600); RightBackWheel.setMaxSpeed(600);

}

วงเป็นโมฆะ () { ถ้า (Serial.available () > 0) { // อ่านไบต์ที่เข้ามา: incomingByte = Serial.read ();

c = ไบต์ขาเข้า; สวิตช์ (c) { กรณีที่ 71: Serial.println ("ฉันได้รับ Rotate right W"); หมุนขวา (); หยุดพัก; กรณีที่ 65: Serial.println("ฉันได้รับ Rotate left Q"); หมุนซ้าย(); หยุดพัก; กรณีที่ 1: Serial.println("ฉันได้รับ BK/LFT "); moveRightBackward(); หยุดพัก; กรณีที่ 2: Serial.println("ฉันได้รับ BK "); ย้ายย้อนกลับ(); หยุดพัก; กรณีที่ 3: Serial.println("ฉันได้รับ BK/RT "); moveRightBackward(); หยุดพัก; กรณีที่ 4: Serial.println("ฉันได้รับ LEFT "); ย้ายข้างซ้าย();

หยุดพัก; กรณีที่ 5: Serial.println("ฉันได้รับ STOP "); หยุดการเคลื่อนไหว (); หยุดพัก; กรณีที่ 6: Serial.println("ฉันได้รับ RT "); ย้ายข้างขวา (); หยุดพัก; กรณีที่ 7: Serial.println("ฉันได้รับ FWD/LFT "); ย้ายซ้ายไปข้างหน้า (); หยุดพัก; กรณีที่ 8: Serial.println("ฉันได้รับ FWD "); ก้าวไปข้างหน้า(); หยุดพัก; กรณีที่ 9: Serial.println("ฉันได้รับ FWD/RT "); moveRightForward(); หยุดพัก; ค่าเริ่มต้น: Serial.print("ไม่ใช่คำสั่ง"); Serial.println (ไบต์ขาเข้า, ธ.ค.); หยุดพัก; } } //moveBackward(); moveRobot();

}

โมฆะ moveRobot () { LeftBackWheel.runSpeed (); LeftFrontWheel.runSpeed(); RightFrontWheel.runSpeed(); RightBackWheel.runSpeed(); }

โมฆะ moveForward () { LeftFrontWheel.setSpeed (ความเร็วล้อ); LeftBackWheel.setSpeed(ความเร็วล้อ); RightFrontWheel.setSpeed(ความเร็วล้อ); RightBackWheel.setSpeed(ความเร็วล้อ); } โมฆะ moveBackward () { LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed(-ความเร็วล้อ); RightFrontWheel.setSpeed(-ความเร็วล้อ); RightBackWheel.setSpeed(-ความเร็วล้อ); } โมฆะ moveSidewaysRight () { LeftFrontWheel.setSpeed (ความเร็วล้อ); LeftBackWheel.setSpeed(-ความเร็วล้อ); RightFrontWheel.setSpeed(-ความเร็วล้อ); RightBackWheel.setSpeed(ความเร็วล้อ); } โมฆะ moveSidewaysLeft () { LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed(ความเร็วล้อ); RightFrontWheel.setSpeed(ความเร็วล้อ); RightBackWheel.setSpeed(-ความเร็วล้อ); } เป็นโมฆะ turnsLeft () { LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed(-ความเร็วล้อ); RightFrontWheel.setSpeed(ความเร็วล้อ); RightBackWheel.setSpeed(ความเร็วล้อ); } โมฆะการหมุนขวา () { LeftFrontWheel.setSpeed (ความเร็วล้อ); LeftBackWheel.setSpeed(ความเร็วล้อ); RightFrontWheel.setSpeed(-ความเร็วล้อ); RightBackWheel.setSpeed(-ความเร็วล้อ); } โมฆะ moveRightForward () { LeftFrontWheel.setSpeed (ความเร็วล้อ); LeftBackWheel.setSpeed(0); ล้อหน้าขวา.setSpeed(0); RightBackWheel.setSpeed(ความเร็วล้อ); } โมฆะ moveRightBackward () { LeftFrontWheel.setSpeed (0); LeftBackWheel.setSpeed(-ความเร็วล้อ); RightFrontWheel.setSpeed(-ความเร็วล้อ); RightBackWheel.setSpeed(0); } โมฆะ moveLeftForward () { LeftFrontWheel.setSpeed (0); LeftBackWheel.setSpeed(ความเร็วล้อ); RightFrontWheel.setSpeed(ความเร็วล้อ); RightBackWheel.setSpeed(0); } เป็นโมฆะ moveLeftBackward () { LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed(0); ล้อหน้าขวา.setSpeed(0); RightBackWheel.setSpeed(-ความเร็วล้อ); } โมฆะ stopMoving () { LeftFrontWheel.setSpeed (0); LeftBackWheel.setSpeed(0); ล้อหน้าขวา.setSpeed(0); RightBackWheel.setSpeed(0); }

ขั้นตอนที่ 4: Appinventor

แอพ appinventor ใหม่พร้อมฟังก์ชันการทำงานที่แตกต่างและเรียบง่ายกว่า (ไม่มีการบันทึก)

กรุณาส่งข้อความและฉันส่งถึงคุณ - การอัปโหลดล้มเหลว

ดูแล.