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),降低了对通信控制器的要求,以80518位微控制器测算,全功能的主节点需要32KB代码,子功能节点少至4 KB代码。

(3)低速率、短延时。Zigbee的最大通信速率达到250 kb/s(工作在2.4GHz),满足低速率传输数据的应用需求。Zigbee的响应速度较快,一般从睡眠转入工作状态只需15ms节点连接进入网络只需30ms,进一步节省了电能。相比较,蓝牙需310SWi-Fi3S

(4)近距离,高容量。传输范围一般介于10100 m,在增加RF发射功率后,亦可增加到1~3km。这指的是相邻节点间的距离,若通过路由和节点间通信的接力,扩展后达到几百米甚至几公里。Zigbee可采用星状、片状和网状网络结构。由一个主节点管理若干子节点,最多一个主节点可管理254个子节点。

(5)高可靠性和高安全性。Zigbee的媒体接入控制层(Medium Access ControlMAC)采用CSMA/CA的碰撞避免机制,同时为需要固定带宽的通信业务预留了专用时隙,避免了发送数据时的竞争和冲突。Zigbee还提供了3级安全模式,包括无安全设定、使用接人控制清单防止非法获取数据以及采用高级加密标准(Advanced Encryption StandardAES)的对称密码,以灵活确定其安全属性。

(6)免执照频段。采用直接序列扩频在工业科学医疗(Industrial Scientific MedicalISM)频段,分别为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.4Zigbee 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的引脚分布图

    1. Linux系统介绍

Linux是一套免费使用和自由传播的Unix操作系统,是一个基于POSIXUNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持3264硬件。Linux继承了Unix网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux操作系统诞生于1991 10 5 日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核Linux可安装在各种计算机硬件设备中,比如手机平板电脑路由器、视频游戏控制台、台式计算机、大型机和超级计算机。

      1. Linux系统的特性
  1. 完全免费

Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。

  1. 完全兼容POSIX1.0标准

这使得可以在Linux下通过相应的模拟器运行常见的DOSWindows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。

3)多用户、多任务

Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行

  1. 良好的界面

Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows [4] 

  1. 支持多种平台

Linux可以运行在多种硬件平台上,如具有x86680x0SPARCAlpha处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑机顶盒游戏机上。20011月份发布的Linux 2.4版内核已经能够完全支持Intel64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。

      1. 常用的Linux命令
      2. 找不到标题。
        这是一个自动目录。若要使用它,请对进入目录的文本应用标题样式(“开始”选项卡上),然后更新此目录。
      3.  
      4. 如果您想要键入自己的条目,请使用手动目录(与手动目录位于相同菜单中)

Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。Linux命令在系统中有两种类型:内置Shell命令和Linux命令。其常见的指令如图4所示。

4 常见的Linux命令

    1. 基于CC2530Zigbee物联网系统的设计方案

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兼容内核。它有三种不同的内存访问总线(SFRDATA CODE/XDATA),单周期访问SFRDATA 和主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 内核、闪存控制器、USARTADC 接口)通过使用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支持712位的分辨率,分别在30 kHz4 kHz的带宽。DC和音频转换可以使用高达八个输入通道(端口0)。输入可以选择作为单端或差分。参考电压可以是内部电压、AVDD 或是一个单端或差分外部信号。ADC 还有一个温度传感输入通道。ADC 可以自动执行定期抽样或转换通道序列的程序。

随机数发生器使用一个16 LFSR 来产生伪随机数,这可以被CPU 读取或由选通命令处理器直接使用。例如随机数可以用作产生随机,用于安全。

AES加密/解密内核允许用户使用带有128位密钥的AES算法加密和解密数据。这一内核能够支持IEEE 802.15.4 MAC 安全、ZigBee 网络层和应用层要求的AES 操作。

一个内置的允许CC2530 固件挂起的情况下复位自身。当狗定由软件使能,它必须定期清除;否则,当它超时就复位它就复位设备。或者它可以配置用作一个通用32-kHz 

USART 0USART 1每个被配置为一个SPI/从或一个UART。它们为RXTX提供了,以及硬件流控制,因此非常适合于高吞吐量的全双工应用。每个都有自己的高精度波特率生器,因此可以使普通定时器空闲出来用作其他用途。

(4) 无线设备

CC2530 具有一个IEEE 802.15.4 兼容无线收发器。RF 内核控制模拟线。另外,它提供了MCU 和无线设备之间的一个接口,这使得可以发出命令,读取状态,自动操作和确定无线设备事件的顺序。无线设备还包括一个数据包过滤和地址识别模块。

 

图7 CC2530电路原理图

CC2530的各个引脚与外部连接电路如图7所示,根据其引脚的功能接入不同的传感器采集数据。

3.2 基于CC2530zigbee物联网系统设计整体电路图

将设计中所用到的各种传感器,如LED,电位器等与CC2530的相应的引脚相连接起来,实现数据的采集。外围电路如图8所示。

 

图8 CC2530外围电路连接图

将设计中所用到的各种传感器,如LED,电位器等与CC2530的相应的引脚相连接起来,实现数据的采集。

3.3 元器件清单

本次设计主要用到CC2530模块以及相关的传感器,通过传感器采集相关的数据,传输到CC2530模块,进行后续处理。所用到的元器件主要如下:

表1 元器件清单表

元器件

数量(个)

CC2530模块

2

气体传感器

2

继电器

2

温度传感器

2

热红外

2

脱机下载器

1

天线

2

 

4 基于CC2530zigbee物联网系统设计的硬件制作与调试

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 基于CC2530zigbee物联网系统设计的实现

 下位机与协调器电路连接调试成功后,将处理后的数据通过串口传递到上位机通过界面显示传输的数据。运行后的界面如下图所示。

 

 
 

 

 

图7 上位机界面显示

在该界面上可以显示以下功能:

  1. 菜单:查看历史记录
  2. 设置:设置默认参数,下次进入系统自动填写系统变化状态图
  3. 监控各个节点信息并显示出来;
  4. 控制区:继电器,灯控,报警开关对应节点上的模块;
  5. 显示节点历史信息;并可以筛选和查看;

5 总结及心得体会

在这次实训里面,我首先认识到了团队工作的重要性作为一个团队,对于分工合作有了更新一步的认识,对于整个团队的建立与工作的分配更深的加强。

同时在这次实训里面,我学习了java的串口问题与下位机发送,了解TI公司的CC2530芯片的工作原理以及基于短距离无线通信的ZigBee协议的内容并学习到了如何把这些知识贯通组合起来,设计了一种智能无线传感网络,实验实现了无线传感网络的组网,以及温度、湿度数据的智能采集。这些新颖的工程与问题都是我们以前都不曾学习与遇到的,所以对于这次实训学到了更多的知识我和同学们都表示受益匪浅。

 

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐