物联网的应用在近几年成为了信息领域的热门话题。无线传感网(Wireless Sensor Network, WSN)是提到最多的短距离无线通信网络。无线传感网主要通过各类微型传感器节点(Node)组成无线个域网(Wireless Personal Area Network, WPAN),用于感知和监控综合环境信息[1]。
【摘 要】本文提出了几种基于6LoWPAN协议为基础的工程应用项目解决方案,从硬件结构设计到软件协议栈的选择给出了几种参考方法,并给出了一些相应的对比。硬件结构主要包括单芯片、双芯片以及网络处理器几种模型,协议栈主要分为Contiki的uIPv6、TinyOS的BLIP、Sensinode的 NanoStack以及Jennic的JenNet协议栈。
【关键词】高工论文发表,6LoWPAN,协议栈,协议,解决方案
1 短距离无线通信技术与6LoWPAN
类似的技术主要有ZigBee以及6LoWPAN协议。尽管两者均是基于IEEE 802.15.4设计,由于ZigBee协议在连入互联网的时候需要专门的网关(不直接支持IP地址),为了实现WSN和IP网络的无缝对接[2],支持 IP通信协议的6LoWPAN被越来越多的项目及科研所使用[3]。本文主要探讨关于6LoWPAN在工程项目中应用时的几种软硬件解决方案,旨在为广大工程项目开发者提供几种思路。
2 6LoWPAN的芯片方案
6LoWPAN技术作为一种短距离低速率无线网络通信技术,通常应用于嵌入式设备中。由于6LoWPAN协议栈一般运行在微控制器芯片中,通常有3种解决方案:单芯片模型、双芯片模型以及网络处理器方案。单芯片模型采用SoC芯片,即片上系统,将射频模块和微控制器(Microcontroller,MCU)集成在一片芯片上。双芯片模型采用通用微控制器和一片射频收发芯片共同工作。而网络处理器方案则采用固化了协议栈的射频芯片,一般和一个单独的运行着应用软件的微控制器共同使用[4]。
2.1 单芯片模型
当设备的尺寸和成本控制作为首要考虑条件,并且要实现的功能相对简单时,单芯片模型的解决方案最为合理。单芯片模型采用SOC芯片,集成了射频收发器和微控制器两大核心模块,一般带有FLASH单元、内存以及一些常用的外设。典型的模型如图1所示。采用SoC的无线节点仅需少许元器件和一些简单的电路即可实现,通常包括RF匹配电路、天线、晶振、电源模块以及传感器等。软件存储在FLASH中,一般包括硬件驱动、6LoWPAN协议栈、应用软件,当然也可能有一个简易的嵌入式操作系统。常见的SOC解决方案有TI公司的CC2530、CC1110,Jennic公司的JN5139等。大多数的 6LoWPAN协议栈都可以移植到单芯片模型中。
单芯片方案的带来的一大缺点是软件开发周期的延长以及难度的增加。由于SoC都是采用小型定制的微控制器内核,内存的保护机制一般不完善,因此要把应用程序、嵌入式操作系统以及协议栈都集成到一起需要花费更多的测试与调试周期。同时,由于每种 SoC都采用单独的编译器和开发环境,对软件的可重用性限制很大。
2.2 双芯片模型
如果应用程序复杂度较高,或者对性能要求较高,那么双芯片模型将成为首要选择。图2给出了一个双芯片模型的框图。在双芯片模型中,微控制器和射频收发器是分离式的。特别地,当该射频收发器内部已经固化了网络协议栈的话,它一般就被称为网络处理器,下一节会单独讨论这一方案。在双芯片模型中,微控制器通过SPI接口或者UART接口和射频芯片通信。6LoWPAN协议栈、硬件接口以及操作系统则完全运行于微控制器内部,因此开发者可以选择自己最熟悉的、最适合项目的微控制器来使用,以便同时满足性能、嵌入式控制、信号处理等需求。典型的射频芯片可以是TI公司的CC2520,Atmel公司的AT86RF231等。
2.3 网络处理器方案
如果某些产品的应用程序已经完善了,所有的用户功能也已正常运作,只是需要额外给它添加网络通信功能(即协议栈)的时候,使用网络处理器方案是一种合理的途径。该方案能够有效减少开发者学习使用一种全新芯片的时间。一般而言,网络处理器需要配合微控制器共同使用,因此它是一种特殊的双芯片方案。不同的是,在网络处理器内部不仅有无线收发器,而且已经固化了6LoWPAN的协议栈。和网络处理器的通信可通过UART接口或者SPI接口,通信命令类似于套接字协议。因此该模型的使用方式不再需要将6LoWPAN协议栈集成到微控制器中,而仅仅只需通过软件通信接口即可实现。如果实际采用了操作系统,比如 LINUX来运行应用程序,则只需要很小的改进便可将6LoWPAN通信功能添加进去。
该方案的缺点如同双芯片方案,他同样需要两个芯片来实现。因此对电路板尺寸严格控制的项目将难以实施。由于网络处理器内部集成了内存、FLASH、微处理器内核等模块,它的价格相对昂贵。典型的6LoWPAN网络处理器有TI公司的CC1180。
3 6LoWPAN协议栈
要实现6LoWPAN网络通信协议,最简单的方法是采用现成的通信协议栈。协议栈一般由企业、科研机构、大学以及个人开发,主要有几种运行模式:
(1)固化在网络处理器内;
(2)包含在操作系统中;
(3)集成在嵌入式软件内。
本节将重点讨论几种开源的以及商业化的协议栈,它们运行于上节中介绍的一个或多个模型中。
3.1 Contiki操作系统和uIPv6协议栈
Contiki是一个非常闻名的嵌入式开源操作系统,专为微控制器架构设计,可运行在AVR、8051以及MSP430中,由瑞典计算机科学研究所开发。Contik实现了一个微小的IP协议,称作uIP协议栈。同时,它也实现了基于6LoWPAN的IPv6协议,称作uIPv6协议栈。 Contiki操作系统以及uIP协议栈被世界上几百个工程项目和公司所采用。Contiki主要设计工作在低功耗的收发器中,支持IP网络通信。它采用 C语言实现,可以编译到很多平台。已经有非常多的微控制器和设备平台运行了Contiki,因此有很多的例程和应用软件可以移植到自己的项目中。