无线收发组件中,315MHz收发组件是常用的一种,如在机动车防盗应用方面使用315MHz组件的就很多,一般电子商店出售的这种模块,发送和接收都是三个接线端子,一个数据端,另外两个则是电源端,且相对较便宜,作者所买的一对才13元,若要自制则相对要困难些,因为类似遥控电路这种高频电路其调试是很专业的,需要专用的设备和仪器,大家可参考这方面的资料。
电路功能
本文所介绍的无线收发电路采用ATMEL公司的AT89C2051单片机作为编码和解码电路的核心器件,接收端采用1602字符液晶显示器显示所接收到的数据。
工作原理
首先介绍编码电路。在使用过程中,笔者直接将发送模块的三个端子与自制的一块学习板相连,没有添加其他电子元件,属单片机最小系统,S1和S2为两个按键,本文程序未用。图1所示为发送端电路图,图2为接收端电路图。
图1 发送端电路图
图2 接收端电路图
接收端将接收到的数据送入单片机的同时,还会驱动发光二极管以便对硬件和软件纠错,若数据接收成功还将显示在1602液晶显示器上,因本文主要是介绍无线遥控,关于1602字符液晶显示器的原理与应用不做介绍,读者可以参考《无线电》以往的相关文章,如果出于成本和程序难易程度的考虑,也可改用7段数码管甚至用发光二极管来作数据的显示。另外要注意一点,发送端和接收端的时钟晶振的频率必须要相同,否则编程会很麻烦甚至数据无法正常接收,这一点在介绍程序时还会提到。
软件方面,借鉴了红外遥控的编码思路,首先发送引导脉冲,紧接下来是数据码和数据反码,这一过程是在定时中断里面完成的,定时时间一到就调用一加法程序,然后将结果作为数据发送出去,计数器溢出后就清零进入下一循环。
引导脉冲由一个低电平和高电平组成,每个高低电平延时大约11ms,这个靠11ms的延时程序来实现,数据码和反码每个位也是使用这个延时,可以说这11ms的延时就相当于比较简单的通信协议,也是发送和接收程序的核心部分,只要两边的延时相同,00H到0FFH内的数据都能被正确接收,接收端检测到1 lms的高低电平变化后,就调用11ms的延时来判断数据“0”和“1”,并将正确接收到的数据显示在液晶显示器上。前面已讲过若时钟晶振的频率不同那么发送端和接收端的延时子程序就要计算得相一致,这样程序编制就很麻烦甚至不能正常接收数据,这一点和单片机的串口通信是同样的道理。加入数据反码为的是提高抗干扰的效果,接收端的程序中就可以设置两个数据存储器,一个放原码一个放反码,接收完毕再将两个存储器的内容作比较即可判断是否接收正确,若正确再执行应执行的程序。
本刊今年第1期有一篇介绍同样内容的文章使用的是串口通信的方法,而本文是采用延时,虽方法有点不一样,但关键的一点是数据传送速度都不能超过发送和接收模块的最快速度,本文使用11ms的延时,那每秒就大概是100个位的数据传送速度,读者可以将延时程序增大和减小,以此就可以测试出315MHz发送和接收模块的最高和最低数据传送速度。
发射端和接收端的程序见本期配刊光盘,都已尽量地模块化,能共享的就共享,所以整个程序都比较简单,且收发程序都使用的是8051最基本最常用的指令,没有用复杂的数学运算和逻辑运算指令,初学者很容易理解。因为主要是面向单片机初学者,所以本文介绍的编码格式是比较简单的,抗干扰效果较差,而无线数据通信的编码方法有很多种,有行业内的标准化编码方法,也有厂家独立研发的,而315MH2收发模块的工作原理和工作速度就基本决定了它不能用于高速通信,且也没有硬件抗干扰的能力,要排除干扰只能完全依靠软件来实现,本文的程序中,当315MHz接收模块接通电源后就一直处于工作状态,在有效接收范围内只要有315MHz发射模块发射信号,则接收端就会有输出,程序经笔者实际试验除配对的发射和接收两个系统外,再外加了一个机动车防盗遥控手柄,当然也是315MHz的,当发射和接收系统之间正在传送遥控数据时将遥控手柄的任意键按下,发现这样会打断系统间的数据传送导致接收端接收不到任何数据,这是最大的缺点,但是对要求较低的应用场合应该可以满足,因为程序至少不会对其他的315MHz发射模块有响应,意即不会有误动作,比如家里用来遥控电灯,不会随时都有人拿着个汽车防盗遥控器在附近按来按去。