基于nRF24E01的无线温度采集系统设计
扫描二维码
随时随地手机看文章
温度采集系统所采集的温度信息通常通过RS485、CAN总线通信方式传输至上位机,但这种方式维护较困难,不利于工业现场生产;而无线通信GPRS技术传输距离长,通信可靠稳定,但设计复杂、成本昂贵、后期运转成本高。本设计采用工业级内置硬件链路层协议的低成本单芯片nRF24E01无线收发器件实现系统间的无线通信,完成无线信号的接收、显示及报警功能。
nRF24E01简介
nRF24E1收发器是Nordic VLSI推出的系统级芯片,采用先进的0.18μs CMOS工艺、36引脚QFN封装。以nRF2401/02芯片结构为基础,将射频、8051MCU、9输入12位ADC、125通道、UART、SPI、PWM、RTC、WDT全部集成到单芯片中。nRF24E01是一款工业级内置硬件链路层协议的低成本无线收发器。该器件工作于2.4GHz全球开放ISM频段,内置频率合成器、功率放大器、晶体振荡器、调制器等功能模块,并融合增强型ShockBurst技术,其输出功率和通信频道可通过程序配置。拥有ShockBurst和Enhanced ShockBurst两种数据传输模式。nRF24E01功耗低,以-6dBm的功率发射时,工作电流仅9mA;接收时,工作电流仅12.3mA,多种低功率工作模式(掉电和空闲模式)更利于节能设计。nRF24E1/nRF24E2适用于无线鼠标和键盘、无线手持终端、无线频率识别、数字视频、遥控和汽车电子及其他短距离无线高速应用。
系统硬件设计
系统硬件设计主要由采集发送和接收显示两部分组成。图1为采集发送电路原理图,该电路主要由温度传感器DS18B20和nRF24E01组成。
图1 采集发送电路原理图
DSl8B20是DALLAS公司生产的单总线数字1-Wire温度传感器,可把温度信号直接转换成串行数字信号供单片机处理,采用1-Wire接口,数据端DQ通过4.7kΩ的上拉电阻接NRF24E01。nRF24E01的任意IO端口都可通过程序模拟DQ通信信号,但需在编程时注意,这里接至P1端口。采集到的温度数据经过NRF24E01内部调制、混频无线传输到接收模块,接收模块可以显示或将所采集的数据通过串口发送至PC进行处理。
系统软件设计
数据采集发送部分上电后首先配置nRF24E01的相关寄存器.使其工作在发射状态,然后复位DSl8B20,向DSl8B20发送温度转换命令,读取已转换的温度值,然后由nRF24E01发送.由于DSl8B20采用的是单线读写方式,需采用软件模拟实现1-WIRE通信。因此应严格按照1-Wire的时序要求编写。复位要求nRF24E01将数据线下拉500μs,然后释放,当DS18B20收到信号后等待16〜60μs,后发出60〜240μs的存在低脉冲,主CPU收到此信号表示复位成功,其流程如图2所示。
图2 温度数据采集发送流程图
RF24E01的主要程序代码如下:
(1)nRF24E01对DSl8B20的数据读写是通过时间隙处理位和命令字来确认信息交换。根据“单线复位脉冲时序和1-wire presence detect”的时序图设计程序如下:
uint get_temperature()
{
float wendu;
uchar a,b;
ds_reset();
delay(1); //约2ms
ds_write_byte(0xcc);
ds_write_byte(0xbe);
a=ds_read_byte();
b=ds_read_byte();
temp=b;
return temp;
//返回温度相关数据
}
(2)发送函数,把温度数据通过无线发射出去,实现函数如下:
void Transmitter(unsigned char b){//发送函数
unsigned char mtemp;
CS=1;
Delay100us(0);
for(mtemp=0;mtemp<tconf.n;mtemp++){
SpiReadWrite(tconf.buf[mtemp]);//发送发送器配置字
}
CS=0;
TransmitPacket(b);
//发送数据包
}
}