ESP8266 MQTT固件透传连接微软IOT物联网平台

时间:2024-03-18 10:57:41

一. 前言

大家都知道国内的很多物联网平台都开放MQTT对接,作为主流的物联网数据传输协议,那国外的呢?所以我这边就挑选一个国外的平台来做演示,今天选中的是微软 IOT平台(Azure IOT)。

二. 前期准备工作

此次测试呢大量的工作是在准备工作上,对于没有经验的朋友的话可能会花费大量时间,数据测试部分呢就是几条指令的问题,所以下面的流程比较繁琐一些,大家可以耐心看。

2.1硬件准备

  • nodeMCU开发板
  • usb转ttl的调试工具
  • 母头杜邦线X4
  • Micro-USB数据线

2.2烧录固件

这里我们可以直接购买安信可这边已经烧录好的开发板,也可以拿来自己手动烧录,过程比较简单,直接用modeMCU接上USB线插入电脑端进行烧录,烧录可以参考链接中的教程——烧录教程
ESP8266 MQTT固件透传连接微软IOT物联网平台

2.2接线以及测试

接线部分我们参照固件的说明,需要用IO13和IO15来做AT串口调试,所以我们先参照开发板原理图来找出IO13和IO15对应的脚位为D7和D8,对应关系参考下表:

NodeMcu USB转TTL工具
D7 TXD
D8 RXD
3.3V VCC
GND GND

接下来PC端我们下载一个串口调试助手,配置为如下界面,发送一条复位指令来确保串口和开发板已经联通,如下图操作:
ESP8266 MQTT固件透传连接微软IOT物联网平台

2.3软件准备

这里的软件准备的话全程不需要大家编写代码,主要是创建产品以及利用插件生成密码等操作,需要准备图如下四个参数:

  • ClientID
  • 用户名
  • 密码
  • IoT 中心名称

第一步:申请微软 Azure IoT 云的账号点击入口,(在这里插播一句,Microsofit Azure的话有两个门户,在这里我们选择由世纪互联运营的Azure,微软的那个需要规定的信用卡等繁琐验证,不便调试):

申请门户账号,这个门户帐号有个1元试用包,点击申请试用后按照提示和要求一步一步进行手机验证,身份验证,创建账号等操作。
ESP8266 MQTT固件透传连接微软IOT物联网平台
第二步骤:登录以及创建
创建物联网IOT中心:创建资源——物联网——IOT中心
ESP8266 MQTT固件透传连接微软IOT物联网平台
选择我的资源组——命名IOT中心名称——创建
ESP8266 MQTT固件透传连接微软IOT物联网平台
点击直到创建部署成功以后点击所有资源组查看创建的IOT中心,点击进入创建IOT设备
创建资源——所有资源——IOT设备——新建
ESP8266 MQTT固件透传连接微软IOT物联网平台
命名设备ID——保存
ESP8266 MQTT固件透传连接微软IOT物联网平台
好了,到这里我们已经成功创建了IOT中心以及设备,接下来就需要准备(ClientID,用户名,密码,IoT 中心名称)的这些参数了

在准备之前我们先参考下官方文档的说明,其中除了密码其他参数都可以直接在IOT中心获取,同时我们文档中也说明了测试可以直接Visual Studio Code 使用来生成SAS**作为**

使用 MQTT 协议与 IoT 中心通信直接下拉到设备连接部分(如下图所示)**
ESP8266 MQTT固件透传连接微软IOT物联网平台
使用Visual Studio Code来生成SAS**
点击下载安装的Visual Studio Code中有微软封装好的Azure IoT Tools,安装以后可以直接点击登陆账号即可详细安装的步骤可以查看Visual Studio Code

安装的好了之后打开是这样的,这里有个特别的操作需要注意,就是如果你的网络不能连接到外网的话就需要更改节点,不然无法连接到帐号,具体的操作如下图所示

设置——sttings——先择中国代理ESP8266 MQTT固件透传连接微软IOT物联网平台
打开目录——IOT中心集线器——展开选择设备——右键先择生成SAS Token——对话框中输入生效时间——回车键结束(此时输出框内出现了SAS**,可以复制使用)
ESP8266 MQTT固件透传连接微软IOT物联网平台

三. MQTT通信指令

打开串口调试助手输入如下指令,逐条执行
AT+RESTORE
AT+CWMODE=1
AT+CWJAP=“miot_default”,“123456789x”
AT+MQTTUSERCFG=0,2,“NULL”,“NULL”,“NULL”,0,0,""
AT+MQTTCLIENTID=0,“textAA”
AT+MQTTUSERNAME=0,“ESP-AT.azure-devices.cn/textAA/?api-version=2018-06-30”
AT+MQTTPASSWORD=0,“SharedAccessSignature sr=ESP-AT.azure-devices.cn%2Fdevices%2FtextAA&sig=88WncjxEI7J5Re%2BjoQChNHjOHpWBRHLDxjfpf6IzZWs%3D&se=1943215841”
AT+MQTTCONN=0,“ESP-AT.azure-devices.cn”,8883,1
AT+MQTTSUB=0,“devices/textAA/messages/devicebound/#”,1
AT+MQTTPUB=0,“devices/textAA/messages/events/”,“hello”,1,0

说明:

  • AT+RESTORE(深度复位,清除参数)
  • AT+CWMODE=1(模块进入STA模式)
  • AT+CWJAP=“ID”,“密码”(路由器名称及密码)
  • AT+MQTTUSERCFG=0,2,“NULL”,“NULL”,“NULL”,0,0,""(参数2表示使用TLS)
  • AT+MQTTCLIENTID=0,“设备名称”
  • AT+MQTTUSERNAME=0,“IOT中心完整名称/设备名称/?api-version=2018-06-30”
  • AT+MQTTPASSWORD=0,“生成的SAS**”
  • AT+MQTTCONN=0,“IOT中心完整名称”,8883,1
  • AT+MQTTSUB=0,“devices/设备名称/messages/devicebound/#”,1
  • AT+MQTTPUB=0,“devices/设备名称/messages/events/”,“想发送的数据”,1,0

详细的指令功能说明可以参考如下文档
ESP-AT 系列: AT+MQTT 使用

四. MQTT通信测试效果

IOT中心操作(数据下发
仪表盘——IOT中心——设备——发送到设备的消息——对话框中写入数据——发送消息ESP8266 MQTT固件透传连接微软IOT物联网平台
设备端接收云消息ESP8266 MQTT固件透传连接微软IOT物联网平台

设备到云的消息查看
ESP8266 MQTT固件透传连接微软IOT物联网平台

五.总结

以上就是我们使用MQTT的AT快速对接微软云的全部过程了,这种连接使用的是TLS的**连接,没有证书认证,过程比较繁琐,此外如果想要看到节点上报的数据内容的话还需要自己搭建节点路由和云到设备等操作,有兴趣的朋友可以自己参考IOT中心文档来完成。