文章目录

  • 1、使用官方提供的库连接
  • 1、获取官方例程
  • 2、移植文件
  • 3、配置数据上传还有数据下发
  • 4、最终配置
  • 2、使用MQTT固件进行解析
  • 3、尝试连接腾讯云
  • 4、尝试连接阿里云


1、使用官方提供的库连接

相信最开始用onenet的应该都是用的这个官方的库吧,特别熟悉的代码,目前网上也是非常的广为流传,之前也是用的这个办法,不过有段时间没摸过了,手又生疏了,因此这里就重新来做个记录试试:

1、获取官方例程

打开我们的控制台可以看到这是这里有这个文档中心,在文档中心我们可以获取到我们需要的东西!

stm32搭载云服务器 stm32上云_stm32


进入这个社区,然后论坛里面就是我们想要的的了

stm32搭载云服务器 stm32上云_stm32搭载云服务器_02


官方例程这里提到的:

stm32搭载云服务器 stm32上云_物联网_03


然后是这个开发板合集,这里又看到张大佬了,这里说下官方例程的好处就是他吧协议解析那个部分帮你做好了,所以我们使用的时候就基本调用就行了,而且还提供了一套完整的样例!

stm32搭载云服务器 stm32上云_物联网_04


这样我们就进入到了这个下载页面了,这里无所谓的,下载之后选个最基本的程序就行了,不用选特别高大上的!

stm32搭载云服务器 stm32上云_stm32_05

2、移植文件

这里主要就是移植他写的三个文件,一个是协议相关的,一个是硬件上8266相关的,然后就是跟平台相关的!

stm32搭载云服务器 stm32上云_ide_06


下面我们开始配置串口,这里他没有用DMA,确实标准库如果是第一次配置DMA是很麻烦的,这里他用的是串口中断接收的方式,但是我后面用的过程中出现了一点点的小bug,后面我会提到这个bug

stm32搭载云服务器 stm32上云_stm32搭载云服务器_07


这里我们还需要就是配置一个IO口来复位我们的esp8266,这里提一下,我用的esp8266是正点原子的,用这个的原因是只有一排引脚,往洞洞板上接线方便,然后刷的固件还是比较老的那种,没有用什么专门的固件。

stm32搭载云服务器 stm32上云_嵌入式硬件_08


下面就可以看到我们这个移植好的文件了,这里主要是删掉一些初始化的代码,然后修改对应的宏参数,这都是常规操作了

stm32搭载云服务器 stm32上云_嵌入式硬件_09


然后我们就可以开始就是修改这个我们在onenet上创建的一些东西了,首先是这个WIFI还有服务器地址

stm32搭载云服务器 stm32上云_物联网_10


关于服务器地址,官方的文档中给出了说明,如下所示:

stm32搭载云服务器 stm32上云_嵌入式硬件_11


然后是我们在onenet上创建的一些设备还有产品信息这样的

stm32搭载云服务器 stm32上云_stm32_12


最后就是在这个esp8266的初始化部分了

stm32搭载云服务器 stm32上云_嵌入式硬件_13


然后有些函数是hal库没有的,这里就需要我们来进行修改了,首先是这个字符发送函数:

stm32搭载云服务器 stm32上云_物联网_14


然后是中断接收函数

stm32搭载云服务器 stm32上云_ide_15


==注意:==这里HAL库做的真是不太厚道,这个中断在默认情况是关闭的,就是即使你再cubemx中配置了中断,并且把它打开了,这个函数也不会进入,一般我们常见的都是就是使用那个中断回调函数嘛,那个过程就会打开这个中断!所以我们就要注意,就是要这样在合适的地方打开接收中断!

stm32搭载云服务器 stm32上云_stm32_16


至于为什么是这里,因为我在测试的过程中发现就是一开始就打开的话很容易出问题,就是这个复位后WIFI模块会发出一段这个产品信息,这个数据量太大了,会把这个接收缓冲区冲爆掉,所以就没必要这么早打开!

stm32搭载云服务器 stm32上云_嵌入式硬件_17

3、配置数据上传还有数据下发

首先是数据上传,我已在下面的图中标明,在onenet.c文件中

stm32搭载云服务器 stm32上云_物联网_18


然后是数据接收

stm32搭载云服务器 stm32上云_stm32_19


数据接收有一定格式,这里我们就按照他的来,用引号作为中介

stm32搭载云服务器 stm32上云_ide_20


下面是我使用过程的截图

stm32搭载云服务器 stm32上云_嵌入式硬件_21

4、最终配置

最后我们就可以配置初始话代码然后还有就是数据上传和接受了

stm32搭载云服务器 stm32上云_stm32_22


我们打开设备就可以看到信息了

stm32搭载云服务器 stm32上云_ide_23


查看我们下发的命令

stm32搭载云服务器 stm32上云_stm32搭载云服务器_24

2、使用MQTT固件进行解析

这里首先是我们要准备这样的一个固件

stm32搭载云服务器 stm32上云_嵌入式硬件_25


下载配置如下所示:

stm32搭载云服务器 stm32上云_stm32_26

接下来就是代码部分了,说实话这个又是失败的一次,不知道为啥订阅不上去

stm32搭载云服务器 stm32上云_ide_27


其中定义的主题信息为:

stm32搭载云服务器 stm32上云_ide_28


后面我又尝试了手工使用串口助手订阅,还是一直失败,不太清楚这个主题是什么

stm32搭载云服务器 stm32上云_嵌入式硬件_29

3、尝试连接腾讯云

腾讯云这里还是直接照着上次的来,首先用它官方的工具生成我们需要的数据

stm32搭载云服务器 stm32上云_ide_30


填入我们代码里面预设好的宏定义

stm32搭载云服务器 stm32上云_stm32_31


这个个部分也可以就是参考我们在mqttfx里设置的:

stm32搭载云服务器 stm32上云_stm32_32


之后就可以进行连接了,打开我们的设备管理就可以看到设备在线:

stm32搭载云服务器 stm32上云_物联网_33


查看我们实现定义好的数据:

stm32搭载云服务器 stm32上云_stm32_34


我们也可以看数据上传和下发的记录

stm32搭载云服务器 stm32上云_ide_35


设备打印这里也是完全OK的!

stm32搭载云服务器 stm32上云_嵌入式硬件_36

4、尝试连接阿里云

再弄这个之前这里有一点一定要注意特别重要,不看后悔死你,没错,就把我后悔死了!

具体就是这个选网络这块一定要慎重,这里选的什么就要是什么,详情我已经在图片中进行了说明!

stm32搭载云服务器 stm32上云_ide_37


这里我们用阿里云可以直接导出MQTT需要的参数

stm32搭载云服务器 stm32上云_ide_38


将导出的参数一一复制进入我们事先定义好的宏里面就可以了!

stm32搭载云服务器 stm32上云_ide_39


串口部分也可以看到数据正常打印

stm32搭载云服务器 stm32上云_物联网_40


同时进入到设备页面也可以看到设备正常工作

stm32搭载云服务器 stm32上云_物联网_41