กลับไปหน้ารวมไฟล์
connect-any-rc-transmitter-with-rc-simulator-78b0bd.md

จากไลบรารี UnoJoy เราอยากทำคอนโทรลเลอร์สำหรับเครื่องบินจำลอง RC โดยใช้วิทยุ RC กับตัวรับสัญญาณ (receiver) ทั่วไป แม้ว่าตัวรับหรือตัวส่งจะไม่มีช่อง PPM หรือช่องต่ออื่นๆ ไปยัง PC เลยก็ตาม ใช้แค่ขาสัญญาณ PWM สำหรับเซอร์โวเท่านั้น พูดง่ายๆ คือสำหรับวิทยุ RC รุ่นเก่าๆ ที่อาจจะล้าสมัยแล้วน่ะ สำหรับโปรเจกต์นี้ เราใช้แค่สติ๊กจากวิทยุตัวส่ง RC เท่านั้น ส่วนปุ่มกดอื่นๆ อาจจะอัพเดทเพิ่มในอนาคต แต่ตอนนี้ยังไม่จำเป็นสำหรับการบินพื้นฐาน

ขั้นตอนที่ 1: ดาวน์โหลดไฟล์

เริ่มแรก เราดาวน์โหลดไฟล์จาก UnoJoy GitHub เรานำเข้าไลบรารี UnoJoy เข้าไปใน Arduino IDE จากนั้นอัพโหลดโค้ดด้านล่างลง Arduino Uno โดยเราจะกำหนดขา Digital และแปลงสัญญาณเอาต์พุตจากตัวรับ RC

ขั้นตอนที่ 2: แปลง Arduino Uno เป็น USB game controller

เพื่อเชื่อมต่อ Arduino กับ PC ในฐานะคอนโทรลเลอร์ USB เราใช้คำแนะนำ, ซอฟต์แวร์ และไดรเวอร์จาก UnoJoy GitHub เริ่มจากดาวน์โหลดไฟล์จาก UnoJoy GitHub และ JRE FLIP tool ติดตั้ง JRE FLIP tool ให้เรียบร้อย การจะแปลง Arduino Uno เป็น USB controller ได้ เราต้องทำให้มันเข้าสู่โหมด "Arduino Uno DFU" ก่อน เชื่อมต่อ Arduino กับ PC แล้วใช้สายไฟลัดขาสองขาที่อยู่ใกล้ช่อง USB ตามภาพด้านล่าง มันควรจะมีเสียงตัดต่อและไฟบนบอร์ดกระพริบ จากนั้นก็ถอดสายลัดออก

ลัดขา 2 ขา

เมื่อทำเสร็จแล้ว เปิดโฟลเดอร์ UnoJoy แล้วรันไฟล์ TurnIntoAJoystick.bat

เปลี่ยน Arduino เป็นจอยสติ๊ก

เมื่อโปรแกรมทำงานเสร็จ ให้ถอดสาย USB ออก ถ้าขึ้นข้อผิดพลาดว่า "AtLibUsbDfu.dll not found" ให้แก้โดยอัพเดทไดรเวอร์โดยเลือกโฟลเดอร์ที่ไฟล์ AtLibUsbDfu.dll อยู่

ขั้นตอนที่ 3: เชื่อมต่อตัวรับ RC กับ Arduino Uno

ต่อไป เราต้องเชื่อมต่อ Arduino กับตัวรับสัญญาณ RC (ในกรณีของเราใช้ Jeti model rex 4 channel) เพื่อจ่ายไฟให้ตัวรับ ให้ต่อกับขา 5V และ GND ของ Arduino จากนั้นต่อขาสัญญาณทั้ง 4 เข้ากับขา Digital หมายเลข 2, 3, 4 และ 5 การต่อสายสำหรับตัวรับ 4 ช่องนี้แสดงไว้ในภาพด้านล่าง เราใช้ตัวรับ 4 ช่อง แต่ก็ใช้ตัวรับที่มีช่องมากกว่านี้ได้นะ เสียบ Arduino อีกครั้ง PC ควรจะตรวจจับมันเป็น USB controller แล้ว

ขั้นตอนที่ 4: ทดสอบคอนโทรลเลอร์

หลังจากทำทุกขั้นตอนข้างต้นแล้ว ไปที่ Control Panel\Hardware and Sound\Devices and Printers เราควรจะเห็นเกมคอนโทรลเลอร์ชื่อ UnoJoy Joystick ถ้าคลิกขวาแล้วเลือก game controller settings แล้วกด properties เราจะทดสอบได้ว่าทุกอย่างทำงานปกติตามที่คาดไว้หรือไม่ และปรับคาลิเบรตได้ถ้าจำเป็น

วิธีนี้ไม่ใช่วิธีที่ดีที่สุด แต่สำหรับตัวรับ RC รุ่นเก่าๆ ก็ใช้การได้อยู่ เราทดสอบกับโปรแกรม Multiplex MultiFlight Simulator หลังจากปรับคาลิเบรตนิดหน่อย ก็พร้อมบินแล้วล่ะ จัดไปวัยรุ่น! สู้งานนะน้อง ห้ามช็อตนะตัวนี้

ข้อมูลเทคนิค: การแปลงสัญญาณ PWM เป็น USB HID

โปรเจคนี้จะเปลี่ยนรีโมทคอนโทรล (RC) กับตัวรับสัญญาณ (Receiver) ธรรมดาๆ ให้กลายเป็นจอยสติ๊ก USB ระดับโปรสำหรับเล่นเครื่องบินจำลอง (Flight Sim) โดยการอ่านสัญญาณ PWM มาตรฐานจากตัวรับนั่นเอง

  • การถอดรหัสสัญญาณ PWM (Pulse Width Modulation): ตัวรับสัญญาณ RC จะส่งสัญญาณ PWM แยกออกมาทีละช่องทาง (Channel) ผ่านขาพอร์ตเซอร์โว Arduino ของเราจะใช้ฟังก์ชัน pulseIn() หรือไม่ก็ใช้ตัวจับสัญญาณแบบอินเตอร์รัปต์ (Timer Interrupt) เพื่อวัดความกว้างของพัลส์ด้วยความแม่นยำระดับไมโครวินาที ค่าที่วัดได้จะอยู่ประมาณ 1000µs ถึง 2000µs ซึ่งก็คือตำแหน่งของคันบังคับเรานั่นแหละ
  • ไลบรารี่ HID Joystick: ด้วยการแฟลชเฟิร์มแวร์ UnoJoy ลงไป Arduino (ที่ใช้ชิป ATmega8U2/16U2) จะเปลี่ยนบทบาทกลายเป็นอุปกรณ์ USB HID ได้เลย มันจะทำการแมปค่าพัลส์ PWM ที่วัดได้ไปเป็นแกนจอยสติ๊ก 8-bit ซึ่ง Windows จะมองเห็นเป็น "Gaming Controller" ทันที ไม่ต้องลงไดรเวอร์ให้วุ่นวาย

ความแม่นยำและความหน่วงต่ำ (Low Latency)

  • การปรับแต่งเฟิร์มแวร์: ไลบรารี่ UnoJoy และโค้ดของเราถูกปรับแต่งให้ประมวลผลเร็วสุดๆ เพื่อลดความหน่วง (Latency) ระหว่างที่เราขยับคันบังคับกับการตอบสนองบนหน้าจอในโปรแกรมจำลองบินอย่าง RealFlight, X-Plane หรือ DCS World ให้น้อยที่สุด เรื่องนี้สำคัญมากถ้าอยากได้ความรู้สึกบินที่ลื่นไหลและสมจริงนะน้อง อย่าลืม!

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

apps:
  - "1x Arduino IDE"
author: "eruiec11"
category: ""
components:
  - "1x RC transmitter"
  - "1x RC receiver"
  - "1x Arduino UNO"
description: "อยากบินเล่นใน Simulator แต่ไม่มีจอยแพงๆเหรอ? งานนี้จัดไป! ใช้ RC Transmitter กับ Receiver ตัวไหนก็ได้ที่บ้านมี มาควบคุม Simulator ได้ชิลล์ๆ ด้วย Arduino Uno กับ UnoJoy งานง่ายแต่หล่อ วัยรุ่นสายช่างต้องลอง!"
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles: []
encryptedPayload: "U2FsdGVkX1+tjn5YPPnyH/1FwcuZZNW2d+9ZNXh9S/AusD/WcchnVhtGj4FXuaGu19sQdUBopzZGjLGXLXBTwkTaR2Hj+RUqeJC0iq6d698="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/connect-any-rc-transmitter-with-rc-simulator-78b0bd_cover.jpg"
lang: "en"
likes: 0
passwordHash: "c1080096c2da77dcec916633e4e7f1c3e685da7afd99da57a2128136ec87f426"
price: 2450
seoDescription: "Connect any RC Transmitter and receiver to an RC flight simulator using Arduino Uno and UnoJoy. Easy DIY PC joystick setup."
tags:
  - "remote control"
  - "planes"
  - "games"
title: "เปิดโลกใหม่! เชื่อม RC Transmitter ตัวไหนก็ได้กับ Simulator"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/Vd0F0XHzchY"
views: 6395