กลับไปหน้ารวมไฟล์
phone-bluetooth-controlled-rc-car-c61d56.md

ชื่อโปรเจกต์: Phone Bluetooth-Controlled RC Car

เป้าหมายของโปรเจกต์นี้คือการสร้างการสื่อสารไร้สายกับรถ RC โดยใช้ Bluetooth ในโทรศัพท์มือถือของเรานี่แหละน้อง การใช้มือถือคุมเนี่ยมันช่วยแก้ปัญหาชีวิตเวลาเราทำรีโมทหาย (ซึ่งพี่เป็นบ่อยมาก) แถมตัว App ในมือถือเรายังปรับแต่งปุ่มควบคุมได้ตามใจชอบเลย งานนี้พี่ใช้ MIT App Inventor สร้าง App ขึ้นมา ซึ่งมีโหมดให้เลือกเล่นเพียบ ทั้งแบบเอียงจอคุม (Tilt mode), สั่งงานด้วยเสียง (Voice mode) หรือจะกดปุ่มแบบคลาสสิก (Button mode) เดี๋ยวพี่จะลงรายละเอียดให้ดูทีหลังนะ

วิดีโอตัวอย่างโหมด Acc (เอียงจอ): https://drive.google.com/file/d/1UDmx4STJnwceMz9vrOowHQuren9npsEi/view?usp=sharing

วิดีโอตัวอย่างการกดปุ่มสั่งงาน: https://drive.google.com/file/d/1vA-XSwN3bF94aK7IaoDo5eBVYRLjmP7r/view?usp=sharing

ขั้นแรกเลยนะน้อง ไปหารถ RC แบบขับเคลื่อน 2 ล้อ (2 wheel drive) ที่ล้อหน้าเลี้ยวได้มาซักคัน จากนั้นก็จัดการชำแหละถอดโครงข้างนอกออกซะ เพื่อให้เราเข้าถึง Motor ทั้งสองตัวได้ ขันน็อตออกให้หมด อย่าให้เหลือ พอแกะพลาสติกออกแล้ว ให้เช็กสายไฟ 2 เส้นที่ออกมาจาก Motor แต่ละตัว ปกติมันจะบัดกรีติดอยู่กับแผง PCB กลางรถ ให้ใช้คีมตัดสายไฟพวกนั้นออกมาเลย (รวม 4 เส้น) แล้วก็บัดกรีต่อสายไฟเพิ่มความยาวหน่อยถ้าจำเป็น ถ้าอยากหล่อก็ประกอบโครงกลับเข้าไปได้นะ แต่อย่าลืมเอาสายไฟ 4 เส้นนั้นโผล่ออกมาให้เราใช้งานได้ล่ะ

สายไฟ 2 เส้นจากมอเตอร์หน้าและหลัง

ตัวขับมอเตอร์ (Motor Driver) ที่พี่ใช้คือ L298 แบบ Dual Motor นะน้อง ขา VCC กับ GND ก็ต่อเข้ากับขั้วบวกขั้วลบของ Battery ตามระเบียบ พี่ใช้ไฟประมาณ 8 Volts (ถ่าน Li-ion 3.7 Volts สองก้อน 9900 mAh) วิธีดูว่าต้องใช้ไฟเท่าไหร่ ให้เช็กที่ตัวรถเดิมว่ามันกินไฟกี่ Volts แล้วใช้ไฟสูงกว่านั้นนิดหน่อย ส่วนขา Input ทั้ง 4 ของ Motor Driver ก็ต่อเข้ากับขา Output ของ [Arduino](https://s.shopee.co.th/7fUgFAWSki) จัดไปวัยรุ่น! ต้องเลือกขาที่เป็น PWM (Pulse Width Modulation) นะ เราจะได้คุมความเร็วได้ตั้งแต่ 0 ถึง 255 ไม่ใช่แค่สั่งให้มันวิ่งหรือหยุดอย่างเดียว ส่วนขา Output ของ Motor Driver ก็ต่อเข้ากับ Motor สองตัว (ขา 1, 2 ต่อมอเตอร์ 1 / ขา 3, 4 ต่อมอเตอร์ 2) ตอนทดสอบถ้ามันวิ่งถอยหลังหรือเลี้ยวผิดฝั่ง ก็แค่ไปสลับเลขขาใน Code Arduino เอา ง่ายๆ ไม่ต้องคิดมาก

การต่อสาย L298 Dual Motor Driver

ส่วน Bluetooth Module พี่เลือกใช้ HC-05 ตัวยอดฮิต มันส่งและรับข้อมูลได้ (โหมด Master และ Slave แต่คุยได้ทีละโหมดนะ) ตัวนี้แหละคือหัวใจสำคัญที่ทำให้มือถือคุยกับรถ RC ได้ การต่อสายก็ VCC เข้า 3.3 Volts และ GND เข้า GND ส่วนขา Tx กับ Rx ก็ต่อเข้า Digital Pins ไหนก็ได้ (แต่ต้องไปแก้ใน Code Arduino ให้ตรงกันด้วยล่ะ) ตอนจะ Pair Bluetooth ครั้งแรก รหัสผ่านคือ 1234 นะน้อง ส่วน [Buzzer](https://s.shopee.co.th/6pvZFdZdRf) กับหลอดไฟ ก็ต่อตาม Schematic ที่พี่ให้ไว้ หรือจะเปลี่ยนขาตามความเหมาะสมของ Board Arduino ที่เราใช้ก็ได้

Bluetooth Module HC-05

การต่อ Buzzer และ Voltage Divider

ตัว App ที่ใช้คุมรถ พี่สร้างมาจาก MIT App Inventor มันเป็นโปรแกรมฟรีบนเว็บที่ใช้งานง่ายมาก แค่ลากๆ วางๆ (Drag and Drop) ถ้าอยากทำ App แบบเท่ๆ ของตัวเอง ลองไปหา Tutorial ใน YouTube ดู มีเพียบ! หลักการทำงานของมันคือ พอกดปุ่มหรือขยับเครื่อง ตัว Bluetooth ของมือถือจะส่ง "ตัวเลข" ที่เรากำหนดไว้ไปที่ Module Bluetooth ของรถ จากนั้น Arduino ก็จะเอาตัวเลขนั้นไปประมวลผลแล้วสั่งงานต่อ (เช่น สั่งให้เลี้ยวซ้าย) App ของพี่มี 3 โหมดหลักๆ คือ กดปุ่ม, เอียงจอ และสั่งด้วยเสียง

หน้าจอแรกของ App

โหมดกดปุ่ม (Button mode) นี่พื้นฐานสุด มีปุ่ม บน/ล่าง/ซ้าย/ขวา พร้อมปุ่มหยุดและคุมความเร็ว ส่วนโหมดเอียงจอ (Tilt mode) พี่ชอบสุดละ กดเปิดตรงรูปพวงมาลัยมุมขวาบน ทีนี้เราก็โยกมือถือไปข้างหน้า ข้างหลัง ซ้าย ขวา เพื่อคุมรถได้เลย ถ้าถือนิ่งๆ รถก็หยุด โหมดนี้มันใช้ข้อมูลจาก Accelerometer (เซนเซอร์วัดความเร่ง) แกน X และ Y ของมือถือมาคำนวณ แนะนำว่าถ้าจะเล่นโหมดนี้ ให้ปิด Screen Autorotate (หมุนจออัตโนมัติ) ในมือถือทิ้งซะ เดี๋ยวจะหาว่าพี่ไม่เตือน ส่วนโหมดสั่งด้วยเสียง (Voice mode) มันจะใช้ Google Speech-to-Text เราแค่พูดว่า "forward" หรือ "buzzer on" มันก็ทำงานตามสั่งละ แต่บอกก่อนนะว่าโหมดนี้กดยากหน่อย โดยเฉพาะในบ้าน เพราะมันใช้เวลาประมวลผลนาน เดี๋ยวรถจะชนฝาบ้านพังซะก่อน

ปุ่มอื่นๆ บนจอก็มีปุ่ม Buzzer กับ LED ไว้เปิดปิดอุปกรณ์พวกนี้ ส่วนมุมซ้ายล่างคือปุ่ม Bluetooth ไว้กดเชื่อมต่อเป็นอันดับแรกตอนเปิด App และมุมขวาล่างคือ Battery Indicator บอกระดับไฟ ซึ่งพี่ใช้เทคนิค Voltage Divider ตาม Schematic เพื่อวัดค่าไฟส่งกลับมาโชว์ที่หน้าจอ

หน้าจอตอนเชื่อมต่อ Bluetooth สำเร็จ

สำหรับใครที่จะเอาโปรเจกต์นี้ไปทำต่อ หลังจากเปิดลิงก์แล้ว ให้ Download ไฟล์ APK มาลงในโฟลเดอร์ Download ของมือถือ จากนั้นก็ติดตั้งซะ อย่าลืมอนุญาต (Grant permissions) ทุกอย่างที่มันขอด้วยนะน้อง เดี๋ยว App ทำงานไม่สมบูรณ์

เพื่อความหล่อเท่ พี่แถมไฟล์ .stl สำหรับทำพวงมาลัย 3D Print มาให้ด้วย เอาไว้ใส่มือถือเล่นโหมด Tilt จะได้ฟีลลิ่งขับรถจริงๆ ขนาดพวงมาลัยก็ไปปรับในโปรแกรม 3D Print เอาให้เหมาะกับมือถือเรานะ

ตัว Code Arduino กับ Schematic ที่พี่ลงไว้อาจจะตรงกับรถของพี่เป๊ะๆ แต่พวก Pins ต่างๆ น้องเปลี่ยนได้ตามสบาย แค่ไปแก้ใน Code ให้ตรงกันก็พอ พี่กำลังพัฒนาโปรเจกต์นี้ต่อเรื่อยๆ แก้ Bug ไปบ้าง ใครมีไอเดียเจ๋งๆ หรือตรงไหนไม่ชัดเจน ถามพี่ได้เลยนะวัยรุ่น!

รายละเอียดทางเทคนิคเพิ่มเติม (ฉบับรุ่นพี่สอนน้อง)

ระบบหุ่นยนต์เคลื่อนที่ความเร็วสูง

โปรเจกต์นี้คือการทำรถ RC ที่ตอบสนองไว คุมผ่าน Android App และระบบพลังงานบน Arduino

  • L298N Motor Driver Hub: ตัว Arduino จะรอรับคำสั่งทิศทาง (F, B, L, R) จาก HC-05 Bluetooth module แล้วมันจะสร้างสัญญาณความถี่สูงที่เรียกว่า PWM ส่งไปที่ L298N H-bridge เพื่อคุมทั้งความเร็วและทิศทางของ DC Motors แรงบิดสูงทั้งสองตัว
  • MIT App Inventor Integration: ตัว UI ในมือถือเราสร้างมาแบบ Custom ใช้ "Touch Slider" ส่งค่าความเร็ว (Variable speed) 0-255 ไปที่รถ ทำให้เราเร่งเครื่องแบบค่อยเป็นค่อยไปได้ ไม่ใช่กระชากออกตัวอย่างเดียว หล่อเท่เลยงานนี้

ความคล่องตัวในการเลี้ยว

  • Differential Steering Logic: พี่เขียน Code ให้ Arduino คำนวณความเร็วที่แตกต่างกันระหว่างล้อซ้ายและขวา เพื่อให้เลี้ยวได้สมูท หรือจะสั่งให้หมุนรอบตัวเอง (360-degree spins) อยู่กับที่ก็ทำได้นะน้อง สู้งานนะ!

ข้อมูล Frontmatter ดั้งเดิม

title: "Phone Bluetooth-Controlled RC Car"
description: "This project aims to implement interesting methods of driving an RC car right from your phone!"
author: "achyutayadunandan"
category: ""
tags:
  - "toys"
  - "cars"
  - "remote control"
views: 6114
likes: 0
price: 299
difficulty: "Intermediate"
components:
  - "1x Solder Wire, Lead Free"
  - "1x Through Hole Resistor, 470 ohm"
  - "1x Jumper wires (generic)"
  - "3x Resistor 1k ohm"
  - "1x Wire Stripper & Cutter, 18-10 AWG / 0.75-4mm² Capacity Wires"
  - "1x LED (generic)"
  - "1x Soldering iron (generic)"
  - "1x RC Car"
  - "1x Dual H-Bridge motor drivers L298"
  - "1x Breadboard (generic)"
  - "1x Multitool, Screwdriver"
  - "1x Through Hole Resistor, 680 ohm"
  - "1x Arduino UNO"
  - "2x Li-Ion Battery 1000mAh"
  - "1x Mastech MS8217 Autorange Digital Multimeter"
  - "1x Buzzer"
  - "1x General Purpose Transistor NPN"
  - "1x HC-05 Bluetooth Module"
tools: []
apps:
  - "1x Arduino IDE"
  - "1x MIT App Inventor 2"
downloadableFiles: []
documentationLinks: []
passwordHash: "c1e03d413b944495ec7a13ecfe3b37af8d10eb332658e677ecd7205e9cf6969d"
encryptedPayload: "U2FsdGVkX18V0g4FlPHjZYxquhNVDaHzz5bdX6FYs/m4pYAISEUjO17SxK77r+z5GixfrP6GCa9hrZ8fYF+1hRn2XhuTNBHS0CcekVWe7s8niDC+M1QuQCvDSo0O2iq2"
seoDescription: "Build and control an RC Car via Bluetooth using your Phone in this engaging and easy-to-follow Arduino project."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/phone-bluetooth-controlled-rc-car-c61d56_cover.jpg"
lang: "th"