วันอังคารที่ 25 กันยายน พ.ศ. 2561

โปรเจคที่20 รถของเล่นควบคุมด้วย Bluetooth ใช้ Arduino

บลูทู ธ ควบคุมรถ Robo ใช้ Arduino
 รถของเล่นควบคุมด้วย Bluetooth ใช้ Arduino

หลังจากการพัฒนาที่นิยมไม่กี่โครงการหุ่นยนต์เหมือนหุ่นยนต์สายลูกศิษย์ , ขอบหลีกเลี่ยงหุ่นยนต์ , DTMF หุ่นยนต์ , ท่าทางการควบคุมหุ่นยนต์อื่น ๆ ในโครงการนี้เราจะไปพัฒนาบลูทูธ ควบคุมรถโบ ที่นี่เราใช้โมดูลบลูทูธ เพื่อควบคุมรถและเป็นแอปพลิเคชันที่ใช้ Android

ส่วนประกอบ


  • Arduino UNO
  • มอเตอร์กระแสตรง
  • โมดูล Bluetooth HC-05
  • มอเตอร์ไดร์เวอร์ L293D
  • แบตเตอรี่ 9 โวลต์และแบตเตอรี่ 6 โวลต์
  • ขั้วต่อแบตเตอรี่
  • รถของเล่น


บลูทูธควบคุมรถถูกควบคุมโดยใช้โทรศัพท์มือถือ 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
  1. STATE →เปิด
  2. Rx →ขารับสัญญาณอนุกรม
  3. Tx →พินส่งสัญญาณแบบอนุกรม
  4. GND → ground
  5. Vcc → + 5volt dc
  6. EN →เพื่อเข้าสู่โหมด AT


อธิบายการทำงาน

ในโครงการนี้เราได้ใช้รถของเล่นเพื่อสาธิตที่นี่เราได้เลือกรถของเล่นแบบเรดิโอด้วยคุณสมบัติพวงมาลัยซ้ายขวา หลังจากซื้อรถคันนี้เราได้เปลี่ยนวงจร RF ด้วยวงจร Arduinoของเราแล้ว รถคันนี้มีมอเตอร์ dc สองตัวที่ด้านหน้าและด้านหลัง มอเตอร์ด้านหน้าจะใช้สำหรับให้ทิศทางรถหมายถึงการหันไปทางซ้ายหรือขวา (เช่นคุณสมบัติของระบบบังคับเลี้ยวจริง) และมอเตอร์ด้านหลังใช้สำหรับขับรถไปข้างหน้าและถอยหลัง โมดูลบลูทูธ ใช้เพื่อรับคำสั่งจากโทรศัพท์ Android และ Arduino UNO ใช้สำหรับควบคุมระบบทั้งหมด
บลูทู ธ ควบคุม robo รถแผนภาพบล็อก
บลูทูธควบคุมรถเคลื่อนที่ตามปุ่มที่สัมผัสในแอนดรอยด์บลูทูธแอปมือถือในการใช้โปรเจกต์นี้ก่อนอื่นเราต้องดาวน์โหลดแอปพลิเคชันรูปแบบแอปพลิเคชัน Google Play สโตร์ เราสามารถใช้แอปพลิเคชันบลูทูธใด ๆ ที่สนับสนุนหรือสามารถส่งข้อมูลต่อไปนี้คือชื่อแอปบางส่วนที่อาจทำงานได้อย่างถูกต้อง
- Bluetooth Spp pro
- ตัวควบคุม Bluetooth

หลังจากติดตั้งแอปพลิเคชันแล้วคุณต้องเปิดและค้นหาอุปกรณ์บลูทูธแล้วเลือกอุปกรณ์บลูทูธที่ต้องการแล้วกำหนดค่าคีย์ ที่นี่ในโครงการนี้เราได้ใช้แอพพลิเคบลูทูธควบคุม
  1. ดาวน์โหลดและติดตั้ง Bluetooth Controller
  2. เปิด Bluetooth มือถือ
  3. เปิดแอปพลิเคชันบลูทูธตัวควบคุมแล้ว
  4. กดสแกน
  5. เลือกอุปกรณ์บลูทูธ ที่ต้องการ
  6. ตอนนี้ตั้งค่าคีย์โดยการกดปุ่มตั้งบนหน้าจอเมื่อต้องการตั้งค่าคีย์เราจำเป็นต้องกดปุ่มตั้งค่าและตั้งค่าตามภาพด้านล่าง:
แอพพลิเคชัน Bluetooth Controller Android
หลังจากตั้งค่าคีย์กด 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;
    }
จากนั้นเราได้สร้างฟังก์ชันสำหรับทิศทางต่างๆของรถ มีห้าเงื่อนไขสำหรับรถยนต์ที่มีการควบคุมบลูทูธนี้ซึ่งใช้ในการระบุทิศทาง:
ปุ่มสัมผัสในแอพพลิเคชันตัวควบคุม Bluetooth
 เอาต์พุตสำหรับมอเตอร์ด้านหน้าเพื่อให้ทิศทาง

เอาต์พุตสำหรับมอเตอร์ด้านหลังเพื่อเลื่อนไปข้างหน้าหรือย้อนกลับ

ปุ่ม
M11
M12
M21
M22
ทิศทาง
หยุด
0
0
0
0
หยุด
ข้างหน้า
0
0
0
1
ข้างหน้า
ย้อนกลับ
0
0
1
0
ย้อนกลับ
ขวา
1
0
0
1
ขวา
ซ้าย
0
1
0
1
ซ้าย
รหัส
# ระบุ 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); 
  } 
}
วีดีโอ



ไม่มีความคิดเห็น:

แสดงความคิดเห็น