分布式无线农业信息采集系统的设计与实现
第28卷第9期 2009年9月
实验室研究与探索
RESE ARCH AND EXP LORATI O N I N LABORAT ORY
Vol . 28No . 9
Sep. 2009
分布式无线农业信息采集系统的设计与实现
宋依青, 李书旗, 王海滨
1
2
2
(1. 常州工学院计算机信息工程学院, 江苏常州213002;
2. 河海大学计算机及信息工程学院, 江苏常州213022)
摘 要:提出了一种基于nRF905的前端分布式无线传感器采集系统, 将农业信息采集后无线传输至中心节点, 由其经GS M 网络转发至数据中心的决策支持系统进行数据处理和图形化显示, 以辅助决策。介绍了无线采集终端的硬件设计, 分析了基于nRF905的无线通信协议栈的设计思路与方法。关键词:分布式; nRF905; 终端节点; GS M 模块; 协议栈中图分类号:TP 934. 3 文献标识码:A :1006-) -04
De si gn and Rea li za ve W ire l e ss
I nf the ri ng System
SON Yi 2, L I Shu 2qi , WAN G Hai 2bin
1
2
2
(1. Coll oge of &I or mati on Engineering, Changzhou I nstitute of Technol ogy, Changzhou 213002, China;
2. Coll of Computer &I nf or mati on Engineering, Hohai University, Changzhou 213022, China )
Abstract:This article intr oduced a gathering, syste m of f or ward distributi on wireless sens or based on nRF905, which gathers agriculture infor mati on and then trans m its wirelessly the infor mati on t o center node . The inf or mati on is trans m it 2ted by the center node t o decisi on 2making syste m of data center, and p r ocessed and dis p layed in the f or m of graph . The article intr oduced si m p ly the hadware design of the syste m and analyzed significantly the wireless communicati on p r ot ocol stack ’s design idea and method which is based on nRF905.
Key words:distributi on; nRF905; ter m inal node; GS M mode; p r ot ocol stack
1 引 言
三农问题是我国目前的头等任务, 而要有效地解决三农问题, 一个技术上的手段就是实现农业信息化。
在农业信息化过程中, 一个重要的课题当属对农业信息, 如温度、湿度等数据进行采集并交由决策支持系统辅助用户进行决策。然而, 对于分布式信息采集, 尽管数据的传输量并不是很大, 实时性要求也不高, 但规模庞大、节点众多。对于这样的系统, 无线传输是最佳方案。在各种无线方案中, nRF905以其设计简单灵活、功耗较低、价格低廉而获得广泛应用。本文就是在此背景下, 设计了一种通用的硬件采集终端, 并在此基础
收稿日期:2009-04-14
作者简介:宋依青(1960-) , 男, 山东青岛人, 研究生, 副教授, 研究方向:通信及自动控制。
Tel . :[1**********]50, [1**********]; E 2mail:s ongyq@czu. cn
上设计并实现了一种轻量型的通信协议, 以确保网络
节点间的互联。
2 系统架构
分布式农业信息采集系统用于将农田中各个不同地点的温度、湿度或者其他相关信息通过传感器采集
[1]
之后, 经过nRF905模块传输给中心节点, 由其通过GS M 模块转发至中心计算机进行决策处理。系统架构如图1所示, 主要由3部分组成。
(1) 前端数据采集系统。包括终端节点和中心节点。每个终端节点都具有多个传感器和一个nRF905无线数传模块, 负责采集各种信息, 并通过nRF905模块转发给中心节点。中心节点具有nRF905无线数传模块和GS M 模块, 负责公平、有序、无差错地接收各种终端节点的信息并通过GS M 模块转发给中心数据计算机。
第9期
宋依青, 等:分布式无线农业信息采集系统的设计与实现
59
图3 温度传感器与MCU 连接原理图
图1 系统框图
可工作在1. 9~3. 6V , 待机模式下仅为2. 5μA 。芯片
工作在半双工模式, 收发模式切换小于650μs 。该芯片通过SP I 总线与MCU 连接
[325]
(2) GS M 网络。是本系统中重要的通信子网, 由
中国移动或者联通构建, 实现基于GS M 的透明传输。
(3) 决策支持计算机。该计算机通过GS M 网络负责将各终端节点采集的数据接收之后进行处理, 交由决策支持系统进行图形化显示, 以辅助用户根据实际信息进行决策。
, 如图4所示
。
3 终端硬件设计
, 节点包括中, 。只GS 模块, 用于将收到的终端节点的数据通过GS M 模块转发至中心计算机。由于篇幅所限, 本文仅介绍终端节点的硬件部分。
终端节点的硬件设计按功能主要分为数据处理模块、数据(温度、湿度等) 采集模块和数据传输模块, 终端电路原理框图如图2所示
。
图4 SP I 总线与MCU 连接图
4 软件设计
本系统的软件实现主要包括终端节点的传感器数据采集模块、中心节点的GS M 通信模块和两类节点的nRF905无线通信协议栈。前两部分软件模块由于篇
幅所限暂且不表, 只研究无线通信协议栈的设计。本系统网络中nRF905采用星形拓扑结构互联, 以中心节点为核心, 负责收集各终端节点的传感器数据并进行转发
[6]
。该网络要实现高效、公平合理的、
无差错的节点通信, 需要重点解决以下问题:
(1) 信道分配与争用。对无线信道而言, 尤其是
图2 终端电路原理框图
对于中心节点而言, 如何保证同一时刻只有1个终端
节点访问中心节点, 避免多节点同时访问中心节点时发生冲突和碰撞。
(2) 差错控制。接收方(主要指中心节点) 在接收到终端节点的数据之后, 如何检出错误并负责出错重传, 同时接收方接收数据之后要对发送方的数据进行有序重排。
(3) 帧格式。如何设计出合理的帧格式, 既要包括必要的控制信息, 又要减少控制信息的长度提高信道利用率。
为了解决上面通信协议中提到的问题, 参照OSI 7层模型体系结构, 采用分层次的设计方法
[429]
从成本、体积及降低功耗等方面考虑, 数据处理模
块采用M icr ochi p 公司生产的P I C16F876高性能8位单片机, 有24条I/O、8K 程序储存器, 具有R I SC 结构、抗干扰、保密性强的特点。温度数据采集部分采用美国DALLAS 公司生产的
[2]
数字温度传感器DS18B20芯片。该芯片无需外加A /D即可输出数字量, 适合于恶劣环境的现场温度采集。温度测量范围-55~+125℃, 工作电压范围3~
2
5. 5V 。芯片管脚少, 与数据处理部分交换信息用I C 通信协议, 仅需1根I/O线, 使硬件设计简单。温度传感器与MCU 连接原理图如图3所示。 无线数传模块选用nRF905芯片。这是由Nordic 公司生产的无线射频芯片, 可经过软件配置选择其工作在433/868/915MHz 的I S M 频段。该芯片功耗低
,
, 将协议
分为3层。
(1) 物理层。处于协议栈的最底层, 负责芯片初始化、发送和接收地址设置、收发状态切换等操作。
(2) 数据链路层。处于协议栈的第2层, 负责帧
60
实 验 室 研 究 与 探 索
4. 2. 1 信道分配与争用问题
第28卷
格式、差错控制、流量控制、信道分配与争用等功能, 采
用必要的差错控制规程使在不可靠信道的物理层上传输的数据, 实现可靠的数据传输。
(3) 应用层。处于协议栈的最高层次, 依赖下面的2层实现不同节点的应用程序间的分布式通信。4. 1 物理层
对广播信道而言, 如何为相互竞争的节点之间有
效、公平、高效地进行信道分配有静态分配和动态分配。静态分配(如T DM 或者F DM ) , 每个用户独占一个时隙或者频带。但是, 如果节点不进行数据传输, 那么该节点的时隙或者频带就会被白白浪费掉。因此, 静态分配的方法不适用于终端节点数目可变和通信突发的情况。而采用动态分配也有ALOHA 协议和循环式。由于ALOHA 效率较低, 因此本协议栈采用循环式动态分配。所谓循环方式, 就是指每个节点轮流得到发送机会, 所有节点按照一定顺序轮流获取发送权限。而这种发送权限的获得又有2种方式:
(1) 分布式令牌环。点的地址, , 只有获得, 。但是, 令牌方式属于, 。尤其是系统运行中极有可能出现无令牌循环或者忙令牌一直循环的故障, 实现较为困难, 协议栈较为复杂。
(2) 集中式查询。如r oll 2call 查询等。发送权限由中心节点集中控制。中心节点按照终端节点列表逐个发送查询帧, 如果被查询的节点没有数据需要发送, 则发回I dle 帧给中心节点。如果有数据发送, 终端节点把等待发送的数据全部发送出去。当本终端节点传输完毕后, 中心节点再对下一个节点进行查询。
对本系统而言, 节点发送数据的实时性要求不高, 而且各节点之间发送数据的先后顺序也并不重要, 所以, 系统采用了r oll 2call 查询方式。因此, 中心节点需要维护一个终端节点的完整列表, 其二维表形式如下。该表包括序号No 、终端节点地址Ter m inal A ddress 和是否具有授权Authorized 3个字段。
No . 12
Ter m inal A ddress xxxxxxxxxxx xxxxxxxxxxx
Authorized
Y N
物理层通过下面的4个函数实现芯片初始化、发送和接收地址设置、收发状态切换和简单的数据发送和接收操作。需要注意的是, 本层实现的发送和接收数据可能会出错, 也有可能会出现数据失序的问题, 这些问题的解决都依赖于上一层即数据链路层来解决。
(1) void I nitialize (Struct RFConf ) 。此函数实现对nRF905的初始化操作, 包括设定工作频率、工作模式、收发地址宽度、有效数据长度、本地地址和CRC 校验位数等功能。其中, Struct RFConf 结构体定义如下:
Typedef Struct RFConf {
unsigned char ConfigCmd ///
unsigned char ChanConf[//, ,
是否重发, unsigned / unsigned char [2], //接收发送有效数据
长度
unsigned char Re mote Addr[4], //接收地址 unsigned char crc, //CRC配置
};
(2) void S witch Mode (boolMode ) 。此函数负责切
换收/发模式, 输入参数Mode 为bool 型。其中:True 表示发送; false 表示接收。
(3) void PhyRecv (unsigned char 3Phy Data ) 。此函数实现从SP I 接口接收数据并赋值给Phy Data 。当芯片检测到同一频段的载波时, 载波检测引脚CD 置高, 当接收到相匹配的地址时, 地址匹配引脚AM 置高。当一个数据包接收完毕后, DR 引脚被置高, 此时置低TRX_CE,nRF905进入空闲状态。MCU 通过接口将nRF905的数据缓冲区的数据读出赋值给Phy Data 。当所有数据接收完毕, nRF905置低DR 和AM 引脚。
(4) void PhySend (unsigned char 3Phy Data, un 2signed char 3Re mote Addr ) 。此函数通过SP I 接口, 按时序把目的节点的地址和要传输的数据传输给nRF905, 同时置高T RX_CE和TX_EN 引脚, 模块处于发送模式, nRF905自动完成开启射频寄存器、数据打包、发送数据包等一系列工作, 发送完成后, 将nRF905切换为接收态, 以便于接收对方节点的ACK 帧。4. 2 数据链路层
物理层实现了基本的数据发送和接收, 但无法进行差错控制和信道分配与争用的问题, 因此, 数据链路层需要解决这些问题。
中心节点主要实现以下函数,
void r oll 2call (unsigned char Ter m inal N u m ) 中心节点调用此函数首先从终端列表中查询出编号为Ter m inal N u m 的终端节点地址并发送查询帧, 等待终端节点的I dle 帧或者数据帧, 当收到I dle 帧或者数据帧之后, Ter m inal N um +1, 并查询下一个节点。I dle 帧或者数据。4. 2. 2 差错控制及按序重排问题
由于无线信道极易受到外界噪声干扰而出错, 所以, 当终端节点发出的帧出错之后, 中心节点应该有一种机制通知终端节点进行重传。本系统采用的方法是
第9期
宋依青, 等:分布式无线农业信息采集系统的设计与实现
ne Nu m 二维表的方法, 结构如下:
I D . 1
Phone Nu m xxxxxxxxxxx
61
连续ARQ 协议。即终端节点连续发送多个数据帧, 当中心节点收到终端节点的数据帧N 之后, 如果正确, 则发出ACK (N +1) 帧; 如果出错, 则发ACK (N ) 帧, 中心节点继续对N 帧的后续帧重传。
帧具有固定的长度, 帧的格式如下所示:
L. Address 32bit
Type 2bit
F . No ACK 3bit
3bit
Data 42×8bit
Length 8bit
从此, 终端节点可以采用发送Phone Num 编号的
方法, 交予中心节点后查询二维表后将其转换成实际的Phone Num , 进行GS M 消息的发送。采用Phone Nu m 编号后, 应用层包的结构如下:
Length 8bit
Type 3bit
T . No 5bit
Phone I D 3bit
Data
其中:L. Address 为发送节点的地址, 4Byte; Type 为2bit, 表示帧的类型, 00表示中心节点发出的查询帧, 01
表示终端节点发出的I dle 帧, 10表示终端节点发送的
数据帧, 11表示中心节点发出的ACK 确认帧; F . No 为帧编号, 用于对发送的数据帧进行编号, 使中心节点能对接收到数据帧按照帧标号的顺序进行重新组装; Length 为帧的总数, 中心节点将接收帧的总数和Length 进行比较, 如果一致, 说明帧全部接收完毕, 否
可变
应用层实现以下函数:
(1) Void AppTrans (char 3Data, un 2signed I ) 。该函数Phone I D 和, , 调用链路层的L ink 2、有序的透明传输。
(2) Void AppRecv (v oid ) 。该函数用于中心节点从包中解析出Phone I D 查找到Phone Nu m , 并把接收到的数据解析后通过GS M 发送函数发送出去。
则, 还要继续进行接收; ACK 用于对编号为N 帧(N -1, N -2, N -3, …) 的确认, 段, 帧采用累计确认方法5, 024帧; 为数据字
段, 42如果不满42Byte, 以ASC II 字符DLE 。
本层实现的主要函数如下:
void L inkTrans (unsigned char 3Re mote Addr,
unsigned char 3Data ) 该函数供上层调用, 实现终端节点与中心节点之间数据的可靠传输。参数Data 为应用程序需要传输的实际数据, 需要根据实际的长度划分为多个Fra me, 并对每个Fra me 调用物理层的发送函数进行发送, 同时, 调用物理层的接收函数接收中心节点发出的ACK 帧。4. 3 应用层
应用层利用下层提供的功能, 将多种应用程序的数据交给链路层进行无差错的传输。应用层的包结构如下:
Length 5bit
Type 3bit
Phone Nu m 11×8bit
Data
5 结 语
基于nRF905模块, 设计并实现了一个分布式无
线农业信息采集系统。依据分层原理, 制定了一个具有差错控制、透明传输等功能的轻量型通信协议, 并且具有易于设计和实现的优点。该协议在分布式农业信息采集系统中运行良好, 值得推广。当然, 由于本协议采用了集中控制介质访问权限的r oll 2call 模型, 因此对中心节点要求较高。参考文献(References) :
[1] 金保华, 张 勇, 崔光照. 基于nRF905的无线数据多点跳传通信
系统[J ].仪表技术与传感器, 2004(9) :39240.
[2] OMAC Baseline architecture functi onal require ment versi on 1. 0[DB /
OL ].www . arc web . com.
[3] Single Chi p 433, 868, 915MHz Transceiver nRF905[S ].1. nordic
VLSIAS 2004.
[4] 郝妍娜, 洪志良. 基于MCU 和nRF905的低功耗远距离无线传输
可变
其中:Length 为长度字段, 表示Data 域的字节数; Type 表示应用程序类型, 000表示温度信息, 001表示湿度
信息, 其他的可以进行扩展; Phone Num 表示中心计算机所连接GS M 模块的手机号码, 为11Byte 。实际应用中, 不同的Phone Nu m 可能对应不同的中心计算机处理不同的应用, 当然也有可能同一个Phone Nu m 对应不同的应用; Data 为实际的数据, 长度可变。
由于Phone Nu m 在数据包中占据了相当长的长度, 而且极有可能超过实际的传感器数据长度, 导致信道利用率下降。因此, 可以采用在中心节点存储Pho 2
系统[J ].电子技术应用, 2007(8) :44245.
[5] 李海涛, 仪 维, 吴筱坚. P I C 单片机应用开发典型模块[M].北
京:人民邮电出版社, 2007:2432249.
[6] 董海涛, 屈玉贵, 赵保华. Z igb ee 无线传感器网络平台的设计与
实现[J ].电子技术应用, 2007(12) :1252126.
[7] 顾 绩, 梅顺良. 一种无中心无线网络协议栈的设计及实现[J ].
微计算机信息, 2007(23) :1192200.
[8] 李永红, 那凯鹏. 基于无线传感网络技术的粮库监控网络的研究
[J ].仪表技术, 2008, 11:47249.
[9] 潘 伟, 黄 东. 基于Zigbee 技术的无线传感网络研究[J ].计算
机技术与发展, 2008, 18(9) :5412544.