STM32F103ZET6使用ESP8266接入机智云点亮LED教程

首先我们要访问机智云的官网,注册相应的开发者账号。

机智云开发者中心

STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第1张图片

STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第2张图片点击立即注册后,登陆刚刚注册的账号,来到开发者中心,可以看到如下界面。
STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第3张图片
点击右侧的创建新产品,开始我们的demo创建。

STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第4张图片
产品分类,我们随便选择一下就行
产品名称,我们把它命名为“小电灯”
技术方案,我们选择最左侧的WIFI/移动网络方案
通讯方式,WIFI
数据传输方式,定长

然后点击保存跳转到如下界面
STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第5张图片
点击去添加数据点,添加我们的一个数据点。
数据点,就可以理解为我们编程中定义的变量。

STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第6张图片

我们给数据点起一个名字,叫state,这个后来会在STM32工程里用到。
其他属性很简单,不再说明。
点击添加,添加第一个数据点
STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第7张图片
点击应用,确认本次修改
然后点击左侧导航栏的MCU开发

STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第8张图片
选择独立MCU方案
硬件平台就选择STM32F103C8TX
在下方粘贴你的Product Secret
Product Secret,可以在导航栏左侧的基本信息那里获得,复制过来粘贴即可。
点击生成代码包,下载到本地。

STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第9张图片

解压代码包
打开CubeMx新建工程
选择STM32F103ZETX

STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第10张图片
选中File选项,选择Import project

STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第11张图片选中你刚刚下载解压的工程路径
STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第12张图片

STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第13张图片
点击Open

STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第14张图片点击OK,会提示我们导入时钟树失败,我们一会再配置一下,时钟树。
STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第15张图片
配置时钟为72MHZ
STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第16张图片
这时我们观察一下我们导入的引脚定义。

STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第17张图片
STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第18张图片由于我们使用的板子的按键是这样连接的,
STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第19张图片
我们的板载LED是
STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第20张图片
所以我们将PE3 PE4设为输入模式
PE5设为输出模式
STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第21张图片为工程命名后生成工程
STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第22张图片使用KEIL打开生成的工程,点击编译
没有错误,然后开始移植
STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第23张图片

STM32CUBEMX机智云平台移植
此时的工程中只有STM32L496ZGT相关的驱动代码,若要使用机智云的联网能力就需要移植相关的协议源码(即前文介绍的已自动生成的STM32F103工程中的三个文件:Gizwits、Hal、Utils)
移植前的STM32C8TX工程目录如下:
STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第24张图片
移植后(即从STM32F103中复制Gizwits、Hal、Utils到STM32ZET6下)如下:
STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第25张图片
接下来我们在STM32ZET6的keill5工程中添加如下的目录结构:
STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第26张图片
同理加入相应的编译路径:

STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第27张图片
接下来在main.c中添加与机智云协议处理相关的代码:

/* USER CODE BEGIN Includes */
#include "hal_key.h"
#include "gizwits_product.h"
#include "common.h"
/* USER CODE END Includes */
/* USER CODE BEGIN PV */
#define GPIO_KEY_NUM 2 ///< Defines the total number of key member
keyTypedef_t singleKey[GPIO_KEY_NUM]; ///< Defines a single key member array pointer
keysTypedef_t keys;   
/* USER CODE END PV */
/* USER CODE BEGIN 0 */
/**
* key1 short press handle
* @param none
* @return none
*/
void key1ShortPress(void)
{
    GIZWITS_LOG("KEY1 PRESS ,Production Mode\n");
    gizwitsSetMode(WIFI_PRODUCTION_TEST);
}
/**
* key1 long press handle
* @param none
* @return none
*/
void key1LongPress(void)
{
    GIZWITS_LOG("KEY1 PRESS LONG ,Wifi Reset\n");
    gizwitsSetMode(WIFI_RESET_MODE);
}
/**
* key2 short press handle
* @param none
* @return none
*/
void key2ShortPress(void)
{
    GIZWITS_LOG("KEY2 PRESS ,Soft AP mode\n");
    #if !MODULE_TYPE
    gizwitsSetMode(WIFI_SOFTAP_MODE);
    #endif
}
/**
* key2 long press handle
* @param none
* @return none
*/
void key2LongPress(void)
{
    //AirLink mode
    GIZWITS_LOG("KEY2 PRESS LONG ,AirLink mode\n");
    #if !MODULE_TYPE
    gizwitsSetMode(WIFI_AIRLINK_MODE);
    #endif
}
/**
* Key init function
* @param none
* @return none
*/
void keyInit(void)
{
    singleKey[0] = keyInitOne(NULL, KEY1_GPIO_Port, KEY1_Pin, key1ShortPress, key1LongPress);
    singleKey[1] = keyInitOne(NULL, KEY2_GPIO_Port, KEY2_Pin, key2ShortPress, key2LongPress);
    keys.singleKey = (keyTypedef_t *)&singleKey;
    keyParaInit(&keys); 
}
/* USER CODE END 0 */
  /* USER CODE BEGIN 2 */
  timerInit();
  uartInit();
  userInit();
  gizwitsInit();
  keyInit();
  GIZWITS_LOG("MCU Init Success \n");
 /* USER CODE END 2 */
  while (1)
  {
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
      userHandle();
      gizwitsHandle((dataPoint_t *)&currentDataPoint);
}
/* USER CODE END 3 */
}

点击编译应该是没有错误的

然后在gizwits_product.c
中添加gpio.h头文件

STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第28张图片
添加灯的逻辑处理
STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第29张图片
点击编译

在这里插入图片描述

接下来要对WIFI模块进行烧录

WIFI模块烧录机智云固件

机智云提供的烧录教程

我们下载好,机智云的固件,和烧录工具

文末提供有用到的工具的链接

首先先介绍下ESP8266的引脚定义

STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第30张图片

STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第31张图片
在下载的时候我们这样接线

ESP8266 接线
GND GND
VCC 3.3V
CH_PD 3.3V
GPIO0 GND
RST 动态
RX 串口TX
TX 串口RX

按照表格接线完毕后,RST先不接

STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第32张图片
打开烧录工具,选择好烧录的固件
我们选择8MB的(这个flash大小,要根据你实际的wifi模块的型号来选择)
STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第33张图片

STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第34张图片
选择第一个

STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第35张图片

STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第36张图片如果你的WIFI模块是这样的:
STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第37张图片
要选择32Mb的固件

STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第38张图片
下载工具界面(32MB):
STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第39张图片
点击START
如果一直等待上电同步,就把RST接GND,然后再拔开
如果你是用开发板上自带的CH340转串口,记得开发板里烧录的程序不要对和 CH340相连接的串口发送数据,可以先擦除程序再烧录。
否则会导致烧录失败,或者一直等待上电同步。

STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第40张图片
下载完成,

STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第41张图片
这时我们就烧录完成了

连接调试

  1. 我们把上一步写好的KEIL5工程下载到开发板上
  2. ESP8266按下图连线
ESP8266 连线
GND GND
VCC 3.3V
RX PA2
TX PA3
CH_PD 3.3V
GPIO0&RST&GPIO2 悬空
  1. 打开串口调试助手

长按开发板的KEY2键(你自己定义的)

STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第42张图片
进入配网模式

  1. 打开微信,搜索公众号,安信可科技
    STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第43张图片
  2. 输入你当前连接的wifi密码

STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第44张图片
点击连接,观察串口信息
STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第45张图片
提示配网成功

下载手机APP

机智云调试APP
注册新的账号,不是你的开发者账号。
STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第46张图片登录后
STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第47张图片
就可以在发现新设备里看到我们的设备了。
点击设备,可以看到我们定义的数据点,
STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第48张图片
STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第49张图片
可以控制灯的亮灭。
在开发者中心,也可以看到具体的日志
STM32F103ZET6使用ESP8266接入机智云点亮LED教程_第50张图片
最后放上用到的软件

百度云链接

百度云链接
提取码:dv74

你可能感兴趣的:(stm32)