1. esp8266 MQTT固件烧录

在先前如果使用Arduino开发过后的esp8266可能已经无法使用AT指令,或者出厂固件不支持全部的MQTT功能,这里我们首先对esp8266进行MQTT固件烧录,如果平时一直在使用原厂固件开发,可跳过第一步,若AT指令无效再按第一步操作。

 1)官网下载烧录工具和固件

  烧录工具链接:

https://docs.ai-thinker.com/tools

  固件链接:

https://docs.ai-thinker.com/%E5%9B%BA%E4%BB%B6%E6%B1%87%E6%80%BB

大家根据自己需要选择相应的版本,我使用的是esp01s,下载的是1471号

2)下载并打开固件烧录工具

https://docs.ai-thinker.com/%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B72

3)进入烧录模式

连接usb转ttl模块,点击START,然后保持esp01s的IO0拉低后重新上电

4)按下图设置开始烧录

5)出现下图表示完成烧录

6)AT测试

  打开串口助手,按下复位,输入命令”AT”,注意要取消勾选十六进制发送,勾选发送新行,然后检查串口打印工作状况,下图表示正常:

7)AT命令手册

接下来可能要用到的AT指令可以从官方手册中查看详细信息:

https://docs.espressif.com/projects/esp-at/zh_CN/latest/esp32/AT_Command_Set/MQTT_AT_Commands.html

   

2. 串口测试

  1) 设置模块为STA模式

AT+CWMODE=1

  2) 连接WiFi

AT+CWJAP="填写wifi名称","填写WiFi密码"

  需略微等待片刻,等显示连接后再进行下面的操作

  3) 设置MQTT的登陆用户名与密码

AT+MQTTUSERCFG=0,1,"NULL","填写用户名","填写密码",0,0,""

  4) 设置MQTT的ClientID

     用户名与密码为华为云MQTT三元组的相关信息,可以在下面的网站生成:

https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/
AT+MQTTCLIENTID=0,"填写ClientID"

    华为云MQTT三元组的相关信息在上一步骤中获取的三元组中查看

  5)设置MQTT接入地址

  华为云物联网平台的地址,比如iot-mqtts.cn-north-4.myhuaweicloud.com,具体参考控制台首页的平台接入地址

AT+MQTTCONN=0,"填写MQTT接入的地址",1883,1

6)订阅主题

AT+MQTTSUB=0,"订阅的主题tpoic",1

完成属性上报的话需要先订阅设备属性上报的主题,此处topic可填写为:

$oc/devices/填写设备ID/sys/properties/report

7)上报数据

AT+MQTTPUB=0," 订阅的主题tpoic ","上报的json数据",0,0

订阅的主题:

$oc/devices/填写设备ID/sys/properties/report

上报的json数据:

{\"services\":[{\"service_id\":\"填写服务ID\"\,\"properties\":{\"填写设备属性\": 填写属性数据值}}]}

建议大家完成这步时,先使用MQTT.fx进行设备属性上报测试,确保数据无误正常上传,因为具体参数因个人的配置而异。

在完成上面的每一步时,系统都会打印一个OK,且连接wifi并接入华为云完成数据上报,记录如下:

此时我们可以查看华为云物联网平台的设备属性以及消息记录:

8)订阅平台下发命令的主题

AT+MQTTSUB=0,"订阅的主题topic ",1

此时我们在这填写的是平台下发命令的主题:

$oc/devices/填写设备ID/sys/commands/#

9)命令下发

进入华为云物联网平台的->监控运维->在线调试,选择在线的设备,填写命令参数,完成命令下发,此时设备会接收到下发的命令:

接收到命令后我们需要对命令进行响应,特别注意的是下面两步的操作时间建议接收到命令后的20s以内,超时后平台会认定为同步命令设备响应异常!

10)订阅设备响应的主题

AT+MQTTSUB=0,"$oc/devices/填写设备ID /sys/commands/response/request_id=填写接收到的request_id ",1

订阅设备响应平台命令主题,其中接收到的request_id在上图接收到的数据中,我们需要把它拿出来放到新订阅的tpoic的对应位置里

11)上报命令的响应

AT+MQTTPUB=0,"填写上面订阅的含request_id的完整主题","填写响应值,可以为空",0,0

例如:

AT+MQTTPUB=0,"$oc/devices/填写设备id/sys/commands/response/request_id=填写request_id ","",0,0

完成上面的这些操作后,我们可以看到华为云物联网平台已经完成了命令的接收与响应,接下来我们就可以通过使用其他MCU通过串口来实现华为云的相关操作了。

Logo

鸿蒙生态一站式服务平台。

更多推荐