สารบัญ:

แขนกลพร้อมโมดูล Zio ตอนที่ 2: 11 ขั้นตอน
แขนกลพร้อมโมดูล Zio ตอนที่ 2: 11 ขั้นตอน

วีดีโอ: แขนกลพร้อมโมดูล Zio ตอนที่ 2: 11 ขั้นตอน

วีดีโอ: แขนกลพร้อมโมดูล Zio ตอนที่ 2: 11 ขั้นตอน
วีดีโอ: แจกโปรแกรมฟรี MTK CLIENT TOOL V5.2 Free.. 2024, กรกฎาคม
Anonim
แขนกลพร้อมโมดูล Zio ตอนที่ 2
แขนกลพร้อมโมดูล Zio ตอนที่ 2

ในบทช่วยสอนวันนี้ เราจะใช้เซอร์โวทั้งหมด 4 ตัวและคอนโทรลเลอร์ไร้สาย PS2 เพื่อควบคุมแขนหุ่นยนต์

โพสต์บล็อกนี้เป็นส่วนหนึ่งของ Zio Robotics Series

บทนำ

ในบล็อกที่แล้ว เราโพสต์บทช่วยสอนตอนที่ 1 เกี่ยวกับวิธีควบคุม Robotic Arm โดยใช้โมดูล Zio ส่วนที่ 1 ส่วนใหญ่เน้นที่การควบคุม Robotic Arm's Claw ของคุณโดยอัตโนมัติเพื่อเปิดและปิด

ในบทช่วยสอนวันนี้ เราจะปรับปรุงเล็กน้อยโดยเพิ่มคอนโทรลเลอร์ PS2 Wireless เพื่อควบคุม Robotic Arm สำหรับโครงการนี้ เราจะใช้เซอร์โว 4 ตัว

ขั้นตอนที่ 1: ภาพรวมโครงการ

ระดับความยาก:

ซิโอ พาดาวัน

แหล่งข้อมูลที่เป็นประโยชน์:

คุณควรมีความเข้าใจพื้นฐานเกี่ยวกับวิธีการติดตั้งบอร์ดพัฒนา Zio ในบทช่วยสอนนี้ เราถือว่าบอร์ดพัฒนาของคุณได้รับการกำหนดค่าแล้วและพร้อมที่จะตั้งค่า หากคุณยังไม่ได้กำหนดค่าบอร์ดของคุณ ลองดูบทแนะนำ Zio Qwiic Start Guide ด้านล่างเพื่อเริ่มต้น:

คู่มือเริ่มต้น Zio Zuino M UNO Qwiic

ขั้นตอนที่ 2: แผนผัง

แผนผัง
แผนผัง

นี่คือแผนผังการเดินสายไฟของโครงการ Robotic Arm Part 2 รวมถึงแผนภาพ PS2 Controller ที่จำเป็นสำหรับการทำความเข้าใจส่วนการเข้ารหัสของคุณ

ขั้นตอนที่ 3: ไดอะแกรมคอนโทรลเลอร์ PS2

แผนภาพคอนโทรลเลอร์ PS2
แผนภาพคอนโทรลเลอร์ PS2

ขั้นตอนที่ 4: ตั้งค่าการเชื่อมต่อโมดูล Zio

ด้านล่างนี้คือการเชื่อมต่อโมดูล Zio ของเราเพื่อตั้งค่ากับ Robotic Arm การเชื่อมต่อโมดูลทั้งหมดเข้าด้วยกันนั้นค่อนข้างง่ายและจะใช้เวลาไม่เกิน 10 นาทีในการตั้งค่า

ขั้นตอนที่ 5: เชื่อมต่อ Robotic Arm Servo กับ Zio 16 Servo Controller

เชื่อมต่อ Robotic Arm Servo กับ Zio 16 Servo Controller
เชื่อมต่อ Robotic Arm Servo กับ Zio 16 Servo Controller

ขั้นตอนที่ 6: เชื่อมต่อ 16 Servo ของคุณกับ DC/DC Booster และตั้งค่าที่ 6.0V

เชื่อมต่อ 16 Servo ของคุณกับ DC/DC Booster และตั้งค่าไว้ที่ 6.0V
เชื่อมต่อ 16 Servo ของคุณกับ DC/DC Booster และตั้งค่าไว้ที่ 6.0V

เราใช้ DC/DC Booster เพื่อเพิ่มและปรับแรงดันไฟฟ้าของแบตเตอรี่เป็น 6.0

ใช้โพเทนชิออมิเตอร์บน DC Booster เพื่อปรับแรงดันไฟฟ้าจนกว่าคุณจะได้รับ 6.0 กดปุ่ม In/Out จนขึ้นหน้าจอ 6.0 คุณต้องจ่ายไฟ (แบตเตอรี่ 3.7V) ให้กับ DC/DC Booster ก่อนเพื่อปรับแรงดันไฟฟ้า

ขั้นตอนที่ 7: เชื่อมต่อ Zuino M Uno กับ Zio 16 Servo Controller

เชื่อมต่อ Zuino M Uno กับ Zio 16 Servo Controller
เชื่อมต่อ Zuino M Uno กับ Zio 16 Servo Controller

Qwiic เชื่อมต่อ Zuino M Uno กับตัวควบคุม Zio Servo ด้วยสาย qwiic

ขั้นตอนที่ 8: เชื่อมต่อ Uno กับตัวรับสัญญาณ PS2

การเชื่อมต่อ Uno กับเครื่องรับ PS2
การเชื่อมต่อ Uno กับเครื่องรับ PS2

นี่คือพินไดอะแกรมของการเชื่อมต่อ คุณต้องมีสายจัมเปอร์ตัวผู้ถึงตัวเมีย 5 เส้นสำหรับส่วนนี้

ขั้นตอนที่ 9: รหัสสำหรับ Robotic Arm

เราจะใช้ไลบรารี PS2 Arduino เพื่อเข้ารหัส PS2 Wireless Controller เพื่อทำงานกับ Robotic Arm ของเรา คุณสามารถค้นหาและดาวน์โหลดซอร์สโค้ดสำหรับโปรเจ็กต์ Robotic Arm Part 2 ได้ที่หน้า Github ของเรา

ดาวน์โหลดและติดตั้งไลบรารีต่อไปนี้และบันทึกไว้ในโฟลเดอร์ไลบรารี Arduino IDE ในเครื่องของคุณ:

  • ไลบรารีไดรเวอร์ Adafruit PWM Servo
  • ห้องสมุด PS2 Arduino

ในการติดตั้งไลบรารี่ให้เปิด Arduino IDE ของคุณ ไปที่แท็บ Sketch เลือก Include Library -> Add. Zip Library เลือกไลบรารีด้านบนที่จะรวมไว้ใน IDE ของคุณ

Arduino มีคู่มือที่มีประโยชน์เกี่ยวกับวิธีการติดตั้งไลบรารีลงใน Arduino IDE ของคุณ ตรวจสอบพวกเขาที่นี่ !

ขั้นตอนที่ 10: เรียกใช้รหัสของคุณ

เรียกใช้รหัสของคุณ
เรียกใช้รหัสของคุณ

เปิด Arduino IDE ภายใต้ ไฟล์ > ตัวอย่าง > PS2_Arduino_Library เลือก PS2X_Servo

หมายเหตุ: ก่อนที่คุณจะควบคุมแขนหุ่นยนต์ด้วยคอนโทรลเลอร์ PS2 ให้ตรวจสอบขั้นตอนต่อไปนี้: เปิดคอนโทรลเลอร์ PS2 ของคุณ ตรวจสอบว่าไฟ LED ของโหมดสว่างขึ้น หากไม่เป็นเช่นนั้น ให้กดปุ่มโหมดบนคอนโทรลเลอร์ของคุณ หลังจากทำตามขั้นตอนข้างต้นแล้ว คุณต้องกดปุ่มรีเซ็ตบน Zuino M Uno เพื่อให้อ่านการตั้งค่าคอนโทรลเลอร์ของคุณ คุณต้องกด L1 และจอยสติ๊กเพื่อขยับแขนกลของคุณ

  • จอยสติ๊กด้านซ้ายควบคุมการงอของแขนขึ้นหรือลง
  • จอยสติ๊กขวาควบคุมกรงเล็บให้เปิดหรือปิด และหมุนกรงเล็บไปทางซ้ายหรือขวา

ขั้นตอนที่ 11: คำอธิบายโค้ด

การใช้ไลบรารี PS2X Arduino นั้นง่าย เพียงต้องการการเริ่มต้น การตั้งค่า และคำสั่งอ่าน

ในการตั้งค่าการเชื่อมต่อสำหรับคอนโทรลเลอร์ PS2 ของคุณด้วย Uno ด้านล่างนี้คือพินที่คุณต้องกำหนดในโค้ดของคุณ:

/****************************************************** *************** * ตั้งค่าพินที่เชื่อมต่อกับคอนโทรลเลอร์ PS2: * - คอลัมน์ 1e: ดั้งเดิม * - 2e colmun: Stef? * แทนที่หมายเลขพินด้วยหมายเลขที่คุณใช้****************************************** **********************/#define PS2_DAT 13 //14 #define PS2_CMD 11 //15#define PS2_SEL 10 //16#define PS2_CLK 12 // 17

เราได้แทนที่พินด้วยพินที่เราใช้เพื่อเชื่อมต่อกับ Uno ของเราตามที่ระบุไว้ในไดอะแกรมพินด้านบน

/****************************************************** **************** เลือกโหมดของคอนโทรลเลอร์ PS2: * - แรงดัน = การอ่านปุ่มกดแบบอะนาล็อก * - rumble = มอเตอร์ดังก้อง * ไม่ใส่เครื่องหมาย 1 ของบรรทัดสำหรับการเลือกแต่ละโหมด** ******************************************************** ************/ //#กำหนดความกดดันจริง#กำหนดความกดดันเท็จ //#กำหนดดังก้องจริง#กำหนดดังก้องเท็จ

ที่นี่เรากำหนดโหมด PS2 สำหรับแรงกดดันและเสียงดังก้องเป็นเท็จ เราแสดงความคิดเห็นสิ่งที่เราไม่ได้ใช้

เราจะใช้เฉพาะคำสั่งจอยสติ๊กของคอนโทรลเลอร์และ L1 เพื่อควบคุมการเคลื่อนไหวของแขนกลของเราเท่านั้น

void loop() {/* คุณต้องอ่าน Gamepad เพื่อรับค่าใหม่และตั้งค่าการสั่นสะเทือน ps2x.read_gamepad (มอเตอร์ขนาดเล็กเปิด/ปิด, ความแข็งแกร่งของมอเตอร์ที่ใหญ่ขึ้นตั้งแต่ 0-255) หากคุณไม่เปิดใช้งาน rumble ให้ใช้ ps2x.read_gamepad (); โดยไม่มีค่าใด ๆ คุณควรเรียกสิ่งนี้อย่างน้อยหนึ่งครั้งต่อวินาที*/ if(error == 1) //skip loop ถ้าไม่พบตัวควบคุมที่ส่งคืน; อื่น {// DualShock Controller ps2x.read_gamepad (เท็จ, สั่น); // อ่านคอนโทรลเลอร์และตั้งค่ามอเตอร์ขนาดใหญ่ให้หมุนด้วยความเร็ว 'สั่น' ถ้า (ps2x. Button(PSB_START))//จะเป็น TRUE ตราบใดที่กดปุ่ม Serial.println ("สตาร์ทจะถูกระงับ"); if(ps2x. Button(PSB_SELECT)) Serial.println("การเลือกถูกระงับ"); สั่น = ps2x. Analog (PSAB_CROSS); // สิ่งนี้จะตั้งค่าความเร็วการสั่นสะเทือนของมอเตอร์ขนาดใหญ่ขึ้นอยู่กับว่าคุณกดปุ่มสีน้ำเงิน (X) แรงแค่ไหน if(ps2x. Button (PSB_L1) || ps2x. Button (PSB_R1)) {// พิมพ์ค่าแท่งถ้าอันใดอันหนึ่งเป็น TRUE RY_Value =ps2x.อนาล็อก(PSS_RY); RX_Value=ps2x. Analog(PSS_RX); LY_Value=ps2x.อนาล็อก(PSS_LY); LX_Value=ps2x. Analog(PSS_LX);Serial.print("ค่าติด:"); Serial.print(RX_Value); Serial.print(" "); Serial.print(RY_Value); Serial.print(" "); Serial.print(LY_Value); Serial.print(" "); Serial.println(LX_Value);

โค้ดด้านล่างเป็นที่ที่เราโค้ดเซอร์โวของเราที่ควบคุมแขนหุ่นยนต์ของเรา ซึ่งเรารวมไว้ในการเรียกใช้ฟังก์ชันภายใต้ ps2x.button(PSB_L1)|| ปุ่ม ps2x.(PSB_R1)

คุณต้องกดปุ่ม L1 หรือ R1 ร่วมกับจอยสติ๊กเพื่อควบคุม Robotic Arm ของคุณ

เซอร์โวควบคุมจอยสติ๊กด้านซ้าย 2 และ 3 สำหรับส่วนแขน - ควบคุมการงอแขนขึ้นและลงตามลำดับ ในขณะที่จอยสติ๊กควบคุมเซอร์โวควบคุม 0 และ 1 ของ Robotic Arm's Claw เพื่อเปิดหรือปิด และหมุนไปทางซ้ายหรือขวา

SERVO 0, 1 - กรงเล็บ SERVO 2, 3 - Arm

คุณสามารถเปลี่ยนแปลงค่าในส่วนนี้เพื่อควบคุมระดับของมุมแขนกลของคุณ:

pulselen0=แผนที่ (RY_Value, 0, 127, SERVOMIN0, SERVOMAX0); pulselen1=แผนที่(RX_Value, 0, 127, SERVOMIN0, SERVOMAX0); pulselen2=แผนที่(LY_Value, 0, 127, SERVOMIN2, SERVOMAX2); pulselen3=map(LX_Value, 0, 255, SERVOMIN3, SERVOMAX3);

แนะนำ: