MakeBlock mbot 和 ultimate2.0 的 蓝牙手柄 通讯格式解析

结果前置,废话往后放

蓝牙连接信息:

BLE:

        DeviceName:Makeblock_LExxxxxxxxxxxx

        ServiceID:{0000ffe1-0000-1000-8000-00805f9b34fb}

        CharacteristicID:{0000ffe3-0000-1000-8000-00805f9b34fb}

通讯格式:

初始值 ----- 各位说明  位置

0xff ---  固定值        0   
0x55---  固定值        1  
0x80---左摇杆x        2  
0x00---0|0|BUTTON_L|Mode         L2|L1|R2|R1        3
0x80--- 左摇杆y        4
0x00---0|0|0|start         圆|方|叉|角        5
0x80---右摇杆x        6
0x00---0|0|BUTTON_R|select         右|左|下|上        7
0x80---右摇杆y        8
0x??--- 从2位到8位求和        9

举例:0xff,0x55,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x05      按键:左+上

-------------------------------------下面是详细说明的分割线-----------------------------------------------------------

虽然官方手机app||蓝牙手柄||蓝牙遥控器已经满足了绝大多数人的遥控需求了,但如果想要完全自主的使用蓝牙控制makeblock mbot或ultimate2.0设备,例如实现自研APP或者直接电脑的直接控制怎么办?

上效果先!

MakeBlock01

MakeBlock02

视频里实现了以手机三轴陀螺仪Y轴数值控制机械臂举落的操作,其他移动和夹取等基本功能也是由手机上H5页面直接操作,但其实直接控制设备的其本质是由笔记本上的U3D程序通过笔记本内置蓝牙完成的。像这类需求就需要我们掌握makeblock设备的蓝牙数据传输相关信息才行。但搜遍中文外文社区也搜不到这些信息,偶尔捕风捉影的只言片语还需要加微信找QQ进群(无回音);官网上就一句话 :“蓝牙模块没有可提供的对外的AT指令集”;技术客服一问三不知。那没办法了,只能老子自己反向工程扒代码!

我选择的方案是解析出官方蓝牙手柄使用的通讯协议,既把我自己的程序中的操作伪装成蓝牙手柄按键来实现。于是经过从汇编程里面的手柄调用反向找到了目标文件:MePS2.cpp,位于mblock\resources\app\mlink-v1\external\arduino\arduino-libraries\makeblock\src可以看到该目录下还有不少其他文件,有兴趣的自己扒。注意这些文件只是为了本地编译使用,经过我测试它们是不会实际发送到设备上的,升级固件也不行。然后看下该文件的代码实现即可找到。

好了,最后找一套unity平台上可用的ble解决方案,按格式连续发送数据即可,注意发送间隔要小于120ms。顺便吐槽一下unity平台上windows下可用的蓝牙方案真是难用,我找了4套方案才完美解决。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值