基于AllJoyn和微处理器FC-3180的智能网关控制系统设计
2017-03-27陈燕忠张永刚周小林
陈燕忠, 张永刚, 周小林
(复旦大学 信息科学与工程学院,上海 200433)
基于AllJoyn和微处理器FC-3180的智能网关控制系统设计
陈燕忠, 张永刚, 周小林
(复旦大学 信息科学与工程学院,上海 200433)
为简化邻近分布式家用设备的互联互通,采用开源软件框架AllJoyn,搭载嵌入式微处理器FC-3180,配合低功耗无线传输网络ZigBee和移动应用平台Android,设计了一套具有自发性、可移动、可动态配置的安全设备管理系统.
AllJoyn; FC-3180; 智能网关; Android
0 引 言
智能家居是指运用信息通讯和传感技术,采集、加工、分析并整合人们切身关心的各项重要信息[1],由此提高对包括舒适度、便捷性、安全性等在内的要求作出智能反应的准确性.“互联网+”公式的影响深化加速了各行业的服务与用户场景的相互结合[2].家庭场景是人们美好生活和保障工作效率不可或缺的物质基石,而家庭设备的智能化管理将成为现代化生活环境的重要体现,所以,需要将智能中央设备管理器与家庭场景中其他设备子系统有机地组成一个具有安全性和正确性保证的系统[3].中央设备管理器与子系统之间必须建立一个可靠的连接,用于实时地传递用户指令和设备反馈.其次,需要相应的硬件基础和执行条件来确保用户意图的真正实现.同时,在部分条件下,还要实现家庭场景到其他场景的转换,即需要与外界通讯的媒介平台,满足用户远程监控和提前管理的需求.
1 系统总体框架
1.1 系统设计关键性问题分析
首先要考虑物联网设备属性的多样性,不同操作系统平台、不同物理网络和连接协议、不同开发语言等[4],同时,本课题的设计着眼于智能设备的管理,所以同时还要注重设备搜索的自发性、可移动、操作简单和可动态配置等要求.另外,还要考虑物联网嵌入式设备本身的资源受限以及应用场景的复杂性.
针对上述问题的分析,本课题采用近距离移动解决方案AllJoyn,其构建的分布式应用运行环境支持应用跨不同设备和操作系统实现可靠交互,可在不改变设备物理设计或者增加产品结构复杂性的情况下扩展使用性和提升用户体验,确保应用与设备的广泛兼容性.同时,AllJoyn瘦客户端支持超低内存的嵌入式物联网设备,拥有通用的AllJoyn互联协议和精简功能集.主控制平台采用嵌入式微处理器FC-3180,其功耗超低,且集成了Java虚拟机,非常符合整个系统的运行和应用开发的需要.为使系统原型更加完整和可操作,本设计还加入了已在物联网领域广泛运用的ZigBee技术和Android平台[3],更好地展示本课题设计.
1.2 系统解决方案基本思路
设计一种基于开源软件框架AllJoyn和嵌入式微处理器FC-3180的智能网关,承担设备实时管理、动态配置、数据存储和友好提示等功能.通过Android平台的AllJoyn标准客户端与智能网关的AllJoyn瘦客户端间的互通,实现用户对智能网关实时交互,以智能网关为桥梁进而对设备智能化管理.用户也可以根据需求对Android应用进行个性化设置.智能网关以ZigBee作为与设备间的短距离用户命令和设备反馈平台,同时ZigBee网络应用层的数据操作遵守变量安全操作协议.
2 支持AllJoyn的Android客户端设计与实现
2.1 AllJoyn标准客户端整体工作流程
在基于AllJoyn近端应用中,每个设备运行一个AllJoyn路由.AllJoyn路由提供了一个抽象层,处理所有的传输机制、消息路由和命名空间管理.在每个设备上的AllJoyn路由与其他设备的路由进行通信,所以应用间不会直接交流,而是通过总线通信.总线本身是以点对点(Ad-Hoc)方式形成,总线的形成基于周边设备的发现,也就是说,AllJoyn功能是广告名字和寻找广告的名字.通信协议是独立于传输,目前支持WiFi和蓝牙等通讯方式.
图1 AllJoyn客户端向服务端调用方法
首先,以AllJoyn方法调用为例,如图1所示,提供服务程序的主机B对应的是智能网关,提供客户程序的主机A对应的是Android智能手机.
第一步,服务执行广告操作.主机B上的服务向本地的AllJoyn路由请求广告,路由根据服务的请求,确定适合本地网络的服务广告机制,然后开始在邻近区域广告服务.
第二步,客户端请求查询名称.当主机A上客户组件请求发现服务,将发出“查找名称”的要求,本地路由根据客户端的输入来确定最佳的方式探测广告.一旦两个设备接近,它们开始通过已启用的媒体方式监听对方的广告,发现请求.
第三步,守护进程报告发现名称.服务端的路由发现请求并响应客户端路由.
第四步,客户端发现服务.主机A客户端接收本地路由指示,表示该邻近区域内存在拥有所需服务的路由.
第五步,客户端调用远端方法.参数使用主机A上的AllJoyn路由在本地总线段上的路由信息在源端封装,通过网络链接发送到主机B的AllJoyn路由,AllJoyn路由决定目标服务端,然后解封参数并调用服务.
2.2 智能网关Android应用的设计与实现
2.1.1 滑动侧边菜单栏设计
初次运行该 App,手机屏幕首先出现的只有初始界面,如果向右滑动屏幕,继而就会出现隐藏的菜单栏.用户用手指按住手机屏幕左右移动,App会根据检测到的速度来向左或向右滚动界面,即可看到在左侧或者右侧隐藏的部分,实现两个视图的切换.
2.2.2 用户登录界面设计
点击菜单栏“游客登录”,即可进入用户登录界面,第一次登录可输入默认用户名和密码,点击登录按钮.同时,会对信息填写不完整或者错误的情况给予提醒.为了减少用户登录花费的时间,可勾选用户界面的“记住我的密码”和“自动登录”选项,减少重复性操作.
2.2.3 设备登录界面及二维码扫描功能设计
在ZigBee设备加入ZigBee网络并获取网络地址后,将网络地址通过ZigBee无线传感网络发送给智能网关,即协调器.智能网关再通过邻近区域内的AllJoyn网络发送给客户端App,客户端App将自动更新设备登录界面中“新设备ID”的参数.用户可以手动输入或者添加该新设备的名称和其他需要的备注.
2.2.4 设备间交互的气泡聊天界面设计
设备交互界面,主要用于手机客户端通过邻近AllJoyn网络与同样支持AllJoyn的智能网关通讯,通过智能网关下达用户指令并获取设备信息反馈.本界面采用仿微信的气泡聊天形式,力求使用户与智能网关的交流就像跟微信好友聊天一样,舒服快捷.
2.2.5 设置界面设计
设置界面作为一个应用程序必备的组成部分,主要是对客户端的参数进行设置,使之更加符合用户的使用习惯,甚至可以添加用户个性化的元素.
3 智能网关软硬件设计与实现
3.1 AllJoyn在嵌入式处理器FC-3180平台上的实现
3.1.1 AllJoyn 瘦客户端在嵌入式环境中进行的具体优化
AllJoyn瘦客户端保留了标准客户端的绝大多数的编程概念,但为适应嵌入式设备的开发环境,AllJoyn瘦客户端在高层设计上做了一些变化,包括:API仅支持C语言,单线程、状态机及消息循环方式的编程模型,AllJoyn瘦客户端的API直接暴露AllJoyn消息,应用本身负责对调用进行相应回复,即实现需要做的操作.
而优化的重点在于减少内存占用,这也是开发者必须注意的地方,包括表驱动,避免数据重复,尽可能在现场进行数据转化,谨慎使用动态内存(仅为短生命周期的使用情况进行分配),通过同一块缓冲的串行化实现发送和接收缓存共享,提供帮助的函数减少应用代码尺寸.关键不同具体如下:
1) 将接口描述变为字符串常量数组,其首要目的是减低解析工作量,而不是增加可读性.其中,数组的第一个字符串是总线接口名称,后续字符串是接口成员描述,其暴露了底层D-Bus类型的签名符号.
2) 对象采用指针数组进行定义,使用AppObjects数组定义本地应用对象Bus Object,使用PrxObjects数组定义远端应用对象代理Proxy Bus Objects.数组单元采用{Name,Interfaces}元组.其中,
3) 消息标识是应用级概念,不存在于路由协议中,这是为了避免做太多的字符串对比,使用紧凑型符号描述对象类型、对象路径、接口和成员.消息使用四元组{U,P,I,M}进行标识.
3.1.2 系统初始化及WiFi模块的配置与连接
1) 系统初始化.嵌入式微处理器FC-3180使用嵌入式操作系统Rubus,在启动系统前,需要配置直接存储器存取通道、事件日志等,该事件日志可以在Imsys Developer中读取,同时还要建立一个AllJoyn的线程,用于连接WiFi和处理AllJoyn信息.进入AllJoyn线程后,需要初始化文件系统、挂载Flash和RAM,初始化串口用于ZigBee芯片通信,配置并连接WiFi,然后进行AllJoyn总线的连接并处理AllJoyn消息.
2) WiFi模块的配置与连接.WiFi模块使用ESP8266芯片,可以配置成工作站、无线接入点和共存模式[5].在本课题设计中,智能网关AllJoyn瘦客户端需要接入WiFi网络,所以将ESP8266配置成工作站模式.嵌入式微处理器FC-3180通过串口向ESP8266发送Attention(AT)命令实现控制.AT指令可以理解为是一种modem命令语言,是以AT开头、具体指令结尾的字符串.
3.2 变量安全操作协议的定义与实现
智能网关系统以变量操作的形式对设备进行控制,以ZigBee无线通讯网络作为透传,在应用层面自定义一个轻量级的变量安全操作协议,参考Modbus应用协议设计,规定设备变量读写以及操作者命令的认证方式,主要应用于开放系统中重要设备的监控.设备对来自智能网关的数据进行解封装,判断并完成数据中的操作指令,然后进行反馈,若数据异常则反馈错误类型,反馈信息同样需要进行封装.
3.3 ZigBee无线传感网络设计
在本课题设计中,ZigBee网络作为智能网关与设备之间交流信息的透传,微处理器FC-3180通过串口将封装好的用户控制命令传递给ZigBee协调器,再发送至指定设备并得到反馈.该无线网络ZigBee网络采用2.4 GHz通信,其自动组网、网络自愈和记忆性等优点非常适用于应用在无规律放置、中间障碍物较多的室内设备中.本设计使用Zstack协议栈构建网络.
本设计中不需要设备间的独立通信,所以采用星型的网络结构.协调器设备和终端设备的程序流程图如图2所示.设备间使用的网络通讯可以通过路由算法获得功耗最低的路径[6],并且当数据发送设备确定目标设备之前,都会缓存信息包以减少无效的发送[7].
图2 协调器设备和终端设备运行流程图
3.4 智能网关硬件电路设计
3.4.1 嵌入式微处理器模块原理图设计
嵌入式微处理器模块使用集成有FC-3180芯片和同步动态随机存储器(SDRAM)的VELOX模块,其中SDRAM作为机器码的存储.使用通用异步收发传输器接口1(UART1)与ZigBee模块连接,UART3与WiFi模块连接.
3.4.2 ZigBee模块原理图设计
ZigBee模块使用CC2530芯片,其内置了增强型8051[8],与微处理器FC-3180的串口UART1连接.模电信号和数字信号电源引脚连接+3.3V,对地连接滤波电容减少高频干扰.使用32MHz晶振,晶振电路应靠近芯片引脚,并铺铜来避免晶振信号对正常信号的干扰.
3.4.3 WiFi模块原理图设计
WiFi模块使用的是ESP8266芯片,与微处理器FC-3180的UART3连接.模块设置为从FLASH启动,选择AT指令模式,模块的UTXD和URXD引脚分别连接WiFi接口的URX3和UTX3.
3.4.4 电源模块原理图设计
电源模块使用LM1117-3.3芯片作为电压转换芯,使用MICRO-USB接口作为电源接口.LM1117-3.3将来自MICRO-USB接口的+5V电压,降压后固定输出3.3 V.
4 系统运行与功能测试
4.1 智能网关与设备间通信测试
图3 协调器设备在Cimsys Developer的Debug窗口打印输出结果
智能网关首先上电运行建立ZigBee网络,终端设备上电运行后请求入网,智能网关允许设备入网,设备组网成功后给地址为0x0000的智能网关发送分配的网络地址,智能网关ZigBee模块通过串口将终端设备发送过来的网络地址发送给微处理器FC-3180模块,微处理器FC-3180在Cimsys Developer的Debug窗口中打印数据信息.图3为协调器设备调试运行后的打印输出结果,包括设备系统启动、网络建立和终端设备网络地址等信息.
同时,利用SmartRF Packet Sniffer软件,选择ZigBee 2007/PRO协议版本和2 405 MHz的监听信道,可以观察到ZigBee网络数据包发送的情况.图4为协调器设备建立网络时发送的数据帧,可以观察到目标个域网、目标地址、数据帧长度等信息,如第一个数据包是在广播10 byte的信标帧.
图4 协调器建立网络数据包
4.2 Android平台客户端运行测试
首先安装应用的AndroidPackage(apk)文件,进入初始界面后向左滑动屏幕.进菜单栏后点击“游客登录”,输入默认用户名和密码.如果获得管理者身份,菜单栏显示“已登录”.在菜单栏中主要测试直接影响智能网关系统运行的用户界面.点击“上线”菜单,进入界面后再点击“刷新”按钮获得新设备ID,即新入网的终端设备的网络地址.输入便于记忆的设备代号,其中设备代码与设备的ZigBee网络地址一一对应,对目标设备的真正寻址是通过设备的网络地址.点击“扫一扫”按钮,扫描贴在设备上的二维码,相对详细的设备信息就会自动添加到界面中,然后再根据需要添加备注,最后保存.
4.3 智能网关和Android平台间通信测试
上述操作全部完成后,点击“列表”菜单,Android平台上的AllJoyn标准客户端会快速在近域网络中寻找智能网关上AllJoyn瘦客户端提供的服务.连接服务后,输入用户命令,即可查询设备信息状态、参数、数量等,同时还可以控制终端设备的开关状态(用LED灯指示),也可以获取用户命令操作帮助.如图5所示,右边的是用户admin输入的命令,左边的是智能网关的信息反馈,同时每条指令会显示对应的时间.
图5 用户命令操作测试界面
1)图5(a)中,AllJoyn标准客户端会提醒用户正在寻找近距离内可用的服务,正常情况下寻找过程非常迅速,用户无需等待直接进入气泡聊天界面;
2)图5(b)中,根据界面最下端的输入栏提示,输入命令“man”,可以获取关于所有基本命令及其功能的说明;
3.图5(c)中,想了解某一命令(如boot)的具体用法,输入命令“help boot”,即可获得相关说明;输入命令“ls”,即可以获得已组网的设备代码;
4.图5(d)中,输入命令“find”,可以了解当前组网设备数量为3;关闭其中的设备fan,输入命令“shutdown fan”,设备fan的LED开关指示灯熄灭;
5.图5(e)中,重新启动设备fan,输入命令“boot fan”,设备fan的LED开关指示灯重新点亮;再查询设备fan的当前开关状态,输入命令“status fan”,可获得运行状态的正确回复;
6.图5(f),查看关于设备fan的详细参数及其备注,输入命令“uname fan”,可获得设备在登录时通过扫码和手动输入添加的信息;将设备fan从设备管理名单中删除,输入命令“rm fan”,将删除保存在应用中的对应设备的ID、代码、参数和备注等.
5 结 论
分析了物联网的发展,以智能家居解决方案中设备管理为落脚点,考虑到设备平台具有不同的特点、能力和行为的独特性,为实现其互联互通而设计了一个基于AllJoyn和FC-3180的智能网关系统原型,并实现验证其可行性.主要工作包括以下几个方面:
1)通过AllJoyn标准核心库框架及其应用流程的理解,设计了基于Android平台的标准客户端,以此来发现邻近AllJoyn网络中智能网关提供的服务.
2)设计实用且易操作的Android应用来完善AllJoyn的标准客户端,提供用户登录、设备上线、设备交互、应用设置等用户界面,其中二维码扫描功能方便了入网设备的信息添加,而仿微信的AllJoyn网络聊天界面则提升了用户体验.
3)分析了AllJoyn瘦核心库与标准核心库的区别,以及在嵌入式开发环境下的优化工作,然后在智能网关嵌入式微处理器FC-3180上实现了AllJoyn瘦客户端,广告服务建立会话,并通过自定义的变量安全操作协议对接收到的用户命令进行封装,然后发送给ZigBee模块.
4)智能网关ZigBee模块建立网络,并允许智能设备入网,然后传递用户命令并反馈设备操作信息.
[1] 候冉冉,张亮.关于智能家居系统的探讨 [J].智能建筑电气技术,2010(2):3-7.
Hou R R,Zhang L.Discussion on smart home [J].Electrical Technology of Intelligent Buildings,2010(2):3-7.
[2] 张晓彤.无线传感器网络与人工生命 [M].北京:国防工业出版社.2008.
Zhang X T.Wireless sensor networks and artificial life [M].Beijing:National Defense Industry Press.2008
[3] Dae-Man H,Jae-Hyun L.Smart home energy management system using IEEE 802.15.4 and ZigBee [J].IEEE Consumer Electronics Society,2010,56:1403-1410.
[4] Wu G,Mizuno M,Havinga P J M.MIRAI architecture for heterogeneous network [J].IEEE Communications Magazine,2002,40(2):126-134.
[5] 张启明,WiFi系统的应用 [J].计算机科学技术学报,2006 (21):40-41.
Zhang Q M.Application of WiFi system [J].Journal of Computer Science and Technology,2006(21):40-41.
[6] 王小强,欧阳骏,黄宁淋.ZigBee无线传感器网络设计与实现 [M].北京:化学工业出版社.2013.
Wang X Q,Ou Y J,Huang N L.Design and realization of wireless sensor network [M].Beijing:Chemical Industry Press.2013
[7] Mancuso M,Bustaffa F.A wireless sensors network for monitoring environmental variables in atomato greenhouse [C]//IEEE.Proceeding of Factory Communication System,Torino:IEEE,2006:107-110.
[8] 张任,严海.基于ZigBee的无线传感器网络节点设计 [J].机电工程,2008,25(08):18-28.
Zhang R,Yan H.Design of wireless sensor networks nodes based on ZigBee [J].Mechanical & Electrical Engineer magazine,2008,25(08):18-28.
(责任编辑:包震宇,顾浩然)
Design of intelligent gateway control systembased on AllJoyn and FC-3180
Chen Yanzhong, Zhang Yonggang, Zhou Xiaolin
(School of Information Science and Technology,Fudan University,shanghai 200433,China)
To simplify interconnection of distributed household equipment,this design creates a spontaneous,movable,safe and configurable equipment management system and smart home layout with the open-source software framework AllJoyn,the embedded microprocessor FC-3180,the low power wireless transmission network ZigBee and mobile application platform Android.
AllJoyn; FC-3180; smart gateway; Android
10.3969/J.ISSN.1000-5137.2017.01.025
2016-11-27
国家科技支撑课题项目(2015BAD17B04)
陈燕忠(1993-),男,硕士研究生,主要从事网络通信方面的研究.E-mail:14210720169@fudan.edu.cn
导师简介: 周小林(1973-),男,副教授,主要从事无线通信、移动通信、信号处理等方面的研究.E-mail:zhouxiaolin@fudan.edu.cn(通信联系人)
TN 929.5
A
1000-5137(2017)01-0149-07