esp8266 云端 手机端 esp8266上云云端手机「esp8266 云端 手机端 esp8266上云」
(示例:stm32f103c8t6+esp01s串口AT指令模式)
流程简介:
本期教程使用的是stm32+AT指令控制esp01s接入华为云联网平成数据上报与命令处理,在先前如果使用Arduino开发过后的esp8266可能已经无法使用AT指令,或者出厂固件不支持全部的MQTT功能,这里我们首先对esp8266进行MQTT固件烧录,如果平时一直在使用原厂固件开发,可跳过第一步,若AT指令无效再按第一步操作。
烧录工具链接: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号
连接u转ttl模块,点击START,然后保持esp01s的IO0拉低后重新上电
打开串口助手,按下复位,输入命令”AT”,注意要取消勾选十六进制发送,勾选发送新行,然后检查串口打印工作状况,下图表示正常:
我们即将用到的AT指令可以从官方手册中学习:
https://docs.ai-thinker.com/%E5%9B%BA%E4%BB%B6%E6%B1%87%E6%80%BB
1) AT+CWMODE=1
设置模块为STA模式
2) AT+CWJAP="填写wifi名称","填写WiFi密码"
连接WiFi,需略微等待片刻,等显示连接后再进行下面的操作
3) AT+MQTTUSERCFG=0,1,"NULL","填写用户名","填写密码",0,0,""
设置MQTT的登陆用户名与密码
用户名与密码为华为云MQTT三元组的相关信息,可以在下面的网站生成:https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/
具体可以参考之前的文章
4) AT+MQTTCLIENTID=0,"填写ClientID"
设置MQTT的ClientID,ClientID华为云MQTT三元组的相关信息,在上一步骤中获取的三元组中查看
5) AT+MQTTCONN=0,"填写MQTT接入的地址",1883,1
设置MQTT接入地址,华为云物联网平台的地址,比如iot-mqtts.cn-north-4.myhuaweicloud.com,具体参考控制台首页的平台接入地址
6) AT+MQTTSUB=0,"订阅的主题tpoic",1
完成属性上报的话需要先订阅设备属性上报的主题,此处可填写为:
$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,正常效果如下:
此时我们可以查看华为云物联网平台的设备属性以及消息记录:
8) AT+MQTTSUB=0,"订阅的主题topic ",1
此时我们在这填写的是平台下发命令的主题:$oc/devices/填写设备ID/sys/commands/#
9) 进入华为云物联网平台的->监控运维->在线调试,完成命令下发
服务ID与下发命令的创建方法参考以前的文章:
此时设备会接收到下发的命令:
接收到命令后我们需要对命令进行响应,即下一步的步骤
10) 特别注意!!!下面两步的操作时间建议接收到命令后的20s以内,超时后平台会认定为同步命令设备响应异常!
11) AT+MQTTSUB=0,"$oc/devices/填写设备ID /sys/commands/response/request_id=填写接收到的request_id ",1
订阅设备响应平台命令主题,其中接收到的request_id在上图接收到的数据中,我们需要把它拿出来放到新订阅的tpoic的对应位置里
例如:AT+MQTTPUB=0,"$oc/devices/填写设备id/sys/commands/response/request_id=填写request_id ","",0,0
13) 完成上面的三步操作后,我们可以看到华为云物联网平台已经完成了命令的接收与响应
此时,我们的设备属性上报与设备命令的接收响应功能就已经完成了,接下来我们完成STM32代替串口助手完成对esp8266的上述控制。
(1)配置串口与LED的GPIO
(2)打开串口并使能串口中断
1) 添加头文件:
2) printf重定向
4. 发送测试
5. 接收测试
(1)main.c中添加下列声明
(2)重写串口接收中断回调函数
(3)在串口初始化后使能串口中断
运行测试:
6. 完善主要接入华为云物联网平台的相关代码
(1)接入华为云初始化
(2) AT命令发送
(3) 属性上报
(4)串口接收中断回调
诸暨版权声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:xinmeigg88@163.com