短距离无线数据采集网
——以温度为例 ①
2021-01-15谭楠玲胡菁芸鲍震杰靳亚东
刘 月, 谭楠玲, 胡菁芸, 鲍震杰, 靳亚东
(西藏民族大学信息工程学院,陕西 咸阳 712082)
0 引 言
随着科技的发展,近年来嵌入式系统与数字传感器相结合的短距离无线数据采集网络得到了发展,这种新型网络可以实现网络的自组织,还可以自主完成数字形式的数据采集功能。短距离无线数据采集网络的特点有网络的动态性、自发性、以数据为中心、网络大规模、网络可靠,短距离无线数据采集网络较之以往的数据采集传输技术更加简洁。本文主要实现短距离无线数据采集的功能,基于短距离无线的点对点的组网,确保了节点之间的双向数据传输的有效性、可靠性、实时性。
1 通信模块介绍
1.1 NRF24L01射频通信模块
NRF24L01是一款美国Nordic公司研发的可进行无线短距离收发数据的射频信通芯片,它的工作频段在2.4-2.5GH,工作特点是功耗低、传输速度快、以及即时性高。其中它的无线接收器还包括了频率发生器,增强型“SchockBurst”模式控制器[1]。功率放大器,晶体振荡器,调制器和解调器[2]。NRF24L01可以利用最少的外部元件获得低功耗、高性能的通信模块。
1.1.1 NRF24L01芯片的外部说明:
NRF24L01无线收发芯片采用的是4.0*4.0mm QLP20的形式封装。其主要优点是体积小,集成度高[3]。
1.1.2 NRF24L01的内部结构
NRF24L01具有电源引脚、接地引脚和6个普通I/O信号引脚,在编程实现无线短距离通信时,需要用到类似串口[4]的设置方式去设置这6个I/O口。NRF24L01的地址可以自由的选择或者打开一个或是多个接收通道,也可以根据需求自行配置。
1.1.3 NRF24L01收发原理
在开始发送数据时,首先需要将NRF24L01的无线通信模块设置为发送模式[5],在发送数据时,则向缓冲区写入接收方的地址和信息和有效数据,地址要和发送方一致并且只需要输入一次就行,而数据的传输则需要CSN变为低电平才能有效写入。所以在此过程中大约有130微秒的时延。
在接收地址都相同的情况下,可以打开NRF24L01的自动应答,开启这个模式后NRF24L01就能实现在发送数据后快速转换为接收模式的目的,去接收传输的数据,接收成功则表示通信成功,如果接收方没有收到响应信号,发送方就会继续发送信息,但是发送的次数是有限的,当次数超标则数据将会继续保留,成为下次发送的数据。同时会产生中断发送给单片机。
图1 NRF24L01通信模块原理图
1.2 DS18B20的电路连接
DS18B20温度传感器工作时一般采用单总线协议[5],传输数据时采用一个单独的端口,在与总线连接时通过漏极或者三态口此时则需要连接上一个上拉电阻。如下图所示,上拉电阻的主要作用是在DS18B20没接通电源时供电,以及在DS18B20有连接电源时确保传感器的稳定工作。
有两种外部供电的连接方式,一是单只的温度传感器与单片机相连。
二是多个的温度传感器与单片机相连,如图下图所示。值得说明的是在多个温度传感器与单片机相连的情况下。由于DS18B20温度传感器在生产时拥有唯一的序列号[6]。这个使得当一条总线上同时连接多个传感器时单片机能够通过序列号实现传感器的区分,识别在整个系统中总线上每个设备的地址并做下记录,这个特性可以使得分布在不同地方的温度传感器能够得到相应的处理,使得数据的处理更加方便。这个特点还使得 DS18B20温度传感器在环境控制、温度测量等方面更加灵活实用。
在DS18B20无供电的情况下,其工作环境是“寄生源模式”[7],其中VDD引脚接地,如下图所示。在此模式下DS18B20不需要外部的电源供给,也能完成温度信息的采集。
图2 “寄生电源模式”下的DS18B20温度传感器电路
2 系统的模块介绍
2.1 电源供电子系统
选取了STC公司所生产的STC89C52RC微控制器[8],正常工作需要提供5V的电源电压。射频通讯模块采用的是NRF24L01芯片,它的工作电压为3.3V,综上供电模块需提供5V和3.3V的DC电源[9],为了提供更稳定的电源环境以及提高获得外部电源的便利性,本系统设计了两种供电模式,可在不同的条件下选择。
一种是USB接口连接外部电源提供该系统的电源电压,另一种就是使用电池供电。在实验系统和演示功能时采用USB连接外部电源的方式,这种供电方式提供的电源电压环境更加稳定,可以确保系统的平稳运行。在实用和便利的阶段,则采用电池供电的方式。
由于STC89C52RC和NRF24L01所需的工作电压不同,所以需要进行电压的转换。我们实用调压芯片7805将外部接入的9V电压转换为STC89C52RC正常工作所需的5V电压,在转换过程中我们发现调压芯片7805转换的效率不佳,只能达到百分之六十左右,故而在转换NRF24L01所需的工作电压时,选择采用LM1117直流电压[10]转换芯片得到NRF24L01所需的3.3V工作电压。电路图如下图所示:
2.2 温度感知采集模块
无线短距离数据采集系统的子节点可以对外界的温度进行感应,子节点通过分布在不同地区的DS18B20温度传感器可以对周围的环境温度数据进行采集。DS18B20对于大学生的我们来说不仅价格实惠而且具有极强的抗干扰性,还拥有极高的精度,因此我们选择了DS18B20作为系统中的温度测量感知模块。
图3 电源电路原理图
2.3 微控制器模块
选择STC89C52RC作为该系统的微控制器[11],该款单片机具有极高的灵活性,能够使得本系统在运行和实现功能的过程中平稳的运行。
2.4 无线射频通信模块
本文系统的通信模块采用了NRF24L01芯片作为射频通信器的控制芯片。系统中的通信模块和微控制系统之间的连接通过8针接口,而与微控制模块的通信实现则通过SPI串口的通信协议,从而调整和掌控通信模块的工作模式。
在使用XC1和XC2引脚时NRF24L01的晶振时钟频率范围是16MHz。
2.5 温度数值显示模块
为了便于查看和验证短距离无线数据采集网络的温度数值,也为了观察温度变化时系统能否成功的实现数据的采集和传输,主节点中设计了显示模块,为了节约成本,显示的子系统模块选用了LCD2864液晶屏幕显示,这使得显示子系统的系统设计更加简洁。
2.6 PCB电路设计模块
PCB[12]为印刷电路板是整个网络中不可缺少的重要组成部分,为了避免像传统的连线方式那样因为线路的连接而导致节点分布复杂,它用电路连接的形式将各个节点所要用到的各模块进行连接,以这样的方式通过电路板的设计将节点尽可能的小型化,使得该系统的线路连接也更加简洁,简洁的线路和微型化的节点在网络中的设置,可以提高整体系统在运行时的稳定性。
3 系统软件设计
3.1 无线数据采集系统的总体框架
本文系统的目标是在硬件的基础上建立可以实现短距离温度检测功能以及组网功能的无线数据采集网络,确保系统的稳定运行和数据的稳定传输。系统流程图如下图所示:
3.2 无线通信中的关键函数说明
3.2.1 NRF24L01的发送函数
在子节点完成初始化之后,通信模块开启发送模式,将采集系统检测到的数据进行检测,然后经过一定的算法处理存储在指定的数组tx_buf [ ]中,完成这一系列的动作之后再进行下一组的数据传输。
3.2.2 NRF24L01的接收函数
初始化主节点之后,将通信模块的模式进行设置改为[13]。以便于系统进入等待状态来监察空中无线数据的信号,系统接收到的数据在接受一定的判断之后,经过数码管[14]进行数据的显示。
3.3 系统核心代码
节点一的发送主函数:
#include "inc/nRF24L01.h"
#include "inc/ds18b20.h"
#include
//主函数
void main(void)
{
uinttemp,OldTemp;
uinttempEps=0;
init_NRF24L01();
Delay(100);
//主循环
while(1)
{
temp = Get_Temp();
tempEps=abs(temp-OldTemp);
OldTemp=temp;
DisplayTemperture(temp);
if(tempEps>0){
TxBuf[0] = PointTwo;
TxBuf[1] = temp/100;
TxBuf[2] = temp/10%10;
TxBuf[3] = temp%10;
nRF24L01_TxPacket(TxBuf); // Transmit Tx buffer data
SPI_RW_Reg(WRITE_REG+STATUS,0XFF);
}
}
}
4 数据采集系统运行结果
1.在选择USB外接电源方式供电的情况下,连接通讯板实现一对三的无线温度数据采集以及传输功能,通讯板的连接画面如下图所示:
图5 一对三通讯板连接图
2.启动节点的电源开关,子节点会自动的产生和主节点的连接,然后将采集到的数据传输过去,然后用主节点的液晶屏幕接收对环境的温度进行显示。
运行结果如下图所示:
3.将手指放在节点一的温度传感器上,让温度传感器感受环境温度的变化,然后进行温度数据的采集,主节点的液晶屏幕显示的数值同时上升,温度升高过程如下:
图6 启动电源开关,开始传输数据
图7 节点一温度上升
4.拿开节点一附近的手指,节点一测量的温度数值慢慢下降,主节点的液晶屏幕显示的温度也逐渐发生变化,温度下降过程:
图8 节点一温度下降
5.拿开手指后,节点一的温度下降到室内温度后,节点一的温度将保持稳定不再继续下降,因此液晶屏幕上的温度数值也保持稳定不再发生变化。
接收数据由主节点完成,数据的发送由子节点完成,经过不断的测试和改良,证实了本文系统网络能够稳定的实现组网[15]的运行以及环境温度的实时测量采集和数据传输的显示。
5 结 论
本文系统实现的是短距离无线数据的采集,使用4块STC89C52RC的集成芯片,然后通过NRF24L01的射频识别的通信模块实现一对三的温度数据的采集和显示。通过调试代码程序和测试通信板的接收以及发送功能,将三个子节点中采集的实时环境温度数据传输到主节点上液晶屏幕显示。当我们用手指接触不同的子节点,让不同的子节点所测试的环境温度发生变化,主节点的液晶屏幕相应子节点的数值也会发生相应的变化。
特点是利用的NRF24L01的通信射频识别模块以及STC89C52RC的单片机实现了短距离无线的温度数据采集以及传输功能,而且还能利用液晶屏幕进行采集温度数值的显示,利用DS18B20实现温度变化的感知。
本设计的短距离无线数据采集系统,采集数据准确,整体系统运行稳定,消耗低,能够有效简洁的实现短距离无线数据的准确采集。