การใช้งาน Wireless-X14 ร่วมกับชุด POP-BOT32i Rover Kit Plus

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 สำหรับเขียนและอัพโหลดโค้ด
    •  ไลบรารี่ที่เกี่ยวข้อง

     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 จะถอยหลังเพียงล้อเดียวตามปุ่มที่กดเช่นกัน

ตัวอย่างการใช้งาน Wireless-x14 ร่วมกับชุด POP-BOT32i Rover Kit Plus

Facebook Comments Box