文献标识码:A
文章编号: 0258-7998(2015)06-0035-03
中文引用格式:卢兴森,陈苏婷,施佳驰.基于北斗和ZigBee的农田数据采集与传输[J].电子技术应用,2015,41(06):35-37+41.
0 引言
2010年底,我国人均耕地面积已不足0.1公顷[1],农田又由于各种原因不便于人员进行直接管理。而北斗和无线传感网是转变农业生产方式的重要载体[2]。从2003年开始, 中国已经开始研发基于北斗卫星的综合信息服务平台[3],用现代化理念引领农业系统[4]。目前北斗已具备定位、授时、报文等功能[5]。因此,在基于北斗导航系统短报文通信和ZigBee网络的基础上设计的北斗实时农田采集与传输系统可以很好地解决以上问题,节约人力资源的同时,又提高了农田生产效率。另外由于北斗单次通信量为78.5 B,本系统采用多种压缩算法融合实现数据高效无损传输。
1 系统总体构架设计
基于北斗和ZigBee的农田数据采集与传输系统由ZigBee传感终端节点、ZigBee协调模块、北斗模块、嵌入式Linux显示上位机四部分组成。ZigBee传感终端节点采集来自传感器的数据,并将数据通过ZigBee星型网络传至ZigBee协调模块,ZigBee协调模块对数据进行压缩打包添加北斗头协议后通过北斗模块将数据传至上位机实时显示。图1是基于北斗和ZigBee的农田数据采集与传输系统的总体架构。
其中北斗模块包含北斗指挥机和北斗用户机,北斗指挥机与上位机相连,接收来自下属用户机传来的数据;用户机与ZigBee协调模块相连,接收来自ZigBee协调模块传来的数据。用户机可有多个,分布在跨度较大的农田区块,方便实现一台上位机实时采集显示多块农田数据,以追星者CDT-442型用户机为例,一台指挥机最多可控制下属99台用户机。
2 系统硬件设计
2.1 ZigBee传感终端节点的硬件设计
ZigBee终端节点担负着与传感器设备连接、接收传感器的模拟信号并把其转换为数字信号和发射数据信号至ZigBee协调节点的任务。为了完成数模转换的任务(部分传感器输出数字信号,可直接接入I/O口或UART口),使用了AD7810芯片,为该芯片接的电压与CC2530同为3.3 V,VREF也接上3.3 V电压,则其最大转换电压也为3.3 V,DOUT脚为完成模数转换后的串行数据输出口,SCLK脚为输入时钟脚,VIN+和VIN-为传感器接线口,本系统所用传感器输出电流一般为4~25 mA,所以传感器接入时需接上一个150 ?赘左右的电阻。由于一个节点需接多个传感器(该节点只需3个),为了工程易于扩展,预留接口,所以使用了一个74LS151芯片来进行选择性定时,每15 s轮转选择一个采集数据来源选通。由于本电路只需要3选1,所以接口C拉低,默认高4位输入不接通,若工程有监测种类扩展需要,可作适时更改。需要注意的是AD7810的脚CONVERT为转换启动输入信号,配合74LS151的轮转选通功能,可启动自动低功耗模式开启间断休眠来实现节能。另外CC2530使用16 MHz和32 MHz晶振模式,其中16 MHz晶振除自身使用外还可供给AD7810输入时钟使用,32 MHz在自身向协调器发射RF信号时使用。图2为ZigBee传感终端节点的硬件设计图。
2.2 ZigBee协调模块的硬件设计
ZigBee协调模块是ZigBee中的协调节点,除了担负着组建网络、允许其他节点加入与退出、分配ID等基本任务外,还要将接收到的数据进行预处理后打包压缩,添加北斗头协议后发送到北斗模块。由于北斗通信的最小通信间隔为1 min,单次发送数据量相对也不大,所以CC2531芯片完全可以满足要求,不必采用其他处理芯片。其硬件框图如图3所示。
2.3 嵌入式Linux显示上位机的硬件设计
上位机由UART串口连接至北斗指挥机,上位机芯片采用三星公司的S3C2440,附带7英寸触摸屏。
3 系统软件设计
整个系统的软件由ZigBee传感终端节点的软件、ZigBee协调模块的软件和嵌入式Linux显示上位机的软件三部分组成。ZigBee相关模块需植入TI公司的Z-STACK协议,PHY层、MAC层、应用层等相关层程序需修改重写,以实现硬件支持与功能实现。另外,由于北斗短报文通信的传输量有限,所以要在ZigBee协调模块和嵌入式显示上位机分别实现数据的压缩与解压。考虑到采集到的1帧数据的重复性较大,这里用到了BWT算法、改进型RLE算法和静态Huffman算法相结合对数据进行压缩。
3.1 相关压缩算法
传输数据的压缩流程如图4所示,具体流程为:
(1)将经过数据预处理的一帧数据T在末端插入#,并进行每次移位1次的循环右移,得到一个矩阵T#,再按T#矩阵每行的首字母字典排序得到M矩阵。在这里可以定义M矩阵的第一列为F,最后一列为L。则L为经过BWT变换的字符串。最后这里需要建立一个L-M Mapping(LF)的辅助公式如下:
这里D[L[i]]指的是D代表的字符出现在L列最后出现的位置i,Di指的是D代表的字符在L[1,i]中出现的次数。
(2)上述的字符串经过BWT变换后,重复数据会聚集再一起,将上述字符串再通过改进型RLE编码压缩,由于采集的一帧数据有限,字符重复个数不可能超过0xFF,所以单个重复数据编码为2个字符,高字节不采用传统的2个字符,而只采用1个字符,连续不重复字符共用一个高字节C1。
(3)根据自设的静态Huffman编码对数据进行变长编码。最后,整理数据并添加北斗协议,通过北斗用户机短报文通信将数据发出去。传输数据的压缩流程图如图4所示。
传输数据的解压过程为:
(1)将接收数据去掉北斗头协议后,根据对应的Huffman码表通过Huffman解码将数据解码出来。
(2)根据RLE编码的原理,去掉数据中的高字节C1,根据C1数值的大小,逐个恢复出各个重复数据,直至恢复出来原始数据串的长度,恢复出来的数据串即是上述压缩流程中的L。
(3)目标是通过BWT反变换恢复出原数据T,恢复T的算法为:
其中s=u-1,…,1。这里u为T加#后的长度,T[s]为L[i](即L中的第i个字符)在T中的位置s,需恢复所有T[s],而T即为最终的原始数据串。
3.2 ZigBee传感终端节点的软件设计
终端传感节点的主要任务是数据采集、网络连接等。传感数据的发送采用周期性的数据发送,各节点采集周期都略小于1 min。并采用循环扫描的方式读取每一个节点的每个传感器信息。需要注意的是由于是周期性地采集数据,软件上可以实现间歇性使ZigBee传感节点处于休眠状态,减小功耗。
3.3 ZigBee协调模块的软件设计
ZigBee协调模块是本系统的核心模块,其作为整个星型组网的协调器,担负着网络建立与网络管理以及数据处理的作用。首先进行系统初始化,包括对协议栈的物理层、MAC层和I/O端、串口等进行初始化,接着协调器建立网络并等待节点加入。当收到节点加入请求后,对节点进行网络登记。接着判断是否收到数据,收到数据后即可对数据进行压缩、添加北斗通信协议处理,最后通过北斗用户机发送出去。整个软件的实现流程如图5所示。
3.4 嵌入式Linux显示上位机的软件设计
嵌入式显示上位机是本系统的终端数据显示模块,其功能主要是实现数据的解压缩去头协议后恢复数据并实时显示与数据储存和查询。为了便于携带性和实现更好的人机交互,显控终端使用ARM处理器,所用芯片型号为S3C2440,运行嵌入式Linux系统,软件界面采用QT4.85开发。为了方便历史数据的查询,应用程序使用mysql数据库,数据库与QWT相结合,支持对数据进行图表查询。上位机查询界面如图6所示。
4 系统测试结果与分析
为了验证数据的传输性能,人为对传感器进行了温度、湿度、风力等参数进行了的变化,上位机在延时约1 min左右以后可以灵敏地反应出变化。
另外,为了对本系统的北斗传输数据压缩效率进行验证,进行了多次验证实验,随机挑选了几组典型数据验证实验结果,如表1所示。从实验结果上来看,算法实现了数据的高效无损压缩,数据量都压缩到了78.5 B以下,可以实现北斗模块一次一帧发送,显著提高发送效率。
参考文献
[1] 颜玉华.耕地红线是我国粮食安全的生命线[J].调研世界,2011(4):29-33.
[2] 孙玉文.基于无线传感器网络的农田环境监测系统研究与实现[D].南京:南京农业大学,2013.
[3] 王莉,王泽民.北斗系统在农田墒情和珠峰登顶测量中的应用[J].卫星与网络,2006(3):54-57.
[4] 储成祥,戴啸涛,杨晓冬.我国农业信息化中的物联网技术应用需求评价与对策研究[J].南京邮电大学学报(社会科学版),2011,13(3):25-41.
[5] 钟坚.中国5年内建成本土GPS—北斗[J].凤凰周刊,2010,354(5):50-51.