STM32+Cubemx+Esp8266(三)ESP8266连接腾讯IOT

一、云平台选择

之前也提到,我是用的腾讯IOT。为什么选择腾讯IOT,原因有两点。第一是因为工作原因有接触到乐鑫的腾讯专用AT固件,这里我觉得有一个很方便的地方就是,他的专用固件挺方便的,包括批量设备的动态注册、数据上报无论是物联型还是透传Modbus协议的数据,还有OTA,起码我是感觉只要用到几个就够用了。其他阿里云、移远云、还有Onenet我也用过,但是接触得不深,主要是我用其他模块的时候是二次开发,没有用过AT固件的,这些做过的小玩具后续有机会再记录一下。

二、连接腾讯云平台准备

1、创建项目

这里必须说一句,腾讯云实在看得我眼花缭乱,大家注册账号之后,直接搜物联网开发平台就好。

然后就创建项目、创建产品,这里之间点就行

然后我创建了一个物联网模型,开关的一个测试。

这里动态注册我是打开了,因为之前做的都考虑量产,就没有搞一型一密这种,但实际上自己做的小东西,用一型一密还是挺好的。这里还有个问题点,就是用了动态注册,mqtt.fx好像不支持动态注册的测试了,我之前搜了很久都没有找到办法。

2、Esp8266连接串口助手测试

1、连接流程

首先跟之前的文章一样,连接wifi:CIPSTATUS→CWMODE→CIPMUX→CWJAP

连接腾讯云平台:TCPRDINFOSET→TCDEVREG→TCMQTTCONN→MQTTSUB

因为我这里wifi已经连接过了,所以一上电就会自动连接wifi,后边就是连接云平台的

2、后台查看验证

然后我们后台刷新一下,就能看到我们的Device01已经创建完成了,测试成功,到时候只需要在程序里执行刚刚在串口助手输入的这几个指令就行,还是挺简单的。

三、用STM32控制ESP8266连接腾讯云平台

1、任务的思路

我原本的工程,是有一个10ms定时器在计时,每发送一次就开始计时,如果没有收到回帧,会在程序的设定MS后重新发送数据,因为不能发送AT指令之后,让程序就在跑延时死等。另外有一些AT指令,不是单一回帧,而是有两帧,需要判断后边的那一帧,所以处理方法我想到的有两种:1、在用串口连接Esp8266测试指令时,把各个指令的时间都记录,并留有余量,程序对应指令设定相应最长等待时间,等待时间内无收到回帧,重发。2、每一帧都做对比处理,直到处理到正确帧为止,每一帧的等待时间都为最长的等待时间。

我这里用的方式是第一种,只用strcmp来判断正确的那一帧,不去做逐帧分析。因为我个人觉得稳定的模组,这样处理就足够了,之前也接触过其他模组,回帧时间不稳定,而且会出现有断帧情况的,就要用第二种方式,并且保存上一帧跟这一帧拼接,再去与正确帧对比,当然这是题外话。

2、任务处理方式

下图就是我的任务函数,我是将信号量的等待时间设为100MS,然后每次等待超时,全局100MS的变量g16_Timer100MS_AtSend_Count就会加1。

然后发送函数Esp8266_ATSend,指令的那些就不说了,那些就是简单的将指令发送。

要讲一下就是每个指令现在做了发送超过32次都没有正确回帧,就会将ESP8266复位

然后每次都判断时间是否到达发送时间,到达则发送

然后就是回帧的处理,这里我红色框住的3个命令的回帧,都是有回2帧的,我做了一个字节数的限制,就只判断第二次的那一帧,这样做有一个风险就是我在上边说的,如果模组不稳定,出现断帧的情况,可能就会一直过不了。我用esp8266还没发现过这个现象,所以我没改。

然后一般收到g16_Timer100MS_AtSend_Count都是要置0,我这里是想加速一下,没做这个处理。

strcmp与正确帧判断成功之后,就进入下一个cmd,这些就比较简单,就是普通的比较。

3、验证程序

下图是我USB转TTL监控的ESP8266的回帧

下图为腾讯云后台上验证成功创建设备Device02

四、总体反思

感觉我虽然接入了FreeRtos系统,但是这个任务收发的思路还是之前裸机的那一套,这里用osdelay,程序也不会死等,会跑别的任务,是不是可以写得简单一点。

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Try1harder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值