5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
查看: 3749|回复: 21
打印 上一主题 下一主题

建立你自己的DSM2发射模块~~~~~~~~~~

[复制链接]
跳转到指定楼层
楼主
发表于 2014-12-2 16:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zdJack 于 2014-12-2 16:36 编辑

写在前面:
1.本帖与《DSM2/DSMX发射机、接收机的简单资料~~~~~~~》是配套的,因为无法避免所有提及到SPEKTRUM了,仅做简单描述。
再次声明所有发布不属于任何厂商,不针对任何产品,仅作为第三方简单整理自己感兴趣的资料,请根据自己的需要选择判断,强烈鄙视借机发广告的行为。
http://bbs.5imx.com/bbs/forum.php?mod=viewthread&tid=1013299&fromuid=252427
2.本帖是以E-Flite公司LP5DSM模块为蓝本进行描述,原因很简单,因为我看的原贴就是以它为基础的,另外我都不知道E-Flite公司是哪里的或是干嘛的;
3.如果需要查看原帖请自行搜索“Build your own DSM2 transmitter module (its working!)”相关内容,自行查阅;
4.本贴仅对个人感兴趣的内容进行复制粘贴,我只是个搬运工,也只找了自己感兴趣的,如需要了解全部相关内容请参考第三条;
5.原贴的发布时间为“2007年7月31日,上午12时38分”时间相对很旧,请明确这一点,以确定本帖是否真正是你需要的内容。
6.本内容同时发布于5imx及百度空间,转载请注明出处,谢谢。


以下为正式内容:
使用的模块是 Blade CX2 直升机1MW的DSM2发射机模块,有4个连接:Vcc(3.3V), ground, 串行数据接口和 LED输出。(PS:这位大婶的LED输出口竟然自己感觉是)
作者检查串行数据端口的到的结论是:电平转换器似乎是每帧14字节,波特率为115200.(大婶啊,为什么要说似乎呢?我还是比较感兴趣他是怎么测得这些数据的。)
然后作者给出了这样一个假设:假定数据值的每个信道可以被确定,并且可以被加入,那么可以很容易地取得模块并将其连接到任何另一遥控器的PPM***校验。如果已经有了PPM串行数据输出,那么可以计算出数据,写出合适代码,驱动1MW DSM2模块。(好主意


当有人问到大婶如何对已加密的2.4G收发芯片做逆向工程得到数据时,大婶的回答是“不知道”然后才想检查从控制器mega8到无线发射模块是否被加密。如果加密了作者会很快放弃{:1_69:},另外作者表示对高功率版的发射模块没兴趣,选择LP5DSM模块是因为他便宜,而且对它的工作感兴趣。

作者对对DSM2进行了分析,为了确保内容的完整性,先把相关的内容原文添加下,内容如下:
(SP:这里鄙视一下,原来这里是有英文的原文的,但是被论坛防--火--墙拦--截了,吓我一身冷汗,一点一点写的,要是没了不被死了~~~,百度空间的发上去了,没问题。想看这段原文的可以找下原贴或看百度空间上的,我不保证下面的翻译是正确的。。。。{:1_69:})

然后提供下简单的大致译文,内容入下:
我尝试125K,而不是115200串行端口速率的数据来实现更加容易观察和跟踪。
无线电发送每帧14字节,6个信道的信息,2头字节。数据传输速率是125K 8,N,1
每个帧开始于00 00
每一对的字节后表示的信道和它的值。
每个通道都有一个有效的范围(1024 steps - 10 bit),信道号被嵌入在每一对的字节。
无线电发射第6道是通道1的一个副本,其是端点限制。好像是在进行飞机模式切换的时候,信道6才可以是一个完整的10位信道。


这里是每个通道允许的最小和最大值以及每个通道的有效的10位范围。
CH1(左摇杆,上/下)
字节3&4
最小/最大:0056-03AA
10位范围:000-3FF
CH2(右摇杆,左/右)
字节5&6
最小/最大:0455-07A9
10位范围:400-7FF
CH 3(右摇杆,上/下)
字节7&8
最小/最大:0855-0BA9
10位范围:800 BFF
CH4(左摇杆,左/右)
字节9&10
最小/最大:0C56-0FAA
10位范围:C00-FFF
CH5(旋钮,右上)
字节11&12
最小/最大:1056-13AA
10位范围:1000-13FF
CH6(CH1的复本)-受限通道
字节13&14
最小/最大:152A-162A
10位范围:1400-17FF

渠道细分:
前两个比特是00
#接下来的四个比特表示道#
剩下的10位是为PPM数据串行值
00 00 00 xx xx xx xx xx - ch1 0000-03FF 00 00 00 XX XX XX XX XX  -  CH1 0000-03FF
00 00 01 xx xx xx xx xx - ch2 0400-07FF 00 00 01 XX XX XX XX XX  -  CH2 0400-07FF
00 00 10 xx xx xx xx xx - ch3 0800-0BFF 00 00 10 XX XX XX XX XX  -  CH3 0800-0BFF
00 00 11 xx xx xx xx xx - ch4 0C00-0FFF 00 00 11 XX XX XX XX XX  -  CH4 0C00-0FFF
00 01 00 xx xx xx xx xx - ch5 1000-13FF 00 01 00 XX XX XX XX XX  -  CH5 1000-13FF
00 01 01 xx xx xx xx xx - ch6 1400-17FF 00 01 01 XX XX XX XX XX  -  CH6 1400-17FF
如果支持DSM2低功率模块:
00 01 10 xx xx xx xx xx - ch7 1800-1BFF 00 01 10 XX XX XX XX XX  -  CH7 1800-1BFF
00 01 11 xx xx xx xx xx - ch8 1C00-1FFF 00 01 11 XX XX XX XX XX  -  CH8 1C00-1FFF
现在使用上述的数据有可能从LP5DSM无线电DSM2模块建立一个信道6的PPM串行编码器接口。
(其实我很想知道,他说怎么做到这些分析的,因为我也并不具备相关的专业知识,所有我不知道,如果我愿意,以后我会弄明白。另外我在“给力”固件作者的微博上也看到过一份类似的DSM2协议分析,有需要了解的可以自行查找。)
作者还给出了验证是否加密的办法:使用一块兼容的Cypress评估板用ISP链接查看信号输出情况。(PS:大致是这样,但是还是不是很理解{:1_69:})
作者有提到:如果你是微行飞行,那么也许使用DSM2模块连接到你最喜欢的发射器和AR6300的微接收器将是一个不错的选择。作者有用三通的来玩小车,并且接收器只有7g,或者更小更轻。(PS:这个主意听起来不错,前提是你自己会弄这些,至少我现在不会。{:1_69:}不过之前有了解过微型模型的收发系统,看起来不错,有需要可以自行查找相关内容。)
















作者好像已经成功解决了问题,但是描述的不是很详细,大致是作者得到了相关硬件,并编写的代码从作者的遥控器获得PPM输出串行数据。  CPU是Tiny2313主频为4MHz的。
tiny2313是主频为4MHz给为250ns或4096步进分辨率,然后将数据转移两位(或除以4)得到1us的分辨率(1024步骤),而这正是LP5DSM模块需要。然后,重新排序渠道,让它们匹配什么LP5DSM用途最后所有引导到UART在125K。目前,正在倾向PPM频道7和8,但作者不清楚是否会奏效(PS:这哥挺有幽默感的{:1_69:}),需要一个7或8通道接收器的Spektrum尝试一下。代码的变化将是非常简单的。我已经制定的限制等适当的1024位值不能超过。
作者有提供相关的东西:

另外在作者的实例中,作者的转换模块如下图:



在了解的过程中作者用的是tiny2313实现,有人在作者的帖子回使用PIC12F683实现类似的功能,如果需要了解请自行查找“PPM Translator Processor for Spektrum DX6 (Unigen) RF Deck”相关内容。





以上为本帖全部内容。还有两个相关的内容没有整理完成。
特别说明:本帖并不鼓励去做相关尝试,如果你有兴趣且有能力的话当然不反对。





欢迎继续阅读楼主其他信息

来自 13楼
发表于 2014-12-3 19:22 | 只看该作者
haolele 发表于 2014-12-3 12:43
你好,我想请教一下dsm2高频头和单片机的通讯协议,我没有找到和对频相关的说明。谢谢

gale大的资料http://bbs.ednchina.com/BLOG_ARTICLE_3006196.HTM
来自 16楼
发表于 2014-12-4 00:51 | 只看该作者
haolele 发表于 2014-12-3 12:43
你好,我想请教一下dsm2高频头和单片机的通讯协议,我没有找到和对频相关的说明。谢谢

DMS2/DSMX的协议格式如下,自己分析:
DX4e
DSM2/DSMX mode:                   18 00 AA AA BB BB CC CC DD DD EE EE FF FF
DSM2/DSMX mode, range test:   38 00 AA AA BB BB CC CC DD DD EE EE FF FF
DSM2/DSMX mode, bind:            98 00 00 00 05 FF 09 FF 0D FF 10 AA 14 AA

DSM2 mode:                         10 00 AA AA BB BB CC CC DD DD EE EE FF FF
DSM2 mode, range test:        30 00 AA AA BB BB CC CC DD DD EE EE FF FF
DSM2 mode, bind:                 90 00 00 00 05 FF 09 FF 0D FF 10 AA 14 AA

France mode:                       00 00 AA AA BB BB CC CC DD DD EE EE FF FF
France mode, range test:      20 00 AA AA BB BB CC CC DD DD EE EE FF FF
France mode, bind:               80 00 00 00 05 FF 09 FF 0D FF 10 AA 14 AA
从抓取的协议分析得出,98 00 是DSM2/DSMX通用头,90 00是针对DSM2的,低功率模式则是 80 00,剩下的是6个通道的failsafe脉冲信号。


来自 21楼
发表于 2014-12-9 09:22 | 只看该作者
没必要把RCGroups的帖子翻译过来吧,发个链接不就行了?
这个高频头的PPM转USART的源程序Gale早就提供了的 http://bbs.ednchina.com/BLOG_ARTICLE_3011401.HTM
沙发
 楼主| 发表于 2014-12-2 16:21 | 只看该作者
其实我想了解的是这个过程,过程会了,以后就可以尝试运用到其他方面,这是我发着个帖子的最大目的。希望对你也有用或给你启发。
3
发表于 2014-12-2 16:54 | 只看该作者
专业看不懂
4
发表于 2014-12-2 17:07 | 只看该作者
太专业了 看不懂
来自苹果客户端来自苹果客户端
5
发表于 2014-12-2 19:43 | 只看该作者
论坛里gale大神和xuwh008分别用atmega48和arduino实现了的,前者是用的飞梦的现成高频头写入新的程序并更换2.4g高频模块;后者是用arduino pro mini 3.3v8m模块加高频模块实现的.我都学着做过,这两位大神的方法相比楼主介绍的,大家做起来更容易些.尤其是用arduino的焊接那些都很简单.这两种都可以很容易就在本论坛搜到的

另外现在的dsm2高频模块一般常用的是125000和132000两种波特率,注意修改程序哦
6
发表于 2014-12-2 20:41 | 只看该作者
无法做到7通道,高频头内部做了限制。
除非换别的高频头试试,我也想知道行不行。
7
 楼主| 发表于 2014-12-2 21:04 | 只看该作者
失业中 发表于 2014-12-2 19:43
论坛里gale大神和xuwh008分别用atmega48和arduino实现了的,前者是用的飞梦的现成高频头写入新的程序并更换2 ...

这个不错,我只看过给力的那份,我发的这些是我在外面看到的,感觉成本也挺低的,就一个单片机+射频模块。各有千秋,另外谢谢关于波特率的提醒。
来自苹果客户端来自苹果客户端
8
 楼主| 发表于 2014-12-2 21:12 | 只看该作者
xuwh008 发表于 2014-12-2 20:41
无法做到7通道,高频头内部做了限制。
除非换别的高频头试试,我也想知道行不行。

我有一个想法不知道能不能实现,我看到一份dx5e高频头12个引脚的定义,其中有两个引脚定义为"主出从入","主入从出"而且还有一个引脚定义类似选片功能,不知道能不能两个射频模块一起使用来构成6通道以上的支持,这个只是猜测,不清楚能实现不。另外我看的帖子人家实现6通道以上了,看样子是改了控制程序,具体细节没太深入了解,回头再看看。
来自苹果客户端来自苹果客户端
9
发表于 2014-12-2 21:18 | 只看该作者
zdJack 发表于 2014-12-2 21:12
我有一个想法不知道能不能实现,我看到一份dx5e高频头12个引脚的定义,其中有两个引脚定义为"主出从入"," ...

问题是ID固定在发射模块上的,两个模块怎么同时绑定到一个接收上?
10
 楼主| 发表于 2014-12-2 21:24 | 只看该作者
xuwh008 发表于 2014-12-2 21:18
问题是ID固定在发射模块上的,两个模块怎么同时绑定到一个接收上?

为什么要绑定到一个接收?双接收也行啊。主要是不清楚控制如何实现,如果能解决控制双发模块的问题,那通用一个ID,用一个接收也不难吧?推测而已,具体实现目前没深入去想。
来自苹果客户端来自苹果客户端
11
发表于 2014-12-3 12:43 | 只看该作者
失业中 发表于 2014-12-2 19:43
论坛里gale大神和xuwh008分别用atmega48和arduino实现了的,前者是用的飞梦的现成高频头写入新的程序并更换2 ...

你好,我想请教一下dsm2高频头和单片机的通讯协议,我没有找到和对频相关的说明。谢谢
12
发表于 2014-12-3 15:52 | 只看该作者
学习!
14
发表于 2014-12-3 19:30 | 只看该作者
路过
15
发表于 2014-12-3 20:17 | 只看该作者
失业中 发表于 2014-12-3 19:22
gale大的资料http://bbs.ednchina.com/BLOG_ARTICLE_3006196.HTM

谢谢
17
发表于 2014-12-4 09:01 | 只看该作者
zdJack 发表于 2014-12-2 21:12
我有一个想法不知道能不能实现,我看到一份dx5e高频头12个引脚的定义,其中有两个引脚定义为"主出从入"," ...

这个或许是直接对射频芯片的SPI操作接口了
18
 楼主| 发表于 2014-12-4 09:02 | 只看该作者
xuwh008 发表于 2014-12-4 00:51
DMS2/DSMX的协议格式如下,自己分析:
DX4e
DSM2/DSMX mode:                   18 00 AA AA BB BB CC  ...

谢谢
来自苹果客户端来自苹果客户端
19
发表于 2014-12-6 17:09 | 只看该作者
xuwh008 发表于 2014-12-4 00:51
DMS2/DSMX的协议格式如下,自己分析:
DX4e
DSM2/DSMX mode:                   18 00 AA AA BB BB CC  ...

谢谢你的帮助

20
发表于 2014-12-7 10:49 | 只看该作者
太专业啦没弄明白
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /1 下一条

快速回复 返回顶部 返回列表