资源描述
无线串口通信实验报告
CHINAJIA
2
无线串口通信
一 实验目的
1 完成串口基本实验(MCU和PC通信)
2 完成无线模块的调试
3 编制通信协议是通信可靠稳定
二.实验原理
1、无线数据传输模块PTR 2000和无线通信芯片nRF401
本实验项目选用的无线传输模块为PTR2000,他是一种超小型、低功耗、高速率的无线收发数据传输模块,使用的是挪威Nordic公司推出的nRF401无线通信芯片。该芯片使用了433MHz IGM频段,是真正的单片UHF无线收发一体芯片。
在数据编码方面,nRF401采用串口传输,无须多数据进行曼彻斯特编码,应用及编程非常简单,传送的效率很高,标称速率就是实际速率。
在控制芯片外围元件的数量方面,nRF401也是一个较为理想的选择,它的外围元件仅需10个左右,无须声表面滤波器、变容器等昂贵的元件,只需使用4MHz的晶体,收发天线合一,减小了系统开发的难度。
在目前较为流行的无线通信芯片中,无论是从使用的方便性、传输速度还是输出功率等各个方面考虑,nRF401都是较为理想的选择,本实验项目就是基于 nRF401芯片的无线数据传输模块。
PTR2000是一种超小型、低功耗、高速度的无限数据传输模块,它的通信速率最高可达20Kbps,也可工作在其他速率,如4800bps/9600bps。PTR2000采用了低发射功率、高灵敏度设计,可满足无线管制的要求且无须使用许可证,是目前低功率无线数据传输的理想选择。
2、无线通信芯片Nrf401引脚功能说明
Nrf401使用20引脚的SSOCI封装,其引脚分布如下图1-1
下面介绍各个引脚的功能。
XC1、XC2(引脚1、20):这两个引脚用于连接外部参考晶振,其中,XC1为晶振输入,XC2为晶振输出。
VDD(引脚2、8、13):电源输入脚,电压范围2.7-5.2V。
VSS(引脚3、7、14、17):电源地。
FILT1(引脚4):滤波器接入端。
VCO1、VCO2(引脚5、6):外界压控振荡电感。
DIN(引脚9):发射数据输入端,该引脚用于从单片机接收要发送的数据。
DOUT(引脚10):接收数据输出端,该引脚讲无线接收到的数据送入单片机。
RF_PWR(引脚11):发射功率设置。
CS(引脚12):频道选择端。CS=0,芯片工作在频道1,即433.92MHz频道;CS=1,芯片工作频道2,即434.33MHz。
ANT1、ANT2(引脚16、15):天线接口。
PWR(引脚18):低功耗控制。PWR=1时,芯片处于正常工作状态;PWR=0时,芯片为待机微功耗状态。
TXEN(引脚19):工作模式切换。TXEN=1时,芯片为数据发射状态;TXEN=0时;芯片为数据接收状态。
3、无线数据传输模块PTR2000引脚功能说明
PTR2000是基于Nrf401芯片的无线数据传输模块,它的引脚分布如图1-2所示。
下面介绍各个引脚的功能。
VCC(引脚1):电源输入脚,电压范围2.7-5.2V。
CS(引脚2):频道选择端。CS=0,芯片工作在频道1,即433.92MHz频道;CS=1,芯片工作在频道2,即434.33MHz。
DO(引脚3):数据输出端。
DI(引脚4):数据输入端。
GND(引脚5):电源地。
PWR(引脚6):低功耗控制。PWR=1时,模块处于正常工作状态;PWR=0时,模块为待机微功耗状态。
TXEN(引脚7):工作模式切换。TXEN=1时,模块为数据发射状态;TXEN=0时,模块为数据接收状态。
正确地设置工作模式对于使用PTR2000模块至关重要,对于PTR2000模块而言,它的工作模式设置主要包括工作频道的设置和发送、接收、待机状态的设置,这由TXEN、CS、PWR三个引脚共同决定,如
下表1-3:
引脚电平
工作模式
TXEN
CS
PWR
工作频道
工作状态
0
0
1
1(433.92MHz
接收
0
1
1
2(434.33MHz
接收
1
0
1
1(433.92MHz)
发射
1
1
1
2(434.33MHz)
发射
-
-
0
-
待机
表1-3 PTR2000工作模式设置
5、发送端单片机和PTR2000的接口电路设计
本实验项目中单片机选用Atmel公司的AT89C52,它通过自己的串口以及I/O控制口与PTR2000直接相连,接口电路如图1-4所示:
图1-4中,AT89C52单片机主要完成数据的采集和处理,向PTR2000模块发送数据并且接收PC机通过PTR2000传送过来的数据。和单片机相连的PTR2000模块主要是将单片机的待传数据调制成射频信号,发送到PC机端的PTR2000模块,同时接受PC机端PTR2000模块传过来的射频信号,并调制成单片机能够识别的TTL信号送给单片机。
图1-4 单片机和PTR2000接口电路原理图6、接收端单片机和PTR2000的接口电路
图1-5 接收端单片机和PTR2000接口电路原理图
7、串行无线通信协议设计
无线通信中,由于外部环境的干扰,通常误码率是比较高的,因此通信协议的设计对保证通信的可靠性十分重要。对于协议设计而言,最重要的就是帧结构的设计。
本实验存在指令帧和数据帧。数据帧的内容包括起始字节、数据长度字节、数据字节、结束字节、和校验和字节,见下表1-6
表1-6 串行无线通信的数据帧结构
起始字节
数据长度字节
数据字节
校验和字节
结束字节
1字节
1字节
N字节
1字节
1字节
三.源程序
1、发送端单片机程序设计
//发送模块
////////////////////////
#include<reg52.h>
////////////////////////
#define uchar unsigned char
#define uint unsigned int
////////////////////////
sbit TXEN=P2^0;//定义发送\接受模式选择位
sbit PWR_UP=P2^1;//工作模式\待机模式选择位
sbit CS=P2^2;//频率通道选择位
sbit test=P0^0;
////////////////////////
uchar T_buffer[11]={0x55,0xaa};
uchar R_buffer[11];
///////////////////////
//配置UART;9600;
void init_UART()
{
TMOD=0X20;
TH1=0XFD;
TL1=0XFD;
TR1=1;//波特率设置
SCON=0X40;
//////
}
/////////////////
void delay_1s()
{
uint delay_1s_aa=60000;
while(delay_1s_aa-->0);
}
////////////////
uchar flag=0;
uchar i=0;
uint aa=0;
void main()
{
init_UART();//初始化UART,9600
IE=0x90;//开启UART中断
////////
aa=240;
while(aa-->0);
TXEN=0;//TXEN经过反相器反向后变成高电平
aa=78;
while(aa-->0);
while(1)
{
SBUF=T_buffer[i];//发送数据
while(flag==0);//等待发送中断并结束
delay_1s();//等待一段时间
flag=0;//将标志复位
if(i==0)
i=1;
else //换一个数据
i=0;
}
}
//
void s_(void) interrupt 4 using 1
{
if(TI==1)
{
TI=0;
flag=1;
test=0;
}
}
2、接收端计算机程序设计
#include<reg52.h>
///////////////////
#define uchar unsigned char
#define uint unsigned int
///////////////////
sbit TXEN=P2^0;//定义发送\接受模式选择位
sbit PWR_UP=P2^1;//工作模式\待机模式选择位
sbit CS=P2^2;//频率通道选择位
////////////////////////
uchar buffer;
////////////////////////
//开机延时程序,等待电压稳定
void init_delay()
{
uchar delay_a=200;
while(delay_a-->0);
}
///////////////////////
//配置UART;9600;
void init_UART()
{
TMOD=0X20;
TH1=0XFD;
TL1=0XFD;
TR1=1;//波特率设置
SCON=0X40;
//////
}
//////////
uchar flag=0;
///////////
void main()
{
uint aa=728;
P0=0X00;
init_UART();//初始化UART,9600
while(aa-->0);//等待5MS
REN=1;//UART使能接受
IE=0X90;//开启UART中断
while(1)
{
while(flag==0);//等待UART的接受中断并结束
P0=buffer;//将接受下来的数据通过P0口显示出来
flag=0;//将标志复位
}
}
////////////
//UART的接受中断
void R_(void) interrupt 4 using 1
{
if(RI==1)
{
RI=0;//将接受中断标志位复位
buffer=SBUF;//将UART中的数据接收下来,并保存在buffer变量中
flag=1;//将标志置位
}
}
四.干扰分析
51系列单片机工作的时候,会产生比较强的电磁辐射,频率范围在9MHZ-900MHZ,因此它会影响任何此频率内的无线接收设备的灵敏度,解决的方法是尽量降低CPU 晶体的频率。测试表明:在1M晶体的辐射强度,只有12M晶体时的1/3,因此,如果把晶体频率选择在500K以下,可以有效降低CPU的辐射干扰。另外一个比较好的方法是:将接收模块通过一个3芯屏蔽电缆(地,+5V,DATA,屏蔽线的地线悬空)将模块引出到离开单片机2米以外,则不管51CPU使用那个频率的晶体,这种干扰就会基本消除。对于PIC单片机,则没有上述辐射干扰。可以任意使用。
第五部分 实验结果
刚上电,效果不明显,数据有误码
待稳定以后,数据显示为55H
LED显示数据为55h
第六部分 参考文献
[1]何立民.MCS51系列单片机应用系统设计[M].北京:北京航空航天 出版社,1999.
[2]沈红卫.单片机应用系统设计实例与分析[M].北京:北京航空航 天大学出版社,2003
展开阅读全文