基于Arduino平台的物联网网关设计

更新时间:2023-12-12 22:27:43 阅读: 评论:0

2023年12月12日发(作者:神经组织修复疗法)

-

基于Arduino平台的物联网网关设计

基于Arduino平台的物联网网关设计

李艳丽;蔡冬玲

【摘 要】In the paper,a new IoT gateway on the Arduino platform is

us an object-oriented design to shield with the perception

layer,the network access layer and the cloud system provides

the common interactive interface and the interoperability

last,the ZigBee wireless nsor network is ud as a perception

layer,YeeLink cloud platform is ud as a IoT gateway is ud to

t up a specific IoT experiment results verify the availability of

IoT gateway,the packet loss rate is 0.2 %,the average delay is 9.906 ms,so

the IoT gateway can well meet the multi-applications.%本文在Arduino平台的基础上详细设计并实现了一种新型的IoT网关,它使用了面向对象的设计方式屏蔽了与感知层、网络接入层以及和云平台交互的细节,并提供了通用的交互接口和互操作协议.本文在最后,利用ZigBee无线传感器网络作为感知层,YeeLink云平台作为服务器,使用设计的IoT网关搭建了一个具体的IoT系统,并通过对系统进行功能测试和性能测试验证了IoT网关的可用性,其中丢包率为0.2%,平均时延为9.906

ms,可以很好满足多种应用.

【期刊名称】《单片机与嵌入式系统应用》

【年(卷),期】2017(017)009

【总页数】5页(P73-77)

【关键词】Arduino;WSN;ZigBee;IoT网关;YeeLink 【作 者】李艳丽;蔡冬玲

【作者单位】重庆科创职业学院信息工程系,重庆402160;重庆科创职业学院信息工程系,重庆402160

【正文语种】中 文

【中图分类】TP273

随着IoT应用技术的发展,无线传感器网络也得到了相应的发展。在IoT的三层架构体系中,从下到上依次是感知层、网络层和应用层。感知层主要用于感知和采集监测对象的信息;网络层主要完成信息的传递和处理;应用层主要对数据进行管理,并将这些数据与具体应用(如智能交通,环境监测)相结合[1]。各层涉及的相关技术中,无线传感网络与感知层的技术有关;电信运营网、移动通信网常用于网络层中;云平台则是应用层的技术之一。

在当前大数据时代,无线传感器网络必须要突破地域限制和协议限制,并与云平台进行数据交互才能大有作为、满足用户的要求,而IoT网关正是感知层和网络层的“桥梁”。但由于无线传感器网络协议、网络层接入协议和云平台的多样性,使得传统的IoT网关一直都是有针对性的开发,通用性和扩展性较差。针对这个问题,本文设计了一款基于Arduino平台的IoT网关,可以无需考虑底层的协议、硬件的类型等,完全把设计和具体实现分离开,具有较高的通用性和可扩展性。之所以采用Arduino平台,是因为Arduino平台是一款便捷灵活、成本较低的开源平台,包含了硬件和开源软件以及集成开发环境,集成了许多硬件模块,比如通信模块包括串口、网口、WiFi等,并提供了这些模块的软件接口,开发十分便利[2]。基于Arduino的IoT网关系统架构如图1所示。

图1中IoT网关是不能单独工作的,为了实现网关的功能,还必须要搭建真实的无线传感器网络和云平台,本文使用ZigBee无线传感器网络作为感知层,Yeelink云平台作为服务器。ZigBee技术应用广泛,这里不再详述。Yeelink云平台提供了一系列和底层平台无关的用户接口,底层平台利用这些接口可以方便地完成和云平台的信息交互,并可以通过C/S模式或者B/S模式控制和监控底层平台[3],本文正是结合ZigBee无线传感器网络+Yeelink云平台,来验证IoT网关的功能和性能。

IoT网关作为云平台和无线传感网络的桥梁,需要实现不同网络的信息交互,因此必须要满足以下几个条件:

① 提供接入Internet的软硬件接口。接入Internet的方式多种多样,可以使用运营商的WiFi网络、ADSL、或者移动通信网,这就要求IoT网关需要提供无线网卡、以太网卡、移动网卡等模块及其驱动。

② 提供无线传感网络的软硬件接口。需要能够接入到无线传感器网络的模块,比如ZigBee、Z-wave、wireless-hart等协议的硬件模块及其协议栈。

③ 提供管理功能。云平台需要对无线传感网的状态进行实时监控,并对无线传感网的设备进行实时控制。由于无线传感网和外网接入层的协议不同,需要提供一组统一的协议转换接口,以保证云平台和无线传感网之间的数据交互[4]。

为了满足以上的3个要求,设计如图2所示的IoT网关的软件架构。

① 接入层。本文中使用了Arduino平台提供的WiFi模块接入到互联网中,适用于非固定环境或者移动环境的灵活组网。

② 适配层。适配层包括了远程管理模块、协议转换模块和协议解析模块,其中远程管理模块实现了Arduino平台和云平台的通信对接,并负责将标准数据按照平台要求的格式封装后发送至云平台,或者将云平台下发的数据解包成标准的数据格式。协议转换模块则试图将标准数据的格式转换成感知层可以识别的控制信令,或者将感知层的传感数据转换成标准数据格式。协议解析模块则负责解析转换后的数据,并执行相应的动作。

③ 感知层。对于IoT网关而言,可以无需关心感知层使用了什么协议,用什么方式和Arduino进行通信,因为适配层将会提供抽象的通用接口,用户只需要根据具体的情况实现相应的软件接口即可,IoT网关的软件架构不会因此发生任何改变。但为了实现网关的功能,还必须要搭建真实的无线传感器网络。本文感知层所使用的的无线传感器网络协议栈是采用TI公司提供的半开源协议栈Z-Stack,运行Z-Stack的控制器是CC2530芯片,它可以使用串口方式和Arduino平台进行信息交互。

3.1 IoT网关的软件实现

IoT网关的软件实现主要在于适配层,其中远程管理模块应该提供和云平台进行交互的接口。为了网关的通用性,需要屏蔽和云平台的交互细节,因此需要面向对象地抽象出通用的用户接口,然后根据云平台和底层通信方式的不同来实现具体的功能,接口如下:

Class Arduino_client : public tcp_client{

public:

Arduino_client();

Arduino_client(uint8_t sock);

Virtual int connect(const char *host, uint16_t port);

Virtual int disconnect(const char *host, uint16_t port);

Virtual size_t nd(int);

Virtual size_t nd(const String &);

Virtual recv(uint8_t *buf, size_t size);

private:

Comunicate_Client client_; }

从上面的抽象类型可以看出,公共接口包括:socket建立、云平台的连接和解除连接、数据发送和数据接收[5],这些接口均为虚拟函数,需要根据云平台规定的交互协议来具体实现。私有接口只有一个,那就是外网通信的功能接口,该接口描述了远程管理模块使用了何种底层的通信方式接入到互联网中去,比如WiFi/移动通信2G、3G、4G/以太网等,其中Comunicate_client 也是一个抽象类,该类定义的对象中的虚拟接口则由底层驱动实现。

为了完成了云平台和无线传感网络之间的互操作,需要定义一组互操作协议,并在适配层处实现协议转换和协议解析,本设计中定义的互操作协议数据结构如下所示:

Struct Interoperability_Protocol{

unsigned char SensorNetworkType;

unsigned char DateType;

unsigned char Nodeld;

unsigned char DeviceId;

unsigned char DataLength;

unsigned char *DataBuffer;

};

上述互操作协议中:SensorNetworkType表示传感器网络类型(例如0x00表示Z-wave,0x01表示ZigBee),DateType表示数据的类型(例如 0x00表示控制信令,0x01表示传感数据),NodeID表示传感节点在无线传感网络中的唯一标识,DeviceID表示设备类型(例如0x00表示温度传感器、0x01表示烟雾传感器等),DataLength表示用户数据长度,DataBuffer则是缓存用户数据的指针。因为一个节点上可以有多个传感器设备,所以云平台需要根据 Nodeld和DeviceId这两个参数来标识传感器设备[6]。 协议转换模块就是负责将来自云平台/感知层的数据装配成互操作协议定义的数据格式,并传送给远程管理模块或者是协议解析模块进行处理。协议解析模块如果接收到来自协议转换模块的信息后,将根据互操作协议中的节点ID和设备ID,将控制信令分发到传感器网络中的具体设备上;如果收到感知层的数据,则将设备ID和节点ID作为参数连同传感数据交给协议转换模块来处理[7]。

3.2 IoT网关的工作流程

IoT网关的工作流程如图3所示。上电后,IoT网关首先进行了软硬件的初始化,然后启动网络层接入模块,尝试接入互联网中,如果接入不成功,则过一段时间后继续尝试接入;如果接入成功则尝试登陆云平台,如果登录不成功,则过一段时间后继续尝试登录;如果登录成功则监控网络事件,如果是适配层的远程管理模块收到了云平台的下行数据,则认为是信令,将该信令通过协议转换模块转换为互操作协议数据格式后传递给协议解析模块进行处理;感知层收到来自传感器网络节点的传感数据后,将数据传递至协议解析模块提取出传感数据的源设备ID号和源节点ID号,并作为参数传送给协议转换模块封装成规定格式,然后调用远程管理模块上传给云平台[8]。

IoT网关系统实物图如图4所示,使用Arduino控制器和ZigBee协调器(可以理解为是图1中的汇聚节点)构成了IoT网关,两者之间通过串口进行交互。Arduino控制器的WiFi模块连接到互联网的Yeelink云平台;ZigBee协调器组建了无线传感器网络,并允许温度传感节点、烟雾传感节点和LED灯控制节点三个终端节点相继加入网络[9]。烟雾传感节点采用MQ2传感器,该传感器可检测多种可燃性气体,如天然气、丙烷、氢气等;温度传感器采用DHT11温湿度传感器,该传感器可以采集环境的温湿度信息,本文只采集温度数据。

使用YeeLink APP或者浏览器登录进YeeLink云平台,在“我的YeeLink”下注册传感器设备,注册成功后,将会在该菜单栏下显示系统的设备信息,如图5所示。

4.1 功能测试

对IoT网关功能测试首先是对温度和可燃气体数据测试,传感器节点会周期性地采集温度和当前的气体数据上传至网关,由网关上传给云平台,用户可通过手机APP监控到当前温度和气体值。

图6显示的是最近一个小时的温度变化曲线,其中纵坐标指示温度,横坐标表示时间。

图7显示的是最近一个小时的气体变化曲线,测试的时候人为地放出气体(本文中测试的气体是打火机放出的气体),从图可以看出,刚开始气体浓度高时测试值达到了800,当气体渐渐散去,测试值回落并最终达到平稳值。

通过手机APP上的LED开关,可以远程控制传感节点上的LED灯的开启和关闭,如图8所示为灯开启状态。这也就说明了IoT网关除了可以监控传感网节点的数据,还可以接受云平台的指令,并下发给传感器节点执行。

4.2 性能测试

4.2.1 丢包测试

本文中IoT网关的丢包主要来自三个方面:

① WiFi网络的丢包,WiFi网络比较繁忙和干扰大的时候容易发生。

② ZigBee无线传感网络的丢包,即终端节点向汇聚节点传送数据的无线通道中丢失了数据包,这在多节点环境下会更加明显。

③ ZigBee模块和Arduino平台的串口通信过程中发生了丢包。

其中第一和第二点不在IoT网关的控制范围内,其与WiFi协议和ZigBee协议有直接的关系,因此不考虑前两点。针对第三点,设计了一个测试方案:ZigBee网络只有一个终端节点,和IoT网关的汇聚节点,两者放在一个相对屏蔽的环境下,其中终端节点每隔10 s向网关传送1000个包,每个包100字节,连续重复10次,IoT网关统计每次的丢包个数,如表1所列。

经测试,10次的平均丢包率为20/(1000×10)=0.2%。

4.2.2 时延测试

造成时延的原因和丢包有着直接的关系,因为丢包会导致重传,而重传就浪费了时间,所以不考虑WiFi网络和ZigBee网络的丢包重传的情况,只考虑ZigBee的传输时间和串口转发的时间,设计了一个测试方案:ZigBee网络只有一个终端节点,IoT网关上有汇聚节点,两者放在一个相对屏蔽的环境下,其中终端节点通过接收IoT网关上的汇聚节点发送的信标帧进行时间同步,终端节点每隔5 s向网关传送1个包,每个包的数据域封装了发送时间,连续重复10次,IoT网关收到经过串口转发的数据后根据接收的本地时间-发送时间来统计时延,如表2所列。

其中时延单位均为ms,10次的平均时延为9.905 1 ms。后经多次时延测试,每10次的平均时延时间基本为9.906 ms,这样的时延基本能够满足多类型的应用环境(对时延要求较高的应用环境除外)。

本文针对传统的IoT网关通用性和可扩展行差的缺点,使用Arduino平台设计了一种具有通用接口的IoT网关,主要在网关软件上抽象了适配层的远程管理、协议转换、协议解析这三个通用模块及其接口,并基于ZigBee无线传感器网络+YeeLink云平台实现了具有ZigBee组网和远程控制功能的IoT网关。实验证明,IoT网关的丢包率低、时延小,具有运行可靠、易用性好的特点,同时网关软件也有较好的通用性和可扩展性,用户只需要在云平台上根据设备ID和传感节点ID注册设备,便可快速地建立设备和云平台的映射[10],从而迅速地达到远程控制的目的。

[1] 马月红,马彦恒,王雪飞.基于MATLAB的FIR数字滤波器设计与仿真[J].电子测量技术,2010,11(33):66-69. [2] 屈星,唐宁,严舒,等.基于FPGA的IIR数字滤波器的设计与仿真[J].计算机仿真,2009,26(8):304-307.

[3] 雷旎,刘峰,曾喆昭.基于共轭梯度法的FIR数字滤波器优化设计[J].计算机仿真,2014,31(12):179-182.

[4] Wang Yan,Liao Xiao-Feng,Yu x neural network on

designing FIR digital Filter[J]. Signal Processing,1999,15(3):193-198.

[5] Yin Yongsheng,Jiang Xiangyang,Deng first stage of aSHA-less 12-bit 200-Ms/s pipelin-e ADC in 130-nm CMOS[C]//IEEE Anti-Counterfeiting,Security and Identification(ASID),2013:25-27.

冯美艳 ,主要研究方向为信号与信息处理。

【相关文献】

[1] 陈海明, 崔莉, 谢开斌. 物联网体系结构与实现方法的比较研究[J]. 计算机学报, 2013, 36(1):169-175.

[2] 孙骏荣, 苏海永. 用Arduino全面打造物联网[M]. 北京: 清华大学出版社, 2016.

[3] 侯维岩, 魏耀徽, 庞中强. 智能家居网关及其Web控制软件的设计和实现[J]. 自动化仪表,

2015,36 (5):64-65.

[4] 崔阳, 张维华, 白云峰. 一种基于Arduino的智能家居控制系统[J]. 电子技术应用, 2014,

40(4):123-125.

[5] 陈吕洲. Arduino程序设计基础 [M].2版.北京:北京航空航天大学出版社, 2015.

[6] Jack Purdum. Arduino C语言编程实战[M].麦秆创智,译.北京:人民邮电出版社, 2013.

[7] Wu, Shuang;Zeng, Gui-gen. Design and Realization of Wireless Home Gateway Bad

on 3G and ZigBee[C]//International Conerence on Multimedia Communications

(Mediacom 2010),Hong Kong, 2010.

[8] 廖龙. ZigBee无线传感器网络与以太网接入网关的设计与实现[D]. 武汉: 华中科技大学, 2014.

[9] 谢金龙, 邓人铭. 物联网无线传感器网络技术与应用(ZigBee版)[M]. 北京: 人民邮电出版社,

2016.

[10] 陈红松. 云计算与物联网信息融合[M]. 北京:清华大学出版社,2017.

李艳丽(硕士),主要研究方向为物联网应用开发。

72 器的集成度还可以在数字滤波器不方便使用串口线时实现滤波参数可变,实验证明了设计的有效性。

-

基于Arduino平台的物联网网关设计

本文发布于:2023-12-12 22:27:43,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/1702391263119758.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:基于Arduino平台的物联网网关设计.doc

本文 PDF 下载地址:基于Arduino平台的物联网网关设计.pdf

下一篇:返回列表
标签:平台   网关   协议   模块
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|