登录
加入联盟
找回密码
航空人生
新一代连飞客户端下载
空管人生
中国航空运动协会推荐
WEFLY
模拟飞行玩家聊天工具
门户
文章
商城
二手市场
外包服务
模飞软件
硬件设备
飞行体验
学院
云课堂
问答
资料下载
论坛
模拟飞行
低空飞行
太空探索
航圈
资源
素材
下载
企业
无人机论坛
»
论坛
›
无人机DIY专区
›
飞控开发区
›
Pixhawk飞控
›
Arduino趣味制作--DSM2总线解析
返回列表
发新帖
查看:
706
|
回复:
2
Arduino趣味制作--DSM2总线解析
[复制链接]
baichuanlv
baichuanlv
当前离线
积分
920
窥视卡
雷达卡
292
主题
335
帖子
920
积分
高级飞友
高级飞友, 积分 920, 距离下一级还需 80 积分
高级飞友, 积分 920, 距离下一级还需 80 积分
积分
920
飞币
583
注册时间
2017-7-25
发消息
发表于 2022-11-9 23:16:01
|
显示全部楼层
|
阅读模式
在上期文章中,我们讲述了FUTABA S.BUS总线的解析,这一期,我们来讲述一下DSM2总线的解析过程。
DSM2是另一大航模遥控器品牌:JR PROPO及SPEKTRUM使用的一种遥控器通道串行数据总线,它的作用与FUTABA S.BUS一样。同样的,很多航模电子设备都支持DSM2数据的输入:如V-BAR陀螺仪、PIXHAWK开源飞控。
SPEKTRUM的接收机可以和JR遥控器对频使用,因此,在本次试验中,使用了JR DSX9发射机和SPEKTRUM DX6i发射机,接收机使用SPEKTRUM的AR6200携带的"卫星天线"模块,信号解析使用了Arduino mega2560板。下面进入正题。
通过查阅网络资料,DSM2总线是标准的3.3V的TTL(串口)信号,波特率为115200,但对于DSM2的帧协议,未找到准确的资料,因此,只能自己破解了。我的思路是:先将DSM2帧尽可能完整地从mega2560板的串口1读取进来,然后从串口0输出到串口监视器进行数据记录,寻找规律。具体的方法就是,设置一个"足够长"的数组来存放这些原始数据。Mega2560串口1的缓冲区大小是64个字节,那就先设定一个长度为"64"的"char"型数组吧。
试验中先接入的是SPEKTRUM的DSM2数据,数据采集过程中,不停的拨动遥控器的摇杆,串口0以"十进制"的形式向电脑发送数据,通过串口监视器观察到,在第一个有变化的字节前面有两个连在一起的字节是固定的"3",从"3"第一次出现到下一次出现,中间间隔53个字节,由此可以推断:SPEKTRUM DSM2帧的长度应该为54,并且"帧头"为两个连续的"3",转换为十六进制为"0x03"。
接下来接入JR DSM2,和上面一样,数据采集过程中不停地拨动遥控器摇杆,通过串口监视器观察到:数据开始有变化的字节前面,始终不变的仍为两个字节,但这里变成了"3"和"18"(十进制),"3"两次出现的间隔变为了59,因此可以判断:JR DSM2帧的长度为60字节,帧头为"3"和"18",转化为十六进制为"0x03"和"0x12"。
接下来,我们回到SPEKTRUM DSM2的原始数据,先进行SPEKTRUM DSM2的通道解析。为了观察并判断数据变化与通道的关系,我们采取的办法是,按顺序拨动通道摇杆,然后观察数据的变化。先从1通道:油门通道开始,其他通道的摇杆保持中立位置,上下拉动油门摇杆。此时可以看到,数据有变化的是帧头后面两个字节的数据,其余字节保持不变。接下来,油门摇杆保持中立,左右拨动2通道"副翼"摇杆,此时可以看到,有变化的两个字节为油门通道字节的后面两个字节。用这种方法进行6个通道的测试,可以得到数据帧的通道对应规则,如下表:
用同样的方法可以测出JR DSM2的帧定义,JR DSM2与SPEKTRUM DSM2在帧定义上是有很大区别的,看下表:
注意:这里的通道编号是从0开始的,即0通道实际上就是我们使用的1通道;帧字节的排序也是从"0"开始,因此最后一个字节的编号为"53"和"59",总共54和60个字节。
接下来我们先对SPEKTRUM DSM2进行通道数据解码。这里采取的方法是分别分析通道摇杆在三个特殊位置的数据格式,比如,油门摇杆在最高位置、中间位置、最低位置时,分析SPEKTRUM DSM2帧的第2、3字节数据的变化,为便于观察,我们将通道字节数据转换为二进制分析,下面给出4个通道的分析图表:
1-4通道摇杆处于"中立位置"时:
1-4通道摇杆处于"一侧极限位置"时:
1-4通道摇杆处于"另一侧极限位置"时:
现在来分析一下油门通道在三个位置的数据。通过观察我们发现:高字节的前6位(最高位第7位—第2位)始终不变,后两位(第1位及第0位)随油门杆的变化而变化;低字节始终跟随油门杆的变化而变化。我们再看看副翼通道的情况:副翼通道也具备与油门通道一样的特性,不同的是:副翼通道高字节数据的第3位和第4位为"01",始终保持不变。其余通道也具有相同的性质,但俯仰通道的高字节的第3位和第4位为"10",方向通道高字节的第3位和第4位为"11",下一通道则第5位至第3位为"100"。通过进制转换(转换为十进制),我们发现这正好是通道的编号,例如油门通道:"00"—0,副翼通道:"01"—1,俯仰通道:"10"—2,方向通道:"11"—3,第4通道:"100"—4,以此类推。
现在来看看剩下的数据位,以油门通道为例来分析。油门杆在中立位时,我们将高字节的最后两位与低字节数据合并,将高字节的最后两位放在前,将低字节放在后,组成一个十位的二进制数据:0111111111,将它转换为十进制得:512;再将油门杆在上和下极限位置时的数据进行组合换算可得:1101011011—859;0010111010—186。其余通道通过这样的这样的组合换算,也能得到近似的结果,但中立位时都是512。因此,可以得出结论:DSM2的通道输出为:0—1024,中点位置为512。对于JR DSM2数据,也有相同的特性,它相对于SPEKTRUM只是通道数据的位置不同。至此,DSM2总线协议"破解"完成。对比他们的帧定义,我们可以利用帧头的区别来设计程序,自动识别当前接入的DSM2总线是JR的还是SPEKTRUM的。下面给出DSM2总线解析的关键代码:
下一期,将给大家带来遥控器ppm信号的解析过程。期待您的关注、点赞与评论。
arduino
,
解析
,
总线
,
制作
,
趣味
相关帖子
•
花50块制作的海陆空三栖无人机 来看一场脑洞大开的毕业作品展吧
•
【航模制作】小日子过得不错的航模 零战A6M 遥控航模 FT模型 13THSQUADRON 试飞
•
Arduino 觸發PIXHAWK PIXHAWK4 _觸發5個飛行模式實測
•
盘点解析马桶人vs监控人无人机宇宙1季:葫芦娃救爷爷
•
废旧泡沫板千万不要丢,手把手教你轻松制作遥控航模,能飞的哦!
•
【城区·四月份主题活动】『巧手妙思同培养 创意科学齐飞翔』聊报小记者『我的·湛蓝梦想』航模科技制作活动开始啦~
•
Qt无人机地面站设计与制作视频教程
•
请问怎样自己制作航拍无人机需要准备一些什么购买哪些配件非诚勿扰...
•
【无人机作者制作】假如在第77集中马桶科学家还活着
•
第35集eVTOL案例讲解, 非矢量飞行器, 深度解析Lilium Jet飞行器。#低空经济 #eVTOL
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
古风剑客
古风剑客
当前离线
积分
1539
窥视卡
雷达卡
29
主题
777
帖子
1539
积分
金牌飞友
金牌飞友, 积分 1539, 距离下一级还需 1461 积分
金牌飞友, 积分 1539, 距离下一级还需 1461 积分
积分
1539
飞币
753
注册时间
2017-8-31
发消息
发表于 2022-11-9 23:24:14
|
显示全部楼层
转发了
回复
支持
反对
使用道具
举报
照妖镜
kevin1002
kevin1002
当前离线
积分
1574
窥视卡
雷达卡
31
主题
803
帖子
1574
积分
金牌飞友
金牌飞友, 积分 1574, 距离下一级还需 1426 积分
金牌飞友, 积分 1574, 距离下一级还需 1426 积分
积分
1574
飞币
769
注册时间
2017-9-8
发消息
发表于 2022-11-9 23:36:22
|
显示全部楼层
转发了
回复
支持
反对
使用道具
举报
照妖镜
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
加入联盟
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表