รถของเล่นควบคุมด้วย Bluetooth ใช้ Arduino
หลังจากการพัฒนาที่นิยมไม่กี่โครงการหุ่นยนต์เหมือนหุ่นยนต์สายลูกศิษย์ , ขอบหลีกเลี่ยงหุ่นยนต์ , DTMF หุ่นยนต์ , ท่าทางการควบคุมหุ่นยนต์อื่น ๆ ในโครงการนี้เราจะไปพัฒนาบลูทูธ ควบคุมรถโบ ที่นี่เราใช้โมดูลบลูทูธ เพื่อควบคุมรถและเป็นแอปพลิเคชันที่ใช้ Android
|
ส่วนประกอบ
บลูทูธควบคุมรถถูกควบคุมโดยใช้โทรศัพท์มือถือ Android แทนวิธีอื่นใดเช่นปุ่มท่าทางเป็นต้นที่นี่ต้องสัมผัสปุ่มในโทรศัพท์ Android เพื่อควบคุมรถไปข้างหน้าย้อนกลับทิศทางซ้ายและขวา ดังนั้นที่นี่โทรศัพท์ Android จะใช้เป็นอุปกรณ์ส่งสัญญาณและโมดูล Bluetooth วางอยู่ในรถจะใช้เป็นผู้รับ โทรศัพท์ Android จะส่งคำสั่งโดยใช้บลูทูธ ในตัวกับรถยนต์เพื่อให้สามารถเคลื่อนไปในทิศทางที่ต้องการเช่นการเดินหน้าย้อนกลับเลี้ยวซ้ายเลี้ยวขวาและหยุด
โมดูลบลูทูธ
โมดูล HC Bluetooth ประกอบไปด้วยสองสิ่งคือโมดูลอินเทอร์เฟซแบบบลูทูธ และอะแดปเตอร์บลูทูธ โมดูลอนุกรม Bluetooth ใช้สำหรับแปลงพอร์ตอนุกรมเป็น Bluetooth
วิธีการใช้งานโมดูลบลูทูธ
คุณสามารถใช้โมดูลบลูทูธ ได้โดยตรงหลังจากซื้อจากตลาดเนื่องจากไม่จำเป็นต้องเปลี่ยนการตั้งค่าใด ๆ ของโมดูล Bluetoothค่าเริ่มต้นของโมดูลบลูทูธ ใหม่คือ 9600 bps คุณเพียงแค่ต้องเชื่อมต่อ rx และ tx กับคอนโทรลเลอร์หรือตัวแปลงอนุกรมและให้แหล่งจ่ายไฟ 5 โวลต์ dc ที่กำหนดให้กับโมดูล
โมดูลบลูทูธ มีสองโหมดหนึ่งคือโหมดต้นแบบและโหมดที่สองคือโหมดทาส ผู้ใช้สามารถตั้งค่าโหมดใดก็ได้โดยใช้คำสั่ง AT บางคำ แม้ผู้ใช้สามารถตั้งค่าของโมดูลโดยใช้คำสั่ง AT ต่อไปนี้เป็นคำสั่งใช้จะได้รับ:
ก่อนอื่นผู้ใช้ต้องเข้าสู่โหมด AT ด้วยอัตราความเร็วในการรับส่งข้อมูล 38400 bps โดยกดปุ่ม EN ที่โมดูลบลูทูธ หรือโดยให้ระดับ HIGH ที่ EN PIN หมายเหตุ: คำสั่งทั้งหมดควรลงท้ายด้วย \ r \ n (0x0d และ 0x0a) หรือ ENTER KEY จากแป้นพิมพ์
หลังจากนั้นถ้าคุณส่ง AT ไปที่โมดูลโมดูลจะตอบสนองด้วยตกลง
AT → Test Command
AT + ROLE = 0 →เลือกโหมด Slave
AT + ROLE = 1 →เลือกโหมดต้นแบบ
AT + NAME = xyz →ตั้งชื่อบลูทูธ
AT + PSWD = xyz →ตั้งรหัสผ่าน
AT + UART = <value1>, <value2>, <value3> →ตั้งอัตราการถ่ายโอนข้อมูล
เช่น. ที่ + UART = 9600,0,0
Pin คำอธิบายของ accelerometer
อธิบายการทำงาน
ในโครงการนี้เราได้ใช้รถของเล่นเพื่อสาธิตที่นี่เราได้เลือกรถของเล่นแบบเรดิโอด้วยคุณสมบัติพวงมาลัยซ้ายขวา หลังจากซื้อรถคันนี้เราได้เปลี่ยนวงจร RF ด้วยวงจร Arduinoของเราแล้ว รถคันนี้มีมอเตอร์ dc สองตัวที่ด้านหน้าและด้านหลัง มอเตอร์ด้านหน้าจะใช้สำหรับให้ทิศทางรถหมายถึงการหันไปทางซ้ายหรือขวา (เช่นคุณสมบัติของระบบบังคับเลี้ยวจริง) และมอเตอร์ด้านหลังใช้สำหรับขับรถไปข้างหน้าและถอยหลัง โมดูลบลูทูธ ใช้เพื่อรับคำสั่งจากโทรศัพท์ Android และ Arduino UNO ใช้สำหรับควบคุมระบบทั้งหมด
บลูทูธควบคุมรถเคลื่อนที่ตามปุ่มที่สัมผัสในแอนดรอยด์บลูทูธแอปมือถือในการใช้โปรเจกต์นี้ก่อนอื่นเราต้องดาวน์โหลดแอปพลิเคชันรูปแบบแอปพลิเคชัน Google Play สโตร์ เราสามารถใช้แอปพลิเคชันบลูทูธใด ๆ ที่สนับสนุนหรือสามารถส่งข้อมูลต่อไปนี้คือชื่อแอปบางส่วนที่อาจทำงานได้อย่างถูกต้อง
- Bluetooth Spp pro
- ตัวควบคุม Bluetooth
หลังจากติดตั้งแอปพลิเคชันแล้วคุณต้องเปิดและค้นหาอุปกรณ์บลูทูธแล้วเลือกอุปกรณ์บลูทูธที่ต้องการแล้วกำหนดค่าคีย์ ที่นี่ในโครงการนี้เราได้ใช้แอพพลิเคบลูทูธควบคุม
หลังจากตั้งค่าคีย์กด ok
เมื่อเราแตะปุ่มไปข้างหน้าในแอพพลิเคชัน Bluetooth controller รถจะเริ่มเคลื่อนที่ไปข้างหน้าและเคลื่อนที่ต่อไปจนกว่าจะมีคำสั่งต่อไป
เมื่อเราแตะปุ่มย้อนกลับในแอปพลิเคชัน Bluetooth controller รถจะเริ่มเคลื่อนที่ไปในทิศทางย้อนกลับและเคลื่อนที่ต่อไปจนกว่าจะถึงคำสั่งถัดไป
เมื่อเราแตะปุ่มซ้ายในแอปพลิเคชัน Bluetooth controller รถจะเริ่มเคลื่อนที่ไปทางซ้ายและเคลื่อนที่ต่อไปจนกว่าคำสั่งถัดไปจะมาถึง ในสภาพนี้มอเตอร์ด้านหน้าจะหมุนล้อหน้าไปทางซ้ายและมอเตอร์หลังจะวิ่งไปข้างหน้า
เมื่อเราแตะปุ่มขวาในแอปพลิเคชันตัวควบคุม Bluetooth รถจะเริ่มเคลื่อนที่ไปในทิศทางที่ถูกต้องและเคลื่อนไปทางขวาจนกว่าจะมีคำสั่งต่อไป ในสภาพนี้มอเตอร์ด้านหน้าจะหมุนล้อหน้าไปทางขวาและมอเตอร์หลังจะทำงานในทิศทางไปข้างหน้า
และโดยการกดปุ่มหยุดเราสามารถหยุดรถได้
แผนผังวงจรและคำอธิบาย
แผนภาพวงจรสำหรับรถบลูทูธควบคุมจะแสดงในรูปข้างต้น คนขับมอเตอร์เชื่อมต่อกับ arduino เพื่อขับรถ ขาเข้าขาเข้าของมอเตอร์ 2, 7, 10 และ 15 เชื่อมต่อกับหมายเลขดิจิตอล 12, 11, 10 และ 9 ตามลำดับของ arduino ที่นี่เราได้ใช้มอเตอร์ DC สองตัวกับคนขับรถซึ่งมอเตอร์ตัวหนึ่งเชื่อมต่อที่ขาขาออกของมอเตอร์ 3 และ 6 และมอเตอร์ตัวอื่นเชื่อมต่อที่ 11 และ 14 แบตเตอรี่ 6 โวลต์ยังใช้เพื่อขับเคลื่อนมอเตอร์สำหรับขับมอเตอร์แท่ง rx และ tx ของโมดูลบลูทูธเชื่อมต่อโดยตรงที่ tx และ rx ของ Arduino และ vcc และสายดินของโมดูลบลูทูธ เชื่อมต่อที่ +5 โวลต์และ gnd ของ Arduino และใช้แบตเตอรี่ 9 โวลต์เพื่อจ่ายกระแสไฟวงจรที่ขา Vin ของ Arduino
คำอธิบายโครงการ
ในโปรแกรมแรกเราได้กำหนดขาออกสำหรับมอเตอร์
# กำหนด m11 11 // มอเตอร์ด้านหลัง #define m12 12 #define m21 10 // มอเตอร์ด้านหน้า #define m22 9
จากนั้นในเซ็ตอัพเราให้คำแนะนำในการปักหมุด
การตั้งค่าเป็นโมฆะ () { Serial.begin (9600); pinMode (m11, OUTPUT); pinMode (m12, OUTPUT); pinMode (m21, OUTPUT); pinMode (m22, เอาท์พุท); }
หลังจากนี้เราจะอ่านข้อมูลเข้าโดยใช้โมดูลการสื่อสารแบบอนุกรมของ Bluetooth และดำเนินการตามขั้นตอนดังกล่าว
void loop () { ในขณะที่ (Serial.available ()) { char ch = Serial.read (); STR [ผม ++] = CH; ถ้า (STR [I-1] == '1') { Serial.println ( "ไปข้างหน้า"); ไปข้างหน้า (); i = 0; } else if (str [i-1] == '2') { Serial.println ( "ซ้าย"); ขวา(); i = 0; } else if (str [i-1] == '3') { Serial.println ( "ขวา"); ซ้าย(); i = 0; }
จากนั้นเราได้สร้างฟังก์ชันสำหรับทิศทางต่างๆของรถ มีห้าเงื่อนไขสำหรับรถยนต์ที่มีการควบคุมบลูทูธนี้ซึ่งใช้ในการระบุทิศทาง:
รหัส
# ระบุ m11 11 // มอเตอร์ด้านหลัง
# กำหนด m12 12 # ระบุ m21 10 // มอเตอร์ด้านหน้า #define m22 9
char str [2], i;
โมฆะไปข้างหน้า ()
{ digitalWrite (m11, LOW); digitalWrite (m12, LOW); digitalWrite (m21, สูง); digitalWrite (m22, LOW); }
โมฆะถอยหลัง ()
{ digitalWrite (m11, LOW); digitalWrite (m12, LOW); digitalWrite (m21, LOW); digitalWrite (m22, สูง); }
ถือเป็นโมฆะทางซ้าย ()
{ digitalWrite (m11, HIGH); digitalWrite (m12, LOW); ล่าช้า (100); digitalWrite (m21, สูง); digitalWrite (m22, LOW); }
สิทธิเป็นโมฆะ ()
{ digitalWrite (m11, LOW); digitalWrite (m12, สูง); ล่าช้า (100); digitalWrite (m21, สูง); digitalWrite (m22, LOW); }
โมฆะ Stop ()
{ digitalWrite (m11, LOW); digitalWrite (m12, LOW); digitalWrite (m21, LOW); digitalWrite (m22, LOW); }
การตั้งค่าเป็นโมฆะ ()
{ Serial.begin (9600); pinMode (m11, OUTPUT); pinMode (m12, OUTPUT); pinMode (m21, OUTPUT); pinMode (m22, เอาท์พุท); }
void loop ()
{ ขณะที่ (Serial.available ()) { char ch = Serial.read (); STR [ผม ++] = CH; if (str [i-1] == '1') { Serial.println ("Forward"); ไปข้างหน้า (); i = 0; }
else if (str [i-1] == '2')
{ Serial.println ("ซ้าย"); ขวา(); i = 0; }
else if (str [i-1] == '3')
{ Serial.println ("Right"); ซ้าย(); i = 0; } else if (str [i-1] == '4') { Serial.println ("ย้อนกลับ"); ย้อนกลับ(); i = 0; }
else if (str [i-1] == '5')
{ Serial.println ("หยุด"); หยุด(); i = 0; } ล่าช้า (100); } }
วีดีโอ
|
ไม่มีความคิดเห็น:
แสดงความคิดเห็น