DHT11采集+蓝牙主从机通信+ESP8266与阿里云物联网通信+微信小程序(自用)
DHT11采集:
此处作为自用,仅仅写下笔者遇到的一些bug
DHT11详细介绍(内含51和STM32代码)-CSDN博客
微信小程序
首先按照这个网址,进行注册小程序https://mp.weixin.qq.com/
关于小程序的一些访问量信息:最详细的【微信小程序+阿里云Web服务】开发部署指引(二):注册微信小程序_微信小城阿里云api申请-CSDN博客可以查看这位老师的具体内容
阿里云物联网配置:
ESP8266+STM32+阿里云保姆级教程(AT指令+MQTT)_at+mqttsub-CSDN博客
这里注意在2024年的阿里云物联网平台这里创建设备的时候,他会让你选择是直连设备还是什么网关子设备之类的,我们在这里使用的有WiFi模块可以直接连接到目标服务器,所以就是使用的是直连设备,如果我们的数据到目标服务器还要进过很多个中转节点,那么就使用的是网关子设备
可以看一下这位老师的文章
ESP-01连接阿里云配置
AT指令集网站
AT 命令集 — ESP-AT 用户指南 文档
利用AT指令
连接AT指令集连接阿里云的具体流程
我在这里只说一下自己的debug过程
笔者使用的是ESP-01
ESP-01的引脚图如下
和老师不太一样,笔者是需要把CH-PD拉高,直接接入VCC没有什么问题,官方文档建议的是使用一个10k的电阻。
********2024.12.5错误更改********
这里是需要接入一个10K的电阻的,否则容易造成板子损坏,在使用AT+CWJAP的时候发现了无法解决的一个错误;
另外也猜测不是这里的问题,而是这里的这个RST是不能接到一个高电平的,只能是一个悬空状态以及是一个低电平状态
当然也不排除ESP系列经常遇到的静电问题,但是概率太小,只在这里说明,不做论证
*************************************
在下载固件的时候注意一下,老师使用的固件编号是1471,这里我们去找固件编号即可
注意的是,在下载固件进入ESP-01的时候,我们需要把
CH_PD———————3.3V电源
GPIO0———————-GND
也就是在CH-PD拉高的同时,把GPIO0拉低
笔者和广大网友一样也遇到了一个问题
在这个地方也是遇到了,发送之后遇到了error的情况,绝大多数网友说的是在刷固件的时候出现了问题
一位网友表示:
原来固件
AT+GMR
AT version:1.2.0.0(Jul 1 2016 20:04:45)
SDK version:1.5.4.1(39cb9a32)
Ai-Thinker Technology Co. Ltd.
v1.5.4.1-a Nov 30 2017 15:54:29
OK
新的1471 MQTT 1M的固件刷上后
AT+GMR
AT version:2.3.0.0-dev(s-bcd64d2 – ESP8266 – Jun 23 2021 11:42:05)
SDK version:v3.4-22-g967752e2
compile time(b498b58):Jun 30 2021 11:28:20
Bin version:2.2.0(ESP8266_1MB)
OK
笔者发现自己的固件刷了之后,输入AT+GMR后没有什么作用,觉得可能有两个问题,第一个是经典杜邦线连接不稳定,故笔者选择现在去焊接一下
笔者使用AT+RST指令后,发现自己的ESP-01
2nd boot version : 1.7(5d6f877)
SPI Speed : 40MHz
SPI Mode : DOUT
SPI Flash Size & Map: 8Mbit(512KB+512KB)
8Mbit也就是1M字节,也就是我们用来存储用户程序的空间是512KB,储存数据的空间是512KB,按说是可以刷1471这个系列的固件库的
在笔者排查之后,发现是烧录软件的问题,笔者去乐鑫官网下了一个最新版本的后,就可以正常烧录MQTT的固件了
但是笔者在配置服务器的时候也遇到了一些问题,就是连接上了WiFi之后,发现服务器仍然显示设备没有在线
后面笔者发现是可能是ESP01的问题,通过串口输入AT+CWJAP之后一直报错,暂时没有找到一个合理的原因,不排除这里是因为笔者错误的接线导致这个板子损坏。
首先排除是固件烧录错误,笔者尝试了一下WiFi-AT的指令集,发现是可以使用的。
在查询了一圈之后基本上确认是笔者的接线错误导致板子损坏,在笔者把板子调整一下之后,重新走了一下步骤发现就可以使用了。
但是发现一件事情就是,我们链接阿里云服务器是比较困难的,因为他的MQTT参数似乎是一直是在变化的,所以我们每一次去使用这个通信我们都需要打开阿里云然后得到相应的MQTT参数,这个是有点困难的。
现在已经有的方法:
一:阿里云官方给了API的接口函数,可以进行配置,从而得到一个我们想要的password
https://github.com/eclipse-paho/paho.mqtt.embdded-c/tree/master/MQTTClient-C
二:手搓算法,然后合成password
笔者由于时间有限,加上想要了解更多的一个算法,就选择使用第二种方案。
笔者的方法来自于这位老师:项目笔记(2):阿里云物联网平台的MQTT链接参数_阿里云mqtt参数每次都不一样-CSDN博客
发现很难整
于是笔者选择使用第一个:
https://github.com/eclipse-paho/paho.mqtt.embdded-c/tree/master/MQTTClient-C这个是阿里云文调用所要使用的一个文件,原文使用的是git命令,笔者直接使用网址,然后复制粘贴
MQTT接入使用示例 – 阿里云物联网平台 – 阿里云这个是调用案例
在GitHub中的文档里面,第一个example里面是freertos的系统,还有一个是Linux的系统和笔者使用的都不相同。
所以笔者选择直接移植aiot_mqtt_sign.c文件,然后就是普通的移植.C和.H文件的过程,笔者在这里不做多提。
过程中遇到了这样的报错.\Objects\Project.axf: Error: L6218E: Undefined symbol aiotMqttSign (referred from main.o).
是因为笔者没有把这个.c文件添加到group中
在这个过程中遇到了两个问题,第一个这个时间戳怎么使用,第二个密钥是哪个,由于笔者时间问题,就先把坑挖在这里,等到遇到相似的项目再来填坑。
所以我们就是需要动态调整clientId和password,然后再次进行烧录
作者:lulalula123