- วัสดุที่จำเป็น
- โมดูลบลูทู ธ HC-06
- แผนภูมิวงจรรวม
- การกำหนดค่าแอป Roboremo สำหรับการควบคุม Servo:
- รหัสและคำอธิบาย
- การทำงานของ Servo motor Control โดยใช้ Bluetooth:
การใช้เซอร์โวมอเตอร์เป็นเรื่องปกติในหุ่นยนต์เพื่อการควบคุมที่แม่นยำ ที่นี่ในบทช่วยสอนนี้เราจะแสดงวิธีใช้เซอร์โวมอเตอร์แบบไร้สายกับ Arduino UNOและอุปกรณ์ Android ผ่านการเชื่อมต่อบลูทู ธ เราควบคุมอยู่แล้วเซอร์โวกับ Arduino เวลานี้เรามีการควบคุม Servo Motor ใช้ Arduino และบลูทู ธ
วัสดุที่จำเป็น
- Arduino UNO
- โมดูลบลูทู ธ HC-05 หรือ HC-06
- เซอร์โวมอเตอร์
- แอพ Roboremo จาก Playstore
- เขียงหั่นขนม
- สายเชื่อมต่อ
โมดูลบลูทู ธ HC-06
บลูทู ธ สามารถทำงานในสองโหมดต่อไปนี้:
- โหมดคำสั่ง
- โหมดการทำงาน
ใน โหมดคำสั่ง เราจะสามารถกำหนดค่าคุณสมบัติบลูทู ธ เช่นชื่อสัญญาณบลูทู ธ รหัสผ่านอัตราการรับส่งข้อมูลการทำงานเป็นต้น โหมดการทำงาน คือ โหมด ที่เราจะสามารถส่งและรับข้อมูลระหว่างไมโครคอนโทรลเลอร์ PIC และโมดูลบลูทู ธ ดังนั้นในบทช่วยสอนนี้เราจะเล่นกับโหมดการทำงานเท่านั้น โหมดคำสั่งจะเหลือไว้ที่การตั้งค่าเริ่มต้น ชื่ออุปกรณ์จะเป็น HC-05 (ฉันใช้ HC-06) และรหัสผ่านจะเป็น 0000 หรือ 1234 และที่สำคัญที่สุดคืออัตราการส่งข้อมูลเริ่มต้นสำหรับโมดูลบลูทู ธ ทั้งหมดคือ 9600
โมดูลทำงานบนแหล่งจ่าย 5V และพินสัญญาณทำงานที่ 3.3V ดังนั้นจึงมีตัวควบคุม 3.3V อยู่ในโมดูล ดังนั้นเราไม่จำเป็นต้องกังวลเกี่ยวกับเรื่องนี้ จากหกพินจะใช้เพียงสี่พินในโหมดการทำงาน ตารางการเชื่อมต่อพินแสดงไว้ด้านล่าง
ส. เลขที่ | ปักพินในบอร์ด HC-05 / HC-06 | ชื่อพินใน MCU | หมายเลขพินใน PIC |
1 | Vcc | Vdd | 31 เซนต์ ขา |
2 | Vcc | Gnd | 32 nd พิน |
3 | Tx | RC6 / Tx / CK | 25 TH ขา |
4 | Rx | RC7 / Rx / DT | 26 TH ขา |
5 | สถานะ | NC | NC |
6 | EN (เปิดใช้งาน) | NC | NC |
ตรวจสอบโครงการอื่น ๆ ของเราเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับโมดูลบลูทู ธ HC-05 กับไมโครคอนโทรลเลอร์อื่น ๆ:
- รถของเล่นที่ควบคุมด้วยบลูทู ธ โดยใช้ Arduino
- ระบบโฮมอัตโนมัติที่ควบคุมด้วยบลูทู ธ โดยใช้ 8051
- ไฟที่ควบคุมด้วยเสียงโดยใช้ Raspberry Pi
- สมาร์ทโฟนควบคุมวิทยุ FM โดยใช้ Arduino และการประมวลผล
- การเชื่อมต่อโมดูลบลูทู ธ HC-06 กับไมโครคอนโทรลเลอร์ PIC
ตรวจสอบโครงการที่เกี่ยวข้องกับบลูทู ธ ทั้งหมดได้ที่นี่
แผนภูมิวงจรรวม
แผนภาพวงจรสำหรับโครงการArduino Bluetooth Servo Motor Control มีดังต่อไปนี้:
การกำหนดค่าแอป Roboremo สำหรับการควบคุม Servo:
ขั้นตอนที่ 1: -ดาวน์โหลดแอป Roboremo จาก Android Play Store และติดตั้งลงในสมาร์ทโฟนของคุณ หลังจากติดตั้งแล้วคุณจะเห็นหน้าต่างแอพดังแสดงในรูปที่ 1 และเมื่อคลิกที่ปุ่ม 'เมนู' คุณจะเห็นหน้าต่างดังรูปที่ 2 ด้านล่าง:
ขั้นตอนที่ 2: -จากนั้นคลิกที่ปุ่ม เชื่อมต่อ และคุณจะเห็นหน้าต่างที่แสดงในรูปที่ 3 ด้านล่างจากนั้นคุณต้องเลือก ' Bluetooth RFCOMM' จากนั้นคุณจะสามารถเชื่อมต่อโมดูลบลูทู ธ HC-06 กับแอป Android ของคุณ 'Roboremo'
ขั้นตอนที่ 3: -หลังจากเชื่อมต่อกับโมดูลบลูทู ธ HC-06 แล้วให้กลับมาที่หน้าต่างรูปที่ 2 จากนั้นคลิกที่ ' แก้ไข ui ' เพื่อสร้างส่วนต่อประสานผู้ใช้ตามที่คุณต้องการ
เมื่อคลิกที่ 'แก้ไข ui' คุณจะเห็นหน้าต่างที่แสดงในรูปที่ 1 อีกครั้งจากนั้นคลิกที่ใดก็ได้บนหน้าจอคุณจะเห็นหน้าต่างแอพเช่นรูปที่ 4 และเลือก ' ปุ่ม ' เพื่อรับโครงสร้างปุ่ม
ขั้นตอนที่ 4: -หลังจากเลือกปุ่มคุณจะได้รับโครงสร้างปุ่มบนหน้าจอเพื่อแก้ไข คุณสามารถปรับขนาดและย้ายโครงสร้างที่ใดก็ได้บนหน้าจอ ตอนนี้สำหรับการตั้งค่าที่จะส่งเมื่อคลิกผ่านบลูทู ธ คุณได้ 'set press action' (ดังแสดงในรูปที่ 6) และพิมพ์ค่าที่คุณต้องการส่งจากปุ่มนั้น ๆ เช่นเรากำลังส่ง '1' เพื่อหมุนเซอร์โวโดยกดปุ่ม 'เริ่ม' ในแอปพลิเคชัน Roboremo สำหรับ Android
คุณสามารถตรวจสอบค่าทั้งหมดที่ส่งไปเมื่อคลิกที่ปุ่มต่างๆในตารางที่ระบุในภายหลังส่วน
ขั้นตอนที่ 5: -ในที่สุดเราก็มีUser Interface เพื่อควบคุมเซอร์โวมอเตอร์โดยใช้สมาร์ทโฟน
รหัสและคำอธิบาย
รหัสที่สมบูรณ์สำหรับ Arduino Control Servo Motor ผ่าน Bluetoothจะได้รับในตอนท้าย
Arduino มีไลบรารีสำหรับเซอร์โวมอเตอร์และจัดการทุกสิ่งที่เกี่ยวข้องกับ PWM เพื่อหมุนเซอร์โวคุณเพียงแค่ต้องป้อนมุมที่คุณต้องการหมุนและมีฟังก์ชัน servo1.write (มุม); ซึ่งจะหมุนเซอร์โวไปยังมุมที่ต้องการ
ดังนั้นที่นี่เราจะเริ่มต้นด้วยการกำหนดไลบรารีสำหรับ Servo motor และ Software Serial library ใช้สำหรับกำหนดพิน Rx และ Tx
# รวม
ในด้านล่างของรหัสที่เราจะเริ่มต้นหมุด Arduino สำหรับ Rx Tx และ กำหนดตัวแปรสำหรับเซอร์โวและสิ่งอื่น ๆ
เซอร์โว myServo; int TxD = 11; int RxD = 10; int เซอร์โว int เซอร์โว; int new1; SoftwareSerial Bluetooth (TxD, RxD);
ตอนนี้ติดตั้งทุกตัวแปรและส่วนประกอบในระยะเริ่มแรกที่นี่เราได้แนบเซอร์โวที่ 9 THขาของ Arduino และทำให้ตำแหน่งเริ่มต้นของเซอร์โวถึง 0 องศา อัตราการส่งข้อมูลสำหรับการสื่อสารแบบอนุกรมและบลูทู ธ ได้รับการตั้งค่าเป็น 9600
การตั้งค่าเป็นโมฆะ () { int pos = 0; myServo.attach (9); myServo.write (0); Serial.begin (9600); // เริ่มการสื่อสารแบบอนุกรมที่ 9600bps bluetooth.begin (9600); }
ในฟังก์ชัน void loop Arduino จะตรวจสอบค่าขาเข้าตลอดเวลาและหมุนเซอร์โวตามค่าที่ได้รับจาก Smart phone ค่าทั้งหมดจะได้รับโดยใช้ Serial Communication
ถ้าค่าเป็น 0 เซอร์โวจะหมุนเป็น 0 องศา ในทำนองเดียวกันถ้าเราส่ง 45, 90, 135 และ 180 จากแอปพลิเคชั่น Bluetooth เซอร์โวจะหมุนเป็นมุม 45, 90, 135 และ 180 องศาตามลำดับ
โมฆะ loop () { if (bluetooth.available ()) { String value = bluetooth.readString (); เซอร์โวโพซิชั่น = value.toInt (); ถ้า (value.toInt () == 0) { Serial.println (เซอร์โวโพซิชั่น); myServo.write (0); } if (value.toInt () == 45) { Serial.println (เซอร์โวโพซิชั่น); myServo.write (45); } if (value.toInt () == 90) { Serial.println (เซอร์โวโพซิชั่น); myServo.write (90); } if (value.toInt () == 135) { Serial.println (เซอร์โวโพซิชั่น); myServo.write (135); } if (value.toInt () == 180) { Serial.println (เซอร์โวโพซิชั่น); myServo.write (180); }
หากเราส่งค่า '1' โดยกดปุ่ม Start เซอร์โวจะหมุนไปเรื่อย ๆ จนกว่าจะกดปุ่ม หยุด ที่นี่เรากำลังส่ง '2' เมื่อกดปุ่ม หยุด ซึ่ง Arduino จะอ่านและมันจะทำลายลูป while และเซอร์โวจะหยุดลง
ในขณะที่ (value.toInt () == 1) {if (bluetooth.available ()) {value = bluetooth.readString (); Serial.println (ค่า); ถ้า (value.toInt () == 2) {Serial.println ("YYY"); หยุดพัก; }} เซอร์โว ++; ล่าช้า (30); Serial.println (เซอร์โว); myServo.write (เซอร์โว); ถ้า (เซอร์โว == 180) {เซอร์โว = 0; แตก;}}}}
การทำงานของ Servo motor Control โดยใช้ Bluetooth:
ในโครงการนี้เรากำลังควบคุม Servo Motor โดยใช้แอปพลิเคชัน Android “ Roboremo” ในอินเทอร์เฟซของแอปพลิเคชันนี้เราได้สร้างปุ่ม 5 ปุ่มเพื่อควบคุมเซอร์โวมอเตอร์ตามที่อธิบายไว้ก่อนหน้านี้ การทำงานของทุกปุ่มแสดงไว้ในตารางด้านล่าง:
ส. |
ชื่อปุ่ม |
ส่งมูลค่า |
คำอธิบาย |
1. |
เริ่ม |
1 |
ปุ่มนี้ใช้เพื่อเริ่มหมุนเซอร์โวจาก0⁰ถึง180⁰ |
2. |
หยุด |
2 |
ปุ่มนี้ใช้เพื่อหยุดเซอร์โว ณ จุดใดก็ได้ |
3. |
0⁰ |
0 |
ปุ่มนี้ใช้เพื่อหมุนเซอร์โวเป็น0⁰ |
4. |
90⁰ |
90 |
ปุ่มนี้ใช้เพื่อหมุนเซอร์โวไปที่90⁰ |
5. |
180⁰ |
180 |
ปุ่มนี้ใช้เพื่อหมุนเซอร์โวไปที่180⁰ |
ดังนั้นเมื่อกดปุ่มเหล่านี้บนแอป Android Roboremo ข้อมูลจะถูกส่งผ่านบลูทู ธ ของสมาร์ทโฟนไปยังโมดูลบลูทู ธ HC-06 จากข้อมูลโมดูล HC-06 นั้นได้รับจาก Arduino และ Arduino จะหมุน Servo ที่มุมที่กำหนดไว้ในรหัสสำหรับปุ่มเฉพาะ เราได้เขียนรหัสสำหรับมุม 45 และ 135 ด้วย แต่เนื่องจากข้อ จำกัด ของแอป Roboremo คุณสามารถสร้างปุ่มได้เพียง 5 ปุ่มดังนั้นเราจึงข้ามสองปุ่มไป
นี่คือวิธีที่คุณสามารถส่งข้อมูลจากสมาร์ทโฟนไปยัง Arduino โดยใช้บลูทู ธ เพื่อควบคุมเซอร์โวแบบไร้สาย สามารถใช้กับแอพพลิเคชั่นมากมายเช่นรถของเล่นหุ่นยนต์เป็นต้น