tag 标签: 摇杆

相关博文
  • 热度 18
    2016-2-16 21:03
    4577 次阅读|
    1 个评论
    转发请注明出处——少年Pie的硬件博客:http://bbs.ednchina.com/BLOG_xiedidan_2005312.HTM 我的软件博客: http://www.cnblogs.com/xiedidan 不管软件硬件反正都是各种好玩的东西。 冬天温度太低不适合室外飞四轴,就想买个小四轴室内飞,Crazyflie买不起,连国内复刻的Crazepony都还是太贵。最后赶在年前买了个Devo 7e控和JJRC(以前从来没听说过的公司)出的JJ1000小四轴在室内飞,改完控发现这个玩具小四轴真心很好飞。 而且个人觉得这个飞机外形还比较顺眼,简洁低调,不浮夸不幼稚: Devo 7e就不过多介绍了,太出名的一个小手控,改控就是焊高频头电阻、加高频头、加三段开关、加旋钮,这里严重参考了 Galee大的教程 (也是因为Galee我才在ednchina开硬件博客)。不过我最后用的是Devation的Nightly Build固件,因为Galee固件没有NRF24高频头的支持,可惜了,我很喜欢Galee的UI设计。 改控的时候发现这个小四轴其实用NRF24L01+高频头就可以通信,协议用伟力V202。所以 用Arduino也可以控制NRF24,然后PC通过串口控制Arduino,玩起来就可以很灵活,配合PC端软件还可以用上飞行摇杆和Xbox One Controller。 Arduino手上倒是很多,想到N年前买的NRF24L01+模块,一直压箱底没有玩过,这次正好派上用场。 所以总的来说,控制流程就是: 飞行摇杆/游戏手柄 ---USB--- PC端Node.js采集程序 ---USB转串口--- Arduino ---SPI--- NRF24 ---2.4G V202协议--- JJ1000 各个部分硬件的连接,只有Arduino和NRF24模块有点难度,要点: 首先,这个模块是SPI的; 其次,模块的电源要接3V3,但IO口可以兼容5V TTL; 最后就是要把模块的CE脚接到Arduino的9脚上(实际空的IO口都可以,但是需要改Arduino程序) 所以8个脚的模块,只有IRQ可以留空不接。 我的模块没有带PA和外置天线。看Crazepony的说法是这种模块只能控10来米,当然在室内玩是绰绰有余的。等调试好了再去买带PA和天线的模块不迟(改控用那种就行): 整个控制流程看起来复杂,实际上只需要开发两个部分的软件,PC上的Node.js摇杆采集程序和Arduino控制程序。 首先说说Arduino端的控制程序,V202的协议Deveation论坛上有个victzh大神发了**讨论贴,并且给出了基于Python和Arduino的代码。 我对victzh的代码做了点修改,把控制信号从ADC引脚读取,改成从串口命令解析。命令的格式很简单: cmd: , , , \r\n 比如:cmd:100,127,127,200\r\n 目前还没有考虑开关灯之类的设置,当然这个协议要扩展也是很简单的。 我的Arduino V202控制器代码放在了Github上:   https://github.com/xiedidan/v202-arduino-mod 接下来就是PC端的采集程序了,最近工作一直用Node.js很顺手,而且Node可以实现各个平台的移植,NPM上的库也是非常丰富的,所以就用Node了。 采集程序思路也是很简单,用cylon-joysitck库就可以采集摇杆动作,从-1.0到1.0,换算一下变成0-255,拼好命令再用serialport发送出去就是了。cylon-joystick目前只能在Node 0.12.x版本下用,4以上的版本是用不了的,另外在Windows下需要编译器支持,我装了个VS Community 2015。 采集程序同样放在Github上了:   https://github.com/xiedidan/v202-commander   目前支持ThurstMaster T.16000M摇杆(这杆子精度不错,回弹力度偏轻,但油门行程太短),默认使用找到的第一个串口。git clone回来之后npm install,注意npm编译有可能需要Python 2.X的支持(3以上不能用),装好之后执行node v202-commander.js即可。 其实到这里就可以飞起来了,但是真正飞起来之后我发现超级难飞,因为油门和摇杆都没有曲线和比例控制。 于是我又给油门加了曲线控制(一共有三种曲线:平方根、直线、平方),按T16000M右手边最左的两个键可以切换。个人觉得飞四轴平方根油门曲线最好用,油门中间偏大的部分比较精细(我的飞机负载普遍偏大……),起飞降落都比较干脆,避免地效。 还有摇杆的比例控制,从12.5%到100%五档,按T16000M上右手边最右的两个键就可以切换。目前觉得12.5%-25%比较好用,更大的比例最好配合曲线使用。 右手中间两个键留给摇杆曲线,目前还还没想好用什么曲线,暂时没有实现。 因为我是左手握杆,所有按键都在右边,右手握杆可以改成左手按键。 到现在飞机就比较好飞了,悬停控制可以轻易达到Devo 7e的效果,14位霍尔摇杆,比一般12位电位器好多了。 对于其他不是NRF24的玩具飞机来说,道理都是一样的,使用对应的高频头(一般就A7105和CC2500,尽量买带PA和外置天线的模块)和协议就可以了,**协议可以多搜索一下Devation论坛,国外大神都很有共享精神。 如果把Node采集程序放到树莓派上去,再写个程序用树莓派SPI控制NRF24,就完全脱离电脑的牵绊了。 再想远一点,树莓派甚至可以用来合成PPM信号,用遥控器发射出去控制真正的航模,完全可以外场使用。 PC飞行摇杆可以比遥控器精度手感好得多。另外基于Node程序的混控、曲线之类可以做得很灵活,不用再被遥控器限制了,工程师之友,呵呵。
相关资源