打印
[资料分享]

基于nRF24L01的无线温度采集系统设计

[复制链接]
1451|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
FCCdsp|  楼主 | 2019-4-27 11:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于nRF24L01的无线温度采集系统设计

1 引言
    温度采集系统所采集的温度通常通过RS485、CAN总线通信方式传输至上位机,但这种方式维护较困难,不利于工业现场生产;而无线通信GPRS技术传输距离长,通信可靠稳定,但设计复杂、成本昂贵。这里采用工业级内置硬件链路层协议的低成本单芯片nRF24L01型无线收发器件实现系统间的无线通信,完成无线信号的接收、显示及报警功能。



2 nRF24L01简介
    nRF24L01是一款工业级内置硬件链路层协议的低成本无线收发器。该器件工作于2.4 GHz全球开放ISM频段,内置频率合成器、功率放大器、晶体振荡器、调制器等功能模块,并融合增强型ShockBurst技术,其输出功率和通信频道可通过程序配置。拥有ShockBurst和Enhanced ShockBurst两种数据传输模式。可直接与单片机I/O连接,外接元件数目少。nRF24L01功耗低,以-6 dBm的功率发射时,工作电流仅9 mA;接收时,工作电流仅12.3 mA,多种低功率工作模式(掉电和空闲模式)更利于节能设计。



3 系统硬件设计
    系统硬件设计主要由采集发送和接收显示两部分组成。图1为采集发送电路原理图,该电路主要由温度传感器DS18B20、单片机STC12LE5408和nRF24L01组成。
  



  STC12LE5408是增强型8051单片机,速度快,集成度高,电压范围宽(2.2~3.8 V),和MCS-51系列单片机指令系统完全兼容。其内部还有8 KB Flash程序存储器,512字节RAM、2 KB EEPROM、4路PWM以及硬件看门狗(WDT)等资源.性价比高。
    DSl8B20是DALLAS公司生产的单总线数字1-Wire温度传感器,可把温度信号直接转换成串行数字信号供单片机处理,采用1-Wire接口。DSl8B20的数据端DQ可通过4.7 kΩ的上拉电阻接STC12LE5408。nRF24L01的CE,CSN,SCK,MOSI,MISO,IRQ引脚则可接STC12LE5408的任意端口,但需在编程时注意,这里接至P1端口。由于nRF24L01具有接收数据功能,所以接收显示电路由单片机STC12LE5408、nRF24L01和显示电路组成。所采集的数据也通过串口发送至PC机进行处理。






4 系统软件设计
4.1 nRF24L01的软件设置
    由于STC12LE5408无标准的SPI总线接口,需采用软件模拟实现SPI总线。因此应严格按照SPI的时序要求编写,否则导致对nRF24L01的操作失败。nRF24L01的各种命令字都只有一个字节,分为读寄存器、写寄存器、读数据接收缓冲区、写发送数据缓冲区等。在输入任意命令字的同时,MISO输出STATUS寄存器的内容。对RF24L01的读写程序代码如下:



  nRF24L01的ShockBurst和Enhanced ShockBurst两种数据模式的区别是:后者比前者多一个确认数据传输的信号,保证数据传输的可靠性。按Enhanced ShockBurst模式初始化,重新发送等待时间为250μs,重新发送次数为10次,地址是RX_ADR_WIDTH,输出功率为0 dBm,速度为1 Mb/s。nRF24L01处于POWER_UP状态。函数中WRITE_REG为写命令基地址0x20。其相关程序如下:







  在接收端将nRF24L01配置为接收模式,地址是RX_AW,负载数据宽度是TX_PL_W,使能接收完数据中断,CRC校验位为2字节,nRF24L01处于POWER_UP状态,其相关程序代码如下:




4.2 数据采集发送子程序
  数据采集发送部分上电后首先配置nRF24L01的相关寄存器.使其工作在发射状态,然后复位DSl8B20,向DSl8B20发送温度转换命令,读取已转换的温度值,然后由nRF24L01发送.其流程如图2所示。










  这里需注意DS18B20是单总线器件.其硬件接口比较简单,这是以相对复杂的软件编程为代价的。DS18B20与单片机的接口协议也是通过严格的时序来实现的。虽然增加软件开销,但由于STC12LE5408运行速度快,可以满足系统要求。另外,对DS18B20操作的程序必须按照初始化,ROM操作命令,存储器操作命令,执行/数据的先后顺序进行。如果总线上只挂1个DS18B20,初始化后可执行跳过ROM命令,再发送温度转换命令。温度转换完成后,将温度值暂存在发送缓冲区tx_buf中,然后通过nRF24L01发送,其相关程序代码如下:




4.3 数据接收显示子程序
  nRF24L01在数据接收显示中为接收状态。当nRF24L01模块配置为接收模式后,当接收到数据中断时,从接收FIFO读取数据。然后将其存储到接收缓冲区rX_bur中。其相关程序代码如下:




5 结束语
  本文介绍了nRF24L01和STC12LE5408组成的无线温度采集系统。采用高度集成的nRF24L01器件。大大简化了系统硬件和软件设计,减小了体积,提高了系统工作的可靠性。采用新一代增强型8051单片机STC12LE5408降低了系统成本,缩短了开发时间。实践证明该系统设计简单,成本低廉,通信可靠,运行稳定,性能可靠,具有较高的实用价值。



使用特权

评论回复

相关帖子

沙发
FCCdsp|  楼主 | 2019-4-27 11:12 | 只看该作者
基于nRF24L01的无线温度采集系统设计

文档1.pdf

254.44 KB

使用特权

评论回复
板凳
51xlf| | 2019-4-28 16:48 | 只看该作者
用过315MHZ和433MHZ无线收发模块  

使用特权

评论回复
地板
i1mcu| | 2019-4-28 16:48 | 只看该作者
用nRF24L01做了一个无线通信系统  

使用特权

评论回复
5
pmp| | 2019-4-28 16:48 | 只看该作者
NRF24L01能当做wifi用吗           

使用特权

评论回复
6
mmbs| | 2019-4-28 16:49 | 只看该作者
nRF24L01无线模块 无线传输能穿透玻璃吗     

使用特权

评论回复
7
1988020566| | 2019-4-28 16:49 | 只看该作者
nRF24l01射频芯片自身没有集成任何协议

使用特权

评论回复
8
lzbf| | 2019-4-28 16:49 | 只看该作者
选择:无线传输模块NRF905 和 NRF24L01。  

使用特权

评论回复
9
houjiakai| | 2019-4-28 16:50 | 只看该作者
nRF905用起来更容易一些,距离比24L01远一些

使用特权

评论回复
10
youtome| | 2019-4-28 16:50 | 只看该作者
24L01的PCB天线比较容易做  

使用特权

评论回复
11
cemaj| | 2019-4-28 16:50 | 只看该作者
无线通信可以使用某种通信协议如zigbee或者蓝牙什么的

使用特权

评论回复
12
uiint| | 2019-4-28 16:50 | 只看该作者
可以用89c51单片机代替cc2530开发板吗?

使用特权

评论回复
13
houjiakai| | 2019-4-28 16:51 | 只看该作者
器件比较好选,调试也容易一些。

使用特权

评论回复
14
51xlf| | 2019-4-28 16:51 | 只看该作者
有什么方法可以检测NRF24L01无线传输模块?

使用特权

评论回复
15
lzbf| | 2019-4-28 16:51 | 只看该作者
想在室内实现几个装置的无线通信,用Zigbee协议

使用特权

评论回复
16
i1mcu| | 2019-4-28 16:51 | 只看该作者
将两个模块放的远一点,丢包现象就很严重了  

使用特权

评论回复
17
1988020566| | 2019-4-28 16:51 | 只看该作者
nRF24l01模块的无线通信需要自定义通信协议来使用  

使用特权

评论回复
18
pmp| | 2019-4-28 16:51 | 只看该作者
就是用手机接收数据        

使用特权

评论回复
19
mmbs| | 2019-4-28 16:51 | 只看该作者
Zigbee无线通信跟基于nRF24l01模块的无线通信有什么区别

使用特权

评论回复
20
uiint| | 2019-4-28 16:51 | 只看该作者
NRF24L01无线模块的收发距离是多少?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

967

主题

1447

帖子

9

粉丝