STM32 HAL库+ESP8266+机智云_stm32 esp826601s hal库

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。设置好后,记得打开定时器中断。

除了上面说到的两个串口和定时器,为了实际演示,我在这里还设置了两个LED灯和两个按键。
按键的作用是为了设置ESP8266的模式,这和前文中的HAL_KEY.c有关,个人建议还是需要配置两个按键,如果不需要按键的话,可以屏蔽掉代码中按键相关的部分,不会影响功能的运行。

在这里插入图片描述

修改串口和定时器

配置好后,点击生成代码,在keil里面编译一下
由于我更改了定时器和串口,我们从模版工程中拷贝过来的文件会显示报错。
找到报错的地方。具体更改的有USART1改为USART3 TIM2改为TIM7
所以将gizwits_product.c中的TIM2改为TIM7 USART1改为USART3
在这里插入图片描述
在这里插入图片描述

初始化

修改好之后,我们要想正常使用,还需要在main函数中去初始化和调用相应的函数
打开模版工程,查看main.c中的代码。
机智云生成的项目模版是basic的,外设文件不会单独生成.c和.h文件
所以模版中main.c里面有一些声明和外设初始化,我的工程一般都是advanced,所以模版中有些东西不必添加到自己项目里
在这里插入图片描述

需要将下图中标志的部分添加到自己项目的main.c中,比如头文件
同时一些函数声明变量声明不必添加
在这里插入图片描述
添加完头文件后,往下翻可以看到/* USER CODE BEGIN 0 /到/ USER CODE END 0 /之间有按键KEY的相关初始化代码,将这部分复制到自己的项目工程中去。如果你不使用按键,可以不必添加
在这里插入图片描述
再往下看就是main函数内的内容,将中断初始化函数和机智云代码的初始化函数添加到自己工程的main函数中
这里的中断初始化函数MX_NVIC_Init();在模版工程main函数的下方可以找到,找到之后可以放在按键初始化函数的下面也就是/
USER CODE BEGIN 0 /到/ USER CODE END 0 */之间

在这里插入图片描述
gizwitsSetMode(WIFI_AIRLINK_MODE);函数用于在上电时将esp8266设置为AIRLINK模式,此处建议屏蔽掉,不然每次单片机复位时,需要重新配网。
屏蔽掉后,可以使用按键进入为airlink模式
在这里插入图片描述
初始化完毕之后,还需要在while循环中调用两个函数
这两个函数用于发送和接受消息

在这里插入图片描述

自定义数据传输

到此,整个工程代码已经移植完毕,但是现在的代码只是一个框架,我们还没有去写接收处理函数和发送函数
其实这两个函数,在上面的代码中已经完成,我们只需要在相关的代码中填写上我们需要传输的数据即可

打开gizwits_product.c 找到gizwitsEventProcess函数,在里面可以看到我们编写的LED任务,根据提示,写上LED灯的控制代码

gizwitsEventProcess函数就是用来作为接收数据并处理的函数,我们在制作客户端时,只添加了LED这个控制任务,所以这里只有这一个任务。如果想要添加任务,则需要重新生成模版代码,并重新移植。所以代码移植的前提一定是项目已经完成。
在这里插入图片描述
再往下翻可以看到userHandle函数,这里就是我们要发送的数据,比如我要发送aht10监测的值,将变量赋值进去即可
下方userInit用于设置初始值
在这里插入图片描述

实际展示

代码移植到此结束,接下来就是连接好硬件,打开串口调试助手SSCOM查看是否成功
打开串口调试助手,复位mcu时,会看到固件的软件版本信息,这一步显示成功,说明串口打印没有问题,然后会每隔1s打印一包数据,这一步成功说明mcu与esp8266通信没有问题
长按KEY2,进入airlink模式,此时进行手机配网操作

机智云配网操作

请添加图片描述
配网成功后,手机app端会出现一个局域网在线的设备,且串口调试助手上会出现RSSI的字样,如果配置成功,那么后面的数字不为0,为0说明配网失败
注意:这里要多试几次,不要气馁,我也不是每次都能配网成功

效果

机智云实际演示

最后

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

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

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

img

img

img

img

img

img

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

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

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

640)]

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

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

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

  • 17
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值