2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 【转载】315M无线模块数据传输——深入研究

【转载】315M无线模块数据传输——深入研究

时间:2019-04-07 06:12:42

相关推荐

【转载】315M无线模块数据传输——深入研究

基础篇在这里:用廉价的315M遥控模块实现数据传输

实验一:链路层协议(友情提醒:如果你没有过通信调试的经验,看以下文字可能会觉得晕晕乎乎的,请跳过本小节直接从第二节开始)用示波器查看315M接收模块的输出波形,发现有以下规律:1)平时没信号的时候输出杂波(串口一直接收到乱码);2)有信号的时候,输出发送模块送来的波形,但是最开始的一个字节数据会有干扰;3)信号发送结束后,输出端会有100ms左右的寂静期(输出低电平),然后重新输出杂波;4)数据发送期间,刚开始的数据的输出波形比较干净,信号持续的时间越长,越容易出现干扰(串口接收数据出现1-2bit的误码)。

根据以上特点,确定315M模块发送的帧结构如下:引导码+间隔15ms+帧头+数据+校验位,解释如下:

1)引导码的作用:从没信号到有信号的开始阶段,数据会有干扰,所以先发送几个字节的引导码。这样即使其中的1-2个引导码因为干扰而丢掉也没有关系。接收端收到引导码不保存,自动忽略。我的盖革计数器协议中,引导码为4个字节的字符‘A’。2)引导码+间隔15ms:保证从帧头开始,输出信号的波形非常干净;3)帧头:告诉接收端一个帧的开始。我的盖革计数器协议中,帧头为两个字符“AT”。帧头第一个字节跟引导码相同,这样在接收端处理接收数据时可以自动忽略重复收到的字符‘A’。4)校验:因为315M无线传输极易出现干扰,所以必须加上帧校验,避免将干扰信号误认为是有效数据。我的盖革计数器协议中,采用异或和的校验方式,具体为:将数据所有字节进行异或计算,取得一个异或和作为校验位。5)检验的改进:经过大量测试发现,经常出现以下情况:数据的某一个bit受到干扰,例如0变成1,而恰巧校验和的同一个bit也同样因为干扰而由0变成1,这样事实上收到了一位错误的数据,但是检验却刚好正确,接收端误认为是正确的数据。为了避免以上的情况,将校验和改为:异或和取反,即将数据所有字节进行异或计算,取得一个异或和,再取反作为校验位。6 )帧长:由于上面观察到的规律4,发送长帧的时候容易出现误码,而发送短帧的时候正确率接近100%。我的盖革计数器协议中,本来采用长度为12字节的帧一次将一分钟/5分钟/1小时/1天测量平均值发送给PC机,后来改为长度为6字节的短帧,分4次发送4个测量平均值。帧结构为:AAAA-15ms-AT-数据类型-数据高字节-数据低字节-校验和。

实验二:天线在网上查询了资料,关于315M模块的天线,有以下3种说法:1)弹簧天线,用1mm的铜线绕成弹簧形状,弹簧直径6mm,绕23圈。淘宝上卖的模块有部分是不焊天线的,如果有天线,就是这样的弹簧天线。2)用25cm的长导线,竖起来。3)315M模块用39cm的导线,433M模块用23cm。测试条件:速率1200bps。接收模块采用稳压5V供电,发送模块采用未经稳压的11V供电。发送模块的工作电流:静态3.7mA,发送数据时4-11mA(发送第一帧的时候4mA,第二帧5mA,第三帧6mA,如此逐次上升,到11mA再逐次下降到4mA。不知道为什么会变化)。发送连帧头+数据+校验位共6个字节的短帧。测试结果:1)弹簧天线:直线距离大于8米开始出现误码帧;2)25cm导线:书房到客厅,距离13米,隔一堵墙,开始出现误码帧;3)39cm导线:书房到阳台,距离15米,隔2堵墙一道门,正确率100%。如果改为发送12字节的长帧,开始出现误码,误码帧30%,正确70%。结论:采用39cm的导线效果最好。

实验三:采用归零码在网上查阅了一些资料,称数据通信最好不要采用非归零码,尤其是不能出现长1或者长0,否则容易受到干扰。建议采用归零码,例如曼切斯特码或者POCSAG码等。所谓的归零码就是发送的所有数据中,出现高电平和低电平的时间总和刚好是50%-50%。例如曼切斯特码,不再用高电平/低电平表示1和0,而是用电平跳变表示1和0,例如低电平变成高电平(上升沿)为1,下降沿为0,这样无论发送任何数据,都保证高电平和低电平的时间刚好是50%-50%。用示波器观察接收波形,跟资料描述的一致。我发送的数据帧为:AT-00-01-02-校验和,其中有大量的长0,很容易受到干扰将00变成01,或者40之类,其实只有一个bit出错,由于校验失败,整个帧就要丢弃。如果是12字节的长帧,出现误码帧的概率更大,一共96个bit,只要任何一个bit受到干扰出错,整个帧就要丢弃。原来的长帧结构为:AAAA-15ms-AT-10-00-01-02-03-04-05-06-07-XOR,现在改成归零码:0x5a-0x5a-0x5a-0x5a-15ms-0x5a-0xa5-99-55-56-59-5a-65-66-69-6a-XOR(原来的引导码和帧头AT不符合归零码规则,改为0x5a-0xa5)。效果超好!从书房到阳台(距离15米,隔2堵墙一道门)正确率100%。发送在13楼,接收走到10楼,仍然保持正确率100%。走到9楼(隔4层楼)开始出现误码帧。走到8楼(隔5层楼)只能偶尔收到一帧。这个效果已经超过我在TB上买的成品CC1100数传模块,单个模块60块钱,带SMA鞭状天线,在9600速率下,书房到阳台ok,隔一层楼ok,1.5层楼开始出现误码,隔2层楼则只能偶尔收到数据。

------------------------------- 总结-------------------------------------------------1)采用帧结构:0x5a-0x5a-0x5a-0x5a-间隔15ms-0x5a-0xa5-数据-XOR_SUM_NOT,尽量缩短帧长度;2)数据采用曼切斯特码来编码,可以极大地提高传输性能;3)天线采用39cm的导线,竖起来,效果最佳。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。