使用stm32+esp8266连接OneNet的问题。

本文分享了作者在使用STM32F103C8T6和ESP8266-01开发过程中遇到的固件烧录、串口通信问题,包括不同ESP8266型号的固件选择、电源供应、DHT11数据上传至OneNet的编码技巧,以及转义字符处理和浮点数发送的注意事项。
摘要由CSDN通过智能技术生成

小白自己的总结,跟大佬肯定有差距,只是自己做的时候遇到的问题,用这种方式记录下来。算是回顾,也帮自己重新梳理一遍知识。(我使用的是stm32f103C8T6核心板+ESP8266-01)

  1. 烧录固件——安信可的1471固件。在学习过程中了解到,固件烧录一定要正确,有些不同型号的ESP8266所需要的固件有可能存在不同,固件大小也有不同。一定要去查查自己的esp8266是哪一种,这样烧录可能直接就能成功。(尽可能先擦除!再烧录)
  2. 使用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用户名和密码的时候,我用带有_(下划线)的用户名连不上去,这个可能是我个人的问题,我没有继续深究,直接下一步了,也不是很懂。
  3. 在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中,再用串口发送数据。(这里也可能是我个人的代码水平不够,如果遇到不行,可以试试)

以上均是个人遇到的问题,如果有误欢迎大家批评指正,一起进步。小白一枚

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值