433m 无线收发模块的使用教程_无线发射接收模块怎么使用「建议收藏」

433m 无线收发模块的使用教程_无线发射接收模块怎么使用「建议收藏」描述了315/433超再生无线收发模块的使用,并提供Proteus7.8仿真程序下载

proteus7.8 仿真PT2260_R4无线收发程序下载:

链接:https://pan.baidu.com/s/1IHxhLDaeIPAEVQO4SIMhuA 
提取码:x0jm 

Pro7.8  软件下载:
链接:https://pan.baidu.com/s/1kTFvD9CwN_Ac-_-TgE7KqA?pwd=nh2n 
提取码:nh2n 

89C51RD2 手册   PT2260_R4手册

链接:https://pan.baidu.com/s/1Beau5-X0lwdly5YnUO6iig 
提取码:17sk 

就是这样的模块:

 433m 无线收发模块的使用教程_无线发射接收模块怎么使用「建议收藏」

       这种模块不带编解码,需要连接单片机或编解码芯片完成发送和接收解码。

      这种模块称为超再生模块,比起超外差模块来,它受到的干扰会比较多一些,没有有效信号的时候也会有一些无效脉冲,但基本上不影响使用。

关于无线通讯的一些概念:

基带

        基带就是原始信号,由于频率,幅值等原因,纯粹的基带信号往往是无法实现远距离发送,或者根本无法发送的。例如:如果声音信号作为基带信号,那么它传播的距离是十分有限的(通讯基本靠吼),为了实现远距离发送,必须将基带信号放在经调制的载波上,才能使它传播的更远。

载波

       载波就是用来加载基带信号的一种信号,例如广播信号常用的调频和调幅信号。

那么如何将基带信号放到载波上呢?

调制与解调

       这就需要调制,例如广播信号的调幅信号,就是根据基带信号对载波的幅值进行调制,这种经过调制的载波信号就和基带信号发生联系,传播出去之后就等于基带信号也加载在其中被传播出去了。在接收端对调制信号进行解调,就能得到基带信号。调频也是同样道理,只不过它是根据基带信号对载波的频率进行调制。

这里使用的无线信号调制方式称为:ASK

ASK的调制方式

       ASK(Amplitude Shift Keying)幅移键控调制方式,是一种基于幅度变化的数字调制方式。在ASK调制中,每个数字位被映射到不同的幅度水平,以表示不同的数据值。

      每个数字位通过改变载波信号的幅度来表示,通常使用两个不同的幅度水平来表示0和1。例如,可以使用高幅度表示1,低幅度表示0。

     需要注意的是,ASK调制方式相对简单,但在传输过程中对信道的要求较高。由于ASK调制只使用了两个幅度水平,对噪声和干扰的抗干扰能力较差。因此,在实际应用中,需要根据具体的通信环境和要求来选择合适的调制方式。

关于通讯协议:

     发送信号的方式有很多种,这里使用的数据格式是PT2260_R4芯片的数据格式。此外还有EV1527等芯片的通讯格式,大同小异。当然也可以自己定义任何格式的数据进行发送和接收。

PT2260_R4芯片:

PT2260_R4,通常用于这种遥控器上,R4表示有4个按键。

433m 无线收发模块的使用教程_无线发射接收模块怎么使用「建议收藏」

拆开后的样子:

433m 无线收发模块的使用教程_无线发射接收模块怎么使用「建议收藏」

        红箭头所指的是电阻R4,标有83E的标识,代表电阻值是7.15M。这个电阻称为振荡电阻,决定了数据发送的速度。注意它和载波的433MHz无关,数据发送的是快是慢由这个电阻决定,但是不管数据发送速度是多少,载波都是433MHz的。

背面:

433m 无线收发模块的使用教程_无线发射接收模块怎么使用「建议收藏」

       电池的上面,有三排焊盘,称为地址码焊盘。地址码一共8位,左边是高位,右边是低位。中间的焊盘如果与上面的焊盘连接,代表地址位为1,与下面连代表地址位为0,如果悬空,代表地址位为F。

      也就是这种遥控器一共有 3^8=6561种可能的地址码(不算太多)。

PT2260_R4的数据格式:

一个数据位,是1024个a

433m 无线收发模块的使用教程_无线发射接收模块怎么使用「建议收藏」

一个同步位,是4096个a

433m 无线收发模块的使用教程_无线发射接收模块怎么使用「建议收藏」

一个完整的数据字,包括8位地址码,4位数据码,1位同步码

433m 无线收发模块的使用教程_无线发射接收模块怎么使用「建议收藏」

       解释一下这个OSC,就是由遥控器上的振荡电阻决定的,电阻不同,OSC的周期不同,例如,我购买的遥控器上的振荡电阻决定的OSC,经实际测量是:2.533us。

       也就是,以一个a(OSC)作为时间单位,如果想要表示数据0,那就发送128a时长的载波,再停止发送348a时长的载波。

表示数据1:

发送384a时长的载波,停止发送128a时长的载波。

每个位需要发送2遍。

同步码的表示:

发送128a时长的载波,停止发送(4096-128)a,时长的载波

一个完整的字包括:

8个地址位,4个数据位,一个同步码

每次发送同样的字数据4次。

模块的硬件连接:

数据发送模块的连接:

433m 无线收发模块的使用教程_无线发射接收模块怎么使用「建议收藏」

        发送模块的DATA接单片机的P2_7,我使用的单片机是89C51RD2。每当管腿为高的时候,模块向外发送433MHz的射频载波。管脚为低的时候,模块停止发送载波。

       这样根据发送和停止发送载波的时间不同,就可以表示数据0,1,F(地址悬空码),SYNC(同步码)。具体见上面介绍的数据格式。

       这里要说明一下的是,发射模块发射信号的距离远近和模块上的电压有关,我购买的这个模块,电压范围是3-12V。电压越高,发射信号距离越远。

       但是要注意,如果模块所加的电压不是单片机的电源电压,管脚就不能直接驱动了,会烧,要加晶体管驱动。

接收模块的连接

433m 无线收发模块的使用教程_无线发射接收模块怎么使用「建议收藏」

模块的数据端和单片机的外部中断0(INT0)相连接。

数据发送程序:

现在,模拟PT2260_R4芯片构建一段数据编码,并发送出去。

如果地址设定为(从高位到地位)F F F F F F F 1

数据设定为四个按键:A: 0001

                    B: 0010

                    C: 0100

                    D: 1000

例如:要发送按键A的值,首先发送8位地址码:FFFF FFF1

然后发送表示键A的四位数据码:0001

接下来发送同步码:SYNC

这样,一个完整的数据字就被发送出去了。

注意发送的时候,首先发送的是最低位。

以上的过程重复4遍。

433m 无线收发模块的使用教程_无线发射接收模块怎么使用「建议收藏」

使用带有PT2260_R4的遥控器发送数据,经测量两个同步位之间是 41.5ms

(8+4)*1024+4096=16384a

16384a=41.5ms  à  a=2.533us  也就是7.15M的振荡电阻R4所决定的OSC周期

那么可以算出:

一个宽脉冲的时间384a=384*2.533us=973us

一个窄脉冲的时间128a=128*2.533us=324us

一个同步位的低电平(4096-128)a=10051us

//定义宽脉冲,窄脉冲,和SYNC低的时长
//128a
//窄脉冲 324us  11.0592  16位重装入方式的初值 	
//	TL1 = 0xD5;		  
//	TH1 = 0xFE;		

//384a
//宽脉冲 973us 
//	TL1 = 0x7F;		//设置定时初值
//	TH1 = 0xFC;		//设置定时初值

//4096-128
//SYNC低 10051us
//	TL1 = 0xD1;		//设置定时初值
//	TH1 = 0xDB;		//设置定时初值

每个数据位要发送2次

128a时长的Pfsend(P2_7)高电平期间,模块向外发送433MHz的载波,384a的时长,模块停止发送载波。这样就表示发送的是数据位0。

见波形:

433m 无线收发模块的使用教程_无线发射接收模块怎么使用「建议收藏」

使用定时器T1,设定为16位自动重装入模式,首先对定时器T1进行初始化:

//8051 T1初始化
void Timer1_init()
{
 TMOD=0x10; //T1 16位自动重装入
 ET1=0;      //关闭定时器中断
 TR1=0;
}


//发送数据0
void Send_bit0()
{
  uchar data i;

  for(i=0; i<2; i++)
  {
 //128a高(发射载波)
 //T1装入初值
   TL1 = 0xD5;		  
   TH1 = 0xFE;	  //窄脉冲  298us

   RFsend=1; //发射载波
   TR1=1;   //开启定时器

   while(TF1 ==0);  //等待溢出
   RFsend=0;      //停止发射载波
   TF1=0;         //清溢出标志
   TR1=0;         //关定时

   
 //384低(停止发射载波)  //宽脉冲  973us 
 //T1装入初值
 	TL1 = 0x7F;		
	TH1 = 0xFC;		//设置定时初值

	TR1=1;
	while(TF1==0);  //等待溢出
    TF1=0;
    TR1=0;
  }
}

数据接收程序:

        由于89C51RD2只能下降沿触发INT0中断,因此,接收数据时,首先等待同步码的低电平,判断是否满足时长,之后接收8位地址码,和4位数据码。一个完整的字收到后,再接收一遍。如果两遍的数据相同,就认为收到了正确的数据。

首先设置外部中断0,下降沿触发模式,允许中断。

void RF_init(void)
{
 IT0=1;		//对于老式51的设置  IT=0电平触发, IT=1下降沿触发
 EX0=1;		//开启外部中断0
}

       这样每当有下降沿时,产生中断。在中断服务程序中,首先计数同步码的低电平,如果满足要求,再接着接收其余的数据,否则放弃数据重新接收。如果连续两遍接收的数据都相同,则认为收到了有效的数据。

如何计数高电平或低电平的时长:

//如果使用16位定时器,记满数据是2^16=65536

//如果晶振是11.0592M,则一个OSC=0.090422454us=1T

//12T=12*OSC=1.085069444us  也就是,每记一个数,代表这么长时间

//获取高电平的时长

uint RF_Get_High(void)
{
	TL0 = 0;		    // 清空16位计数器0
	TH0 = 0;		    // 清空16位计数器0
	TR0 = 1;
	while (RF_Pin && (TH0<0x80)); 	  // 信号引脚变成低电平或超时
	TR0 = 0;
	return (TH0 * 256 + TL0);
}  

//也就是计数值*1.085069444us,就是高电平的时长。


// 获取低电平时间
uint RF_Get_Low(void)
{
	TL0 = 0;	         // 清空16位计数器0
	TH0 = 0;	         // 清空16位计数器0
	TR0 = 1;	         // 计数器0开始运行
	while (!RF_Pin && (TH0<0x80));	  // 信号引脚变成高或超时
                                      // 0x8000=32768,  32768*1.085069444us=35ms           
	TR0 = 0;                         	  
	return (TH0 * 256 + TL0);		  // 返回16位计数器的计数值。
}

//接收地址和数据的时候,都是从最低位开始接收。

433m 无线收发模块的使用教程_无线发射接收模块怎么使用「建议收藏」

程序及其软件下载地址,见文章开头。

今天的文章433m 无线收发模块的使用教程_无线发射接收模块怎么使用「建议收藏」分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/84196.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注