STM32 HAL库+ESP8266+机智云_stm32 esp826601s hal库(1)

目录

前言

最近在项目中需要使用云平台对接,于是在网上查找了一些资料,发现机智云是一个不错的选择,网上的资料多,而且可以根据mcu生成通信协议代码,仅需要将生成的代码移植到开发好的项目中,即可实现上云。
不过在实际开发中,仍然遇到了一些问题,所以在此处将我的开发心得记录下来。

网上的教程多为20年21年的,与现在的版本有些微差异,机智云生成的模版也和当时的有所不同。
本教程写于2023年11月30日

硬件准备

  • STM32F1x :机智云提供的模版为F103C8,我使用的是F103RC,实际移植中没有任何问题
  • ESP8266 :我使用的是安信可的ESP12F芯片,大家也可以使用其他的ESP01S芯片,只是烧录时有一定的区别,在烧录章节会提到
  • CUBEMX:本文使用的是HAL库开发,机智云提供的103C8模版为基于cubemx创建的hal库代码,如果要使用标准库,选择“其他平台”生成代码即可。
  • USB转TTL:我使用的是CH340,用于烧录机智云固件时,将模块与电脑连接。这里最好选用带有串口的下载器使用,因为烧写固件时,需要用到多个VCC和GND。
  • 串口调试助手:这里推荐使用SSCOM,我一般选择使用XCOM,但是在本项目开发过程中,模块会发送多包数据,XCOM v2.0没有分包功能,使用过程中会很混乱,所以建议使用SSCOM

在这里插入图片描述
在这里插入图片描述

烧录固件

模块选择

我手中有两款ESP8266模块,两块都是安信可的芯片,大家也可以选择非安信可芯片进行尝试。第一块为ESP12F芯片,flash大小为32Mbit,第二块为ESP01S,flash大小为8Mbit。如果想要使用贴片封装,可以选择第一块芯片,如果是直插式选择第二块芯片。
两款芯片的引脚和使用方式没有任何区别,不过在烧录固件时,第二款芯片需要连接EN角,第一款则不用

在这里插入图片描述

在这里插入图片描述

硬件连线

在这里插入图片描述

USB转TTLESP8266
TXRX
RXTX
VCCVCC
GNDGND
GNDIO_0

使用第一块芯片ESP12F只需接入上述引脚即可
如果使用第二块芯片ESP01S,还需接入EN使能

USB转TTLESP8266
TXRX
RXTX
VCCVCC
GNDGND
GNDIO_0
VCCEN

下载固件

进入机智云官网->点击开发者中心->点击下载中心
固件下载地址

在这里插入图片描述
选择GAgent for ESP8266 下载,

下载好后,解压文件
在这里插入图片描述
解压好后会看到上图中的文件,通过记事本打开readme,可以看到各个文件的作用
在这里插入图片描述
简单点说,名字中带有combine的文件是打包好后的文件,我们只需要根据模块选择对应的combine包即可,我手中的安信可ESP12F模块flash为32Mbit
在这里插入图片描述

下载烧录软件

下载好固件之后,还需要将固件烧录到ESP8266上,这里使用乐鑫官网提供的flash烧录工具flash_download_tool_3_9_5
在这里插入图片描述

双击打开烧录软件,会先出现黑框,等待一会儿,会出现中间的白色框
在这里插入图片描述
点击OK,即可进入烧录界面
在这里插入图片描述
根据上图进行选择并烧录固件,除了第一步和第四步需要根据自己的模块进行选择,其他都不变。我手中的两块模块一个是32Mbit,一个是8Mbit。如果烧录到最后显示失败,建议更换其他flash大小的固件包和SPI MODE,多进行尝试烧录。
注意:如果点击start后,黑色框中显示case OK 后一直在输出…。可以不用在意,重新打开软件或者插拔一下模块即可。
在这里插入图片描述
固件烧录完成后,即可开始进行MCU代码的创建、移植和编写

创建机智云客户端

在创建和移植代码前,我们需要先确定机智云需要显示和控制的相关任务。比如项目需要控制一个LED灯亮灭,需要监控温湿度数据,那么我们就需要先创建一个能控制led灯和显示温湿度数据的页面
打开机智云官网->点击开发者中心并登录
点击创建产品
在这里插入图片描述

这里可以任意选择,我选择的是自定义方案

在这里插入图片描述
输入产品名称,数据传输方式选择定长,然后点击创建

在这里插入图片描述
创建完成后,新建数据点,这里的数据点其实就是刚才说的需要在控制端显示的任务
在这里插入图片描述
输入相应的信息,我们需要控制LED灯,所以读写类型选择可写,数据类型是指我们发送到MCU的值是什么类型,这里选择布尔型即可

在这里插入图片描述
再次点击新建数据点
在这里插入图片描述
我们只需要读取温湿度传感器的值,所以读写类型选择只读,数据类型选择数值和数值范围,以及数值的分辨率

注意:该步骤的前提是项目已经开发完成,所需要的功能都已确定,否则后续任意更改,都需要重新移植代码
创建完成后,我们可以进行虚拟设备调试,查看控制端是否和我们想要的一致
在这里插入图片描述
点击虚拟设备,下载机智云demo APP然后扫码即可关联上手机,我们可以通过手机app控制LED灯的开关,同时web端此时为一个虚拟设备,可以调整温湿度的值,在手机上进行查看
保持虚拟设备网页端,手机app扫码后即可看到有虚拟设备

在这里插入图片描述
点击设备,然后控制LED开关,此时可以在网页端看到虚拟设备进行了响应
同时,在虚拟设备上控制温湿度传感器的值,也会发送到手机app端

在这里插入图片描述
在这里插入图片描述
注意:此时手机app端的该设备为网页端的虚拟设备,仅仅是作为调试UI使用。之后移植完成代码后,会与ESP8266连接,此时会出现一个新的设备信息来控制MCU

生成代码

确认无误后,即可生成MCU代码,移植代码后,即可通过手机app端与设备进行通信
在这里插入图片描述
点击MCU开发,选择硬件平台。
首先,确认项目的开发方式是标准库还是HAL 库,如果是标准库,只能选择其他平台。我使用的是HAL库,同时也是F1x的板子,所以我选择F103C8。输入PS码后即可点击生成项目代码。
标准库的移植,网上已经有很多的教程了。此处我就只展示HAL库的代码移植。

生成后,将模版例程下载下来
在这里插入图片描述

代码移植

下载解压后,可以看到生成的代码就是一个基于cubemx的项目工程
如果你手上的板子正好是F103c8,那么可以选择将工程代码移植过来

如果要移植到其他型号的开发板,第一步,将模版工程文件夹中Gizwits、Utils、Hal三个文件夹拷贝到自己的项目工程中
在这里插入图片描述
打开自己的keil项目工程,将三个文件夹中的文件添加进工程中去,HAL文件夹下只需要用到HAL_KEY.c,HAL_FLASH.c可以不添加,你也可以不用拷贝HAL文件夹,只拷贝HAL_KEY.c和HAL_KEY.h即可

在这里插入图片描述
添加好后,记得添加头文件路径,编译一下。
注意:机智云代码需要用到两个串口和一个定时器,串口至少需要一个。模版中USART1用于打印信息,USART2用于MCU与ESP8266通信,定时器TIM2进行1s的计时
如果不需要打印信息,USART1可以不用设置,不会影响到功能实现。USART2波特率必须设置为9600,并开启中断。定时器TIM2计时1s,并开启中断
这里的串口和定时器可以根据自己项目的实际资源情况进行更改,比如可以将USART2打印数据,USART3用与和ESP8266进行通信,定时器也可以选择TIM7进行1s的计时
现在打开项目工程的CUBEMX,设置串口和定时器,这里可以同时将模版工程中的cubemx配置打开,对比着模版中串口和定时器的配置,对项目工程进行修改。

在这里插入图片描述
串口配置上面已经说得很清楚了,定时器的配置需要根据板子的频率,设置为1s计时即可。比如我的板子是72MHz,预分频系数为7200-1,计时周期为10-1。设置好后,记得打开定时器中断。

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

594)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值