目录
前言 本次我们学习一下stm32f103驱动esp8266去连接阿里云的实操过程,在次过程中我会详细讲解开发过程中遇到的问题以及面对问题的解决,希望大家在这篇博客里面也有所收获。
前言
本次我们学习一下stm32f103驱动esp8266去连接阿里云的实操过程,在次过程中我会详细讲解开发过程中遇到的问题以及面对问题的解决,希望大家在这篇博客里面也有所收获。
本章会从以下的几个方面去进行实操
- esp8266wifi模块的固件库刷新(mqtt)
- esp8266的at指令测试、mqtt指令测试
- 阿里云设备的创建以及mqtt相关的连接参数的指令测试
- 获取传感器的数据到云平台,实现设备与云平台的交互
本次实验板子使用的是野火霸道v2(stm32f103zet6),
我这有全套资料,需要资料的小伙伴可以@我分享给你们。
本博客内容原创,创作不易,转载请注明
一、esp8266wifi模块的固件库刷新(mqtt)
1.固件库刷新
本次使用的模块是esp8266(-01,-01s型号都适用),接线不用多说,接下来我们来讲解下固件库的刷新,出厂自带mqtt固件库的小伙伴可以跳过去看后面了,出厂没有mqtt库的小伙伴则需要下载自己flash大小的固件库,这样才可以使用mqtt指令去完成后面的操作。
1.1 固件库烧录下载
在对固件库进行刷新下载的时候,同学们应该去弄清楚自己的模块flash究竟是多大的,1m还是4m(可以找厂家去询问,个别的模块可以使用at+rst的指令去查看)
弄清楚了flash大小,我们接下来就可以对模块进行一个mqtt固件库的更新了,具体操作如下:
1.2 固件烧录工具下载:
这里提供两种烧录工具的下载方式:
①:安信可科技官网的烧录工具
②:esp一键烧写工具(需要这个方法的同学评论区@我,找我拿。我在这里不多赘述)
1.3 固件库下载
安信可科技官网的固件库(1m和4m都有)
1.4 刷新esp8266的固件库
1)打开下载好的烧录工具,按照一下步骤进行操作
提示:如果按下start,一直显示正在等待,那么将你wifi模块的rst引脚先接上gnd再接上3.3v做一个复位操作即可成功烧录
至此,我们以及完成了mqtt固件库的更新,下面我们去进行at指令的测试
2.固件库at-mqtt指令测试(串口)
更新好固件库后,我们编写一个简单的程序来测试at指令,讲串口1和串口2(wifi的串口)进行一个数据的交互即可。(需要的@我拿)
1)重置wifi模块
at+rst
模块因回复ok,否则需检查
2)设置模块为sta模式
at+cwmode=1
3)使模块连接上wifi
at+cwjap="wifi名称","wifi密码"
注意:若你的模块连接不上wifi,回复eeror,首先先判断你的wifi是否是2.4g的频段,5g频道esp8266不可用
4)检查ip地址,看看是否正确连上wifi
at+cifsr
应回复:+cifsr:staip,"192.168.1.xxx"
+cifsr:stamac,"48:xx:xx:xx:xx:xx"
xx:是自己的wifi属性
ok
5)设置时区为:中国早上八点
at+cipsntpcfg=1,8,"ntp1.aliyun.com"
到此,esp8266的基本配置以及完成,下面就是mqtt协议连接上云平台的操作。
二、单步手动连接到云平台
1.阿里云平台设备产品的创建
具体的查看
这里有详细的设备创建流程。
2. 使用mqtt指令连接到云平台
在操作前点开自己的云平台——产品——选择设备——查看mqtt连接参数
1) 设置mqtt的登陆用户名与密码
at+mqttusercfg=0,1,"null","username","passwd",0,0,""
2) 设置mqtt的clientid
at+mqttclientid=0,"clientid"
注意:在自己的clientid中,需要在每个逗号前面加一个\符号,串口数据才能正确发送识别,否则会一直回复eeror
3)设置mqtt接入地址
at+mqttconn=0,"mqtthosturl",port,1
完成以上三步,设备就连接到了云平台(设备更新为在线)
3. 订阅平台消息(设备上传/接收,平台接收/下发)
订阅topic是指在一个订阅服务中,用户可以选择关注或订阅感兴趣的话题或主题。
通过订阅topic,用户可以更加精准地获取自己的内容,提高信息的质量和效率。
订阅topic(类似于公众号)我发的他收得到 他发的我也收得到
1)订阅平台消息
at+mqttsub=0,"/productkey/devicename/user/get",1
完成订阅后,点击topic列表,会显示已经订阅的
点击发送消息,串口会收到你发的消息
2)设备上报数据
at+mqttpub=0,"/sys/productkey/devicename/thing/event/property/post","{params:{\"标识符\":你想要设置的数值}}",0,0
这里的标识符和你自己的设置数值,是你自己创建的,在产品的功能定义板块:
发送指令成功,返回ok后,可以去云平台查看数值是否上传成功:
数据更新成功,如果想看发了多少条数据,可以点击在线调试中的日志去观察
3)云平台对设备的数据的修改(这里我们用led灯为例子)
这里点击设置:红灯亮,蓝灯灭,stm32串口接收如下:
+mqttsubrecv:0,"/sys/productkey/deveicename/thing/service/property/set",110,{"method":"thing.service.property.set","id":"129111869","params":{"led_blue":0,"led_red":1},"version":"1.0.0"}
随后stm32通过esp8266接收到云平台的命令并响应,红灯亮,蓝灯灭。
串口测试没问题,下载代码到stm32,打开串口调试助手:
对数据进行解析处理(代码太多,需要的@我找我拿源码即可,评论区@我)
也可以git下载代码
总结:
以上就是这篇博客的全部内容了,内容比较多,感谢大家耐心看完,关于云平台和设备交互的操作还有很多,比如ota远程升级,远程配置等,这些我后面都会一一更新,希望大家能在这篇博客中有所收获,学会初步的去使用物联网平台,后面的章节我会讲蓝牙的基本流程(大致与wifi大同小异),欢迎大家问题留言讨论,谢谢!
点赞关注收藏三连,一起学习物联网单片机开发,互相学习交流。
发表评论