219335453_基于EMQX云平台与ESP-WiFi-MESH的物联网系统设计与实现_百 ...
0 引言
随着物联网的概念越来越深入人心,市面上出现了许多不同的物联网通信协议,包含:NB-IoT、LORA、WiFi、蓝牙、ZigBee、4G等。在这些协议中,WiFi是使用最广的一种无线网络传输技术。传统基础WiFi网络是一个“单点对多点”的网络。这种网络架构的中心节点称为接入点(AP),其他节点(Station)均与AP直接相连。由于所有Station均需与AP直接相连,这就导致智能设备不能距离AP太远,因此WiFi覆盖区域相对有限。
ESP-WiFi-MESH是乐鑫科技自研的组网技术,它与传统WiFi网络的不同之处在于:ESP-WiFi-MESH中的节点无需连接到中心节点,它可以与相邻节点连接。各节点均可以作为相连节点的数据中继。由于无需受限于距离中心节点的位置,所有节点仍可互连,因此 ESP-WiFi-MESH 网络的覆盖区域更广。由于不再受限于中心节点的容量限制,ESP-WiFi-MESH允许更多节点接入,也不易于超载。
1 系统总体设计
本物联网系统设计的整体方案如图1所示。为了实现物联网功能,本系统选择搭建EMQX物联网平台。EMQX平台是基于Erlang/OTP开发的MQTT消息服务器,是开源社区中最流行的 MQTT 消息服务器。MQTT消息服务器搭建位置选择使用腾讯云服务器,并安装了MySQL作为数据库使用。
终端部分仅需一个物联网网关与MQTT消息服务器进行连接,即可做到数据的上传与接收。所以,在硬件程序的编写中,物联网网关需预先订阅publish_topic与receive_topic 两个主题,分别作为发布数据与接收数据使用。
智能设备可以通过网关上传用户所需的各种信息至MQTT消息服务器中,并经过EMQX中的数据持久化功能将数据转存至MySQL数据库中。使用者在手机中安装可以使用MQTT物联网协议的手机应用(例如:物联网Flow等)建立MQTT的客户端,并发送Json数据到MQTT消息服务器中,经过服务器转发至物联网网关,随后网关将控制信息发至各个子节点的智能设备,设备经逻辑判断后产生相应的动作
图1 物联网系统设计方案
2 系统的硬件设计
本系统内的物联网网关与智能设备均使用ESP8266 NodeMCU开发板进行开发。ESP8266可以作为sta站点直接连接WiFi,也可以作为AP被其他sta站点连接,是一款较受欢迎的物联网芯片。NodeMCU参数见表1所列。
系统设计与实现
阎子繁
(津安(天津)建筑节能设施运营管理有限公司,天津 300202)
摘 要:设计基于EMQX云平台与ESP-WiFi-MESH的物联网系统,该系统将ESP8266-NodeMCU模块作为核心控制部件,使用Arduino IDE平台开发物联网网关与智能设备。智能设备可以通过各类传感器检测到现场状态信息,例如:使用DHT11传感器检测环境温湿度,使用HW-824传感器检测土壤湿度,使用MQ-135传感器监测空气中有害物含量等,随后通过ESP-WiFi-MESH网络连接到物联网网关,并定时将各类状态信息经EMQX平台数据转存至本地/云端数据库中。使用者也可以使用手机软件控制智能设备,例如:使用SRD-05VDC-SL-C继电器模块控制电路的开闭,使用28BYJ-48实现对步进电机的转向速度和旋转角度的控制等。
关键词:ESP-WiFi-MESH;EMQX;云平台;物联网系统;Arduino IDE;物联网网关;智能控制
中图分类号:TP274+.2      文献标识码:A      文章编号:2095-1302(2023)06-0133-05
收稿日期:2022-07-24  修回日期:2022-09-09
数字I/O引脚11
PWM通道11
模拟输入通道(ADC)1
FLASH/MB  4
SRAM/KB160
E2PROM/KB  1
时钟速度/MHz80/160
长度/mm68.6
宽度/mm53.4
3 系统的软件设计
3.1 Arduino IDE
本次智能设备与物联网关的开发烧录使用的是Arduino 基础知识后即可快速入手。
开发不同智能设备所使用的库、方法、变量均不同,但软件主体均包含void setup(){}和void loop(){}两个方法。setup()方法决定了设备上电之后需要初始化运行的各个方法,包含:配置I/O口状态、初始化串口、创建连接、获取各种初始数据等,这些方法在整个阶段只执行一次。loop()方法决定了智能硬件持续执行的方法,包含驱动模块、采集数据、维持客户端心跳等。
3.2 Json格式设计
Json是一种轻量级的数据交换格式,从本质上来讲Json 是字符串,格式一般为:{"name":"value",...},其中,name为数据名称,value为对应的数据值。本系统总共需要构建3种Json格式,格式内容见表2所列。
表2 物联网系统Json格式设计表
数据流向数据格式共有属性特有属性发送时间
物联网关=>智能设备{"func":"0","value":{"node
Id":"***"}}
"func":
0:json携带物联网关
在ESP-MESH网络中
的nodeId
1:json携带着改变智能
设备状态的值
2:json携带着智能设备
当前的状态值
nodeId:物联网关在ESP-MESH
网络中的nodeId
接入时
MQTT消息服务器=>物联
网网关{"func":"1","value":{"Mac":"***
****","state":"*"}}
MAC:智能设备的MAC地址
state:用户控制智能设备的开关状态
物联网关订阅的主题发
来消息,由网关发至
智能设备时
智能设备=>物联网网关{"func":"2","MacAddress":"*****",
"Group":"*","state":{"switch":“1”}}
MacAddress:智能设备的MAC地址
Group:智能设备类型,例如设备等
State:智能设备采集到的状态
智能设备定时发送至物
联网网关,并转发至
MQTT消息服务器时
3.3 物联网网关设计
3.3.1 物联网网关获取WiFi账号密码
物联网网关连接WiFi流程如图2所示
图2 物联网网关连接WiFi流程
物联网网关的setup()方法中,需要首先执行配置WiFi的方法,为了方便用户可以使用普通手机与ESP8266硬件设备进行交互,物联网网关使用了WiFimanager库。WiFimanager库的运行流程如图3所示
图3 WiFimanager库的运行流程
为了防止因为掉电而导致无法连接WiFi的错误,获取到的WiFi账号密码将被存储进E2PROM(可擦编程只读存
ESP-WiFi-MESH的实现需要在物联网网关的setup()方法中进行mesh网络的初始化,表3具体描述了mesh网络的初始化所需方法的方法名、方法作用以及方法参数的含义。操作,表4具体描述了物联网网关与MQTT消息服务器连接、发布、接收等动作所需方法的方法名、方法作用以及方法参数的含义。
表3 初始化mesh网络的方法
方法方法作用方法内参数含义
mesh.init(String ssid,String password,uint16_t port,WiFiMode_t
connectMode)用于初始化ESP-WiFi-
MESH网络
1.ssId(mesh网络Id)
2.password(mesh网络密码)
3.port(mesh网络端口)
分别为sta、ap、sta+ap)
后执行的方法
&newConnectionCallback(当mesh网络中有新的设备接入后
执行的方法体)
mesh.sendSingle(uint32_t nodeId, String send_mess)将send_mess发送到具有
Id为 nodeId的节点
2.send_mess(需要发送的信息)
与网格时间同步时触发
&nodeTimeAdjustedCallback(相连的节点之间每60 s校准一次
时间,每当校准时间时需要执行的方法体)
时,这个回调就会被调用&receivedCallback(当前节点接收到来自其他节点消息时
需要执行的方法体)
mesh.stationManual (String ap_ssid,String ap_passwd)将节点作为sta接到WiFi
1.ap_ssid(WiFi的账号)
怎么破解wifi密码
2.ap_passwd(WiFi的密码)
mesh.update()维持mesh连接—
表4 MqttClient对象方法
方法方法作用方法内参数含义
mqttUserName,char* mqttPasswor)创建与MQTT消息服务器的连接
1.clientId(使用者端Id)
2.mqttUserName(MQTT服务账号)
3.mqttPassword(MQTT服务密码)
mqtt.state()获取当前MqttClient连接状态—
mqtt.subscribe(recive_topic, subQoS)MQTT对象订阅对应主题
2.subQoS(订阅Qos低等级)
mqtt.publish(public_Topic, publishMsg)MQTT对象向对应主题
发布消息
1.public_Topic(发布主题)
2.publishMsg(发布消息体)
mqtt.setServer(mqttServer, mqtt_port)MQTT对象获取MQTT消息服务器
Ip、端口
1.mqttServer(MQTT消息服务器Ip)
2.mqtt_port(MQTT消息服务器端口)
mqtt.setCallback(mqtt_receiveCallback)MQTT订阅主题后如果
获取到信息后触发方法
mqtt_receiveCallback(MQTT消息服务器
获取到信息后触发的方法)
mqtt.loop()维持MQTT心跳—
4 系统运行结果
4.1 实验设计
基于以上的系统设计,本次实验将制作1个物联网网关与1个智能插座进行实验。物联网网关仅使用ESP8266-NodeMcu作为数据处理即可,无需其他模块配合。智能插座需搭配SRD-05VDC-SL-C继电器模块与ESP8266-NodeMcu
(1)智能插座通过物联网网关上传当前电路的通断状态到MQTT 消息服务器,并存储在数据库中。
(2)用手机向MQTT 消息服务器发送控制信息并通过网关发至智能插座做到控制插座电路通断。4.3 实验过程
(1)在
Arduino 平台中将写好的代码分别烧录进不同的ESP8266-NodeMcu 中。
(2)物联网网关烧录完成后,需要使用WiFimanager 进行配置以及WiFi 账号密码的获取。配置界面如图4所示。
图4 WiFimanager 配置页面
(3)后续配置由硬件代码自行完成即可,完成内容有:①物联网网关连接MQTT 物联网平台;
②物联网网关创建ESP-WiFi-MESH 网络并自动下发根节点nodeId 至各个子节点;
③物联网网关监听来自MQTT 消息服务器下发的包含控制内容的Json ,并发至各个子节点;
④智能设备每60 s 上传一次电路状态至物联网网关
,并由网关上传数据至MQTT 消息服务器。
(4)在“物联Flow ”APP 中添加控制内容,添加界面如图5所示
图5 APP 设置界面
4.4 实验结果
4.4.1 物联网网关连接MQTT 平台
在配置好WiFi 之后,物联网网关会执行MQTT 消息服务器的连接操作,当连接成功之后会在串口输出以下信息,
图6 串口输出MQTT 消息服务器配置
4.4.2 创建ESP-WiFi-MESH 网络
在创建好mesh 网络之后,物联网网关和智能插座均在串口输出,内容包括mesh 网络ssId 、新增节点nodeId ,如图
7所示。
图7 串口输出mesh 网络新节点相关内容
4.4.3 上传数据至MQTT 消息服务器
智能插座每60 s 会上传一次电路状态,上传之后会在串口输出上传内容及根节点的nodeId ,输出内容如图8所示。
图8 串口输出电路状态
4.4.4 控制智能硬件
本次实验通过“物联Flow ”进行控制信息的发送,控制界面如图9所示。在点击“关闭”后,会如图10(a )一样,
继电器灯亮,电路断路;在点击“开启”后,会如图10(b )一样,继电器灯灭,电路连接。
图9 控制界面
图10 手机控制结果展示
4.4.5 数据库中的数据
智能插座通过物联网网关上传至MQTT 消息服务器,并通过规则存储在数据库不同的表中。图11为设备状态表,在本表中,MacAddress 为智能插座的MAC 地址,switch_state 为电路开闭状态。截图时,继电器开路,所以状态 值为0。
图11 智能设备状态表
图12为物联网网关-智能设备MAC 地址对照图。智能插座需要通过物联网网关进行控制信息发,所以在本系统中需要网关和智能设备的MAC 地址。
图12 智能设备对照图
5 结 语
本文设计一种基于EMQX 云平台与ESP-WiFi-MESH 网络的物联网系统,该系统能够较好地完成用户对智能家居设备进行操作以及智能设备状态上传等操作。不仅如此,本系统整体构造简单,方便用户上手操作,仅需配置WiFi 与物联网APP 即可做到操作智能设备。
本系统已做出基本的物联网平台框架,后续的设计中将
[1]赵炯,毕庄阳,熊肖磊,等.基于ESP-WiFi-MESH 的扶梯数据采集系统[J].机械工程与自动化,2022,52(1):178-180.
[2]于海飞,张爱军.基于MQTT 的多协议物联网网关设计与实现 [J]. 国外电子测量技术,2019,38(11):45-51.
[3]龙巧玲,牛德雄,林利云.基于OneNET 云平台与物联网MQTT 协议的智慧节能控制系统[J].计算机测量与控制,2021,29(7):127-130.
[4]范兴隆. ESP8266在智能家居监控系统中的应用[J].单片机与嵌入式系统应用,2016,16(9):52-56.
[5]王浩.基于ESP32平台和MQTT 协议的远程控制系统设计[J].软件工程,2020,23(8):38-41.
[6]王昊宇,李国利,周创,等.基于ESP8266的温室大棚远程监控系统设计[J].科技创新与应用,2021,11(6):53-56.
[7]薛迪杰.基于ESP8266的物联网远程监控系统[J].电子制作,2021,18(11):34-37.
[8]幸大树,佘文魁,顾思明,等.基于Emqx broker 架构的物联平台设备数据安全研究[J].科技资讯,2021,19(12):54-57.
[9]苏强卫.嵌入式操作系统在Arduino 平台部署实现的研究[D].广州:华南理工大学,2018.
[10]张世坤,黎思如,李文华,等.基于ESP32智能模块化插座的
设计[J].信息通信,2020,34(4):85-86.
作者简介:阎子繁(1996—),男,学士,助理工程师,研究方向为软件工程。
用户页面,使用简单的操作就可以对温室大棚进行控制,在管理Web 应用程序时提供了极大的便利。阿里云平台为系统提供了数据转储、发布、处理、应用等功能,在人机交互方面有着很好的表现[11]。
5 结 语
传统温室大棚在农作物收益方面取得的效果并不理想,消耗人力严重,难以实时获取棚内作物生长的环境温湿度、土壤pH 值、CO 2浓度以及棚内紫外线强度等信息,棚内生产大部分依靠人力完成,人工成本较高。针对传统大棚暴露出的问题,设计智慧温室大棚系统以实现温室大棚的智能化管理。智慧温室大棚系统基于微控制器、传感器、通信模块、显示屏等部件,利用现代化的环境感知和智能控制技术提高棚内作物生产的智能化水平。智慧温室大棚作为我国智慧农业发展的重要组成部分,能够进一步推动传统温室大棚升级转型,加快我国乡村振兴。
[1]单兴巧.基于STM32的分布式农业大棚监控系统的设计:终端
节点的设计[J].电子元器件与信息技术,2021,5(2):19-20.[2]彭高丰.温室大棚环境智能自动测量与调节系统研究[J].计算机测量与控制,2012,20(10):2664-2665.
[3]向鹏俊.基于STM32的智能大棚环境监测管理系统的设计与实现[J].物联网技术,2022,12(6):9-13.
[4]张悦斌,李金娴,余钊炜,等.基于IoT 的智能病床系统设计与实现[J].电子制作,2022,30(11):68-70.
[5]吴超,赵红.基于云平台的智慧农业信息系统设计与实现[J].电脑知识与技术,2022,18(15):117-119.
[6]韦创炜,陈世龙,周晓倩,等.基于STM32F407单片机的纸张计数装置设计[J].电子制作,2022,30(2):3-5.
[7]黑小东,伊婧文,苏佳福,等.基于STM32控制的智能收纳系统探讨[J].中国高新技术企业,2017,24(2):74-75.
[8]张丹,王建华,吴玉华.物联网技术在农业温室大棚中的应用研究[J].安徽农业科学,2013,41(7):3218-3219.
[9]王怀宇,赵建军,李景丽,等.基于物联网的温室大棚远程控制系统研究[J].农机化研究,2015,37(1):123-127.
[10]欧阳亚,石克勤,张奇,等.基于阿里云的单技术在输电
线路中的应用[J].地理空间信息,2020,18(6):113-116.[11]骆小龙,虞开森,余金铭,等.基于阿里云的台风路径实时发布
系统研究[J].计算机时代,2015,33(2):15-18.
作者简介:李开旭(2002—),男,山东济南人,本科在读,研究方向为智能控制与机器学习。
(上接第132页)

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