基于Arduino和ZigBee的物联网智能网关设计与实现
给出了一种能够在ZigBee网络和传统网络进行透明协议高效转换的物联网智能网关的解决方法。该方法利用MQTT服务器作为数据进入传统网络的中转站,ZigBee网络的数据通过网关上的路由功能接收数据,然后通过串口把数据转发给NodeMCU,最后数据通过MQTT协议发送到数据中转站。经过智能蔬菜大棚的实际应用证明,本文设计的网关造价低廉,实用性好,效率高。标签:物联网;网关;ZigBee;NodeMCU
0引言
物联网(Internet 0f things,简称IoT)是“信息化”时代的重要发展阶段,被称为继计算机、互联网之后世界信息产业发展的第三次浪潮。要实现物物相连,工程真正的意义上的物联网,就需要把各种网络互联在一起,那么网关功能的设备在物联网应用中就起着非常重要的作用。物联网涉及到多种网络的互联,因此设计一个能够互联所有网络的物联网网关是不现实的,更没有必要,这样不仅成本高而且研發周期长。因此,在实际的物联网应用系统中,针对涉及到的网络,研究特定功能的物联网网关不仅能够降低成本而且也会缩短研发周期。而在当前的物联网中,由于ZigBee广泛应用,那么数据在ZigBee网络和传统以太网之间的相
互转发就显得非常重要。
本文主要研究ZigBee网络和以太网之间的数据转发,同时为了方便用户二次开发,也提供数据获取和控制数据传送WebAPI。基于此,本文的研究内容包括:基于MQTT的数据收发、ZigBee网络的实现、基于MongoDB的数据持久化服务的开发以及提供二次开发的WebAPI接口。
1相关技术和理论
(1)MQTr(Message QueuingTelemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和制动器的通信协议。(2)NodeMCU是一个开源的物联网平台,它自身就可以作为物联网终端节点使用,可以应用于某些物联网中。像Arduino一样,它是简单的开源可编程固件。本文通过MQTT协议,实现网关与数据中转站相互传输数据。(3)CC2530是用于2.4-GHz IEEE802.15.4、ZigBee和RF4CE应用的一个真正的片上系统(SoC)解决方案。(4)ZigBee技术是一种近距离、低复杂度、低功耗、低速率、低成本的双向无线通讯技术。从下到上分别为物理层、媒体访问控制层、传输层、网络层和应用
层等。(5)Z-Stack是符合Zigbee协议栈规范的一个硬件和软件平台,是Zigbee协议栈的一个具体实现。本文利用Z-Stack设计物联网网关的协调器和网关功能。
2 GlOT的体系结构
本文设计并实现的物联网网关GIOT(Gateway ofiOT)的主要功能是要实现传统网络和ZigBee网络之间的数据转发并把数据放置到数据中转站服务器上,该方案的体系结构如图1所示:
图1中,序号(1)、(2)和(3)是本文需要实现的部分,主要涉及到的相关技术如下:
(1)数据中转站服务器:利用Java语言实现WebAPI,程序订阅MQTT服务器的数据主题,监视物联网终端节点上传的数据以及用户发送的控制数据,并把所有的数据写入MongoDB数据库中,同时给用户终端提供WebAPI,方便基于PC和手机管理应用的二次开发调用。
(2)NodeMCU转发服务:利用ESP8266芯片按照Arduino规范设计的模块,具备无线功能,方便通过无线接入以太网中,利用MQTT协议和数据中转站进行数据通讯,通过UART
与CC2530模块相互传输数据。
(3)ZigBee网络转发服务:利用TI公司的CC2530芯片以及Z-Stack协议栈实现ZigBee协调器和路由器功能,该部分主要接收ZigBee终端节点上传的数据以及转发控制数据给终端节点,以及负责和NodeMCU进行通讯。
3 GlOT的实现
通过前面的描述,GIOT系统的实现主要分为如下三个方面:
3.1数据中转站服务的实现
(1)功能和流程描述:利用MQTT服务器进行数据传输、设计WebAPI二次开发接口便于对接其它应用、利用MongoDB保存中间数据和日志,所有功能采用Java语言设计。主要流程为:
第一步订阅网关主题的名称规范,网关数据的主题为“GIOT_网关的MAC”。
第二步订阅WebAPI传入数据的主题名称规范为“WAPI_APP_USER”,根据调用API的验证
用户即可生成。
第三步MQTT订阅和发布的消息以及操作日志等相关数据保存于MongoDB数据库中。
第四步设计数据获取以及控制信息传输的二次开发WebAPI。
(2)主要相关的Java类和功能介绍:
ServerMQTT类:负责向客户端(网关)推送订阅的数据和WebAPI推送订阅的实时数据。
ClientMQTr类:负责获取客户端(网关)和WebAPI发布的实时数据。
WebAPI类:该类主要提供异步和同步二次开发API,方便开发物联网应用的人员进行二次开发。
DataMgrThread类:基于AOP(面向切面编程)技术,监视MQTT和操作日志,把相关数据写入MongoDB数据库中。
3.2 NodeMCU数据转换的实现
(1)功能和流程描述利用NodeMCU的WiFi功能加入无线网络中,通过MQTT与数据中转站相互传输数据,利用UART和CC2530通讯,所有功能采用C语言设计。主要流程为:第一步通过MQTT订阅数据中转站发布的数据,这些数据主要是用户控制信息,接收到这些数据后,立刻放入MQTF接收缓冲区中。开发者可以通过调用WebAPI发送控制信息到对应的物联网终端节点,从而对节点进行控制。
第二步把MQTr传过来的数据通过UART发送给CC2530模块。
第三步发布主题为“GIOT网关MAC”的消息到数据中转站的MQTT服务器上,这些数据主要来自于CC2530通過传感器采集到的数据。
第四步通过UART接收CC2530模块传过来的数据,然后放置到MQTT发送缓冲区中。
开源mqtt服务器
(2)数据格式定义。从数据中转站发送到网关的数据格式为:
(3)主要相关的模块和功能介绍。WiFi连接模块:该模块主要检测WiFi网络连接状态,当网络处于离线状态的时候,自动连接网络和MQTT服务器。
MQTT发布模块:从UART接收队列中获取数据,利用MQTT把数据发布到数据中转服务器上。
MOTT订阅模块:从数据中转服务器获取网关订阅的数据,然后把数据保存于MQTT缓冲区中等待发送到CC2530中。
UART收发模块:建立UART收发队列,准备通过UART发送的数据事先保存于UART发送缓冲区中;从UART中获取的数据保存于接收缓冲区中。数据的收发都是通过队列实现,避免程序等待延时。
3.3 ZigBee协调器和路由器实现
协调器的功能是基于11公司的Z-Stack协议栈而实现的。CC2530在启动的时候充当协调器,当ZigBee网络形成后,协调器就不必存在了,网关的CC2530模块就进入ZigBee的路由器功能。
CC2530网关主要允许终端设备节点加入网络,并且通过ZigBee网络接收终端节点采集的数据,以及通过ZigBee网络发送NodeMCU发送过来的控制数据到终端设备并控制终端节
点。
网关与终端之间的数据格式如下:
4总结
本文设计并实现了一种物联网网关GIOT,它不仅能高效地实现ZigBee网络和传统网络之间的数据相互转发,并且为开发人员提供了二次开发的WebAPI,从而方便通过二次开发获取节点的数据,并传送用户控制信息对终端节点进行控制。
该GIOT设计方案应用到智能蔬菜大棚系统中,运行安全、稳定。该方案经济实惠(成本低于100元)、性能稳定。所以,此方案在物联网应用中有着十分广泛的应用前景。

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