基于CC2538和Contiki的无线传感器网络设计
扫描二维码
随时随地手机看文章
0 引言
近年来,随着物联网技术的逐渐成熟,物联网技术在环境监控、智慧城市、智能家居等领域的应用越来越广泛 [1,2]。物联网技术应用中一个非常重要领域就是无线传感器网络
(WSN)[3,4]。WSN 通过部署一定数量由电池供电的传感器节点,组成无线通信网络,可以方便地采集周围环境的各种变化情况,例如温度、湿度、照度等信息,也可以采集人体的各项生理指标,例如心跳、血压等信息。WSN 技术可以应用于环境监测、老人健康护理、停车场管理、交通管理、智能家居等很多领域。
本文中采用 TI 公司的 CC2538 芯片和开源物联网操作系 统 Contiki[5],设计了用于实验室测试环境的无线传感器网络。 该网络通过在空间中布置传感器节点,采集各点的监控信息, 并通过汇聚节点将数据上传至计算机,实现了监控数据的实 时显示和数据库存储。
1 系统硬件设计
1.1 传感器节点
WSN 中各传感器节点采用电池供电,为了增加电池寿命, 在主芯片的选择上必须把耗电量作为一个重要的指标。传感 器节点的硬件结构示意图如图 1 所示。传感器节点采用两节 7 号干电池作为电源,主芯片选用 TI 公司的 CC2538 芯片,该 芯片为 ARM Cortex-M3 内核,带有 I2C 接口,可以满足与传 感器通信和无线组网的要求。我们选用的 CC2538 芯片的片上 FLASH 为 512 KB,RAM 为 32 KB,其内部集成了工作频率 为 2.4 GHz 并符合 IEEE802.15.4 标准的 RF 收发器。在最省 电的外部中断模式下,该芯片的供电电流仅为 0.4 μA,满足低功耗的设计要求。
传感器节点中的温湿度传感器选用 Sensirion 公司的 SHT21 温湿度传感器芯片,该芯片在 PCB 板上占用的面积非 常小,仅为 3×3 mm2。缺省设置下温度测量分辨率为 0.01 ºC, 相对湿度测量分辨率为 0.04% RH。该芯片在休眠状态下供电 电流仅为 0.15 μA,在测量状态下供电电流为 300 μA。该芯 片通过 I2C 总线与 CC2538 主芯片通信,通过设置寄存器,可 以分别读取温度测试值和相对湿度测试值,SHT21 芯片提供 了通过 CRC 校验来进行传输完整检查的功能。通过 I2C 总线 读到的温度原始值 ST 利用下面的公式换算为摄氏度值 T:
读到的相对湿度原始值 SRH 则通过下列的公式换算为相 对湿度 RH :
传 感 器 节点中 的 照 度 传 感 器 选 用 MAXIM 公司 的 MAX44009 照度传感器芯片,该芯片为目前工业界最低功耗的 环境光传感器芯片,在正常操作状态下供电电流仅为 0.65μA。 在缺省状态下,该芯片每 800 ms 测量一次环境照度值,该状 态下芯片处于最省电的工作模式,我们在设计中使用了该工作 模式。该芯片在 PCB 板上占用的面积比温湿度传感器 SHT21 芯片更小,仅为 2×2 mm2。除此之外,该芯片具有十分宽广 的照度测量范围(0.045 Lux 至 188 000 Lux)。该芯片通过 I2C 总线与 CC2538 主芯片进行通信,通过设置寄存器可以读取所 测量照度的指数部分(exponent)和尾数部分(mantissa),然 后通过下列公式换算为照度值(Lux):
1.2 汇聚节点
汇聚节点的作用是接收各传感器节点发出的测量数据, 并通过串口发送给计算机。汇聚节点的硬件结构示意如图 2 所示。主芯片 CC2538 通过 FTDI 公司的 FT232R 芯片实现 UART 接口与 USB 接口之间的转换。
2 系统软件设计 :
2.1 节点软件设计 本文中的 WSN 采用开源物联网操作系统 Contiki 作为各 节点的操作系统,该操作系统作为轻量级的嵌入式操作系统, 具有占用硬件资源小的优点,在典型的配置下,Contiki 仅仅 占用大约 2 KB 的 RAM 以及 40 KB 的 FLASH。除此之外, Contiki 提供了非常方便的无线通信协议。所有节点的软件设 计在 Ubuntu下完成,编译链接工具为 arm-none-eabi-gcc。
一般情况下,WSN 网络各节点的 RF 收发器都是功耗最 高的部分,如何在保证通信畅通的前提下降低 RF 收发器的功 耗就成了 WSN操作系统的关键问题之一。Contiki操作系统中, 通过利用称为 ContikiMAC 的 RDC(radio duty cycling)机制 来减少各节点 RF 收发器的工作时间 [6]。在无线信号正常传输 的前提下,该机制做到了让各节点 RF 收发器在大约 99% 的 时间内处于关闭状态,从而大大降低各节点的功耗。
对于各传感器节点,我们在软件中首先设计了温湿度 传感器和照度传感器的 I2C 读写功能,并利用了 Contiki 的 RIME 协议将各传感器收集到数据发送出去。CC2538 与 SHT21 温湿度传感器之间进行 I2C 通讯的代码如下:
CC2538 和 MAX44009 照度传感器之间进行 I2C 通信的 代码如下:
RIME 协议是 Contiki 自带的无线局域网通信协议 [7],通 过分层化的协议结构,可以实现广播、单播、可靠单播等传 输方式,并可以实现多跳传输。在考虑到使用环境后,我们 通过现场试验对比了几种传输方式的可靠性,最后决定采用 单跳的 RIME 可靠单播方式来发送传感器数据。各传感器节 点每十分钟采集一次数据并发送出去,由汇聚节点接收到后发 送给上位计算机,整个无线采集系统的示意图如图 3 所示。
2.2 上位机软件设计
上位机软件采用 C# 语言进行设计,在功能上主要包括了显示各传感器节点回传数据和数据库保存。上位机通过 USB 转串口的方式实现与汇聚节点的串口通讯,为了提高串口数据 读取的可靠性,在程序设计中没有使用串口控件,而是使用了 下面的接收函数来接收串口数据 :
数据库部分采用 SQL Server 2008 作为数据源,记录所 采集的温湿度、照度数据,数据表的第一列为各传感器节点中 CC2538 芯片 RF MAC 的 IEEE 地址,以区分各传感器,最后 一列为数据存储时间,以备以后查询。
3 结 语
本文中设计了基于 CC2538 和 Contiki 的无线传感器网络,该无线传感器网络可以采集空间各点的温湿度、照度数据,并 通过上位机进行显示和数据存储。经过现场试验发现,该系 统数据传输可靠性高,测试过程中没有发现丢包现象。由于 各芯片选用上突出了低功耗的要求,使得 WSN 中各传感器节 点的电池寿命大大增加。本文中所设计的 WSN 提供了更加方 便精确地进行测试环境监控的手段,可以用于大型分布式光 度计光学暗室的三维空间中温湿度、照度的测量。