我是靠谱客的博主 单身纸飞机,这篇文章主要介绍ESP8266/ESP32 NodeMCU接入阿里云物联网平台,现在分享给大家,希望可以做个参考。

阿里云物联网平台公共实例是免费的,且不像然也等服务器一样无法区分不同用户发布的话题。本文采用常规的pubsubclient库连接阿里云。ESP8266/ESP32用pubsubclient接入阿里云平台截至写稿的现在,网上有的资源较少,现在我就来介绍一下使用方法

1.登录阿里云官网https://www.aliyun.com/

登录并搜索物联网平台,点击按钮开通公共实例,公共实例开通需要两分钟左右

2.在等待期间可在arduinoIDE,安装PubSubClient库用于MQTT通讯。

官网地址:https://pubsubclient.knolleary.net/

GitHub:https://github.com/knolleary/pubsubclient/

百度网盘下载: https://pan.baidu.com/s/12MHGbdfiOdwOGip5RMSSEQ 提取码: sizy

下载完成后,通过arduinoIDE 项目->包含库->添加.zip库找到安装包存放目录并添加

3.此时阿里云物联网平台已开通,点击进入公共实例,并按以下步骤创建产品

4.单击创建产品后,可设置如下参数,然后点击确定,创建完成

5.点击左侧导航栏设备标题进入并创建设备,选择产品位刚刚创建的产品名称,确认添加

6.在设备列表里点击查看,查看添加设备的参数,点击查看MQTT参数然后复制

要在代码中修改的参数分别为第7步的8,58,59,60行

7.左侧产品导航栏,进入topic类列表,点击自定义topic,这里的topic能在平台日志上查阅

点击复制update那一行的话题,填入第7步的81行,并修改其中参数为自己的devicename

/+/${deviceName}/user/update

这里的话题因人而异,请去自己账号复制

8.打开arduinoIDE将代码复制到IDE中,这里采用了太极创客的代码,并为了接入阿里云做了修改

太极创客MQTT教程:http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-tuttorial/mqtt-tutorial/esp8266-publish-mqtt/

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <ESP8266WiFi.h> #include <PubSubClient.h> #include <Ticker.h> // 设置wifi接入信息(请根据您的WiFi信息进行修改) const char* ssid = "路由器名称"; const char* password = "路由器密码"; const char* mqttServer = "mqttHostUrl"; //*MQTT连接参数你的设备登陆网址*// // 如以上MQTT服务器无法正常连接,请前往以下页面寻找解决方案 // http://www.taichi-maker.com/public-mqtt-broker/ Ticker ticker; WiFiClient wifiClient; PubSubClient mqttClient(wifiClient); int count; // Ticker计数用变量 void setup() { Serial.begin(9600); //设置ESP8266工作模式为无线终端模式 WiFi.mode(WIFI_STA); // 连接WiFi connectWifi(); // 设置MQTT服务器和端口号 mqttClient.setServer(mqttServer, 1883); // 连接MQTT服务器 connectMQTTServer(); // Ticker定时对象 ticker.attach(1, tickerCount); } void loop() { if (mqttClient.connected()) { // 如果开发板成功连接服务器 // 每隔3秒钟发布一次信息 if (count >= 3){ pubMQTTmsg(); count = 0; } // 保持心跳 mqttClient.loop(); } else { // 如果开发板未能成功连接服务器 connectMQTTServer(); // 则尝试连接服务器 } } void tickerCount(){ count++; } void connectMQTTServer(){ // 根据ESP8266的MAC地址生成客户端ID(避免与其它ESP8266的客户端ID重名) String clientId = "clientId"; //*这里的字符串要与自己的设备MQTT参数相同*// String user = "username"; String password = "password"; // 连接MQTT服务器,原代码仅传clientid,通过查阅pubsubclient.cpp可发现多个connect重载 if (mqttClient.connect(clientId.c_str(),user.c_str(),password.c_str())) { Serial.println("MQTT Server Connected."); Serial.println("Server Address: "); Serial.println(mqttServer); Serial.println("ClientId:"); Serial.println(clientId); } else { Serial.print("MQTT Server Connect Failed. Client State:"); Serial.println(mqttClient.state()); delay(3000); } } // 发布信息 void pubMQTTmsg(){ static int value; // 客户端发布信息用数字 // 确保不同用户进行MQTT信息发布时,ESP8266客户端名称各不相同, String topicString = "topic话题名称";//更改自己的devicename char publishTopic[topicString.length() + 1]; strcpy(publishTopic, topicString.c_str()); // 建立发布信息。信息内容以Hello World为起始,后面添加发布次数。 String messageString = "Hello World " + String(value++); char publishMsg[messageString.length() + 1]; strcpy(publishMsg, messageString.c_str()); // 实现ESP8266向主题发布信息 if(mqttClient.publish(publishTopic, publishMsg)){ Serial.println("Publish Topic:");Serial.println(publishTopic); Serial.println("Publish message:");Serial.println(publishMsg); } else { Serial.println("Message Publish Failed."); } } // ESP8266连接wifi void connectWifi(){ WiFi.begin(ssid, password); //等待WiFi连接,成功连接后输出成功信息 while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); } Serial.println(""); Serial.println("WiFi Connected!"); Serial.println(""); }

9.下载置esp8266/esp32开发板,打开串口助手,有些同学会发现“MQTT Server Connect Failed. Client State:2”的错误

参考大神的方法:https://ieeee.blog.csdn.net/article/details/118441704

1.将链接的路由器信号从5GHz设置成2.4GHz

2.修改库pubsubclient.h头文件的参数

这里采用了第二种方法。

a.找到arduinoIDE目录下的libraries文件夹默认位置在 /我的文档/arduino/pubsubclient-版本号/src打开并求改pubsubclient.h头文件,找到MQTT_MAX_PACKET_SIZE,将256修改为1024,再找到MQTT_KEEPALIVE,将15修改为60

b.再次下载程序至开发板,问题解决并在串口助手中输出一下信息,此时开发板已经连接上了阿里物联网平台,并定时向服务器中的topic发布hello world

10.物联网平台打开设备,并查看日志,发现话题中已经有消息输入了

总结:至此,esp8266 nodemcu接入阿里物联网平台方法介绍完毕,接入的关键是阿里云物联网平台的使用以及对arduino库函数的修改。本文采用的参考方法均已给出网址,请大家自行参阅。

最后

以上就是单身纸飞机最近收集整理的关于ESP8266/ESP32 NodeMCU接入阿里云物联网平台的全部内容,更多相关ESP8266/ESP32内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(90)

评论列表共有 0 条评论

立即
投稿
返回
顶部