600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > ESP32 WIFI MESH学习笔记7-物联网与控制(ESP32部分)

ESP32 WIFI MESH学习笔记7-物联网与控制(ESP32部分)

时间:2023-11-19 17:52:28

相关推荐

ESP32 WIFI MESH学习笔记7-物联网与控制(ESP32部分)

ESP32 WIFI MESH学习笔记

文章目录

前言一、服务器部分二、ESP32部分1.引入例子2.修改用户名称及密码3.初始化IOT登陆信息4.初始化5.侦听函数6.主函数7.子节点程序三、程序验证

前言

前文(笔记6)已完成带websever根节点的MESH网搭建,并实现了通过访问web节点控制子节点设备。但使用物联网的形式,会更容易地实现设备的远程监控本文将记录通过WIFI把Mesh网接入MQTT服务器,实现向MQTT服务器收发信息的功能。

一、服务器部分

为方便学习,本次使用简单的DFOBOT的MQTT服务器,地址为: 。第一次使用需进行注册,这里不再介绍。

注册完成后,记下用IOT用户名iot_id(user )和密码Iot_pwd(password)。注意不是登陆iot.dfrobot的用户名和密码 ,如下图:

然后新建一个设备,如下:

记下topic名称,服务器的设置就完在了。

二、ESP32部分

1.引入例子

加载例子 mqttbrtdge,如下图:

2.修改用户名称及密码

修改下图中MESH网名称、密码,以及可接入公网的WIFI名称及密码。

需注意的是,如接家用WIFI不能接5G,只能接4.2G。我还是用手机热点进行连接。方便查看是否已接入。

然后,我们需要生成以下对象

painlessMesh mesh;WiFiClient wifiClient;PubSubClient mqttClient(mqtt_Broker, 1883, mqttCallback, wifiClient);

3.初始化IOT登陆信息

在程序前段,声名登陆信息(指针变量),如下:

我还增加两个变量,分别记录访问IOT时,需要提供访问设备的名称, 以及是否已连接到IOT服务器

4.初始化

初始化部分与websever部分相同,不再累述。传送门

5.侦听函数

当侦听到话题内容时,把内容从串口打印出来,并向全网广播:

代码如下

void mqttCallback(char* topic, uint8_t* payload, unsigned int length) {char* cleanPayload = (char*)malloc(length+1);memcpy(cleanPayload, payload, length);cleanPayload[length] = '\0';String msg = String(cleanPayload);Serial.printf(" Received msg=%s\n", msg.c_str()); free(cleanPayload);String targetStr = String(topic);Serial.printf(" Received rargetStr=%s\n", targetStr);mesh.sendBroadcast(msg);}

6.主函数

主函数比较简单,

mesh.update();mqttClient.loop();

由于发现wifi不时会掉线,增加了以下代码,用于掉线后重新接入mqtt服务器。

if (!mqttClient.connected()){Mqtt_connected =0;} if (mqttClient.connect(client_id.c_str(), MQTT_UserID, MQTT_UserPW)&&Mqtt_connected == 0) {Mqtt_connected = 1;Serial.println("Public emqx mqtt broker connected");mqttClient.publish(Topic, "Hi EMQ X I'm ESP32 ^^");mqttClient.subscribe(Topic);}else {delay(1000);}

至此,MESH网的根节点程序已完成。

7.子节点程序

子节点程序与笔记6一致。不累述传送门入口

三、程序验证

打开手机WIFI ,分别给三块ESP32加电。其中根节点用电脑USB口加电。

打开IDE的串口监视器,稍等一段时间后,会有 “Public emqx mqtt broker connected” 字样。此时,说明我们的MESH网已接入MQTT服务器。

我们打开MQTT服务器对应话题板,会发现写入了“Hi EMQ X I’m ESP32 ^^”字样,说明已经把信息写入了MQTT的话题 板,如下图

我们再向这个话题板发送Led_1_on,以及Led_1_off 的信息,如下图

回到我们的串口发监视器,会有以下内容:

如果我们按笔记6的程序编写子节点的程序,我们会发现节点1的红灯会亮起来。

此时再发送Led_1_off,节点设备上的红灯会熄灭。说明我们可以通过MQTT的话题板控制节点设备了。

以上就是今天的笔记,谢谢观看!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。