当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘 要 :设计了一种基于 ESP8266 WiFi 模块和 MQTT 协议的物联网传感节点,该节点具有数据采集、数据上报和远程控制功能。传感节点通过轻量级物联网 MQTT 协议与数据采集中心通信,数据采集中心能够自动识别和实时显示传感节点的采集数据。实验证明,所设计的传感器节点可靠、扩展性强、通用性好。

0 引 言

随着物联网技术日趋成熟,物联网已被广泛应用在医疗、交通与物流、能源与公用事业、零售业等领域 [1]。据思科公司(Cisco)思科视觉化网络指数显示,到 2022 年全球有超过半数设备和连接将会是机器对机器(M2M)的互联,比2017 年增加 34%。智能音箱、固定设备、移动设备及其他物件的连接数将从 2017 年的 61 亿增至 2022 年的 146 亿 [2]。互联设备的数量和类型越来越多,应用环境日趋复杂,实现资源有限或带宽有限环境下的传感器联网和保证传感数据的可靠传输成为物联网技术应用应重点考虑的问题之一。

物联网传感节点作为物联网和物理世界交互的边界节点,负责信息的采集和简单处理,与将数据传输到应用层进行数据分析和处理 [3]。传感器节点的通信方式主要分为近距离通信和远距离通信,传感器节点之间一般采用短距离无线通信,如蓝牙,ZigBee,WiFi等 ;传感器与物联网云服务器或应用服务器采用远距离通信,如固网、移动网络

(2G/3G/4G)、NB-IoT网络等。无线网络连接类型(WiFi、移动网络)是主流。现在越来越多的应用场合要求传感器节点自带接入网关,即支持物联网网络接入服务。由于传感器节点资源有限,受 CPU处理能力、内存等限制,通常在LwIP协议栈上采用轻量级物联网传输协议。目前,应用最广泛的物联网标准传输协议包括 MQTT、CoAP。MQTT是一种在 TCP/IP协议上的基于订阅 /发布模式的轻量级传输协议, 适用于引入第三方云平台的物联网应用。CoAP 即约束应用协议,类似 HTTP,是一种文档传输协议,也是一种基于请求 / 响应的客户端 / 服务器端轻量级 UDP 传输协议,适合将物联网应用嵌入到现有 Web 服务器中 [4]。

本文基于 ESP8266 WiFi 模块和 MQTT 协议设计了一种低成本物联网传感节点,以 ESP8266 嵌入式处理器为核心,采用 AM2302 传感器采集温湿度数据,进行简单处理后将传感数据通过 MQTT 协议发布到百度天工物联网云平台IoTHub。数据采集中心采用 Visual C# 实现,能自动识别传感节点和订购传感器的数据,可保存、处理和显示传感节点的温湿度数据。数据采集中心可通过云平台 IoTHub 下发命令,实现传感器节点参数配置并让传感节点执行指定操作(打开/ 关闭继电器)。传感器节点性能可靠,扩展性强,通用性好。

1 系统总体结构

系统由传感节点、数据采集中心和百度天工物联网云平台组成,如图 1 所示。传器节点由ESP8266 和 AM2302 构成, 实现温湿度的采集和上报 ;数据采集中心基于 Visual C# 开发,实现传感数据的接收、存储、分析和显示 ;百度天工物联网云平台 IoTHub 作为 MQTT 消息代理,负责主题订阅管理、消息转发和缓冲,实现传感节点与数据采集中心的信息交互。传感节点与数据采集中心的交互数据类型为 JSON 格式。

基于 ESP8266WiFi 模块和 MQTT 协议的物联网传感节点设计

2 传感节点设计

传感节点负责采集感知对象相关信息,并通过相应的通信模块将数据通过 MQTT 消息代理推送到远端数据采集中心。

2.1 硬件设计

传感节点以 ESP8266EX WiFi 模块为核心,通过 I/O 外接传感器 AM2302 及其他设备。传感节点硬件框图如图 2 所示。

基于 ESP8266WiFi 模块和 MQTT 协议的物联网传感节点设计

ESP8266 WiFi 模块集成了一 ESP826EX 芯片和一 4 MB SPI FLASH,带有 PCB WiFi 天线,支持三种 WiFi 工作模式(SoftAP,Station,SoftAP+Station)。ESP826EX 拥有完整的 WiFi 功能,内嵌 Tensilica’s L106 32 位内核处理器,CPU 时钟速度为 80 MHz,最高可支持 160 MHz,集成片上 SRAM, 可独立作为 MCU 并通过 I/O 外接传感器实现物联网应用。ESP8266 WiFi 模块支持 IEEE802.11 b/g/n 无线标准与 IPv4, TCP/UDP/HTTP/MQTT 等协议 [5]。AM2302 是一款含有已校准数字信号输出的温湿度复合传感器,它包括一个电容式感湿元件和一个高精度 NTC 测温元件。AM2302 的温度测量精度为 1 ℃,湿度测量精度在 5% 以内 [6]。AM2302 与ESP8266EX 通过单总线协议通信,占用一个 GPIO 端口。

2.2 软件设计

传感节点软件基于 NodeMCU 固件开发。NodeMCU 固件使用 Lua 脚本语言编程,在乐鑫 ESP8266 Non-OS SDK 上开发而来。NodeMCU 固件封装了 ESP8266 硬件操作的应用编程接口函数 API,同时还提供 I2C,SPI,UART 等外设总线驱动函数及 OLED/TFT 显示驱动、各种类型传感器驱动、网络协议库(TCP/UDP,HTTP,MQTT 等),开发者无需了解底层硬件驱动即可快速开发应用。传感节点程序主要通过数据采集模块、MQTT 客户端和网络连接模块实现。数据采集模块负责定时读取温湿度数据 ;MQTT 客户端负责维护与MQTT 消息代理 IoTHub 的连接、发布传感数据、接收并响应数据采集中心的命令 ;网络连接模块负责 WiFi 连接。系统软件主流程如图 3 所示。

2.2.1 数据采集模块

数据采集模块创建了一个 tmr 定时器,周期调用 dht 库的 read()函数读取温湿度数据,再使用 string.format 函数将温湿度数据转换为 JSON 格式。读取传感器数据代码 :

pin = pin or 2

status,temp,humi,temp_dec,humi_dec = dht.read(pin)

将温湿度转换为 JSON 格式代码 :

topicmsg='{"reported" :{"time" :"%d","temperature" :%0.2f,

"humidity" : %0.1f}}'

msg = string.format(topicmsg,rtctime.get(),temp,humi)

基于 ESP8266WiFi 模块和 MQTT 协议的物联网传感节点设计

2.2.2 MQTT客户端

传感节点和数据采集中心基于订购 / 发布机制的 MQTT 协议通信进行信息交互。传感节点和数据采集中心作为MQTT 客户端,百度 IoTHub 云平台作为 MQTT 代理。消息的发布和订购基于主题(topic)进行。MQTT 代理负责管理订阅关系或缓存消息(保留标志为真的消息),将消息转发给已订阅主题的 MQTT 客户端。为了实现传感节点与数据采集中心的数据交互,两者发布与订阅的主题见表 1 所列。

传感节点 MQTT 客户端初始化代码如下 :

基于 ESP8266WiFi 模块和 MQTT 协议的物联网传感节点设计

msghandler 为订购消息处理函数,用于解析和处理从数据采集中心收到的 JSON 格式数据。JSON 数据采用键(key) 值(value)对结构,key 可用来表示消息类型,value 为消息内容。JSON 格式数据用 sjson 模块的 decode()函数解析成 table 表格数据。传感节点调用 publish 函数向某个主题发布消息, 语法 :mqtt :publish(topic,payload,qos,retain[,function(client)])。topic 是发布的主题 ;payload 为将发布的消息 ;qos 为QoS 服务质量 ;0 表示只发送最多一次便可送达,1 表示至少一次可送达,2 表示一次便到达 ;Retain 为保留标志,指示服务端是否需要存储当前消息 ;function(client) 为消息发布成功回调函数,在收到代理发布确认 PUBACK 消息后执行函数。

基于 ESP8266WiFi 模块和 MQTT 协议的物联网传感节点设计

3 数据采集中心设计

数据采集中心负责传感节点的管理及传感数据的显示, 其中传感节点管理包括节点自动识别、节点主题订阅、节点控制等。数据采集中心与传感节点通过 MQTT 协议的订购 / 发布机制进行异步通信,两者不必知道对方的 IP 地址,所有消息均通过 MQTT 消息代理转发。数据采集中心识别传感节点流程如图 4 所示。传感节点上线时向主题 $baidu/iot/ general/data/id/status 发布保留标志为真的消息“online”,离线时通过最后遗嘱(Last Will)发布离线消息“offline”。数据采集中心连接到 MQTT 消息代理 IoTHub, 在订阅主题$baidu/iot/general/data/+/status 后,会收到所有传感节点的状态消息,从消息主题解析出节点 ID(+ 通配符所对应的字段),如果是新节点,则先添加节点再更新状态,否则直接更新节点状态。

基于 ESP8266WiFi 模块和 MQTT 协议的物联网传感节点设计

数据采集中心订购传感节点主题 $baidu/iot/general/data/ id/data 后, 当传感节点向此主题发布消息时, 消息代理IoTHub 将会把消息转发给数据采集中心。数据采集中心收到传感节点数据后,解析 JSON 格式消息获得消息的数据类型。如果是传感数据,则存储后显示 ;如果是传感节点配置信息,则存储到节点信息。信息处理流程如图 5 所示。

基于 ESP8266WiFi 模块和 MQTT 协议的物联网传感节点设计

数据采集中心界面如图 6 所示。界面上部分显示节点列表及最新的节点传感数据,下部分显示节点数据曲线图。

基于 ESP8266WiFi 模块和 MQTT 协议的物联网传感节点设计

4 结 语

本文设计了基于 MQTT 协议的物联网传感节点,采用ESP8266WiFi 模块 + 传感器采集数据与 NodeMCU 物联网平台的 MQTT 模块实现传感节点与数据采集中心交互,数据采集中心采用 Visual C# + MQTTnet 库实现传感节点的自动识别与控制、传感节点数据的存储与显示。系统运行稳定,扩展性强,搭配不同传感器就能实现特定的物联网传感节点。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭