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

The RadioHead ASK Protocol (433MHz)
โมดูล Transmitter/Receiver 433MHz สีเขียวราคาถูกนั้น "โง่" โดยสิ้นเชิง พวกมันไม่รู้ว่า Bluetooth หรือ Wi-Fi คืออะไร พวกมันเพียงแค่ยิงสัญญาณรบกวน analog ดิบๆ ออกไปเท่านั้น
- หากคุณเพียงแค่ส่ง
digitalWrite()ไปยัง data pin ตัว receiver จะไม่สามารถถอดรหัสได้จากสัญญาณรบกวนของไมโครเวฟที่ทำงานอยู่ในครัว - คุณต้องใช้ไลบรารี
<RadioHead.h>หรือ<VirtualWire.h>ที่ทรงพลัง! - ไลบรารีจะฝัง data payload ของคุณลงในแพ็กเกจที่มีโครงสร้างขนาดใหญ่พร้อมการตรวจสอบข้อผิดพลาดทางคณิตศาสตร์ โดยใช้โปรโตคอล "ASK" (Amplitude-Shift Keying) มันจะส่งคลื่นวิทยุ 433MHz แบบกระตุกอย่างรุนแรงให้ดังขึ้นและเบาลงเพื่อแทนค่า
1และ0
การแพ็ค Struct Joystick Payload
joystick มีแกน X และแกน Y รถ receiver จำเป็นต้องได้รับทั้งสองค่านี้ทันที
- สถาปัตยกรรม Struct: คุณไม่สามารถส่ง
X=512แล้วรอส่งY=512ได้ รถจะกระตุกอย่างรุนแรง คุณต้องบีบอัดตัวแปรให้อยู่ในรูปแบบ C++structpacket!
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และYintegers ออกมาโดยตรงสู่ 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 ที่มีสัญญาณรบกวน)