2015-2-2 16:56:55 [显示全部楼层]
13611浏览
查看: 13611|回复: 12

[求助] 360°全方位玩转你手里的小手柄(DFR0304产品使用指南)

[复制链接]
本帖最后由 Gary 于 2015-2-5 15:08 编辑

DFJOYSTICKS产品的摇杆数和按键数都不是很多,如果项目自由度升高的话那可就是捉襟见肘了。楼主最近就在做一个搭建在坦克上的两轴云台,坦克本身需要两个摇杆来控制,上面的炮(yun)台也需要两个摇杆。自己搭建遥控器吧,拿出去太LOW了,使用DF的输入扩展版吧,按键又不够,找来找去找到了一款磨人的小手柄,就是今天的主角DFR0304了。

研究一番之后发现,这款手柄如果使用得当可以发挥出极大的价值。首先它按键众多(四个模拟值输出,十四个数字按键,简直是瞬间翻身做土豪随便玩耍了啊!)。其次,它可以(伪)多通道同时输出,与平时自己搭建的遥控器不同,这款手柄可以多个按键(最多三个,已经可以满足大部分需求)和摇杆的数据同时输出。这样小伙伴们就可以嗨皮的做各种复杂动作了。而且,作为一个经常作死搭建复杂系统的人,数字口和模拟口不够用是经常的事,这个手柄不像多通道的航模遥控器那样一占就是一串输入口,如果跟楼主一样用的是Romeo with Ble的话,那就一个口也不会占了。

好了,在发现了一块新大陆后我才想到,为什么从来没见过哪个系统是用这个遥控的呢,看了看WIKI才发现,原来是这货使用难度太高了。它的工作原理是这样的,中间有三个按键是负责连接和重连还有改主从模式的。这个没有什么,它的连接完全是自动的,使用过程中也没有发现什么坑。但是坑在后面,就是信息的传输是个大坑,它不是可编程式的发送固定的命令,而是自动的发送一串数据流,数据流内部包含了按键的全部信息,这也是为什么我之前说是(伪)多通道的原因了。收到这个数据流不难,只要注意把波特率调成115200就可以了。
360°全方位玩转你手里的小手柄(DFR0304产品使用指南)图3

程序和串口读到的数据如上图。

手柄不自带回车,经简化后的数据流如下:

360°全方位玩转你手里的小手柄(DFR0304产品使用指南)图4

前三位0x55,0xAA,0x11为帧头和地址位,不携带按键信息。可用于确定信息是否返回,和是否返回正确。之后的一位为数字键按下个数位,可以为0,1,2,3(最多支持三键无冲)。如果有数字键按下则后面会列出被按下的数字键对应的键位值,再接下来是四个摇杆的状态和,四个摇杆分别对应数值1,2,4,8,其和即为输出的值,通过转换成二进制再移位判断奇偶即可判断出是那个摇杆被移动了。然后四位为摇杆被拨到的位置对应的模拟值。经楼主实测,拨到最上端或者最左端其对应的模拟值为255,反之则为0,需要注意的是,如果该轴没有被拨动,它输出的值也是0,所以在使用的过程中对状态的判断是很重要的。从100150都会被手柄默认为中点,即四个轴的模拟量输出范围为0-99&151-255。最后一位是校验位,是前面数据的异或和,如果不是特别严格要求的小伙伴这个可以忽略。

好了,说到这大家可能就已经晕了,而且这些命令判断起来极其的不和谐。所以,我就想,为什么不写一个库文件呢。说干就干,经过一天多的调试和编程,终于完成了这款产品的库文件的编写。使用了这个库之后这个手柄就可以被你任意宰割了,像提取什么信息就可以提取什么信息,不压榨完最后一丝营养,决不罢休。

话不多说,上图。

360°全方位玩转你手里的小手柄(DFR0304产品使用指南)图2

上图显示出了我的库文件可以提取出来的所有信息。

Stick State后面的四个数字分别代表了四个摇杆被拨动的状态,1 1 0 0表示前两个摇杆被拨动了,后两个摇杆在中间(四个摇杆顺序依次为右侧X轴,Y轴,左侧X轴,Y轴)。

Stick后面的四个数字分别为四个摇杆的模拟量输出,为兼容其他程序,我把原始位置(即无输出时)的模拟值输出默认为128.

Button number后面的数字为数字按键被按下的个数。

Buttons后面的数字为被按下的按键对应的数值,具体对应关系如下图:

360°全方位玩转你手里的小手柄(DFR0304产品使用指南)图1

Button state后面的十四个数位分别代表了十四个数字按键被按下的状态,0为未被按下,1为按下。

具体的库文件的使用方法和函数的调用可以详见样例代码。

好了,研究了这玩意一天多得到的信息大致就是这些了,哦,对了,这货在没有任何按键和摇杆被按下的时候是没有数据流传输回来的,在大家编写程序的时候要注意这点。这款产品还内置了两个电机来实现震动的功能,可是由于固件不能更改,只有判断是否连接成功的功能,有些遗憾。
目前只在Romeo with ble和Arduino IDE 1.5.7的系统下成功运行过,其他平台的兼容性还未做测试。



BleGamePad库文件.rar

2.64 KB, 下载次数: 4602

大连林海  初级技神

发表于 2015-2-2 19:20:48

高亮 置个顶,让大家都来学习学习:(
回复

使用道具 举报

luna  初级技神

发表于 2015-2-2 17:05:44

头像换成了轻音~好评
回复

使用道具 举报

Gary  见习技师
 楼主|

发表于 2015-2-2 17:08:10

luna 发表于 2015-2-2 17:05
头像换成了轻音~好评

Private也很可爱啊:lol
回复

使用道具 举报

hnyzcj  版主

发表于 2015-2-2 17:49:57

一般这个手柄足够了,我就是用这个手柄控制6自由度夹持手机械臂,和履带车的。随后会上发帖,跟大家分享。
回复

使用道具 举报

Gary  见习技师
 楼主|

发表于 2015-2-2 17:59:22

hnyzcj 发表于 2015-2-2 17:49
一般这个手柄足够了,我就是用这个手柄控制6自由度夹持手机械臂,和履带车的。随后会上发帖,跟大家分享。 ...

发完给个链接啦:lol
回复

使用道具 举报

hnyzcj  版主

发表于 2015-2-2 18:30:20

Gary 发表于 2015-2-2 17:59
发完给个链接啦

OK,没有问题。
回复

使用道具 举报

苦海  初级技匠

发表于 2015-2-2 18:53:54

好评,啥时候放出手机控制啊
回复

使用道具 举报

真的好多巧合  高级技师

发表于 2015-2-26 22:26:22

楼主,这款可编程的DFRobot Wireless Joystick for Arduino弄过么?
回复

使用道具 举报

Gary  见习技师
 楼主|

发表于 2015-3-6 10:40:40

真的好多巧合 发表于 2015-2-26 22:26
楼主,这款可编程的DFRobot Wireless Joystick for Arduino弄过么?

抱歉,没用过那一款。
回复

使用道具 举报

Gary  见习技师
 楼主|

发表于 2015-3-6 10:41:47

苦海 发表于 2015-2-2 18:53
好评,啥时候放出手机控制啊

ios上的走你app功能跟原理和这个手柄是差不多的。
回复

使用道具 举报

条八  见习技师

发表于 2016-5-30 20:49:39

楼主,这个按照你的方法不行啊。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail