315M无线模块数据传输——深入研究 小虫的机器人8元V35元的传输成本

实验一:链路层协议
(友情提醒:如果你没有过通信调试的经验,看以下文字可能会觉得晕晕乎乎的,请跳过本小节直接从第二节开始)
用示波器查看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的导线,竖起来,效果最佳。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值