引言
目前,我国环境监测设备已经有了长足的发展,例如应用卫星遥感技术进行环境监测,采用GPRS系统对地下水监测等,各种环境采样器也更加精确。但是大部分监测站的仪器装备技术含量较低,功能单一,稳定性和可靠性差,多数小型仪器采用有线通信方式,亟待更新换代。而且,我国在环境监测仪器方面的自主开发能力较弱,精密仪器的技术含量和工艺要求都比较高,使得目前大量的精密仪器无法实现本地化生产,主要依靠进口,这就导致了价格非常昂贵。
本文基于DSP和nRF24L01设计了一种无线环境监测系统。该系统操作简便、测量迅速、造价低廉、便于携带,能满足一定灵敏度和准确度的要求,且采用无线数据通信作为传输载体,可应用于蔬菜大棚、生产车间、温室、矿井等场所的温度、光度监测与控制系统。
例如,在蔬菜大棚中,蔬菜生长的适宜温度为 20~30 ℃,大棚内白天增温快,当棚外平均气温为15 ℃时,棚内可达 40~50 ℃,不利于蔬菜生长。同样,适当的光照强度对植物体内的硝酸盐代谢起极为重要的作用,是决定植株硝酸盐含量的主要因素之一[1],但过弱或过强的光照也不利于蔬菜的生长。因此,需要根据监测值适时调节棚内温度,以有效地避免不当的温度、光照对蔬菜的危害。
1方案论证
本无线环境监测系统是由一个主站和两个分站组成。主站由无线收发模块、信息处理模块、显示模块构成,功能是无线发送分站的编号和命令,并无线接收分站发送的信息,同时显示这些信息及分站的编号;分站由传感器模块、编码模块、信息处理模块、显示模块和无线收发模块构成,功能是采集温度、光照信息,显示所测信息,并将这些信息和自己的编号无线传输给主站。系统结构图如图1所示。
图1系统结构图
1.1主控模块
本方案中主控模块选择TI公司的DSP芯片TMS320LF2407。TMS320LF2407内置10位(双8路或单16路)A/D转换器、看门狗定时器模块;有41个可独立编程的数字I/O引脚,绝大部分有复用功能;外设接口有串行通信SCI(Serial Communication Interface)与串行外设SPI(Serial Peripheral Interface);2个事件管理器EVA、EVB可为所有类型电机提供控制技术,为工业自动化方面的应用奠定了基础;2个16位通用定时器,3个具有死区功能的全比较单元[2]。
较MCS51系列单片机而言,TMS320LF2407内部有32 KB的Flash程序存储器和2.5 KB的SRAM,更能满足软件对空间的要求,且方便在线调试。利用其内置的10位A/D转换器,可以直接接温度、光度传感器模块,将测得的温度值、光照强度值等模拟量转换为TMS320LF2407可以处理的数字信息,避免了用MCS51进行A/D扩展带来的麻烦[3]。另外,TMS320LF2407有 41个可独立编程的数字I/O引脚,绝大部分有复用功能,更能满足硬件对I/O口的需求。使用TMS320LF2407的串行外设接口SPI,可以直接和无线传输模块nRF24L01提供的SPI接口相连,不需要软件模拟SPI。使用的开发环境是CCS3.0,完全支持C语言,方便程序编写。
1.2传感器模块
选用热敏电阻来测量温度。其值较为准确,灵敏度较高;配合电桥使用,工作温度范围宽、体积小,使用方便;电阻值可在0.1~100 kΩ间任意选择。与热电偶相比,热敏电阻价格低廉;与DS18B20相比,热敏电阻需要编写的程序更加简单。
图2传感器模块电路
选用光敏电阻来测量光照。较光敏二极管,光敏电阻更能显示出光的强弱;而且,它能够和热敏电阻应用到同一电路中。传感器模块电路如图2所示。
1.3编码模块
选用跳线开关组成编码模块。与普通开关组成编码模块相比较,成本更加低廉。用两列排针(各8位):一列排针接到TMS320LF2407的I/O口,并经过10 kΩ电阻接+5 V电源VCC,另一列排针接地。两列排针对应的位用跳线帽相连时置0,否则为1。这样可以设置分站的编号0~255,即本系统最多可以扩展256个分站,用来监测不同地点的当前环境温度、光度值。
1.4无线传输模块
选用无线传输模块nRF24L01。它是一款工作在2.4~2.5 GHz世界通用ISM频段的单片无线收发器芯片,采用FSK调制,内部集成自己的协议,有自动应答及自动重发功能、地址及CRC检验功能,可实现点对点或1对6的无线通信,无线通信速度可达2 Mbps;而且,电流消耗极低,当工作在发射模式下发射功率为-6 dBm时电流消耗为9 mA,接收模式下为12.3 mA。nRF24L01与PT2262/2272相比,不需要编码和解码,程序简单;与nRF905相比,外围元件更少,不需要曼彻斯特编码;与nRF401相比,价位更低。
TMS320LF2407只需为nRF24L01模块预留6个I/O口,分别与其6个控制和数据信号CSN、SCK、MISO、MOSI、IRQ、CE相连。TMS320LF2407与nRF24L01的连接电路如图3所示。
图3TMS320LF2407与nRF24L01的连接电路图
1.5显示模块
选用型号为LG5011BSR的共阳极数码管,与液晶显示器相比,价格低廉。它由7段发光二极管组成,共有10只引脚。其中,3、8引脚为共阳极,其他引脚加低电平时对应的二极管就会亮,从而控制数码管显示相应的数值。
1.6系统硬件结构
传感器模块是信息采集的枢纽。如图2所示,电源电压经稳压管TL431稳压到2.5 V,提供给由普通电阻和热敏电阻组成的分压电路,以及普通电阻和光敏电阻组成的分压电路。热敏电阻分得的电压通过TO输出,接TMS320LF2407的ADCIN0;光敏电阻分得的电压通过LO输出,接TMS320LF2407的ADCIN1。利用读取A/D转换后的结果,并计算出对应的温度值和光线强度值,经查表输出显示。
无线传输模块是数据传输的核心。如图3所示,TMS320LF2407通过6个I/O端口(IOPC0,IOPC1,SPISIMO,SPISOMI,SPICLK,SPISTE),依次与nRF24L01模块的6个控制和数据信号IRQ、CE、MOSI、MISO、SCK、CSN相连。其中,CSN为芯片的片选线,CSN为低电平时芯片工作;SCK为芯片控制的时钟线;SOMI为芯片控制数据线;MOSI为芯片控制数据线;IRQ为中断信号,无线通信过程中DSP主要是通过SPI接口的SPISIMO、SPISOMI与nRF24L01进行通信。CE为芯片的模式控制线,在CSN为低的情况下,CE协同nRF24L01的CONFIG寄存器共同决定nRF24L01的状态[4]。
显示模块用TMS320LF2407的IOPB0、IOPB1来模拟串行发送数据的过程,外接串入并出移位寄存器74LS164构成。当需要显示信息时,数据从IOPB0端在移位脉冲(由IOPB1输出)的控制下逐位移入74LS164,74LS164能将输入的串行数据转换为并行数据输出到数码管。这样的设计不仅节省I/O口,而且不占用串口资源。编码模块通过IOPA0~IOPA7与DSP相连。
2软件设计
系统的主站、分站程序流程如图4所示。主站程序主要包括初始化、无线发射、无线接收、数码管显示等部分;分站程序主要包括初始化、无线发射、无线接收、数据采集、数码管显示等部分。
图4主站分站程序流程
2.1初始化部分
将数据地址、数据显示区地址等内容初始化为0,设置数据显示区地址的内容,进行数码管显示,以进行系统自检。
for(i=0;i<3;i++){
DISHE();//调用要显示的内容
DISPLAY();//输出显示
DELLS();//延时
BLANK();//内容为0
DISPLAY();//显示
DELLS();//延时
}
2.2无线发射部分
首先设置nRF24L01为发射模式(设置发射和接收节点地址),使能自动应答,配置自动重发次数,选择通信频率,配置发射参数,选择通道0有效数据宽度,配置nRF24L01的基本参数以及切换工作模式;然后设置发射数据,启动发射,发射完数据后会自动转入接收模式接收应答信号。
init_NRF24L01();//初始化无线通信模块
PCDATDIR=0x2000;//置低SPISTE引脚,选通nRF24L01
while((SPISTS&0x40)!=0x40){}//等待SPI写结束
readspibuf=SPITXBUF;//读SPIBUF寄存器,清除SPI INT FLAG位
nRF24L01_TxPacket(TxBuf);//发送Tx_Buf中的数据
PCDATDIR=PCDATDIR & 0x0202;//置高CE,激活数据发送
2.3无线接收部分
首先设置接收模式(即写接收节点地址),使能自动应答,通道0接收地址允许,选择通信频率,选择通道0有效数据宽度,配置发射参数,配置nRF24L01的基本参数以及切换工作模式;然后启动接收,130 μs后开始检测空中数据,若收到,则数据模块会自动发射应答信号[5]。
SetRX_Mode();//数据接收配置
SPI_RW_Reg(WRITE_REG+STATUS,0xFF);
//nRF24L01读写寄存器函数
while((SPISTS&0x40)!=0x400){}
//等待SPI读结束
rdsbf1=SPITXBUF;//读取寄存器
PCDATDIR=0x2020;//置高SPISTE引脚,禁止nRF24L01
2.4数据采集部分
分站对温度、光照、地址编号进行采集,通过读取I/O口得到地址编号的值,通过读取A/D来获得温度、光照的最初值,经过DSP处理后得到准确的温度、光度值。
MAXCONV=0x0000;
CHSELSEQ1=0x0000;//第0通道
ADCTRL2=0x4000;//复位使排序器指针指向CONV00
ADCTRL2=0x2000;//启动A/D转换
while((ADCTRL2&0x1000)==0x1000);//等待转换完成
asm("NOP");
asm("NOP");
2.5数码管显示部分
程序以模拟串口的方式实现数据显示,过程为:取一字节数据,移一位数据到I/O口中,通过置位另一I/O口高低电平来模拟时钟信号,即把数据一位一位地移到移位寄存器74LS164中,然后并行输出到数码管显示数据。
3调试分析
3.1系统板硬件部分调试
系统板硬件部分调试主要是万用表检查电路通断情况,并测量部分关键引脚的电压是否达到要求。
3.2环境温度测量调试
首先,把标准温度计和热敏电阻同时放入冰水混合液中,标准温度计的示数为Y1,根据基础表值探测点显示为X1。接着,将它们放入沸水中,标准温度计的示数为Y2,根据基础表值探测点显示为X2,得出比例系数K=(X2-X1)/(Y2-Y1)=2。最后,在沸水和冰水混合液之间的温度内,测得标准温度Yi (i=3,4,…,30)和探测点显示值Xi (i=3,4,…,30)共28组,从而得到近似比例系数K=2±0.5。再通过软件部分进行数据的校准,建立温度数据表。最终,将温度计和温度传感器置于同一环境下记录测得的温度值,如表1所列。
表1温度测试数据
平均误差=(0.3+0.5+0.2+0.5+0.6)℃/5=0.42 ℃
平均响应时间=(1.0+1.2+1.0+1.0+1.0)s/5=1.04 s
3.3环境光度测量调试
① 将分站放置在灯光下,从最亮逐渐调暗,当暗到人眼看字有些费力时,从LED数码管上读得的光度原始数据为195 lx。
② 将分站放置在自然光下,用手遮挡光度传感器,由亮到完全遮蔽,当暗到几乎无光线进入时,从LED数码管上读得的光度原始数据为198 lx。
根据以上试验结果,结合人们的习惯思维,在程序上进行了一些设计。用195减去测得的原始数据,值小于等于零时显示为零,光照越强显示值越大。
3.4无线通信调试
首先进行分站单发送信息、主站单接收信息的调试,经过一步步改进,最终通信成功。然后再进行主站、分站(即发送又接收信息)的调试,经反复调试最终通信成功。
结语
本文介绍的无线环境监测系统的控制采用TMS320LF2407实现。TMS320LF2407内部资源丰富,既有A/D转换器,又有SPI、SCI,省去了系统扩展的麻烦;另外,I/O口比较多,内部存储空间较大,有利于系统功能扩充。无线部分采用高度集成的nRF24L01器件,大大简化了系统硬件和软件设计,减小了体积,提高了系统工作的可靠性。
经试验验证,用编码模块可以设置分站的地址编号1~255,并能实时采集到周围环境的温度和光照数据,平均误差控制在0.5 ℃以内,温度测量范围在0~100 ℃,各项数据都能通过数码管清晰地显示出来。光的有无还可通过一个发光二极管显示,有光时发光二极管灭,无光时发光二极管亮。主站能准确无误地无线接收分站数据,距离50 m左右仍能无线通信,但响应较慢。该系统携带方便,价格低廉,可应用到狭小的环境,可以随意放置;此外,还可再接入其他传感器,以测量更多的环境参数。