กลับไปหน้ารวมไฟล์
diy-radio-remote-controller-basics-80df3b.md

Custom RF Telemetry: รีโมทคอนโทรลวิทยุ DIY

RC controller สำเร็จรูป (เช่น Spektrum หรือ FlySky) เป็นเสมือนกล่องดำที่คุณไม่สามารถตั้งโปรแกรมใหม่ได้ โปรเจกต์ DIY Radio Remote Controller นี้จะบังคับให้คุณสร้างตัว transmitter ขึ้นมาใหม่ตั้งแต่ต้น มันจะสอนพื้นฐานที่สำคัญที่สุดในการแปลงค่าขีดจำกัดของ mechanical joystick potentiometer ให้กลายเป็น byte-array ขนาดใหญ่ที่ถูกบีบอัด แล้วส่งผ่านคลื่นวิทยุ 433MHz แบบ ASK (Amplitude-Shift Keying)

invisible_mess_glasses_relay_schema_1772681179521.png

The RadioHead ASK Protocol (433MHz)

โมดูล Transmitter/Receiver 433MHz สีเขียวราคาถูกนั้น "โง่" โดยสิ้นเชิง พวกมันไม่รู้ว่า Bluetooth หรือ Wi-Fi คืออะไร พวกมันเพียงแค่ยิงสัญญาณรบกวน analog ดิบๆ ออกไปเท่านั้น

  1. หากคุณเพียงแค่ส่ง digitalWrite() ไปยัง data pin ตัว receiver จะไม่สามารถถอดรหัสได้จากสัญญาณรบกวนของไมโครเวฟที่ทำงานอยู่ในครัว
  2. คุณต้องใช้ไลบรารี <RadioHead.h> หรือ <VirtualWire.h> ที่ทรงพลัง!
  3. ไลบรารีจะฝัง data payload ของคุณลงในแพ็กเกจที่มีโครงสร้างขนาดใหญ่พร้อมการตรวจสอบข้อผิดพลาดทางคณิตศาสตร์ โดยใช้โปรโตคอล "ASK" (Amplitude-Shift Keying) มันจะส่งคลื่นวิทยุ 433MHz แบบกระตุกอย่างรุนแรงให้ดังขึ้นและเบาลงเพื่อแทนค่า 1 และ 0

การแพ็ค Struct Joystick Payload

joystick มีแกน X และแกน Y รถ receiver จำเป็นต้องได้รับทั้งสองค่านี้ทันที

  • สถาปัตยกรรม Struct: คุณไม่สามารถส่ง X=512 แล้วรอส่ง Y=512 ได้ รถจะกระตุกอย่างรุนแรง คุณต้องบีบอัดตัวแปรให้อยู่ในรูปแบบ C++ struct packet!
struct DataPacket {
  int joyX;
  int joyY;
  boolean buttonStart;
};
DataPacket txData; // Create the object
  • ใน loop, Arduino จะ map ค่าจาก analog sticks: txData.joyX = analogRead(A0);
  • จากนั้นมันจะส่ง struct ทั้งหมดออกไปยังคลื่นวิทยุโดยตรงในการส่งเพียงครั้งเดียว: driver.send((uint8_t *)&txData, sizeof(txData)); driver.waitPacketSent();
  • Arduino ฝั่ง Receiver จะรับ struct layout ที่เหมือนกัน และคลาย X และ Y integers ออกมาโดยตรงสู่ L298N motor driver ในเครื่อง!

ส่วนประกอบหลักของ Transmitter แบบกำหนดเอง

  • Arduino Nanos สองตัว (หนึ่งตัวสำหรับ controller, อีกตัวอยู่ในหุ่นยนต์)
  • โมดูล FS1000A / SYN-115 433MHz Transmitter และ Receiver คู่ (บัดกรี coil antennas ขนาด 17.3 ซม. เข้ากับบอร์ดทั้งสอง มิฉะนั้นระยะจะสั้นแค่ 4 นิ้วเท่านั้น หากมี antenna จะส่งได้ไกลถึง 100 เมตร!)
  • Dual-Axis Analog Joystick Module (KY-023)
  • (ขั้นสูง: สามารถใช้ NRF24L01+ Transceiver ระดับสูงแทนได้ เพื่อให้ได้ 2.4GHz bandwidth ที่สูงกว่า แทนที่จะเป็น 433MHz band ที่มีสัญญาณรบกวน)

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

title: "DIY - Radio Remote Controller Basics"
description: "RF telemetry from scratch! Build a custom, absolute-range 433MHz joystick transmitter to replace terrible, expensive commercial RC controllers by manipulating raw SPI ASK amplitude-shift keying."
category: "Wireless & IoT"
difficulty: "Intermediate"