基于NodeMcu 和MQTT 协议的物联网网关设计

2020-01-14 01:06熊梦彪周龙丽陈佳音黄康辉
数字通信世界 2019年12期
关键词:字节报文消息

熊梦彪,高 誉,周龙丽,陈佳音,黄康辉

(西北民族大学数学与计算机科学学院,兰州 730124)

随着计算机通讯技术不断的发展,物联网产业落地的前景也变得越来越明朗。尤其是随着5G 的投入使用,未来可以预见智能家居、智慧城市等产业将变成我们生活不可或缺的一部分。

在物联网如火如荼的大背景下,对处理海量数据以及高效传输势必带来更高的功耗。由于当下的能源技术难以取得突破发展,因此物联网系统的功耗将严重物联网产业的落地。因此如何降低物联网系统结构的功耗问题将是重中之重。

1 系统设计

1.1 MQTT 协议

在数据报文发送的应用层协议采用了消息队列遥测传输协议(MQTT),MQTT 是一种传输层协议以TCP 协议为核心的应用层协议,基于发布/订阅模式的一种轻量级协议。这种协议应用之初便是为了传感器数据采集使用,可以做到使用极少的代码量以及极低的带宽便可接入网络,为物联网组件接入远程终端设备提供极大的便利。

采用MQTT 协议的最重要原因在于其在编程时具有高度抽象的特点,对于开发人员来说,这种基于发布/订阅的消息传输方式类似于广播消息。开发人员只需要在远程终端订阅特定传感器的主题消息,而传感器节点只需要将所有消息统一按照MQTT协议打包发布即可,而服务器会根据各个客户端订阅的消息进行分发。相较于TCP 协议直接广播路由的方式相比,这种由MQTT 进行消息分发的机制具有更高的性能。

正如HTTP 在万维网应用中的地位一样,MQTT 协议能够像HTTP 协议为人们网络交流铺平道路一样将几十亿嵌入式、低成本数据采集设备连接到各类网络当中。

1.2 EMQ

当下MQTT 服务器代理种类繁多, 如基于C++ 的Mosquitto,基于Java 的Moquette,以及各大厂商的公有云平台,如阿里云的LMQ,腾讯云的Iot-MQ 等。但在开源社区最活跃、功能最全的代理当属EMQ。EMQ 是一个基于Erlang 语言的开源mqtt 服务器,功能全面,文档齐全。由于EMQ 在开源社区的高度活跃性,因此也具备了更好的技术支持。

1.3 传感器网络报文设计

由于在整个传感器组成的网络中只有一个或多个网关节点采用TCP/IP 协议与外部互联网通信。因此对于内部局域网需要一个统一的报文格式以区分网络中不同的传感器节点并将其消息转发。报文格式如表1所示:

表1 报文格式

其中,传感器ID 编号1和传感器ID 编号2总共占报文段中两个字节,即整个网络中传感器数量可支持达到65536个,第一个字节表示报文总长度只占一个字节,即整个报文段最多长度支持255个字节。数据段长度不限,只需满足整个报文长度小于256个字节即可,而CRC 校验码值指循环校验码,用于验证报文在通信过程中有没有发生误码的现象。

2 硬件选型

2.1 ESP8266

ESP8266集成了32位Tensilica处理器、低噪放大器、天线开关、射频balun、标准数字外设接口、功率放大器、过滤器和电源管理模块等,只需要很少的外围电路即可完成整个核心系统的设计,因此可以将所占PCB 空间降低。正是基于以上的特点,ESP8266是专为移动设备和可穿戴电子产品等物联网应用而设计的。

2.2 NodeMcu

NodeMCU 是安信可基于ESP8266模组所设计的核心开发板。在PCB 设计时引出了所有ESP8266的IO 引脚功能,能够完整的实现ESP8266的所有功能。并且对于ESP8266传统采用C 语言编程的方式,NodeMcu 集成了Lua 语言,并对原来的IO 口引脚进行了重新定义,这种新的定义只是对IO 口进行重新映射编号,对原来的C 语言编程方式并没有影响。

2.3 Lua 语言

NodeMcu 支持Lua 语言编程,虽然NodeMcu 本质是集成了ESP8266模组,可以绕过NodeMcu 的硬件封装而直接使用C 语言编程,但是Lua 语言作为一种完美嵌入C/C++语言的一种脚本语言,开发便捷以及高效等特点是C 语言无法相比较的。

3 结束语

本文提出了基于NodeMcu 使用Lua 语言编程设计的物联网网关,并自定义了传感器网络中的报文格式,将网关组进传感器网络中,可以将局域网中的数据后,将数据报文上报给EMQ 服务器代理。更重要的是,在NodeMcu 中集成的Lua 语言固件已经封装了完整的MQTT 协议的应用接口,开发者可以快捷的调用Lua 语言固件接口,短短几行代码便可以完成MQTT 客户端创建,数据报文收发的回调函数的创建,因此具有开发效率高的特点。

猜你喜欢
字节报文消息
基于J1939 协议多包报文的时序研究及应用
No.8 字节跳动将推出独立出口电商APP
CTCS-2级报文数据管理需求分析和实现
一张图看5G消息
浅析反驳类报文要点
No.10 “字节跳动手机”要来了?
基于MSP430的四旋翼飞行器的S-BUS通信协议的设计与实现
ATS与列车通信报文分析
消息
消息