小白自己的总结,跟大佬肯定有差距,只是自己做的时候遇到的问题,用这种方式记录下来。算是回顾,也帮自己重新梳理一遍知识。(我使用的是stm32f103C8T6核心板+ESP8266-01)
- 烧录固件——安信可的1471固件。在学习过程中了解到,固件烧录一定要正确,有些不同型号的ESP8266所需要的固件有可能存在不同,固件大小也有不同。一定要去查查自己的esp8266是哪一种,这样烧录可能直接就能成功。(尽可能先擦除!再烧录)
- 使用USB转TTL(6个引脚那种)连接ESP8266测试。这是固件烧录下一步,在这里打开串口助手,可能会出现esp8266不像CSDN大佬那种有ready的反馈,主要有以下几个注意点:首先,刚烧录完固件后,只需要连接4个引脚(RX、TX、GND、3.3V),然后要拔了3.3V电源线再次插入,类似于手机系统更新,下载完后,要重启。其次,在这样基础上,可能还是不行。可以试一试使用stm32的3.3V独立给ESP8266供电,或者有评论大佬说可以直接用USB转TTL的5V引脚给ESP8266的3.3V引脚供电,这两种都可以试试。主要原因就是供电不足,需要独立供电或达到工作电压。最后,在设置wifi用户名和密码的时候,我用带有_(下划线)的用户名连不上去,这个可能是我个人的问题,我没有继续深究,直接下一步了,也不是很懂。
- 在keil5中编写代码,将DHT11温度数据传到OneNet云平台。这里主要遇到的问题有两个:一个是转义字符的问题,在AT+MQTTPUB=0,"$sys/username/devicename/thing/property/post","{\"id\":\"123\"\,\"params\":{\"temp\":{\"value\":22.2\}}}",0,0这段话中,有很多的\(斜线),注意使用printf和sprintf时如需用到转义字符不要漏到某个\(斜线)不然可能会报错。例如当时我遇到id和params中间那个“,”逗号以及“\”斜线,是都需要的,我就漏掉了这个斜线,结果半天没成功;另一个是在已经成功订阅OneNet设备时,想要发布数据到OneNet云平台上,也就是AT+MQTTPUB这个AT指令。发现将发送的数值value,改为%f,并给了对应变量,发现一直无法成功。通过各种大佬文章和gpt软件,了解到可以试试先使用sprintf将格式化的数据转换成字符串,保存到对应的buffer中,再用串口发送数据。(这里也可能是我个人的代码水平不够,如果遇到不行,可以试试)
以上均是个人遇到的问题,如果有误欢迎大家批评指正,一起进步。小白一枚