_SKU_DFR0304_BLE_Wireless_Gamepad无线手柄 - jimaobian/DFRobotWikiCn GitHub Wiki
概述
你还在为你的蓝牙模块的主从切换而烦恼吗?
你想你的手柄既可以打游戏又可以遥控你自己的机器人吗?
DFRobot新推出的BLE 4.0无线遥控手柄是基于TI的CC2540蓝牙芯片专为DIY玩家量身打造的一款无线手柄遥控器。手柄完成按键运算处理同时还直接支持无线发送。
BLE 4.0无线遥控手柄支持主从切换、支持HID、支持数据透传,让您可以与机器人、移动平台或无人机(UAV)等任何您想要控制的设备进行通信;同时,它的HID功能
能够很轻易的与蓝牙4.0适配器连接,可直接作为无线游戏手柄使用,只要在PC上安装好游戏模拟器,就可以回味儿时的那些经典游戏了;
BLE 4.0无线遥控手柄即能用于DIY机器人,又能玩游戏,完全颠覆目前市面上的其他游戏手柄,是一款不可多得的全能型操控神器。
性能描述
- 供电:USB供电或3节AAA电池供电
- 控制器芯片:TI CC2540
- 尺寸:165x110mm,规格与尺寸兼容基于Arduino可编程无线遥控手柄V2.2
- 12个数字按键输出
- 4通道模拟数据输出
- 支持USB在线固件升级
- 支持一键主从切换(mode灯亮代表主机,灭代表从机)
- 支持自动绑定MAC及一键解绑
- 不支持编程功能
- 支持HID keyboard,可直接与蓝牙4.0适配器相连接
- 支持BLE串口通信
- 无线通讯接口,直接兼容:
按键定义
- 三个控制按键,用于切换、解绑、复位等功能
- START键用于复位
- ANALOG键在 主机模式 下时用于一键解绑MAC地址
- SELECT键用于一键切换主从机
- Mode灯亮,为主机模式
- Mode灯灭,为从机模式
- 手柄上注明的所有按键及其按键值:
- 4个模拟输出端
- 在HID模式下,用于按键
- 在主机模式下,用于模拟值输出
| 注意:字母(如“a”)和数字(如“1”)表示该按键在 HID模式 下输出的按键值,对应的十六进制(如“0x20”)表示该按键在 主机模式 下输出的按键值,其中摇杆输出的是模拟值。 |
控制器应用
电源
这是手柄与其他器件通信的最重要步骤之一。你必须确保你接通电源的电力终端使用正确的极性。反接会损坏手柄。 “人为造成损坏我们将不负责保修,可以提供有偿维修。请确保你使用正确适用的电源。否则,后果自负!”
从USB电源: 只需插上USB线,手柄就能够工作。请注意,USB能提供500毫安的电流,在用USB供电时,请将手柄后面的POWER拨到OFF档,禁止电池供电。
“注:当使用完手柄后,请将手柄后面的POWER拨到OFF档,禁止电池继续供电。”
教程
手柄BLE透传协议
此协议仅用于手柄作为主机与其他从机设备相连接,传输的按键数据格式,以供小伙伴们参考使用!!!
帧头 | 地址 | 命令长度 | 摇杆键位 | 命令 | 校验和 | |
0x55 | 0xaa | 1 字节 | 1 字节 | 1 字节 | n 字节 | 1 字节 |
"数据传输协议"
说明:
- 帧 头:0x55
- 帧 头:0xaa
- 地 址:1字节(默认发送的是0x11)
- 命令长度:1字节(数字按键被按下的个数)
- 摇杆键位:1字节(模拟按键被按下的相对位置)
- 命 令:n字节(数字和模拟按键值)
- 校 验 和:1字节
如:
- 当只有一个数字键被按下,如按下手柄的“a”键,而模拟键没有被按下,传输的数据格式为:55 AA 11 01 00 04 00 00 00 00 15
其中“55 AA 11”是帧头和地址,“01”是指按下的数字键个数为1,“00”表示模拟按键的相对位置没有变化,说明没有模拟值,“04”是值数字键值,后面的四个“00”是模拟值,这里没有变化,如果有模拟值被按下,相应的位就会输出数据,“15”是校验和
- 当模拟值和数字键被按下,如按下手柄的“a”键和“y”键,输出数据格式为:55 AA 11 01 08 04 00 00 00 5E 7B
其中“55 AA 11”是帧头和地址,“01”是指按下的数字键个数为1,“08”表示模拟键值第四个有变化,如“5e”,这个模拟值会随着摇杆被拨动的程度而变化,是个变值(模拟的相对位置说明如下图),可以支持多个数字和模拟值同时输出,通过相对位置来确认区分具体模拟值的变化。
- 当多个模拟值被按下,如01和02键被按下,则输出为03,算法为01和02按位或运算。
使用范例
Arduino代码实例
#define EN1 5//pin for run the right motor
#define IN1 4//pin for control right motor direction
#define EN2 6//pin for run the left motor
#define IN2 7//pin for control left motor direction
#define FORW 0
#define BACK 1
int databuf[8]={};
void Motor_Control(int M1_DIR,int M1_EN,int M2_DIR,int M2_EN)
{
if(M1_DIR==FORW)//M1 motor direction
digitalWrite(IN1,FORW);//forward
else
digitalWrite(IN1,BACK);//back
if(M1_EN==0)
analogWrite(EN1,LOW);//stop
else
analogWrite(EN1,M1_EN);//set speed
if(M2_DIR==FORW)
digitalWrite(IN2,FORW);
else
digitalWrite(IN2,BACK);
if(M2_EN==0)
analogWrite(EN2,LOW);
else
analogWrite(EN2,M2_EN);
}
void setup()
{
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(13,OUTPUT);
Serial.begin(115200);
}
void loop()
{
if (Serial.available())
{
for(int i = 0; i < 10; i++)
{
databuf[i] = Serial.read();
delay(2);
}
if(databuf[5] == 0x04)
Motor_Control(1,255,1,255);
else if(databuf[5] == 0x05)
Motor_Control(0,255,0,255);
else if(databuf[5] == 0x06)
Motor_Control(0,255,1,255);
else if(databuf[5] == 0x07)
Motor_Control(1,255,0,255);
else
Motor_Control(0,0,0,0);
}
}
BLE Wireless Gamepad无线手柄控制机器人实例展示
HID 模式连接
手柄与CSR适配器连接,PC机需要安装一个驱动软件,驱动软件网上很多,这里提供一个demo软件,仅供小伙伴们参考!!!
下载“蓝牙4.0适配器”软件包,这一步就不用小编啰嗦了吧... ...
- 打开“蓝牙4.0 适配器”文件夹,双击“Setup”进行安装,如图BLE.1所示:
- 双击“Setup”后,会进入安装过程,如图BLE.2所示:
- 点击“下一步”,如图BLE.3所示:
- 选择“我接受该许可证协议中的条款(A)”,如图BLE.4所示:
- 点击“更改”,修改安装目录,默认是C盘下,然后点击“下一步””,如图BLE.5所示:
- 设置都默认设置,点击“下一步”,如图BLE.6所示:
- 点击“安装”,如图BLE.7所示:
- 安装过程需要几分钟,如图BLE.8所示:
- 安装完成,点击“完成”,推出安装过程,如图BLE.9所示:
- 将CSR Bluetooth 4.0适配器插在PC机USB口上,会系统会出现安装驱动提示,如图BLE.10所示:
- 安装完成后,双击屏幕右下角隐藏图标中的蓝牙设备,进入“我的Bluetooth设备”,如图BLE.11所示:
- 点击“添加设备”,选择“全部”,进入“添加Bluetooth设备”界面,Bluetooth设备开始扫描外围HID设备,此时,打开无线手柄电源开关,将手柄切换进入从机模式下,手柄自动广播,Bluetooth设备扫描到手柄后会显示“DF Wireless”,如果没有显示,则按下手柄的“START”键从新广播,如图BLE.12所示:
- 点击“DF Wireless”选中此设备,点击“下一步”,这是Bluetooth设备会和手柄配对,配对完成后会提示“Bluetooth设备连接成功”,如图BLE.13所示:
- 完成添加后,在“我的Bluetooth设备”中会显示“DF Wireless”设备名字,这时就可以用手柄进行打字或者游戏了,如图BLE.14所示:
注意:事例中所安装的CSR驱动软件只针对win 7系统,如果是其他的系统,可以在网上下载其他的驱动软件,安装和连接过程大同小异,这里就不再撰述了 你会了么? 小编,你也太啰嗦了吧!!!!!!
资料连接
- “蓝牙4.0适配器”软件安装�
- BLE 4.0无线遥控手柄使用说明