网站首页  词典首页

请输入您要查询的论文:

 

标题 基于嵌入式Linux的多协议网关设计与实现
范文

    吴磊 王猛

    摘要:针对当前智能家居系统中终端设备通信控制协议的多样性,设计了一种能够将采用不同协议的智能家居设备进行集成的智能多协议网关。首先进行了多协议网关的模型设计与验证,然后设计了网关的体系结构模型,最后对多协议网关的硬件进行设计。该多协议网关采用以s3c6410作为主处理器的tiny6410核心板、CC2650的蓝牙模块、ESP8266的WiFi模块。在软件方面,主要设计了软件的整体结构、主控程序流程。同时在网关内部使用Sqlite数据库来对信息进行保存和更改。最后对此多协议网关的实时控制性能和数据传输性能进行了测试,给出了不同情况下测试得到的数据丢包情况。通过测试,本文设计的多协议网关具有一定的实用性。

    关键词:多协议网关;嵌入式系统;Linux系统;Sqlite数据库

    中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)30-0030-05

    Design and Implementation of Multi-Protocol Gateway Based on Embedded Linux

    WU Lei, WANG Meng

    (Computer Institution, North China University of Technology, Beijing 100144, China)

    Abstract: In view of the diversity of the communication control protocol of the terminal equipment in the current intelligent home system, an intelligent multi-protocol gateway is designed, which can integrate the intelligent home devices with different protocols. Firstly, the model design and verification of multi-protocol gateway is designed, and then the architecture model of gateway is designed. Finally, the hardware design of multi-protocol gateway is designed. The multi-protocol gateway uses S3C6410 as the main processor of the tiny6410 core board, CC2650 Bluetooth module,ESP8266-WiFi module. In the software, the main design of the overall structure of the software, the main control program flow. At the same time, use the SQlite-database to save and change the information in the gateway. Finally, the real-time control performance and data transmission performance of the multi-protocol gateway are tested, and the data packet dropout is given under different conditions. Through the test, the design of the multi-protocol gateway has a certain practicality.

    Key words: Multi-protocol Gateway; Embedded system; Linux operating system; SQLite database

    如今人們生活水平越来越高,物联网的技术也更加完善,人们对家居生活也越来越挑剔,为了满足人们日益增长地对于家居生活的需要,实现物联网智能家居系统也就成为未来家居环境建设的主要方向[1]。但是现阶段,由于在家居内部智能设备的通信控制协议没有统一的标准[2],而每一套智能家居系统都需要配有专用的智能家居网关[3],这就造成了资源和人力的浪费,针对这种情况本文提出来了设计一个能够支持多种通信控制协议的家庭智能网关,硬件上采用基于s3c6410(ARM1176JZF-S)核心处理器的tiny6410开发平台,使用串口总线技术与CC2650蓝牙模块和ESP8266 WiFi模块进行通信,以太网接口通过网线与路由器相连,在嵌入式Linux系统上进行编程一方面通过以太网接口与Internet通信,另一方面通过串口和WiFi模块、蓝牙模块通信,这样就使网关与家居智能设备完成通信,从而完成不同协议之间的转换和控制。

    1 硬件设计

    本文所设计的多协议网关的硬件组成部分主要有tiny6410平台上所集成的s3c6410核心处理器、以太网接口、电源模块;然后再加上WiFi无线模块和CC2650蓝牙模块。

    1.1 主控制器

    主控制器是整个网关节点的核心部分,主要负责接收CC2650蓝牙模块和ESP8266模块串口传输来的智能设备的具体数据信息和等待从以太网传送过来的控制查询数据信息,然后将从不同协议传输来的信息转换成对应的协议的信息。主控制器采用S3C6410处理器,这款处理器使用了ARM公司的ARM1176JZF-S内核,其处理器主频最高可达667Mhz,且具有256M Mobile DDR RAM,32bit数据总线结构,设计引出了多个串口,为用户提供了多个接口,方便用户开发[5]。所以,在经过多方权衡的比较之后,最后使用s3c6410作为该网关的主控制器,并以此为核心构建外围模块。

    1.2 供电系统

    任一控制系统,电源都是必不可少的一部分,同时由于各个模块之间的使用电压和电流的不同,所以要设计一种合乎系统需求的电源模块以满足各不同模块的供电需求[6]。

    网关的核心处理器所需要的电压为DC3.3v,且CC2650蓝牙模块、ESP8266WiFi模块的正常工作供电电压是DC3.3v;由于电压不同,所以在采用由外部电源AC220v进行供电时,需要经过稳压电路将其改变为DC5v的电源,然后给网关上的各个模块使用。

    1.3 CC2650蓝牙模块

    在智能家居领域中,一定要注意功耗问题[7],所以为了满足低功耗的要求,本文采用了低功耗的CC2650蓝牙模块。该芯片具有UART等多种引出的接口资源,本文利用串口和核心处理器相连以完成数据的传输,可以满足网关中对蓝牙模块通信的处理性能要求。

    1.4 ESP8266WiFi模块

    由乐鑫公司出品的ESP8266WiFi模块拥有高性能的无线SOC,与其他厂商具有低功耗和易用性等特点[8],所以本文所设计的多协议网关中的WiFi模块采用ESP8266WiFi模块。ESP8266WiFi模块采用DC3.3v电源供电,具有SPI/SDIO、I2C/UART等通信控制接口,能够满足多协议网关中的核心处理器进行信息传输的需要,本文所用的通信接口采用UART接口。

    1.5 以太网网络接口模块

    从开发的成本和效率来考虑,本文中所设计的多协议网关的以太网网络接口模块选用完全集成的DM9000AEP芯片,该芯片支持10/100Mbps通信速率和半/全双工通信模式,它还具有节能模式,在此模式下其能耗较低,并且支持MII接口来连接媒体访问控制器(MAC),能够适配RJ45的网络接口,它的正常工作电压为DC3.3v。

    2 软件设计

    设计了多协议网关的软件体系,其具体结构如图3所示,多协议网关的软件部分主要包含4个部分:

    1) 在CC2650蓝牙模块指定的开发环境进行编程,实现网关和蓝牙类型设备相互通信,然后再烧写到蓝牙模块上;

    2) 在Arduino开发环境对ESP8266WiFi模块进行编程,然后写到WiFi模块上,使之能够和网关通信。

    3) 在嵌入式Linux操作系统上,通过TCP/IP协议和Socket编程来完成和Internet的数据传输;

    4) 在tiny6410上启动定制的嵌入式Linux操作系统,一方面利用以太网口和手机端通信,一方面通过串口总线和无线模块通信,同时在网关内部利用已经移植好的Sqlite数据库来建立用户信息管理表、家庭内部智能设备信息管理表、情景模式管理表等表格,分别用来管理手机APP用户的认证、家庭内部不同协议的智能设备的详细信息以及手机用户设置的情景模式。其中用户信息管理表的详细设计如表1所示,家庭内部智能设备信息管理表如表2所示,情景模式管理表如表3所示。

    2.1 网关与手机用户APP的通信设计

    本部分的设计主要是采用TCP/IP协议栈来使多协议网关和手机客户端进行通信。网关的通信采用客户端-服务器端方式使用Socket来完成多协议网关和手机客户端的数据通信。在控制的过程中,网关会成为服务器端,它会不停的监听手机客户端的连接和数据传输请求;用户手机客户端当要进行智能家居的控制时,用户手机客户端将会主动向网关服务器发起连接请求。

    根据2014年Google旗下的Nest推出的物联网通信协议Thread,所以在多协议网关上使用udp服务器程序来监听手机用户APP的连接请求。采用UDP服务器程序,主要是因为它有如下三个关键点:网络带宽需求较小,而实时性要求较高;大部分需求无需维持连接;需要低功耗。

    2.2 网关与智能家居设备间的通信设计

    网关与家居智能设备间的通信和控制分别采用蓝牙和当前最为普遍的WiFi无线通信技术。依据前文硬件电路设计,分别使用两个串口和这两个无线模块相接,本次设计方案采用了一主多的从通信方式,网关作为主设备,其他智能设备作为从设备。当多协议网关要控制蓝牙类型的智能设备时,则通过与蓝牙无线模块相连的串口发送控制指令。同理,当要控制WiFi类型的智能设备时,则向与WiFi无线模块相连的串口发送控制指令。当家庭内部首先要布置WiFi智能设备时,首先要使用smartconfig技术将家庭内部的WiFi智能设备连接到家庭内部的局域网中,然后当网关中接收到来自Internet的命令时,将会通知与之相连的WiFi设备,这时作为从设备的WiFi智能设备将会将自身的信息通过网关上的WiFi模块发送至主控制器。家庭内部的蓝牙智能设备主要是采用conkie系統并使用rpl协议进行通信和控制。主要是当网关的主控制器接收到来自Internet的指令时,将通过与蓝牙模块相连的串口发送至蓝牙根节点,此时蓝牙模块将通过rpl协议进行数据的传输和控制。

    同时为了能够使手机端实时的得知家庭内部的智能设备是否坏掉,在智能设备和网关的通信中设计了保活报文,在网关上在一段时间内没有收到同一设备发送来的保活信息时,将会向手机客户端发送通知信息。

    网关与WiFi智能设备、蓝牙智能设备的时序图如图4所示。

    其中各个序号代表的意义如下:

    1)采用广播查找网关;

    2)回复网关IP地址;

    3)手机使用初始密码接入网关;

    4)手机查询设备;

    5)网关通过wifi根节点广播查询wifi设备,向蓝牙根节点发送查询指令;

    6)wifi、蓝牙终端节点回复,信息存至网关;

    7)将蓝牙、wifi设备信息发至手机;

    8)手机发送控制指令;

    9)网关控制终端;

    10)回复状态信息;

    11)回复至手机端(设备状态信息)。

    2.3 网关主控制器的设计

    网关的主控制器的主要任务是调度蓝牙模块、WiFi模块和服务器程序间的工作,是整个网关中最关键的一部分。主控制器的主要工作分为以下几个部分:

    1) 随系统启动UDP服务器程序,当手机客户端要进行连接时,会解析手机发送来报文中的手机MAC字段,然后和网关内部中的用户信息表进行比对。此部分主要完成手机用户的认证工作。

    2) 对智能家居设备的相关信息进行收集,并将从串口传送来的信息按照报文定义的字段进行解析,并将相对应的字段保存至家庭内部智能设备信息表,使当手机客户端请求连接网关时,能够将家居智能设备的状态信息与用户手机客户端所显示的状态信息的同时更新。

    3) 此网关内部要维护一张手机用户设置的情景模式表,当手机客户端要对某一情景模式控制时,可以实现在此情景模式中的全部设备的控制。

    为了能够支持多用户能够同时控制家庭内部的智能设备,该多协议服务器采用如图5所示的多进程的方式进行网络的监听和数据报文的处理。

    通过对网关主要工作的过程分析,主要从以下方面来对其开展研发设计:

    1) 用于与手机客户端进行以太网网络进行通信UDP服务器程序会随着ARM-Linux系统的启动而启动,之后会一直处于监听状态并等待手机客户端的链接。当有手机客户端发起链接请求后,该服务器程序根据已定义的报文格式,对手机MAC字段解析,并与用户信息表中已存在的MAC地址进行匹配,若能够匹配成功,则表示此用户是已认证用户,可以登录。若没有匹配到,则解析报文中的密码字段,如果匹配成功,则将此用户的MAC地址存入用户信息表中,否则提示用户重新输入密码。

    2) 当服务器程序接收到用户发送来的查询报文时,服务器程序会另外创建一个子进程,并将查询指令通过两个串口发送给无线模块,无线模块会将查询到的家庭内部的智能设备信息传输至网关,然后网关会将这些智能设备的信息保存至网关内部的智能设备信息管理表中,同时也会向手机发送收集到的智能设备信息。

    3) 当手机客户端要实现对智能设备的控制时,UDP服务器程序在接收到控制报文时,会先判断用户是控制的情景模式还是单个的设备,如果是要控制情景模式,则会通过情景模式管理表,通过无线转发模块从而控制家庭内部智能设备。当要控制家庭内部的单个智能设备时,网关会先查询智能设备信息管理表,找到要控制设备的具体信息,如果是WiFi设备则会通过指定的串口向WiFi转发模块发送控制指令,如果是蓝牙设备则会通过与之相连的串口向蓝牙转发模块发送控制指令。这样会实现对家居智能设备的控制。

    4) 在网关上的无线转发模块当接收到家居智能设备的反馈报文时,会通过各自对应的串口发送给网关处理程序,这时会将家居智能设备信息管理表和情景模式管理表中的状态标识位进行对应的改变,同时会向手机客户端反馈,用于提示用于该控制已经成功。同时家庭内部智能设备会定时的向网关发送保活报文,用于通知网关自身一直在该网络中,当网关在一段时间之内没有收到某个智能设备时,会向手机用户提示此设备已离开该网络。

    3 数据传输格式设计

    本文主要涉及多协议网关与家居智能设备的通信和控制,为了能够将手机发送来的指令能够准确的发送给指定的智能设备,同时为了兼顾蓝牙和WiFi网络,设计的数据包格式采用tlv(type-length-values)的报文格式如表4所示。

    当用户手机客户端发送的控制命令送达至网关并在网关在进行了数据分析和处理之后,会将具体的控制指令以图10所设计的包格式传输到WiFi或者蓝牙网络中以实现具体的家居智能设备的控制。其中包类型分为控制或者回复等。设备类型分为开关、空调、窗帘等具体的智能设备,由于存在使用RPL协议的蓝牙网络,所以设备IP设置为16字节,采用设备MAC作为设备的唯一标识,省去了重新编号的麻烦,设备状态标识当前设备的开关情况。

    4 试验结果统计

    实验所用的多协议网关的实物如图7所示。

    为了能测试该多协议网关的性能,测试的环境如图8所示,将2个WiFi模块部署在网关的WiFi模块可以到达的通信距离内,同时将4个使用的蓝牙智能设备部署在网关的蓝牙模块能够覆盖的范围内。此时2个WiFi类型的开关和4个蓝牙开关就分别于网关上的WiFi模块和蓝牙模块组成了一个以网关为中心节点的网络。先在相关的开发环境上编写特定的程序,然后再烧写到各自的模块上,让智能设备节点每过20s向多协议网关发送一次测试数据。这是可以在用户手机客户端编写同样的测试程序并让其运行,让手机客戶端每个25s向多协议网关发送一次测试的数据,在经过一段时间之后,统计网关上接收的测试数据情况,根据每种不同的情况进行不同的分析,然后得出网关接收/转发数据的丢包率以及数据处理的时延。

    4.1 网关接收数据的丢包率测试

    网关接收的数据分为下面2种:

    1) 网关的主控制器通过串口总线接收无线模块发送的数据,具体的就是上述测试的智能设备每隔一段时间发送来的测试数据;

    2) 网关主控制器服务器程序接收来的从手机客户端发送来的控制/查询的命令数据。这里,考虑到本网关的主要工作是与家庭内部智能设备的通信,而且以太网口是tiny6410上已经设计测试好的,所以本测试就不在测试以太网口的数据丢包情况,而只是关注从串口传送来的测试数据。根据上面的测试环境,主要是在串口波特率为4800(bit/s)和9600(bit/s)时进行10次测试,将网关每从串口读取800个测试的数据包作为一次完整的试验。在对这10次试验结果统计分析后求它们的均值。实验的结果如表5所示。

    表5 多协议网关不同串口波特率接收数据的丢包率

    

    从实验的数据统计的结果来看,当多协议网关的串口被设置成为不同的波特率的时候,网关从串口接收的来自家居智能设备的数据的丢失都较低,以上设置的两个不同波特率的实验的平均数据丢包率的平均值为0.08%,所以该网关可以较好地完成数据的接收。

    4.2 数据转发的丢包率试验

    关于数据的转发,主要有2个过程:

    1) 网关将从智能家居设备节点发送来的设备信息、状态等数据通过以太网接口使用TCP/IP协议转发到Internet的过程。

    2) 将从用户手机客户端发送来的控制/查询命令数据经过解析封装后通过网关的对应串口经相应的无线模块转发到智能家居设备节点的过程。

    根据上述测试的环境,通过在网关内部设置一个数据转发计数器来记录数据的转发量和丢包量,上述的2种数据转发过程的测试结果如表6所示。

    从上述测试的结果能够看出,网关在2中数据转发的过程中都有着比较低的数据丢失几率,从而说明了该网关在2个过程中都能对数据进行较好的转发。

    4.3 网关处理数据时延测验

    网关处理数据的时延是指网关主控制器在处理完一个从串口或者Internet中读取的数据之后再转发,这其中经过的时间。这时间越短说明网关处理数据的时延就越小,效果就越好。本次试验就是依据上文所述的测试环境,依次将串口波特率设置为4800bit/s和9600bit/s,然后再对时延就行测试。每当网关从串口读到1500个数据包就进行处理并转发,然后记录下来此时的时延,当做了同样的10次试验之后,最后对这10次的测试结果来求取数据处理时延的平均值,本次试验统计的结果如表7所示。

    从表7中的测试数据可以看到,本文所设计的网关数据处理的平均时延为13.68ms,说明此网关能及时处理数据。

    5 结束语

    在智能家居系统中智能家居网关占有中心地位,起着“翻译官”的作用,使家庭内部网络能和Internet顺利的通信。本文主要涉及网关的硬件和软件设计,并在家庭内部网络数据传输格式方面进行设计和实验,实现了能够同时支持WiFi智能家居设备和蓝牙智能家居设备的多协议网关。该网关可以有效地实现家居内部不同的通信协议设备的网络与Internet网络相互连接的功能。

    参考文献:

    [1] 孙睿,付志红.基于嵌入式Linux的蓝牙以太网关设计[J].计算机应用,2006(12).

    [2] 刘晓霞,周绍军基于先进处理器架构的智能家居多协议网关设计[J].西南民族大学学报:自然科学版,2014(7).

    [3] 刘高平,殷伟凤,李国胜蓝牙与以太网互联技术的实现[J].計算机工程,2004(9).

    [4] 沈永春,姜宁,张功镀嵌入式多协议网关的设计与实现[J].自动化仪表,2007(6).

    [5] 三星,tiny6410开发者手册

    [6] 郭荣佐,郭进,黎明智能家居中异构设备无缝集成的多协议网关设计[J].小型微型计算机系统,2015(10).

    [7] 严冬,丁世佳,贺政基于ARM9的多协议异构开发平台的设计与实现[J].科技视界,2014(1).

    [8] 王佳欣.智能家居系统网关的设计与实现智能[J].计算机与应用,2016(6).

    

随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/4/18 9:28:07