文章目录

  • 一、创建阿里云平台
  • 二、使用AT指令使ESP12F连接阿里云平台
  • 总结


准备工作:给ESP12F烧录MQTT固件,可以参考我的上篇文章
《零基础STM32+ESP12F+MQTT连接阿里云服务器完整流程(一、给ESP12F烧写AT/MQTT固件)》

一、创建阿里云平台

  1. 登录阿里云物联网平台,自己创建阿里云账号开通物联网平台。
  2. 点击公共实例——点击设备管理——点击产品——点击创建产品
  3. esp32服务端与多客户端连接通讯 esp32做服务器_阿里云

  4. 设置产品名称(我以TestDevice为例)
  5. esp32服务端与多客户端连接通讯 esp32做服务器_物联网_02

  6. 点击设备——添加设备(我以STM32F103C8T6为例)
  7. esp32服务端与多客户端连接通讯 esp32做服务器_esp32服务端与多客户端连接通讯_03

  8. 找到我们新建的产品TestDevice——点击查看——点击功能定义——点击编辑草稿
  9. esp32服务端与多客户端连接通讯 esp32做服务器_esp32服务端与多客户端连接通讯_04

  10. 点击添加自定义功能,设置参数如下所示,之后发布上线。
  11. esp32服务端与多客户端连接通讯 esp32做服务器_物联网_05

  12. 点击设备——找到刚刚创建的设备(STM32F103C8T6)——点击查看——一键复制 设备三元组以便后续步骤进行。
  13. esp32服务端与多客户端连接通讯 esp32做服务器_esp32服务端与多客户端连接通讯_06

以上 步骤就是创建阿里云平台的所有步骤。

二、使用AT指令使ESP12F连接阿里云平台

  1. 利用阿里云物联网平台配置工具生成设备信息。将自己三元组复制到右侧(TimeStamp不填,Clientld填五位数。不然连接阿里云时可能会报错连接不上)点击生成生成相关信息。
配置工具
链接:https://pan.baidu.com/s/1cXLG0MeSnBSy53SeIoqr3g 
提取码:hrwc

esp32服务端与多客户端连接通讯 esp32做服务器_esp32服务端与多客户端连接通讯_07


将连接域名、Clientld、Username、Password四个信息复制粘贴保存下来,以便后续相关步骤的进行。

2. 打开串口调试助手,输入相关AT指令连接阿里云服务器

(2)连接阿里云ESP8266+AT指令
①AT+RST                                      //重启设备
②AT+CWMODE=1                                 //设置ESP12F为Station模式,可以连接WIFI
③AT+CIPSNTPCFG=1,8,"iot.console.aliyun.com"  //开启SNTP服务器,这一步为固定步骤
④AT+CWJAP=“abgo”,“1234567889”                //连接WIFI,记得改为自己的手机热点
⑤AT+MQTTUSERCFG=0,1,“NULL”,“Username”,“Password”,0,0,""                      //配置 MQTT 用户属性,要将Username、Password改为用配置工具生成的自己的设备信息
⑥AT+MQTTCLIENTID=0,“Clientld”                //配置 MQTT 客户端 ID,记得将Clientld改为自己的设备信息,而且在逗号前面要加一个转义符号“\”  可以看我下面的图片
⑥AT+MQTTCONN=0,“连接域名”,1883,1             //连接/查询 MQTT Broker,注意将连接域名改为自己的设备信息

得到如下结果

esp32服务端与多客户端连接通讯 esp32做服务器_stm32_08


此时打开阿里云服务器,可以看见我们创建的设备此时已经在线,如下图

esp32服务端与多客户端连接通讯 esp32做服务器_esp32服务端与多客户端连接通讯_09

  1. 通过订阅与发布实现通信

订阅与发布是MQTT协议的核心内容,大家可以稍微去学习了解一下。我在这里举一个例子以便大家了解。我们平时无聊时候就会去刷抖音,抖音系统就可以很好解释MQTT协议。我们(客户端)会订阅我们喜欢的博主,而抖音就像 一个服务器,当我们已经订阅过的博主发布新的作品时,抖音就会自动的推送给我们。APP通过阿里云控制单片机的思路如下

esp32服务端与多客户端连接通讯 esp32做服务器_阿里云_10

(1)我们可以在阿里云平台自己创建的产品中查看topic列表。点击产品——topic列表——物理型通信topic,可以看到很多的topic(注意在我们自己要用topic时要把${devicename}改为自己设备的devicename)

esp32服务端与多客户端连接通讯 esp32做服务器_阿里云_11

我们也可以自定义topic,点击自定义topic——点击topic类,其中权限和名字都可以自己设置。

esp32服务端与多客户端连接通讯 esp32做服务器_stm32_12

  1. 进行通信测试——订阅主题(以订阅自定义类topic为例)
//订阅示例代码
 AT+MQTTSUB=0,"topic",1   //订阅

在串口调试助手中继续发送指令

esp32服务端与多客户端连接通讯 esp32做服务器_stm32_13


在阿里云服务器我们的设备中可以看到我们订阅的topic,在阿里云中的topic上发送消息,串口也会打印出接收到的消息

esp32服务端与多客户端连接通讯 esp32做服务器_服务器_14


esp32服务端与多客户端连接通讯 esp32做服务器_物联网_15

  1. 进行通信测试——发布主题(以订阅自定义类topic为例)
// 发布示例代码
AT+MQTTPUB=0,"topic","test",1,0

在串口调试助手中继续发送指令可以看到如下结果(因为我们已经订阅该主题,所以发布消息后立即会推送给他自己)

esp32服务端与多客户端连接通讯 esp32做服务器_stm32_16


或者也可以在阿里云的日志服务里看到阿里云与ESP12F之间的数据交互

esp32服务端与多客户端连接通讯 esp32做服务器_阿里云_17

总结

大家需要好好理解MQTT协议的订阅与发布(其实道理很简单),一定要弄懂后边通过订阅与发布实现通信的过程,搞清楚是谁发送给谁的消息。
另外最后我是以自定义topic为例子,大家也可以自己尝试订阅与发布物理型模型,不过发送接收数据要用jason格式,可以参考其他博主文章进行操作理解。

下一步
《零基础STM32+ESP12F+MQTT连接阿里云服务器完整流程(三、STM32通过代码连接阿里云服务器)》