Wireless-X14 เป็นชุดอุปกรณ์สื่อสารข้อมูลอนุกรมไร้สายผ่านคลื่นวิทยุ 2.4GHz
คุณสมบัติของ Wireless-X14
-
- ทำงานรับส่งข้อมูลที่ความถี่ 2.4 GHz
- ระยะรับส่งข้อมูล 10 เมตร
- ใช้งานได้พร้อมกันสูงสุด 100 ชุด โดยไม่เกิดสัญญาณรบกวน
รูปที่ 1 แสดงส่วนประกอบของรีโมตคอนโทรล Wireless-X14
รูปที่ 2 แสดงส่วนประกอบของมินิบอร์ดวงจรรับสัญญาณ Wireless-X14
รูปแบบข้อมูลของ Wireless-X14
ข้อมูลที่ส่งมาจากรีโมตคอนโทรล Wireless-X14 มีรูปแบบ 16 บิตข้อมูล ด้วยอัตราเร็ว 9,600 บิตต่อวินาที แบ่งออกเป็นการส่งคราวละ 8 บิต 2 ครั้ง
-
- ข้อมูลครั้งที่ 1: เป็นข้อมูลของปุ่มกดฝั่งขวา (R1, R2, RU, RR, RD, RL และ RT) รวม 7 ปุ่ม
- ข้อมูลครั้งที่ 2: เป็นข้อมูลของปุ่มกดฝั่งซ้าย (L1, L2, LU, LR, LD, LL และ LT) รวม 7 ปุ่ม
ปุ่มกดแต่ละปุ่มคือแต่ละบิตของข้อมูล 16 บิต ถ้ากดปุ่มใดปุ่มหนึ่ง บิตนั้นๆ จะเป็นลอจิก “1” และผู้ใช้งานสามารถกดพร้อมกันได้มากกว่า 1 ปุ่ม การอ่านค่าข้อมูลทั้ง 16 บิตมาใช้งานทำได้ทั้งการประมวลผลด้วยข้อมูลเลขฐานสอง, ฐานสิบ หรือฐานสิบหก
โดยข้อมูล 16 บิตนั้นจะระบุตำแหน่งของสวิตช์หรือปุ่มกดแต่ละตัวตามที่แสดงดังรูปที่ 5 ในการส่งข้อมูลของปุ่มกดฝั่งขวา ข้อมูล 8 บิตสูง (บิต 8 ถึง 15) จะถูกกำหนดเป็น “1” แล้วนำมารวมกับข้อมูลของบิต 0 ถึง 7 ที่เป็นบิตของปุ่มกดทางขวา
ตัวอย่าง
หากมีการกดปุ่ม LU และ RD พร้อมกัน ข้อมูลที่ส่งออกอากาศคือ 00000001 10001000 เมื่อนำมาจัดเรียงใหม่จะได้ดังรูปที่ 4
รูปที่ 3 รูปแบบข้อมูลที่ได้จากการกดปุ่มบนรีโมตคอนโทรลเลอร์ไร้สายในชุด Wireless-X14
รูปที่ 4 ตัวอย่างข้อมูลที่ได้จากการกดปุ่ม LU และ RD
วิธีการใช้งาน ZX-PSX ร่วมกับ POP-BOT32i : Rover Kit Plus
1. เตรียมอุปกรณ์
-
- ชุด POP-BOT32i : Rover Kit Plus และ Wireless-X14
- สาย USB สำหรับเชื่อมต่อบอร์ดกับคอมพิวเตอร์
- ซอร์ฟแวร์ Arduino IDE สำหรับเขียนและอัพโหลดโค้ด
- ไลบรารี่ที่เกี่ยวข้อง
- POP32.h สำหรับสั่งงานบอร์ด POP32i (สามารถติดตั้งได้ที่ https://inex.co.th/store/manual/POP32i-Sheet230316-re.pdf )
- WCX.h สำหรับใช้งาน Wireless-X14 ร่วมกับบอร์ด POP32i (สามารถดาวน์โหลดได้ที่ https://inex.co.th/store/software/Wireless-X14.zip )
2. ขั้นตอนการติดตั้งไลบรารี่ Wireless-X14
-
- เปิดโปรแกรม Arduino IDE และติดตั้งไลบลารี่ WCX.h โดยเข้าไปที่ Sketch > Include Library > Add .ZIP Library… ดังรูปที่ 2.1
รูปที่ 2.1 ติดตั้งไลบลารี่ WCX.h
-
- เลือกไฟล์ไลบลารี่ที่ดาวน์โหลดไว้ก่อนหน้านี่ คือ Wireless-X14.zip
- รอสักครู่หากติดตั้งสำเร็จให้สังเกตที่หน้าต่างส่วน Output จะมีข้อความว่า Library installed
รูปที่ 2.2 เลือกไฟล์ไลบรารี่ Wireless-X14.zip
3. เชื่อมต่อ Wireless-X14 กับบอร์ด POP-32i
ในการใช้งานร่วมกับบอร์ด POP-32i ต่อใช้งานได้ที่ขาพอร์ต RX/23/PB7 หรือที่พอร์ต A0 ถึง A8 โดยต้องกำหนดขาที่ต่อใช้งานอีกครั้งผ่านกระบวนการทางซอฟต์แวร์ ดังรูปที่ 3.1 ในตัวอย่างการใช้งานนี้ให้เชื่อมต่อที่พอร์ต RX/23/PB7
รูปที่ 3.1 แสดงการต่อใช้งานมินิบอร์ดวงจรรับสัญญาณ Wireless-X14 กับบอร์ด POP-32i
4. การจับคู่รีโมตคอนโทรลและตัวรับสัญญาณ
-
- เปิดสวิตช์ไฟเลี้ยงของรีโมตคอนโทรล Wireless-X14 จากนั้นนำมินิบอร์ดวงจรรับสัญญาณมาต่อเข้าที่ช่องสัญญาณ SYNC ของรีโมตคอนโทรล ดังรูปที่ 4.1
- กดสวิตช์ SYNC ที่มินิบอร์ดวงจรรับสัญญาณ LED สีน้ำเงินจะติดกะพริบเพื่อแจ้งสถานะการจับคู่ รอจนกระทั่ง LED ดับ แสดงว่า การจับคู่เสร็จสิ้น
- ทดสอบการทำงานด้วยการกดปุ่มใดๆ บนรีโมตคอนโทรล LED สีน้ำเงินบนมินิบอร์ดวงจรรับสัญญาณจะติดสว่างตามการกดปุ่ม และดับลงเมื่อปล่อยหรือไม่มีการกดปุ่ม เป็นอันเสร็จขั้นตอนการจับคู่
รูปที่ 4.1 การต่อรีโมตคอนโทรลไร้สายกับมินิบอร์ดวงจรรับสัญญาณในชุด Wireless-X14 เพื่อทำการจับคู่
5. ทดสอบการอ่านค่าจากรีโมตคอนโทรล Wireless-X14
-
- เปิดโปรแกรม Arduino IDE 2.x เลือกเมนู File > Examples > Wireless-X14 > WCX_Examples_POP32 ดังรูปที่ 5.1
- เชื่อมต่อบอร์ด POP-32i เข้ากับคอมพิวเตอร์ และอัปโหลดโค้ด WCX_Examples_POP32 ดังรูปที่ 5.2
- ทดลองกดปุ่มใดๆ บนรีโมตคอนโทรล หากติดต่อกันได้ LED สีน้ำเงินของมินิบอร์ดวงจรรับสัญญาณจะติดกระพริบ และที่หน้าจอ OLED จะแสดงค่าของปุ่มที่กด ดังรูปที่ 5.3
รูปที่ 5.1 เปิดโปรแกรมตัวอย่างการอ่านค่า Wireless-X14
รูปที่ 5.2 เชื่อมต่อบอร์ด POP-32i เข้ากับคอมพิวเตอร์
โปรแกรมอ่านค่าของการกดปุ่ม Wireless-X14
#include "POP32.h" #include <WCX_Soft.h> WCX mywcx; void setup() { mywcx.begin(A8); } int i = 0; void loop() { mywcx.getButton(); oled.text(0, 0,"%d ",mywcx.LU); oled.text(1, 0,"%d ",mywcx.RU); oled.text(2, 0,"%h ",mywcx.rawData); oled.show(); }
รูปที่ 5.2 แสดงผลค่าของปุ่มกดต่างๆ
ตัวอย่างการประยุกต์ควบคุมหุ่นยนต์
ตัวอย่างนี้จะควบคุมการทำงานของหุ่นยนต์ POP-BOT32i Rover Kit Plus ด้วยรีโมตคอนโทรล Wireless-X14
รายละเอียด
- เชื่อมต่อมินิบอร์ดวงจรรับสัญญาณ Wireless-X14 เข้าที่พอร์ตช่อง RX/23/PB7 พร้อมจับคู่รีโมตคอนโทรลและตัวรับสัญญาณ
- เปิดโปรแกรม Arduino 2.x และเขียนโค้ดกำหนดการทำงานของปุ่มต่างๆ ดังนี้
| ปุ่มกด | การทำงาน |
| LU | เดินหน้า |
| LU + RU | เดินหน้า(ความเร็วสูงสุด) |
| LU + RL | เดินหน้าล้อเดียว (ล้อซ้ายหยุดนิ่ง) |
| LU + RR | เดินหน้าล้อเดียว (ล้อขวาหยุดนิ่ง) |
| LD | ถอยหลัง |
| LD + RD | ถอยหลัง (ความเร็วสูงสุด) |
| LD + RL | ถอยหลังล้อเดียว (ล้อซ้ายหยุดนิ่ง) |
| LD + RR | ถอยหลังล้อเดียว (ล้อขวาหยุดนิ่ง) |
| L1 | เพิ่มความเร็ว (+10) |
| L2 | ลดความเร็ว (-10) |
| R1 | Gripper-X ยกแขนขึ้น |
| R2 | Gripper-X วางแขนลง |
| LT | Gripper-X จับวัตถุ |
| RT | Gripper-X ปล่อยวัตถุ |
โปรแกรมตัวอย่างการใช้งาน Wireless-X14
#include <POP32.h> #include <WCX.h> WCX mywcx; // Servo positions #define sv1_up 10 #define sv1_down 90 #define sv2_release 50 #define sv2_hold 105 int speed = 50; unsigned long lastPress = 0; void setup() { mywcx.begin(); oled.textSize(5); oled.text(0, 0, " %d ", speed); oled.show(); servo(1, sv1_up); servo(2, sv2_release); } void loop() { mywcx.getButton(); // Read the value from Wireless-X14. // --- Motor speed Control --- if(millis() - lastPress > 200){ if(mywcx.L1){ speed = constrain(speed + 10, 10, 100); oled.text(0, 0, " %d ", speed); oled.show(); lastPress = millis(); } else if(mywcx.L2){ speed = constrain(speed - 10, 10, 100); oled.text(0, 0, " %d ", speed); oled.show(); lastPress = millis(); } } // --- Motor Control --- if (mywcx.LU && mywcx.RL) { tl(speed); } // LU + RL to move the left motor forward else if (mywcx.LU && mywcx.RR) { tr(speed); } // LU + RL to move the right motor forward else if (mywcx.LU && mywcx.RU) { fd(100); } // LU + RU to forward max speed else if (mywcx.LD && mywcx.RL) { tl(-speed); } // LD + RL to move the left motor backward else if (mywcx.LD && mywcx.RR) { tr(-speed); } // LD + RR to move the right motor backward else if (mywcx.LD && mywcx.RD) { bk(100); } // LD + RD to backward max speed else if (mywcx.LU) { fd(speed); } // LU to forward else if (mywcx.LD) { bk(speed); } // LD to backward else if (mywcx.LL) { sl(speed); } // LL to spin left else if (mywcx.LR) { sr(speed); } // LR to spin right else{ ao(); } // --- Servo Control --- if (mywcx.R1) {servo(1, sv1_up);} if (mywcx.R2) {servo(1, sv1_down);} if (mywcx.RT) {servo(2, sv2_release);} if (mywcx.LT) {servo(2, sv2_hold);} }
อธิบายการทำงาน
เมื่อโปรแกรมเริ่มทำงาน ค่าความเร็วเริ่มต้นจะถูกกำหนดไว้ 50 เปอร์เซ็น และมีการแสดงออกหน้าจอ OLED ด้วย หากต้องการเพิ่มความเร็วให้กดปุ่ม L1 หรือหากต้องการลดความเร็วให้กดปุ่ม L2 โดยการเพิ่มหรือลดความเร็ว สามารถทำได้ครั้งละ 10 เปอร์เซ็นและจะกำหนดให้อยู่ในช่วง 10 ถึง 100 เปอร์เซ็นเท่านั้น เมื่อต้องการเดินหน้าให้กดปุ่ม LU , ถอยหลังกดปุ่ม LD , เลี้ยวซ้ายกดปุ่ม LL , เลี้ยวขวากดปุ่ม LR และสามารถสั่งการทำงานของ Gripper-X โดยกดปุ่ม R1 จะยกแขนจับขึ้น กดปุ่ม R2 จะเป็นการเอาแขนจับลง เมื่อต้องการให้แขนจับหนีบวัตถุ ทำได้โดยการกดปุ่ม LT และปล่อยวัตถุโดยกดปุ่ม RT นอกจากนี้หากกดปุ่ม LU + RL หรือ LU + RR หุ่นยนต์จะเดินหน้าเพียงล้อเดียวตามปุ่มที่กด และปุ่ม LD + RL หรือ LD + RR จะถอยหลังเพียงล้อเดียวตามปุ่มที่กดเช่นกัน












