วิธีสร้าง DIY Arduino และแขนหุ่นยนต์ที่ควบคุมด้วยบลูทู ธ

ในศตวรรษที่ผ่านมา Robotics เป็นสาขาการวิจัยที่เกิดขึ้นใหม่ที่สุด หุ่นยนต์ได้เข้าควบคุมเกือบทุกอย่างที่มนุษย์เคยทำ เราสามารถเห็นหุ่นยนต์อิสระทำงานต่างๆในสังคมของเรา นอกจากนี้ยังมีหุ่นยนต์ควบคุมระยะไกลบางตัวที่ช่วยเราดำเนินการต่างๆ ตั้งแต่การสร้างวงจรนาโนในสาขาวิศวกรรมไปจนถึงการผ่าตัดที่ซับซ้อนในด้านการแพทย์หุ่นยนต์มีความน่าเชื่อถือมากกว่ามนุษย์

ในโครงการนี้เราจะสร้างแขนหุ่นยนต์ที่ควบคุมโดยไมโครคอนโทรลเลอร์ Arduino มันจะถูกควบคุมผ่านบลูทู ธ ด้วยความช่วยเหลือของแอพควบคุมระยะไกลของ Android

วิธีควบคุมแขนหุ่นยนต์โดยใช้ Arduino

ตอนนี้เราทราบบทคัดย่อของโครงการแล้ว ให้เรารวบรวมข้อมูลเพิ่มเติมเกี่ยวกับวงจรและเริ่มสร้างแขนหุ่นยนต์ที่ควบคุมด้วยบลูทู ธ และควบคุมผ่านบลูทู ธ

ขั้นตอนที่ 1: รวบรวมส่วนประกอบ

แนวทางที่ดีที่สุดในการเริ่มโครงการคือการจัดทำรายการส่วนประกอบทั้งหมด นี่ไม่ได้เป็นเพียงวิธีเริ่มต้นโครงการที่ชาญฉลาดเท่านั้น แต่ยังช่วยเราจากความไม่สะดวกมากมายที่อยู่ตรงกลางของโครงการอีกด้วย รายการส่วนประกอบของโครงการนี้มีดังต่อไปนี้:

ขั้นตอนที่ 2: ศึกษาส่วนประกอบ

ในขณะที่เรามีรายการส่วนประกอบทั้งหมดที่เรากำลังจะใช้เรามาดูข้อมูลคร่าวๆของส่วนประกอบทั้งหมดกันดีกว่า

Arduino นาโน เป็นบอร์ดไมโครคอนโทรลเลอร์ที่ดำเนินการต่างๆในวงจรต่างๆ ต้องใช้ไฟล์ รหัส C ที่บอกคณะกรรมการว่าต้องปฏิบัติงานอะไรและทำอย่างไร มีพิน I / O ดิจิทัล 13 พินซึ่งหมายความว่าเราสามารถใช้งานอุปกรณ์ต่างๆได้ 13 เครื่อง Arduino Nano มีฟังก์ชันการทำงานเหมือนกับ Arduino Uno แต่มีขนาดค่อนข้างเล็ก ไมโครคอนโทรลเลอร์บนบอร์ด Arduino Nano คือ ATmega328p.หากคุณต้องการควบคุมอุปกรณ์มากกว่า 13 เครื่องให้ใช้ Arduino Mega

HC-05 เครื่องรับส่งสัญญาณบลูทู ธ ไร้สายแบบอนุกรม: เราต้องการการสื่อสารแบบไร้สายในโครงการนี้ดังนั้นเราจะใช้เทคโนโลยีบลูทู ธ และสำหรับโมดูลนั้นที่จะใช้คือ HC-05 โมดูลนี้มีอัตราบอดที่ตั้งโปรแกรมได้หลายแบบ แต่อัตราการส่งข้อมูลเริ่มต้นคือ 9600 bps สามารถกำหนดค่าเป็น Master หรือ Slave ได้ในขณะที่โมดูลอื่น HC-06 สามารถทำงานได้เฉพาะในโหมด Slave เท่านั้น โมดูลนี้มีหมุดสี่ขา หนึ่งสำหรับ VCC (5V) และอีกสามรายการที่เหลือสำหรับ GND, TX และ RX รหัสผ่านเริ่มต้นของโมดูลนี้คือ 1234 หรือ 0000. หากเราต้องการสื่อสารระหว่างไมโครคอนโทรลเลอร์สองตัวหรือสื่อสารกับอุปกรณ์ใด ๆ ที่มีฟังก์ชันบลูทู ธ เช่นโทรศัพท์หรือแล็ปท็อป HC-05 ช่วยให้เราทำเช่นนั้นได้ แอปพลิเคชัน Android หลายตัวพร้อมใช้งานแล้วซึ่งทำให้กระบวนการนี้ง่ายขึ้นมาก

โดยทั่วไป แขนหุ่นยนต์ประกอบด้วยหลายส่วนและโดยปกติจะมีข้อต่อ 6 ข้อ ประกอบด้วยมอเตอร์สเต็ปเปอร์อย่างน้อย 4 ตัวซึ่งควบคุมโดยคอมพิวเตอร์ สเต็ปเปอร์มอเตอร์แตกต่างจากมอเตอร์กระแสตรงอื่น ๆ พวกมันเคลื่อนที่อย่างแม่นยำทีละน้อย แขนหุ่นยนต์เหล่านี้ถูกใช้เพื่อดำเนินการต่างๆ เราสามารถสั่งการด้วยตนเองผ่านรีโมทคอนโทรลหรือตั้งโปรแกรมให้ทำงานแบบอัตโนมัติ

ขั้นตอนที่ 3: การประกอบส่วนประกอบ

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

  1. ติดบอร์ด Arduino Nano บนเขียงหั่นขนม Arduino จะขับเคลื่อนผ่านสายบวกและลบของอะแดปเตอร์
  2. วางโมดูลบลูทู ธ ไว้บนเขียงหั่นขนมด้วย เปิดโมดูลบลูทู ธ ผ่าน Arduino เชื่อมต่อพิน Tx ของโมดูลบลูทู ธ เข้ากับพิน Rx ของบอร์ด Arduino Nan และเชื่อมต่อพิน Rx ของโมดูลบลูทู ธ เข้ากับพิน Tx ของบอร์ด Arduino Nano
  3. อย่างที่เราทราบกันดีว่ามีสเต็ปเปอร์มอเตอร์ 4 ตัว แต่ละคนมีชื่อทางเทคนิค พวกเขาเรียกว่า ข้อศอก, ไหล่, ฐาน, และ กริปเปอร์. Vcc และกราวด์ของมอเตอร์ทั้งหมดจะเป็นแบบธรรมดาและเชื่อมต่อกับอะแดปเตอร์ 6V บวกและลบ ขาสัญญาณของมอเตอร์ทั้งสี่ตัวจะเชื่อมต่อกับ pin5, pin6, pin9 และ pin11 ของ Arduino Nano
  4. ตรวจสอบให้แน่ใจว่าการเชื่อมต่อที่คุณทำนั้นเป็นไปตามแผนภาพวงจรต่อไปนี้

ขั้นตอนที่ 4: เริ่มต้นกับ Arduino

หากคุณยังไม่คุ้นเคยกับ Arduino IDE ก็ไม่ต้องกังวลเพราะขั้นตอนการตั้งค่าและใช้ Arduino IDE กับบอร์ดไมโครคอนโทรลเลอร์จะมีคำอธิบายด้านล่างนี้

  1. ดาวน์โหลด Arduino IDE เวอร์ชันล่าสุดจาก Arduino
  2. เชื่อมต่อบอร์ด Arduino Nano เข้ากับแล็ปท็อปของคุณและเปิดแผงควบคุม จากนั้นคลิกที่ ฮาร์ดแวร์และเสียง. ตอนนี้คลิกที่ อุปกรณ์และเครื่องพิมพ์ค้นหาพอร์ตที่บอร์ดไมโครคอนโทรลเลอร์ของคุณเชื่อมต่ออยู่ที่นี่ ในกรณีของฉันมันคือ COM14แต่จะแตกต่างกันในคอมพิวเตอร์เครื่องอื่น
  3. คลิกที่เมนูเครื่องมือและตั้งค่าบอร์ดเป็น Arduino นาโน จากเมนูแบบเลื่อนลง
  4. ในเมนูเครื่องมือเดียวกันตั้งค่าพอร์ตเป็นหมายเลขพอร์ตที่คุณสังเกตเห็นก่อนหน้านี้ในไฟล์ อุปกรณ์และเครื่องพิมพ์.
  5. ในเมนูเครื่องมือเดียวกันตั้งค่าโปรเซสเซอร์เป็น ATmega328P (Bootloader เก่า)
  6. ในการเขียนโค้ดเพื่อใช้งานเซอร์โวมอเตอร์เราจำเป็นต้องมีไลบรารีพิเศษที่จะช่วยให้เราเขียนฟังก์ชันต่างๆสำหรับเซอร์โวมอเตอร์ได้ ไลบรารีนี้แนบมาพร้อมกับรหัสในลิงค์ด้านล่าง หากต้องการรวมไลบรารีให้คลิกที่ ร่าง> รวมไลบรารี> เพิ่ม ZIP ห้องสมุด.
  7. ดาวน์โหลดโค้ดที่แนบด้านล่างและวางลงใน Arduino IDE ของคุณ คลิกที่ ที่อัพโหลด ปุ่มเพื่อเบิร์นโค้ดบนบอร์ดไมโครคอนโทรลเลอร์ของคุณ

ดาวน์โหลดรหัสคลิกที่นี่

ขั้นตอนที่ 5: ดาวน์โหลดแอพ

เนื่องจากตอนนี้เราได้ประกอบวงจรทั้งหมดและอัปโหลดรหัสในบอร์ดไมโครคอนโทรลเลอร์แล้ว ให้ดาวน์โหลดแอพมือถือที่จะทำงานเป็นรีโมทคอนโทรลสำหรับแขนหุ่นยนต์ แอปฟรีมีให้บริการใน Google Play Store ชื่อของแอปคือ Little Arm Robot Control ในการเชื่อมต่อบลูทู ธ ให้เปิดบลูทู ธ บนมือถือของคุณ ไปที่การตั้งค่าและจับคู่มือถือของคุณกับโมดูล HC-05 หลังจากทำสิ่งนี้ให้กดปุ่ม Bluetooth ในแอพ หากเปลี่ยนเป็นสีเขียวแสดงว่าแอปเชื่อมต่อแล้วและพร้อมที่จะใช้งานแขนหุ่นยนต์ มีแถบเลื่อนเพื่อตั้งค่าการทำงานของแขนหุ่นยนต์ตามที่ต้องการ

ขั้นตอนที่ 6: ทำความเข้าใจรหัส

รหัสนี้แสดงความคิดเห็นได้ดีและเข้าใจง่าย Bur still อธิบายสั้น ๆ ด้านล่าง

1. ในการเริ่มต้นจะมีการรวมไลบรารีเพื่อเขียนรหัสเพื่อใช้งานเซอร์โวมอเตอร์ ห้องสมุดอื่น คณิตศาสตร์ hรวมอยู่ในการดำเนินการทางคณิตศาสตร์ที่แตกต่างกันในรหัส นอกจากนี้ยังมีการเริ่มต้นวัตถุสี่ชิ้นเพื่อใช้สำหรับเซอร์โวมอเตอร์ทั้งสี่ตัว

# รวม  // ไลบรารี arduino #include  // ไลบรารี c มาตรฐาน #define PI 3.141 Servo baseServo; เซอร์โว shoulderServo; เซอร์โวข้อศอกเซอร์โว; Servo gripperServo; คำสั่ง int;

2. จากนั้นโครงสร้างจะถูกประกาศเพื่อรับค่าสำหรับเซอร์โวมอเตอร์ฐานไหล่และข้อศอก

Struct jointAngle {// การแยกโครงสร้าง int ฐาน; int ไหล่; int ข้อศอก; };

3. หลังจากนี้ตัวแปรบางตัวจะเริ่มต้นเพื่อเก็บกริปความล่าช้าและตำแหน่งของเซอร์โวมอเตอร์ที่ต้องการ ความเร็วถูกกำหนดให้เป็น 15 และวัตถุถูกสร้างขึ้นเพื่อรับค่าของมุมในโครงสร้าง

int ที่ต้องการ int gripperPos; int ที่ต้องการ int servoSpeed ​​= 15; int พร้อม = 0; Struct jointAngle ที่ต้องการ // มุมที่ต้องการของเซอร์โว

4. การตั้งค่าเป็นโมฆะ ()เป็นฟังก์ชันที่ใช้ในการตั้งค่าพินของ Arduino เป็น INPUT หรือ OUTPUT ในฟังก์ชั่นนี้เราได้ประกาศว่าพินของมอเตอร์จะเชื่อมต่อกับพินใดของ Arduino นอกจากนี้ยังมั่นใจได้ว่า Arduino ไม่อ่านอินพุตแบบอนุกรมนานเกินไป ตำแหน่งเริ่มต้นและอัตราการส่งข้อมูลจะถูกตั้งค่าไว้ในฟังก์ชันนี้ด้วย Baud Rate คือความเร็วที่บอร์ดไมโครคอนโทรลเลอร์จะสื่อสารกับเซอร์โวและโมดูลบลูทู ธ ที่ต่ออยู่

การตั้งค่าเป็นโมฆะ () {Serial.begin (9600); baseServo.attach (9); // แนบเซอร์โวฐานบนพิน 9 เข้ากับวัตถุเซอร์โว shoulderServo.attach (10); // แนบเซอร์โวไหล่บนพิน 9 เข้ากับข้อศอกวัตถุเซอร์โวที่แนบมา (11); // แนบเซอร์โวข้อศอกที่พิน 9 เข้ากับวัตถุเซอร์โว GripperServo.attach (6); // แนบเซอร์โวกริปเปอร์ที่พิน 9 เข้ากับเซอร์โวอ็อบเจ็กต์ Serial.setTimeout (50); // ตรวจสอบให้แน่ใจว่า arduino ไม่อ่านอนุกรมเป็นเวลานานเกินไป Serial.println ("started"); baseServo.write (90); // ตำแหน่งเริ่มต้นของเซอร์โว shoulderServo.write (150); ข้อศอกServo.write (110); พร้อม = 0; }

5. servoParallelControl ()เป็นฟังก์ชั่นที่ใช้ตรวจจับตำแหน่งปัจจุบันของแขนหุ่นยนต์และเคลื่อนย้ายตามคำสั่งที่กำหนดผ่านแอพมือถือ หากตำแหน่งปัจจุบันน้อยกว่าความเป็นจริงแขนจะขยับขึ้นและในทางกลับกัน ฟังก์ชันนี้จะส่งกลับค่าของตำแหน่งปัจจุบันและความเร็วของเซอร์โว

int servoParallelControl (int thePos, Servo theServo, int theSpeed) {int startPos = theServo.read (); // อ่าน pos int ปัจจุบัน newPos = startPos; // int theSpeed ​​= ความเร็ว; // กำหนดตำแหน่งที่ตำแหน่งตามคำสั่ง // หากตำแหน่งปัจจุบันน้อยกว่าที่การเลื่อนขึ้นจริง if (startPos <(thePos-5)) {newPos = newPos + 1; theServo.write (newPos); ล่าช้า (theSpeed); กลับ 0; } else if (newPos> (thePos + 5)) {newPos = newPos - 1; theServo.write (newPos); ล่าช้า (theSpeed); กลับ 0; } else {กลับ 1; }}

6. ห่วงเป็นโมฆะ ()เป็นฟังก์ชันที่ทำงานซ้ำ ๆ ในวง ฟังก์ชั่นนี้อ่านข้อมูลที่มาตามลำดับและเก็บมุมของเซอร์โวแต่ละตัวในโครงสร้าง ในขั้นต้นสถานะของเซอร์โวทั้งหมดจะถูกตั้งค่าเป็นศูนย์ นี่คือฟังก์ชั่น servoParallelControl ()ถูกเรียกและพารามิเตอร์จะถูกส่งผ่านไป ฟังก์ชันนี้จะคืนค่าและจะถูกเก็บไว้ในตัวแปรสถานะ

โมฆะ loop () {if (Serial.available ()) {ready = 1; requiredAngle.base = Serial.parseInt (); requiredAngle.shoulder = Serial.parseInt (); requiredAngle.elbow = Serial.parseInt (); ที่ต้องการ Grip = Serial.parseInt (); wantDelay = Serial.parseInt (); ถ้า (Serial.read () == '\ n') {// ถ้าไบต์สุดท้ายคือ 'd' ให้หยุดอ่านและดำเนินการคำสั่ง 'd' ย่อมาจาก 'done' Serial.flush (); // ล้างคำสั่งอื่น ๆ ทั้งหมดที่ซ้อนอยู่ในบัฟเฟอร์ // ส่งคำสั่ง Serial.print ('d'); }} int status1 = 0; int สถานะ 2 = 0; int สถานะ 3 = 0; int สถานะ 4 = 0; int เสร็จแล้ว = 0; ในขณะที่ (done == 0 && ready == 1) {// ย้ายเซอร์โวไปยังตำแหน่งที่ต้องการ status1 = servoParallelControl (neededAngle.base, baseServo, neededDelay); status2 = servoParallelControl (neededAngle.shoulder, shoulderServo, ที่ต้องการDelay); status3 = servoParallelControl (ที่ต้องการ Angle.elbow, ElbowServo, ที่ต้องการDelay); status4 = servoParallelControl (ที่ต้องการ Grip, gripperServo, neededDelay); ถ้า (status1 == 1 & status2 == 1 & status3 == 1 & status4 == 1) {done = 1}} // end of while}

ตอนนี้นี่เป็นขั้นตอนทั้งหมดของการสร้างแขนหุ่นยนต์ หลังจากเบิร์นโค้ดและดาวน์โหลดแอพหุ่นยนต์จะทำงานได้ดีอย่างสมบูรณ์เมื่อเลื่อนแถบเลื่อนบนแอพ คุณยังสามารถตั้งโปรแกรมให้แขนทำงานอัตโนมัติเพื่อทำงานที่ต้องการได้

Facebook Twitter Google Plus Pinterest