M无线模块数据传输
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
M无线模块数据传输集团标准化小组:[VVOPPT-JOPP28-JPPTL98-LOPPNN]
315M无线模块数据传输常用的近距离无线传输有很多种方式:1)CC1100/NRF905433MHz无线收发模块;2)NRF24012.4GHz无线收发模块;3)蓝牙模块;4)Zigbee系列无线模块;以上1/2/3模块,一个大概要几十块钱,一套加起来要一百多块,4就更贵了,单个就要上百块钱。
而常用的315M遥控模块就便宜很多了,收发一套淘宝上才卖8块钱。这种模块用途极其广泛,例如遥控开关/汽车/门禁/防盗等,大部分是配合2262/2272编解码芯片实现开关的功能。如果能够利用315M模块实现数据传输,透明传输串口数据,那将是无线数据传输最廉价的方式。
就是这种模块,不带编码解码芯片的,淘宝价一套8块钱:
发送电路图,使用声表,工作稳定:
接收电路图,超外差接收,用了一片LM358:试验一:单片机串口发送端TX直接接315M发送模块的TXD,另外一个串口的接收端RX直接接315M 接收模块的DATE输出端:
结果如上图所示,串口发送单字节0x50的时候,串口TX端的波形如上图上半部分所示,一个开始位,一个停止位,8个数据位(低位在前高位在后)。下半部分是通过315M模块无线传输之后,在串口接收端RX收到的波形。接收下来之后,发现数据传输错误,发送0x50,收到的是
0x05,发0x40收到0x01,发送0x41收到0x50,发送0x42收到0x28。传输错误的原因:在有数据时候,波形是正确的。但是串口TX端在空闲的时候,是高电平状态,而通过315M无线传输之后,空闲时候却是低电平状态!结果就是接收电路读出的数据错开了一位,数据传输错误。试
验二:串口TX经过反相后,再通过315M模块传输,接收端再反相一下,电路图如下:
这次数据传输成功了!1)在1200bps和2400bps速率下,在数据传输期间,数据是正确的,但是数据发送完成后,接收端会收到一大堆的乱码;2)在4800bps速率下,首字节丢失,其他字节传输正常,发送完成后仍然跟着一堆乱码。----------------------------------------分割线-------------------------------------------------------------------总结:1)通过315M无线模块透明传输串口数据是可行的,但是传输之前和接收之后要加一个三极管反相;2)在1200bps和2400bps 速率下数据稳定传输;在4800bps速率下,首字节丢失,其他字节传输正常;3)数据发送完成后,接收端会收到一大堆的乱码,所以在软件上要加上帧校验,否则可能会引起误触发。例如我的遥控小车,遥控器发送给小车的控制命令只需要单字节,我在软件上使用3个字节作为一个命令帧,格式为AT+命令字,只有连续收到A和T两个字符之后,后面收到的一个字符才认为是有效的命令,否则认为是乱码,丢弃之。4)传输距离:发送端和接收端都采用5V供电,天线使用一小段线圈的情况下,直线5米稳定传输。更长的距离没有测试过,以后有空测试一下再补充。////////////基础篇在这里:用廉价的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%。用示波器观察接收波形,跟资料描述的一致。我