王光法
摘要:为了将应用中各种不同的感知网络接入到物联网,设计了一种基于i.MX28的智能物联网网关;硬件上采用模块化堆叠式设计,在i.MX28丰富的外设资源基础上扩展了多种有线、无线网络接入方式,提供大容量数据存储能力,可根据应用需要进行功能扩展;软件上基于生产者/消费者模型,为应用层提供了统一的通信和数据服务接口,并集成了多种服务器软件。该设计具有功能丰富、配置简单、扩展性好等特点,可以应用于各种常用感知网络的智能互联,具有较高的参考价值。
关键词:i.MX28;物联网;智能网关;传感器;Linux
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2015)26-0154-04
Design of Intelligent Gateway for Internet of Things Based on i.MX28
WANG Guang-fa
(Jiangsu College of Finance and Accounting,Lian yungang 222061,China)
Abstract:In order to connect various sensor networks to IoT (Internet of Things), a kind of intelligent network gateway based on i.MX28 is designed. The hardware of the gateway utilizes the rich peripherals of i.MX28, providing a variety of wired and wireless network access and large data storage capacity. The modular and stacked design makes it easy to expand according to application needs. The software is based on the producer/consumer model, which provides a unified communication and data service interface for application layer. The gateway can be easily configured and accessed via multiple configuration and service software. The design has the features of power function, simple configuration, good expansibility; it can be used in various common IoT applications and has high application and reference value.
Key words:i.MX28; Internet of Things; Intelligent Gateway; Sensor ;Linux
物联网[1-2]通过在物品中嵌入信息传感设备和网络接入设备,将物品与计算机网络连接起来,从而实现对物品的信息共享和智能控制。物联网是计算机网络技术发展到一定阶段的必然产物,其核心和基础仍然是计算机网络,是计算机网络的自然延伸与扩展。物联网在层次结构上被分为感知层、网络层和应用层。网络层位于感知层与应用层之间,用于实现感知层和应用层之间的信息交互。
与传统互联网不同,物联网中“物品”的信息处理能力和网络接入方式千差万别。为了实现与各种不同感知网络之间的信息交互,人们设计了物联网网关[3-5]。网关是实现异构网络之间相互通信的基础。物联网网关将感知网络与远程网络连接起来,提供数据汇聚、协议转换、数据转发等功能,成为感知层和应用层之间进行有效沟通的桥梁和纽带,在物联网中发挥着非常重要的作用。
1 系统总体设计
在物联网网关的设计过程中,如何实现“物品”的无线互联往往是人们关注最多的地方。通常这些网关主要面对某一特定应用,且大多使用单一的无线接入方式,其扩展性较差,应用于不同场合时往往需要重新进行设计。
与有线连接相比,无线接入方式通常设计更加复杂,节点成本也更高,且难以保证实时性。在工业监测、现场控制等应用场合中,考虑到系统的实时性、抗干扰性及低成本等要求,通常采用现场总线为主、无线通信为辅的方式进行组网。此外,如何将现有的有线传感与控制网络接入到物联网也是网关设计中需要考虑的。
在综合分析物联网的常用应用场景和功能需求的基础上,设计了一种基于i.MX28的支持多种无线和有线感知网络混合接入的物联网智能网关,能够提供数据汇聚、协议转换、数据转发、数据存储、设备管理等功能,可以满足多种不同应用的需要。所设计的物联网智能网关主要由信息处理模块、数据存储模块、网络通信模块、功能扩展模块等部分组成,其硬件原理框图如图1所示。
信息处理模块由i.MX28高性能嵌入式处理器及电源电路、时钟电路、DDR2内存电路、复位电路、配置电路等外围电路构成,是智能网关的大脑。数据存储模块为网关软件提供大容量数据存储介质。网络通信模块为网关提供多种通信接口,可以通过以太网、WIFI、GPRS、3G/4G等多种方式接入互联网,并通过ZigBee、蓝牙、工业级无线模块等无线方式以及CAN、RS422、RS485等有线方式接入感知网络。功能扩展模块将i.MX28的未用接口通过连接器引出,应用中可以根据需要进行功能扩展。
同一应用中通常不会用到所有的网络接口,为了降低系统成本,增强设计的灵活性,便于根据不同的应用需求进行差异化定制,设计中采用了“核心板+底板(包含常用外设)+通信板+功能扩展板”的堆叠式硬件架构方式。
2 硬件设计
2.1 信息处理模块
信息处理模块选用Freescale公司基于ARM926EJ-S内核的i.MX28系列多媒体应用处理器作为主处理芯片。i.MX28系列在基于ARM9的器件中集成了无与伦比的显示、电源管理和连接特性,降低了成本敏感型应用的系统成本和复杂性[6]。i.MX287是i.MX28系列中功能最全的一款芯片,片上集成16KB/32KB高速缓存、200MHz 16位DDR2/LV-DDR2/mDDR控制器、支持SLC/MLC的NAND控制器、eMMC 4.4接口、带触摸屏的LCD控制器,以及集成PHY的双高速USB接口、支持IEEE 1588的10/100双路以太网、两路FlexCAN接口、多路UART/SPI/I2C/SSP等丰富的通信接口,其工作温度范围-40C~+85℃,保证至少15年供货,非常适合工业控制等应用场合。
i.MX287的最小系统构成了智能网关的信息处理模块。由于i.MX287的集成度非常高,其外围电路设计比较简单,可以根据需要在官方参考设计的基础上进行裁减和扩展。智能网关使用单一外部9~32V电源供电,电源电路将其转换为内部所需的各种电压,并进行功耗管理。设计中采用24MHz有源晶振产生主系统时钟,并通过32.768 kHz晶振电路产生RTC时钟。内存芯片选用单片128MB工业级的IS43DR16640B-3DBLI,为系统软件提供了足够的运行内存。为提高系统可靠性,系统采用专用复位芯片CAT706SVI来产生复位信号。i.MX287可以选择从不同的位置启动,配置电路通过电阻网络来在上电时对系统特性进行灵活配置。
2.2 数据存储模块
数据存储模块用于存储系统软件、用户数据和配置信息等,使其能够长期掉电保存。为了提高系统的灵活性,设计中通过i.MX287的外设接口扩展了SPI Flash、NAND Flash、eMMC、FRAM等多种存储介质,数据存储模块原理框图如图2所示。
NOR Flash通常容量小、成本高但安全可靠,适合于存储少量关键数据;NAND Flash恰恰相反,其容量大、成本低但容易产生坏块,通常用于存储根文件系统等。设计中通过SPI接口连接单片8MB NOR Flash,用于存放Bootloader及其环境变量以及用于系统恢复的内核。操作系统内核、根文件系统及用户数据存放在2GB NAND Flash中,为了防止系统因断电被意外破坏,根文件系统和用户数据进行分区存放。为了适应需要更大存储容量的场合,预留了eMMC接口,它与NAND Flash占用同一印制板位置,可以选择焊接合适容量的芯片,用于取代NAND Flash。SD卡接口用于简化系统烧写,方便导出用户数据,也可以作为备用存储器。嵌入式系统通常会遇到意外断电,为了保存系统关键数据,设计中通过SPI连接了一片256KB铁电存储器。
2.3网络通信模块
物联网网关的核心作用是将各种传感器数据接入互联网,作为应用层与感知层的传输媒介,需要同时提供传感器网络和互联网的接入方式。设计的物联网智能网关可以通过有线或无线方式进行网络接入,其网络通信模块的原理框图如图3所示。
网络通信模块目前主要支持RFID、ZigBee、WIFI、GPRS、3G/4G等无线接入方式,未来可以根据需要扩展Bluetooth、6LoWPAN等其他无线连接。无线部分被设计为独立的通信板,通过自定义信号的mini-PCIE接口与底板进行连接。目前无线模块接入主处理器的方式通常为串口、SPI/SDIO或USB,考虑到大部分应用中两种无线连接已经足够,底板上设计了两个mini-PCIE接口,每个接口引入了1路I2C、2路UART(1路共享)、1路SPI/SDIO、1路USB以及若干GPIO。由于i.MX287仅集成2路USB控制器,设计中使用USB-Hub芯片将其中1路USB Host控制器进行扩展为2路。需要更多无线连接时,可以在同一个通信板上集成多种接入方式。
为了连接现场总线中的各种传感器,网络通信模块通过i.MX287的外设接口扩展了2路CAN、1路RS422和1路RS485。设计中所有现场总线接口均使用了磁隔离和ESD保护电路,以增强系统的抗干扰性。为了能够通过以太网连接互联网或传感器局域网,系统提供了2路10M/100M自适应以太网接口。底板上提供了1路USB-OTG接口,既可以连接USB的WIFI或3G/4G模块,也可以连接U盘或主机以方便系统调试。为了便于调试,底板上还提供了1路RS232接口。
3 软件设计
3.1 软件总体框架
物联网网关作为感知层与应用层的纽带,需要实现异构网络之间的互联互通,同时还需要对感知层的设备进行管理和抽象,从而为应用层提供统一的数据访问接口,此外网关还需要提供传感器网的配置管理等功能。智能网关的软件主要包括系统层软件、中间层软件和应用层软件三个部分,其总体架构框图如图4所示。
3.2 系统层软件
智能网关选用Linux作为操作系统,使用U-Boot进行系统引导,并基于Busybox构建根文件系统。作为Bootloader的U-Boot是智能网关上电后执行的第一段用户程序,它根据用户配置的环境变量加载Linux内核,设置内核引导参数,最后跳转到的内核入口处运行。此外,U-Boot还负责内核的下载、烧写等系统维护工作。Linux因其开放性被广泛应用于各种嵌入式系统中,拥有非常完善的驱动程序和应用软件,极大简化了软件开发过程。在官方提供的Linux 2.6.35内核的基础上,根据智能网关的硬件连接修改相应的板级支持文件,开发相应外设的驱动程序。Busybox的配置和编译比较简单,设计中对不用的功能进行了裁减。为了减少NAND坏块对启动时间的影响并确保根文件系统不会因掉电而损坏,选用了YAFFS2文件系统,并将根文件系统所在的分区挂载为只读,而需要读写的配置信息和用户数据则放在其后的用户分区中。
3.3中间层软件
中间层软件主要完成数据汇聚、协议转换、数据转发等功能,它负责接收来自不同感知网络的数据,将不同协议的状态数据经过转换后封装成标准格式,通过统一的调用接口供应用层使用;同时将来自应用层的控制命令或配置数据转发到相应的感知网络中。由于智能网关能够支持有线、无线等多种感知网络并可以通过有线、无线等多种方式接入互联网,中间层相当于一个多路输入/多路输出的互联矩阵,其原理框图如图5所示。为了便于软件开发,中间层软件设计为生产者/消费者模型,通过对所有的数据生产对象和消费对象进行统一编码并分配唯一的ID,从而隐藏不同网络和不同应用的差异。中间层只关心不同对象能够产生什么数据,需要消费什么数据。此外,中间层还为应用层提供通信服务接口,应用程序可以直接通过此接口直接访问各种网络连接。
中间层由一系列动态链接库(so文件)和通信配置文件构成,通过回调函数和消息队列、Socket接口等系统服务提供各种功能,其工作流程如图6所示。在系统启动时,中间层读取通信配置文件,根据配置信息加载各种通信协议插件并配置对应的网络接口,然后调用插件提供的API扫描各感知网络以建立统一的设备模型;应用层调用中间层提供的API注册应用层接口,建立生产者和消费者关系;最后,中间层进入数据服务模式,在接收到生产者的数据时,进行适应的处理后将数据转发给相应的消费者。
3.4 应用层软件
应用层软件包括配置软件和数据服务软件,配置软件用于对智能网关进行配置和维护,服务软件为物联网应用层提供各种数据服务。智能网关支持本地配置和远程配置,本地配置直接通过串口进行终端登陆,具有最大的操作权限,可以设置网关参数,更新系统软件和应用软件;为了确保网关系统安全,智能网关不提供Telnet服务,远程配置仅支持SSH方式,并且所能进行的操作也受限,不允许对系统软件等关键数据更新。可以通过U盘、SD卡方式,或者将USB-OTG接口、以太网接口连接到PC主机,对智能网关的系统软件进行升级。SSH服务器使用了专门面向嵌入式系统的Dropbear,可以有效阻止非法用户的登录。智能网关通过Webserver或专用的数据服务器对物联网应用层提供数据服务,Webserver使用BOA服务器[7],通过公共网关接口(CGI)与中间层进行交互;物联网应用层也可以通过TCP协议直接与专用的数据服务器通信,高速的进行数据传输。此外,智能网关还提供了对传感器数据和系统日志的本地存储功能,它使用Sqlite3数据库进行高效存储,用户可以通过FTP客户端对所存储的数据进行远程访问。
4 测试与分析
在智能网关软件开发过程中,使用增量方式逐渐增加代码,测试系统的基本功能:将编译好的U-Boot通过USB下载到芯片上执行,测试处理器、内存、串口、以太网等基本外设,工作正常后将其固化到SPI Flash中;U-Boot通过以太网加载Linux内核,使用NFS挂载根文件系统,逐步对其余的外设驱动以及中间层、应用层软件进行功能测试;测试完成后,将根文件系统制作成YAFFS2映像文件,通过以太网、SD卡等方式下载并固化到NAND Flash中。
智能网关的应用测试主要测试网络连接能力和应用层软件的功能。测试中一共使用了5套智能网关设备,其中4套用于模拟传感器节点,它们同时运行多个模拟程序并通过ZigBee、CAN、LAN、RS422、RS485等方式与网关设备进行连接,网关设备则通过LAN、WIFI、GPRS、3G/4G等方式与互联网连接,用户通过IE浏览器监测模拟传感器节点的状态并进行相应控制。同时,还测试了远程配置、FTP上传/下载、SSH登录等功能。大量的测试表明,智能网关的功能和性能均能满足设计要求。
5 结束语
物联网网关是实现物联网“全面感知、可靠传递、智能处理”的核心设备,提供了“物品”连接到“网络”中并实现信息共享的关键途径。本文提出了一种基于工业级处理器i.MX28的物联网智能网关设计方案,详细介绍了软硬件设计过程,并对设计中的关键点和难点进行了深入的分析。该设计支持多种异构网络连接,具有功能丰富、配置简单、可靠性高、扩展性好等特点,可以应用于多种常见的物联网系统,有效解决物联网中传感器节点的网络接入难题,对同类设计具有较大的参考价值。
参考文献:
[1] 樊雪梅.物联网技术发展的研究与综述[J].计算机测量与控制,2011,19(5):1002-1004.
[2] 胡金辉.物联网网关关键技术的研究与实现方案[D].广州:西安电子科技大学,2012.
[3] 陈乐庚,洪志鹏,崔更申.嵌入式物联网智能网关的设计与实现[J].通信技术,2014,47(12):1455-1458.
[4] 林国柱.基于Cortex-A8的物联网网关设计与实现[D].浙江:浙江工业大学,2014.
[5] 李晓丹.基于STM32的物联网嵌入式网关的设计[J].计算机工程与应用,2015,51(4):61-65.
[6] Freescale Semiconductor. i.MX28 Applications Processor Reference Manual [D]. www.freescale.com, 2013.8.
[7] 张文华,谭薇,陈观圃,等.基于嵌入式Web服务器的物联网网关设计[J].四川大学学报:自然科学版,2013,50(5):962-966.
[8] 韦峰,卢再奇,刘伟.YAFFS2在嵌入式系统中的实现[J].现代电子技术,2010,33(8):30-34,37.