1.1设计背景
无线传感器网络是目前研究的热门领域,它集成 了多门学科的知识,应用领域广泛,因此深受国际社会 的关注。 在 21 世纪里,无线传感器网络技术是具有 较大影响力技术中的一个热门技术,也是无线通信技 术中的一个新领域,它结合了多种技术的特点,如分布 式信息处理技术、嵌入式计算机技术以及无线网络通 信技术等 。 鉴于传感器网络技术的研究及应用价 值,许多部门、机构、学校等对其开始了基础理论和关键技术的研究,而通过无线方式对环境现场的数据进 行实时采集、传输和后台监控是大量挑战性的研究课 题之一。 无线数据采集是利用无线数据采集模块或设备, 将工业现场的传感器输出的电压、电流等物理量进行 实时采集和处理。 传统的数据采集系统一般采用事先 布线以及人工的方式采集设备的各项数据,而随着生 产力技术的发展,工业生产中的生产设备分布越来越 分散,分布的地域也越来越广,对处于高温和高压等恶 劣环境下的设备进行现场数据采集和维护是比较困难 和危险的,需要投入大量的人力成本和财力资源,这些 状况在很大程度上制约着企业的发展和生产效益的提 高。 对于最新的无线传感器网络技术 Zigbee 而言,它 采用了无线传输方式来构建相应的无线传感器网络, 能够较好地解决人工及有线方式存在的问题。
1.2设计要求
本次设计要求我们熟练使用Linux系统,以及了解Zigbee协议,最终实现IAR软件环境搭建、常用传感器和外设的操作,节点的数据采集以及数据的无线收发。
2.1Zigbee协议
Zigbee是基于IEEE802.15.4标准的低功耗局域网协议。根据国际标准规定,Zigbee技术是一种短距离、低功耗的无线通信技术。这一名称(又称紫蜂协议)来源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飞翔和“嗡嗡”(zig)地抖动翅膀的“舞蹈”来与同伴传递花粉所在方位信息,也就是说蜜蜂依靠这样的方式构成了群体中的通信网络。其特点是近距离、低复杂度、自组织、低功耗、低数据速率。主要适合用于自动控制和远程控制领域,可以嵌入各种设备。简而言之,Zigbee就是一种便宜的,低功耗的近距离无线组网通讯技术。Zigbee是一种低速短距离传输的无线网络协议。Zigbee协议从下到上分别为物理层(PHY)、媒体访问控制层(MAC)、传输层(TL)、网络层(NWK)、应用层(APL)等。其中物理层和媒体访问控制层遵循IEEE 802.15.4标准的规定。
2.1.1Zigbee协议特点
(1)工作周期短、收发信息功耗较低,并且RFD(Reduced Function Device,简化功能器件)采用了休眠模式,不工作时都可以进入睡眠模式。
(2)低成本。通过大幅简化协议(不到蓝牙的1/10),降低了对通信控制器的要求,以8051的8位微控制器测算,全功能的主节点需要32KB代码,子功能节点少至4 KB代码。
(3)低速率、短延时。Zigbee的最大通信速率达到250 kb/s(工作在2.4GHz时),满足低速率传输数据的应用需求。Zigbee的响应速度较快,一般从睡眠转入工作状态只需15ms,节点连接进入网络只需30ms,进一步节省了电能。相比较,蓝牙需3~10S、Wi-Fi需3S。
(4)近距离,高容量。传输范围一般介于10~100 m,在增加RF发射功率后,亦可增加到1~3km。这指的是相邻节点间的距离,若通过路由和节点间通信的接力,扩展后达到几百米甚至几公里。Zigbee可采用星状、片状和网状网络结构。由一个主节点管理若干子节点,最多一个主节点可管理254个子节点。
(5)高可靠性和高安全性。Zigbee的媒体接入控制层(Medium Access Control,MAC)采用CSMA/CA的碰撞避免机制,同时为需要固定带宽的通信业务预留了专用时隙,避免了发送数据时的竞争和冲突。Zigbee还提供了3级安全模式,包括无安全设定、使用接人控制清单防止非法获取数据以及采用高级加密标准(Advanced Encryption Standard,AES)的对称密码,以灵活确定其安全属性。
(6)免执照频段。采用直接序列扩频在工业科学医疗(Industrial Scientific Medical,ISM)频段,分别为2.4GHz(全球)、915MHz(美国)和868MHz(欧洲)。
2.1.2Zigbee的网络结构
Zigbee网络分为4层,从下向上分别为物理层、MAC层、网络层、和应用层。其中物理层和MAC层由IEEE802.15.4标准定义,合称IEEE802.15.4通信层;网络层和应用层由Zigbee联盟定义。如图1所示。
图1 Zigbee的网络结构
2.2CC2530芯片介绍
CC2530 是用于2.4-GHz IEEE 802.15.4、Zigbee 和RF4CE 应用的一个真正的片上系统(SoC)解决方案。它能够以非常低的总的材料成本建立强大的网络节点。芯片外观如图2所示。
CC2530 结合了领先的RF 收发器的优良性能,业界标准的增强型8051 CPU,系统内可编程闪存,8-KB RAM 和许多其它强大的功能。CC2530 有四种不同的闪存版本:CC2530F32/64/128/256,分别具有32/64/128/256KB 的闪存。CC2530 具有不同的运行模式,使得它尤其适应超低功耗要求的系统。运行模式之间的转换时间短进一步确保了低能源消耗。其引脚分布如图3所示。
图2 CC2530芯片
图3 CC2530的引脚分布图
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。
这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。
(3)多用户、多任务
Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。
Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。 [4]
Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux 2.4版内核已经能够完全支持Intel64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。
Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。Linux命令在系统中有两种类型:内置Shell命令和Linux命令。其常见的指令如图4所示。
图4 常见的Linux命令
2.4.1Zigbee 数据采集系统采集数据的原理
Zigbee 网络通常由三个节点构成:协调器(Coordinator) 节点、路由器 ( Router) 节点、传 感 器 ( End Device)节点。 传感器节点也称为终端设备。 协调器用 来创建一个 Zigbee 网络,并为最初加入网络的节点分 配地址,每个 Zigbee 网络需要且只需要一个协调器; 路由器也称为 Zigbee 的全功能节点,可以转发数据, 起到路由的作用,也可以收发数据,当成一个数据节点,还能保持网络,为后加入的节点分配地址;终端设 备通常只周期性地发送数据,不接收数据。 由于本系 统是在实验室小范围内进行的实验,因此不设 Zigbee 路由节点。 在实验中,Zigbee 的协调器节点和终端设 备节点形成星型网络拓扑结构,并且在网络中设置了 一个协调器节点和两个终端设备节点。 协调器节点也 称为汇聚节点,将多个终端设备节点置于不同的位置, 它们会按照要求把采集到的数据传给汇聚节点,汇聚 节点先要对数据进行处理,然后才把数据通过串口传 给 PC 机。 文中主要介绍传感器网络采集数据的具体 实现,不讨论上位机的用户界面的设计。 系统原理示 意图如图 5 所示。
图5 系统原理示意图
2.4.2 传感器节点硬件设计
Zigbee 传感器节点的硬件设计与协调器节点的硬 件设计类似,由 CC2530 芯片、电压转换器件、电源电 路、收发器、路灯以及天线组成。 CC2530 处理器可采 集路灯的亮度数据(即电压值),路灯也可以用来显示 节点的网络状态,如:节点是否加入网络。 处理器把采 集到的数据信号经模数转换后由天线发送到协调器 端。 与协调器不同的是,在 Z-Stack 协议栈中,要将编 译好的关于传感器节点的代码下载到终端设备中,终 端设备便可实现采集路灯数据并将数据发送给协调器 的功能。
2.4.3Zigbee 协调器节点建立网络的过程
Zigbee 的网络层(NWK) 能够为应用层提供服务 接口,它也是 Zigbee 协议栈的核心层,NWK 层在概念 上由 NLME 网络层管理实体和 NLDE 网络层数据实体 这两个服务实体构成。 Zigbee 协调器的应用层通过 NLME-NETWORKFORMATION. request 的请求原语向它的网络层发出新 建一个网络的请求,而应用层相对应的程序通过直接 调用 NLME_NetworkFormationRequest 函数来实现这一 操作过程,如果此函数判定这个设备不具有 Zigbee 协 调器的能力时,就会发起 NLME-NETWORK-FORMA-TION. conform 原语来返回请求原语执行的结果,它的 状态值为 INVALID_REQUEST;如果此函数判定这个 设备具有 Zigbee 协调器的能力,接着它会继续判断网 络中是否已经有这个设备存在,若判断有此设备存在, 就表明网络在此之前已经建好了,不需要重新建立网 络,若无此设备存在,此函数将通过 MLME-SCAN. request 原语来执行检测信道能量是否有效的操作,具体 操作过程由网络层调用存在于 MAC 层中的 MLMESCAN. request 函数来实现;MAC 层中的 MLME_ScanConfirm 函数会返回信道检测的结果,网络层管理实体 (NLME)将根据检测的结果为新建的网络选择一个合 适的信号传输信道并给该信道分配一个名为 PANId 的网络号,否则 MLME_ScanConfirm 函数会向应用层返 回 STARTUP-FAILURE 建网失败的信息。 若成功建立 网络并且选定了合适的 PANId 网络号,网络层就会通 过 MLME - SET. request 原 语 将 PANId 号 写 入 到 macPANId 的属性中,macPANId 位于 MAC 层中。 若要 运行新建立的网络,则需要网络层向 MAC 层发送请 求,具体由 MLME -START. request 请求原语来实现。 通常建立网络成功会有建网成功的提示信息,否则会 有建网失败的提示信息。
2.4.4系统的软件设计
本系统采用星型网络拓扑结构,网络中设置了一 个协调器节点和两个终端设备节点。 终端设备节点之 间不能通信,只能与协调器节点通信。 协调器节点要 能接收到终端设备节点采集的数据,就得存储由终端 设备节点发来的其在加入网络后所分配到的网络地址 信息,之后协调器端才能成功接收终端设备节点的数 据并控制该节点。 协调器建立网络成功后,终端设备 节点会寻找并加入网络,当加入网络成功后,网络状态 改变事件反馈中的定时器被触发,使得传感器节点定 时采集数据,并发送到协调器端,协调器再通过串口把数据传给 PC 机。系统的软件流程图如图 6 所示。
图6 系统软件流程图
3 基于CC2530的zigbee物联网系统设计方案实施
3.1 CC2530单元模块功能及电路设计
(1) CPU 和内存
CC253x芯片系列中使用的8051 CPU内核是一个单周期的8051兼容内核。它有三种不同的内存访问总线(SFR,DATA 和CODE/XDATA),单周期访问SFR,DATA 和主SRAM。它还包括一个调试接口和一个18 输入扩展中断单元。
中断控制器总共提供了18 个中断源,分为六个中断组,每个与四个中断优先级之一相关。当设备从活动模式回到空闲模式,任一中断服务请求就被激发。一些中断还可以从睡眠模式(供电模式1-3)唤醒设备。
内存仲裁器位于系统中心,因为它通过SFR 总线把CPU 和DMA 控制器和物理存储器以及所有外设连接起来。内存仲裁器有四个内存访问点,每次访问可以映射到三个物理存储器之一:一个8-KB SRAM、闪存存储器和XREG/SFR 寄存器。它负责执行仲裁,并确定同时访问同一个物理存储器之间的顺序。
8-KB SRAM映射到DATA存储空间和部分XDATA存储空间。8-KB SRAM是一个超低功耗的SRAM,即使数字部分掉电(供电模式2 和3)也能保留其内容。这是对于低功耗应用来说很重要的一个功能。
32/64/128/256 KB闪存块为设备提供了内电路可编程的非易失性程序存储器,映射到XDATA 存储空间。除了保存程序代码和常量以外,非易失性存储器允许应用程序保存必须保留的数据,这样设备重启之后可以使用这些数据。使用这个功能,例如可以利用已经保存的网络具体数据,就不需要经过完全启动、网络寻找和加入过程。
(2) 时钟和电源管理
数字内核和外设由一个1.8-V 低差稳压器供电。它提供了电源管理功能,可以实现使用不同供电模式的长电池寿命的低功耗运行。有五种不同的复位源来复位设备。
(3) 外设
CC2530 包括许多不同的外设,允许应用程序设计者开发先进的应用。
调试接口执行一个专有的两线串行接口,用于内电路调试。通过这个调试接口,可以执行整个闪存存储器的擦除、控制使能哪个振荡器、停止和开始执行用户程序、执行8051 内核提供的指令、设置代码断点,以及内核中全部指令的单步调试。使用这些技术,可以很好地执行内电路的调试和外部闪存的编程。
设备含有闪存存储器以存储程序代码。闪存存储器可通过用户软件和调试接口编程。闪存控制器处理写入和擦除嵌入式闪存存储器。闪存控制器允许页面擦除和4 字节编程。
I/O控制器负责所有通用I/O引脚。CPU可以配置外设模块是否控制某个引脚或它们是否受软件控制,如果是的话,每个引脚配置为一个输入还是输出,是否连接衬垫里的一个上拉或下拉电阻。CPU 中断可以分别在每个引脚上使能。每个连接到I/O 引脚的外设可以在两个不同的I/O 引脚位置之间选择,以确保在不同应用程序中的灵活性。
系统可以使用一个多功能的五通道DMA控制器,使用XDATA存储空间访问存储器,因此能够访问所有物理存储器。每个通道(触发器、优先级、传输模式、寻址模式、源和目标指针和传输计数)用DMA 描述符在存储器任何地方配置。许多硬件外设(AES 内核、闪存控制器、USART、定时器、ADC 接口)通过使用DMA 控制器在SFR 或XREG 地址和闪存/SRAM 之间进行数据传输,获得高效率操作。定时器1 是一个16 位定时器,具有定时器/PWM 功能。它有一个可编程的分频器,一个16 位周期值,和五个各自可编程的计数器/捕获通道,每个都有一个16 位比较值。每个计数器/捕获通道可以用作一个PWM输出或捕获输入信号边沿的时序。它还可以配置在IR产生模式,计算定时器3 周期,输出是ANDed,定时器3 的输出是用最小的CPU 互动产生调制的消费型IR 信号。
MAC定时器(定时器2)是专门为支持IEEE 802.15.4 MAC或软件中其他时槽的协议设计。定时器有一个可配置的定时器周期和一个8 位溢出计数器,可以用于保持跟踪已经经过的周期数。一个16 位捕获寄存器也用于记录收到/发送一个帧开始界定符的精确时间,或传输结束的精确时间,还有一个16 位输出比较寄存器可以在具体时间产生不同的选通命令(开始RX,开始TX,等等)到无线模块。定时器3 和定时器4 是8 位定时器,具有定时器/计数器/PWM 功能。它们有一个可编程的分频器,一个8 位的周期值,一个可编程的计数器通道,具有一个8 位的比较值。每个计数器通道可以用作一个PWM 输出。
睡眠定时器是一个超低功耗的定时器,计算32-kHz 晶振或32-kHz RC 振荡器的周期。睡眠定时器在除了供电模式3 的所有工作模式下不断运行。这一定时器的典型应用是作为实时计数器,或作为一个唤醒定时器跳出供电模式1 或2。
ADC支持7到12位的分辨率,分别在30 kHz或4 kHz的带宽。DC和音频转换可以使用高达八个输入通道(端口0)。输入可以选择作为单端或差分。参考电压可以是内部电压、AVDD 或是一个单端或差分外部信号。ADC 还有一个温度传感输入通道。ADC 可以自动执行定期抽样或转换通道序列的程序。
随机数发生器使用一个16 位LFSR 来产生伪随机数,这可以被CPU 读取或由选通命令处理器直接使用。例如随机数可以用作产生随机密钥,用于安全。
AES加密/解密内核允许用户使用带有128位密钥的AES算法加密和解密数据。这一内核能够支持IEEE 802.15.4 MAC 安全、ZigBee 网络层和应用层要求的AES 操作。
一个内置的看门狗允许CC2530 在固件挂起的情况下复位自身。当看门狗定时器由软件使能,它必须定期清除;否则,当它超时就复位它就复位设备。或者它可以配置用作一个通用32-kHz 定时器。
USART 0和USART 1每个被配置为一个SPI主/从或一个UART。它们为RX和TX提供了双缓冲,以及硬件流控制,因此非常适合于高吞吐量的全双工应用。每个都有自己的高精度波特率发生器,因此可以使普通定时器空闲出来用作其他用途。
(4) 无线设备
CC2530 具有一个IEEE 802.15.4 兼容无线收发器。RF 内核控制模拟无线模块。另外,它提供了MCU 和无线设备之间的一个接口,这使得可以发出命令,读取状态,自动操作和确定无线设备事件的顺序。无线设备还包括一个数据包过滤和地址识别模块。
图7 CC2530电路原理图
CC2530的各个引脚与外部连接电路如图7所示,根据其引脚的功能接入不同的传感器采集数据。
3.2 基于CC2530的zigbee物联网系统设计整体电路图
将设计中所用到的各种传感器,如LED,电位器等与CC2530的相应的引脚相连接起来,实现数据的采集。外围电路如图8所示。
图8 CC2530外围电路连接图
将设计中所用到的各种传感器,如LED,电位器等与CC2530的相应的引脚相连接起来,实现数据的采集。
3.3 元器件清单
本次设计主要用到CC2530模块以及相关的传感器,通过传感器采集相关的数据,传输到CC2530模块,进行后续处理。所用到的元器件主要如下:
表1 元器件清单表
元器件 |
数量(个) |
CC2530模块 |
2 |
气体传感器 |
2 |
继电器 |
2 |
温度传感器 |
2 |
热红外 |
2 |
脱机下载器 |
1 |
天线 |
2 |
4 基于CC2530的zigbee物联网系统设计的硬件制作与调试
4.1 下位机电路的连接与调试
1.下位机一共有2块实验版(1个协调器1个终端节点)。终端节点:
用IAR打开\实训资料\实训项目最终版\下位机\节点一\ZStack-CC2530-2.5.1a\Projects\zstack\Samples\GenericApp\CC2530DB\GenericApp
图4 结点程序下载
2.协调器:用IAR打开\实训资料\实训项目最终版\下位机\节点二\ZStack-CC2530-2.5.1a\Projects\zstack\Samples\GenericApp\CC2530DB\GenericApp
图5 协调器程序下载
协调器要插串口将数据传输到主机上,线终端节点的传感器与cc253的连接和跳冒如下图。当三个板子的黄色LED亮时,表明组网成功。
图6 结点传感器连接图
4.2 上位机电路的连接与调试
1.导入工程, 导入需要的jar,建立需要的数据库;将上位机文件目录下的工程文件按照正确的导入方式导入到MyEclipse;实训项目最终版\上位机\SerialportClientMN;将上位机文件目录下的包文件下的jar包导入到前面导入的工程中。把上位机文件目录下的数据库文件夹下的data文件用sqlserver打开,然后点击执行,就会在sqlserver里面建立对应的数据库以及表;把上位文件目录下的win32下的dll文件(此文件是串口通信)放到工程根目录下,如果电脑是64位就用win64文件下的。
2.程序使用。运行程序将会出现登录界面,如果没有账户就点击注册,注册成功后再进行登录;登录成功会将会进入到主控制和操作界面,然后可以先设置自己需要的默认串口以及波特率, 自动刷新的时间,动态图的刷新时间;串口和波特率的设置将会在下次登录生效。(设置不是必须的)在操作界面,首先选择串口以及波特率然后打开串口。可以打开和关闭自动刷新,以及服务器。也可以点击变化图选择需要查看对应的温度,气体, 光强的变化情况(此图没有做数据处理, 当数据两大的时候图将变得相当的密集);如果需要查看当前的采集到的数据,可以点击菜单下的查看历史记录。在历史记录界面下,可以删除(支持批量删除)和修改选择的数据;查询功能不可用。
4.3 基于CC2530的zigbee物联网系统设计的实现
下位机与协调器电路连接调试成功后,将处理后的数据通过串口传递到上位机通过界面显示传输的数据。运行后的界面如下图所示。
图7 上位机界面显示
在该界面上可以显示以下功能:
5 总结及心得体会
在这次实训里面,我首先认识到了团队工作的重要性作为一个团队,对于分工合作有了更新一步的认识,对于整个团队的建立与工作的分配更深的加强。
同时在这次实训里面,我学习了java的串口问题与下位机发送,了解TI公司的CC2530芯片的工作原理以及基于短距离无线通信的ZigBee协议的内容并学习到了如何把这些知识贯通组合起来,设计了一种智能无线传感网络,实验实现了无线传感网络的组网,以及温度、湿度数据的智能采集。这些新颖的工程与问题都是我们以前都不曾学习与遇到的,所以对于这次实训学到了更多的知识我和同学们都表示受益匪浅。