郝毫毫
(武汉工程大学 电气信息学院,湖北 武汉 430073)
随着人们对新鲜蔬菜需求的不断提高以及土地资源的日渐紧缺,生产效率较高的温室农业得到了迅速发展。温室大棚内温湿度等因素对农作物的生长有着直接影响,对温室大棚内的温度、湿度及二氧化碳等参数的检测和控制至关重要。传统的温室数据采集工作大多是采用人工抄表或预先布线的有线采集方式。人工方式的缺点是工作量大、费用高、难以保障数据的实时性和有效性,而有线数据采集存在着布线费用高、测量节点位置变化时需要改变线路走向及长度等诸多不利因素[1]。
文中采用无线传感器网络技术设计了一种温室大棚温度、湿度及二氧化碳参数测量系统,具有超低功耗、不需布线、测量节点移动方便等优点,克服了人工抄表和有线数据采集系统的诸多缺点。
无线传感器网络节点的电路原理图如图1所示。它主要由MCU控制单元、射频收发单元、温湿度传感器、二氧化碳浓度传感器构成。所有单元均采用低功耗器件,MCU采用中颖电子的具有休眠功能的SH79F64单片机,温度和湿度测量单元采用SENSIRON公司的具有休眠功能的SHT75温湿度传感器,CO2浓度测量采用GSS公司的功率仅为3.5 mW的COZIR传感器,射频收发单元采用SILICON LABS公司的具有休眠功能的SI4432无线收发器。所有器件均采用3.3 V供电,便于电池集中供电。
图1 无线测量节点的电路结构图Fig.1 Structure diagram of the wireless measuring node
上位机无线模块硬件设计可采用类似结构,取消传感器部分,增加SILICON LABS公司的CP2102单芯片USB与UART桥接单元,通过USB口连接PC机。PC通过USB接口给无线模块供电。
MCU采用中颖电子生产的SH79F64低功耗单片机,SH79F64是一颗低功耗高性能8位芯片,SH79F64内嵌加强8051核,具有高速高效率特性。在同样振荡频率下,较之传统的8051芯片它具有运行更快速的优越特性。它保留了标准8051芯片的大部分特性。这些特性包括内置256字节RAM和3个 16位定时器/计数器,2个 EUART,外部中断 INT0和INT1。此外,SH79F64还集成了外部2776字节RAM(不包括LCD RAM),1路8位PWM输出,外部中断INT2和INT3,可兼容8052芯片的16位定时器/计数器(Timer3)和适合存储程序和数据的64 k字节flash以及1 k字节类EEPROM存储器。
除具有普通单片机的功能,SH79F64还具有其他特点[2]:
1)强大的处理能力 SH79F64虽然是8位单片机,但是机器周期为1个振荡器周期,而传统型51内核机器周期为12个振荡器周期。其指令执行效率约为同频率的传统8051的8~10倍。另外还提供增强型的乘/除法指令,支持16 bit×8 bit和16 bit÷8 bit运算,提供双DPTR指针,用户在使用查表,数据搬移等操作时会更方便。
2)丰富的数据存储区域 SH79F64提供64 k字节FLASH ROM,每1 k字节为1个扇区(SECTOR),每个扇区可分别进行加密。如果没有加密,每个扇区可分别单独进行编程和擦除。整体擦除 (MASS ERASE)可以擦除所有扇区。SH79F64的全部64 k BYTE都可用于存储程序和数据,存放在FLASH ROM中的程序可以对不在同一扇区的FLASH ROM编程(SSP模式),因此可以当作EEROM来使用。另外提供1 k字节的客户信息区/类EEPROM块区用于存放用户数据,每个扇区(SECTOR)为256字节。
3)高性能模拟技术及丰富的片上外围模块 SH79F64内部集成的有:3个 16位定时/计数器 T0、T1和 T2,1个 16位定时器T3,看门狗定时器,1路8位PWM定时器,4/5×40/39段 LCD驱动器,EUART、IR、TWI和 SPI等标准通信模块,8通道10位AD转换器,蜂鸣器输出等。
4)超低功耗 其供电电压为2.4~3.6 V,内建低电压复位功能和低电压检测功能。系统可采用双时钟方式,支持两种省电模式:IDLE模式和掉电模式。当系统时钟采用高速时钟,外围模块采用32 768 Hz时钟时,掉电模式将停止CPU时钟信号,用于定时器3的时钟可以开启,此时的工作电流不超过 20 μA。
MCU是无线测量节点的核心,在无事件发生时工作于掉电模式,当无线模块收到数据时会通过IO口唤醒SH79F64进入活动工作状态。SH79F64功能丰富,编程方式灵活,完全可以满足无线测量节点的设计需求。
Si4432芯片是Silicon Labs公司推出的一款高集成度、低功耗、多频段的EZRadioPRO系列无线收发芯片,早期生产的V2版本不太稳定,改进后的B1版本性能比较稳定。其工作电压为 1.8~3.6 V,20引脚 QFN 封装(4 mm×4 mm),可工作在240~930 MHz的频段;内部集成分集式天线、功率放大器、唤醒定时器、数字调制解调器、64字节的发送和接收数据FIFO,以及可配置的GPIO等。Si4432在使用时所需的外部元件很少,1个30 MHz的晶振、几个电容和电感就可组成一个高可靠性的收发系统,设计简单,且成本低。
Si4432的接收灵敏度达到-121 dB,可提供极佳的链路质量,在扩大传输范围的同时将功耗降至最低;最小滤波带宽达2.6 kHz,具有极佳的频道选择性;在240~930 MHz频段内,不加外部功率放大器时的最大输出功率就可达+20 dBm,设计良好时收发距离最远可达2 km[3]。Si4432可适用于无线数据通信、无线遥控系统、小型无线网络、小型无线数据终端、无线抄表、门禁系统、无线遥感监测、水文气象监控、机器人控制等诸多领域。
Si4432有多种工作模式,本设计用到其中的3种模式:发射模式,接收模式,睡眠模式。当芯片工作在睡眠模式时,外部晶振关闭,唤醒定时器采用内部的32.768 kHz晶振作为时钟源,它每周期在nIRQ脚上产生一个低电平,这个信号可以通过外部中断唤醒SH79F64,SH79F64通过SPI口读取相关寄存器状态就可发现Si4432是否收到前导码或同步码,从而决定是否让Si4432进入接收状态。Si4432在睡眠状态时,电流仅为 1 μA。
为了防止射频干扰,无线收发单元采用射频板材单独制版,并用金属罩对其进行屏蔽。本文的设计方案中,GP1接单片机的 INT0口,GP2接 P5.1口,GP3接 P0.6口,GP4接P0.6,GP5 接 P5.0。
图2 射频收发单元电路图Fig.2 Circuit of wireless communication part
温度和湿度测量单元采用SENSIRON公司的具有休眠功能的SHT75温湿度传感器,传感器包括一个电容式聚合体测湿元件和一个能隙式测温元件,并与一个14位的A/D转换器以及串行接口电路在同一芯片上实现无缝连接。SHT75采用串行接口,它的分辨率可以根据现场的采集速率进行调整,一般情况下默认的测量分辨率分别为14 bit(温度)、12bit(湿度),如果在高速采集中就可分别降至12 bit和8 bit,温度的量程范围:-40~123.8℃, 湿度的量程范围:0~l00%RH[4]。它操作比较简单,只需用一组“启动传输”时序,就能实现传感器数据传输的初始化,同时,在测量和通讯结束后,SHT75会自动转入休眠模式,这大大减少了功耗。
文中对SHT75采用3.3 V供电,SHT75的SCK脚接单片机的SCL口,DATA脚接单片机的SDA口。
CO2浓度测量采用 GSS公司的COZIR-W-100型传感器,其功耗仅3.5 mW,可温度补偿,湿度补偿,以及感知白天黑夜的环境状态[5]。预热时间仅10 s,量程100%。性能:1)功耗 3.5 mW;2)峰值电流 33 mA;3)平均电流小于 1.1 mA;4)电源 3.3 V;5)T90 小于 4 s;6) 标准型号温度范围 0~50 °C(可扩展-25~55 °C);7)湿度适用范围 0~95%RH;8)存储温度-30~+70 °C;9)尺寸:传感器 18 mm×20 mm。
COZIR连接简单,除了3.3 V电源和地线外,还有RX和TX引脚可直接连接单片机的UART口。所有的通信均使用ASCII码,命令格式按照文献[6]的规定执行。传感器有3种工作模式:命令模式(Command Mode),流模式(Streaming Mode)和查询模式(Polling Mode)。
命令模式适用于从传感器提取大批量数据时使用,此时传感器处于停止测量状态,其功耗小于3.5 mW。流模式是工厂默认模式,此时传感器每秒产生2个测量数据,除了正处于测量的过程中以外,传感器会及时处理收到的命令,所以传感器在处理命令时可能会出现100 ms的延迟,这种工作模式的功耗为3.5 mW。查询模式时传感器并不产生数据,但是周期性的测量在后台继续,当传感器收到读取命令时,会将最近的测量值转换成数据送出。查询模式的功耗与查询频率有关,但是几乎接近3.5 mW。
文中将COZIR的通讯口接到单片机的EUART0口,COZIR工作在查询模式(Polling Mode)。
软件的开发环境为Keil uVision3,使用C51语言。系统的无线通信部分采用标准MODBUS协议,为点对多点的通信方式。主机采用同样的电路,去除传感器部分,增加USB与UART桥接芯片CP2102,通过USB口连接PC机。PC机在安装Silicon Labs公司提供的免费驱动程序后,通过USB接口虚拟出一个COM口。从机为无线测量节点,每一个节点都拥有一个唯一的地址,工作方式为主站轮询,从站监听的方式。节点软件的主要流程如图3所示。
图3 系统程序框图Fig.3 Flow chart of system program
系统初始化时,MCU进入掉电模式,Timer3选择32.768 kHz晶振作时钟源,定时1 min中断。Si4432进入睡眠模式,开启Si4432的Wake-up Timer,定时31 s。有两个事件会将MCU唤醒:Timer3定时和Si4432的nIRQ引起的外部中断。
在Timer3的中断服务子程序中做两件工作:1)软时钟计时。由于系统对实时性要求不高,时钟可以分钟为最低计时单位。并且上位机可定期通过写指令对时钟进行校准;2)采集数据。从温湿度传感器和CO2浓度传感器读取数据并按规定格式存放在规定缓冲区,等待上位机读取。
MCU的INT0设置为低电平触发,连接Si4432的nIRQ脚,每31秒Si4432的Wake-up Timer使得nIRQ脚产生低电平,从而引发MCU外部中断。在中断服务子程序中MCU通过SPI口读取Si4432的iswdet和ipreaval位,以判断是否接收到前导码或同步码。若有,则命Si4432进入RX状态,继续接收数据并处理,否则回到休眠状态。上位机要唤醒无线节点,需连续发40 s(大于31 s)唤醒信号,这对于供电充分的上位机来说不是问题。
通信协议采用MODBUS协议的RTU传输模式。MODBUS协议是免费的用于工业现场的总线协议。在我国,MODBUS已经成为国家标准GB/T19582-2008[7]。可以支持多种电气接口,如 RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。
在本系统中,主机(PC)直接面对的是虚拟COM口,因此可方便地采用MODBUS协议,主机界面可采用简单的串口调试工具,如SSCOM等,也可以由用户自行开发。通过USB口连接主机的无线节点与从机之间采用透明传输,由上向下传输数据前需增加唤醒过程。从机(无线测量节点)向上发送数据时,则按照MODBUS帧格式组建数据包连续发送。
MODBUS通信使用主——从技术,即仅一个设备(主设备)能初始化传输(查询)。其他设备(从设备)根据主设备查询提供的数据作出相应反应。主设备可单独和从设备通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回一个消息作为回应,如果是以广播方式查询的,则不作任何回应。
在本系统中,通信地址的分配情况如下:
*电子标签区 0x0000~0x00BF
*工作参数区 0x2000~0x2022
*实时数据区 0x3000~0x307A
其中电子标签和工作参数位于MCU的类EEPROM区域,断电情况下不会丢失。电子标签用于存放无线节点的产品代码等信息,工作参数用于存放无线节点的数据传输速率、频段、无线发送功率等参数。实时数据区位于RAM区,在MCU掉电模式下能够得到保存。实时数据的存放格式如表1所示。每次读取的采样数据和时间存放在两个位置,一是地址 0x3003-0x3008,二是沿地址 0x3009-0x307A顺序循环存放。
文中设计的超低功耗大棚无线传感器网络系统硬件结构简单,成本低,技术开发成熟,所采用的器件均为超低功耗器件,使得整个系统的功耗很低。由于大棚参数测量对实时性要求不高,无线节点的元器件大部分时间处于低功耗状态,大大降低了系统的功耗。所采用的Si4432无线收发器,在不增加外部功放电路的情况下,将其输出功率设置为+20 dBm,在434 MHz频段工作时,实测有效传输距离达600 m,误包率低于1%,特别适用于分布面积较广的大棚环境。该系统无线传输距离远、无线测量节点功耗低,同样适用于对实时性要求不高的仓库环境监测等应用场合,具有较大的推广价值和广阔的市场前景。
[1]赵凯,杨淑连.温室大棚环境参数无线监控系统[J].山东理工大学学报:自然科学版,2010,24(2):93-96.ZHA0Kai,YANGShu-lian.Wirelessmonitoringand 72 controllingsystem for environmental parameters in greenhouse[J].Journal of Shandong University of Technology:Natural Science Edition,2010,24(2):93-96.
[2]中颖电子股份有限公司.SH79F64规格书 [EB/OL].(2010-06-01)[2011-11-14].http://www.Sino wealth.com/ftp//8051% 20mcu/8bit% 20flash% 20mcu/ss327b_sh79f64/SH79F64CV1.0.pdf.
[3]Silicon Labs Inc.Si4432/31/30 ISM Transceiver[EB/OL].(2009-02-20)[2011-11-14].http://www.silabs.com/Support%20Documents/TechnicalDocs/Si443x_short.pdf.
[4]Sensirion Inc.Datasheet SHT7x[EB/OL].(2010-05-01)[2011-11-14].http://www.sensirion.com/en/pdf/product_information/Datasheet-humidity-sensor-SHT7x.pdf.
[5]GSS Ltd.COZIRTMUltra Low Power Carbon Dioxide Sensor[EB/OL].(2010-01-01)[2011-11-14].http://www.apollounion.com/Upload/DownFiles/GSS%20COZIR%20Wide%20Range%20Data%20Sheet.pdf.
[6]GSS Ltd.COZIR?Software User’s Guide[Z].Glasgow United Kingdom:GSS Ltd.,2011.
[7]GB/T19582-2008,基于Modbus协议的工业自动化网络规范[S].2008.