首页 > 范文大全 > 正文

基于NRF24L01+的多点无线测温系统设计

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于NRF24L01+的多点无线测温系统设计范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

【摘要】利用nrf24l01+和AT89S51单片机构成无线测温模块,多点发送,一点接收,接收到的温度数据送到单片机,经过单片机处理后,再通过RS232串行通信发送至上位PC机接收程序加以显示。

【关键词】NRF2401+;无线测温;RS232串行通信

NRF24L01+是一款功能完备的无线收发芯片,工作在2.4~2.5GHz世界通用ISM频段的单片无线收发器芯片。无线收发器包括:频率发生器、增强型SchockBurstTM模式控制器、功率放大器、晶体振荡器、调制器、解调器。输出功率、频道选择和协议的设置可以通过SPI接口进行设置。nRF24L01+功耗低,在以-6dBm的功率发射时,工作电流也只有9mA;接收时,工作电流只有12.3mA,多种低功率工作模式(掉电模式和空闲模式)使节能设计更方便。

利用NRF24L01+、AT89S51单片机、DS18B20数字温度传感受器可以构成性能稳定、使用方便的无线测温模块,再编写相应的模块控制程序和上位机接收程序,就可以构成多用途的无线测温系统。本设计的实物已经在某公司电子节能灯测试线投入实际使用,效果较好,能方便直观地监测各点温度。也可以对硬件和软件加以适当改动,应用于其他如仓库管理、气象监测等场合。

1.硬件构成

1.1 NRF24L01+简介

NRF24L01是一款工作在2.4-2.5GHz世界通用ISM频段的单片无线收发器芯片。无线收发器包括:频率发生器、增强型SchockBurstTM模式控制器、功率放大器、晶体振荡器、调制器、解调器。输出功率、频道选择和协议的设置可以通过SPI接口进行设置。NRF24L01功耗低,在以-6dBm的功率发射时,工作电流也只有9mA;接收时,工作电流只有12.3mA,多种低功率工作模式(掉电模式和空闲模式)使节能设计更方便。NRF24L01+芯片共计20个引脚,各引脚排列及功能标注如图1所示。

各引脚功能详细描述如表1所列。

1.2 系统框图

本文所设计的无线测温系统主要包括:6块发送板、1块接收板、上位PC机。其中发送板与接收板的电路结构基本相同,所不同的是NRF24L01+的工作模式不同,另外发收板与上位PC机的RS232串行通讯口有线加以连接。多路无线测温系统结构如图2所示。

1.3 电路设计

电路设计部分主要包括:NRF24L01+的电源电路、上位机通讯用电平转换电路、收发板整体电路,下面逐一加以说明。

NRF24L01+模块采用市面上常用的组合模块,这样可以避免单体芯片焊接的麻烦,也能保证通讯的质量。但该模块对电源要求较高,电压数值、滤波的处理均需要达到要求。NRF24L01+需要3.3V的直流电压,且电源路径中要加以多级LC滤波,才能使其工作状态稳定,经过参考各种资料,最终设计出的NRF24L01+电源电路如图3所示。

由于需要通过RS232串行通讯进行数据的传送,所以要在单片机和上位PC机之间进行电平变换,否则通讯不能正常进行。主要是因为TTL电平逻辑与RS232电平逻辑采用不同的标准,TTL电平采用正逻辑,RS232采用负逻辑。最终设计出的通讯电路如图4所示。

综合以上电路及其他电路需求,设计出收发板整体电路,并经飞线试验证实是稳定可靠的,电路如图5所示。

2.软件设计

在完成硬件设计及试验后,就进入到软件设计的阶段,软件设计主要包括:发送板单片机程序设计、接收板单片机程序设计、上位PC机接收程序设计(采用VB)。

2.1 发送板单片机程序设计

发送板主要任务是进行DS18B20数字温度传感器的设置与数据读取和转换、NRF24L01+模块的设置与数据写入。DS18B20的单片机控制方法在网上随处可见,在此就不过多说明,主要说明DS18B20的温度数据处理方法,DS18B20的温度数据是BCD码二进制数,需要对其进行整合及去小数位处理,再进行查表将各位转换成相应的ASCII码,存储到缓冲单元,等待单片机依次送入NRF24L01+模块进行无线发送。

NRF24L01+的设置主要包括:设置本地地址、频道设定、发射速率设定、中数应答模式设定等。完成了相关设置后,就可由单片机进行查询模式的数据发送控制,程序流程图如图6所示。

2.2 接收板单片机程序设计

对于接收板而言,同样首先要进行nRF24 L01初始化配置,设定为接收工作模式,由于一共要接收6路信息,所以还要设定好通道0到通道5的地址。然后要为进行串通信做准备,设定串行口的工作模式。然后就依次把6块发送板发送的温度信息接收进来并打包。待6组数据接收完毕,启动串行发送函数将数据传输给上位机。最后返回准备第二次重复工作。程序流程如图7所示。

其中最为关键的6路通道地址设置程序段如下:

//NRF24L01初始化

void init_NRF24L01(void)

{

inerDelay_us(100);//短延时

CE=0;//NRF24L01芯片进入待机模式1状态

CSN=1;//CSN引脚置高电位,关闭SPI口

SCK=0;//时钟引脚置低电位

//写本地地址

SPI_Write_Buf(WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH);

//写接收通道0地址

SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,RX_ADDRESS_0,RX_ADR_WIDTH);

//写接收通道1地址

SPI_Write_Buf(WRITE_REG+RX_ADDR_P1,RX_ADDRESS_1,RX_ADR_WIDTH);

//写接收端地址,此处只要写入一个低字节地址即可。很关键

SPI_Write_Buf(WRITE_REG+RX_ADDR_P2,RX_ADDRESS_2,1);

//写接收端地址,此处只要写入一个低字节地址即可。很关键

SPI_Write_Buf(WRITE_REG+RX_ADDR_P3,RX_ADDRESS_3,1);

//写接收端地址,此处只要写入一个低字节地址即可。很关键

SPI_Write_Buf(WRITE_REG+RX_ADDR_P4,RX_ADDRESS_4,1);

//写接收端地址,此处只要写入一个低字节地址即可。很关键

SPI_Write_Buf(WRITE_REG+RX_ADDR_P5,RX_ADDRESS_5,1);

2.3 上位机接收程序设计(VB)

上位接收程序的设计主要包括:通讯控件的设置、接收状态判断、数据整合处理、送相应用窗口显示。Visual Basic以其简明易懂的语法、快速可见的界面控制、方便实用的通讯模组,得到了众多工程技术人员的编程首选,由其在RS232串行通讯编程应用领域,更是独具特色。在反复调整后的程序流程图如图8所示。