首先我们要访问机智云的官网,注册相应的开发者账号。
点击立即注册后,登陆刚刚注册的账号,来到开发者中心,可以看到如下界面。
点击右侧的创建新产品,开始我们的demo创建。
产品分类,我们随便选择一下就行
产品名称,我们把它命名为“小电灯”
技术方案,我们选择最左侧的WIFI/移动网络方案
通讯方式,WIFI
数据传输方式,定长
然后点击保存跳转到如下界面
点击去添加数据点,添加我们的一个数据点。
数据点,就可以理解为我们编程中定义的变量。
我们给数据点起一个名字,叫state,这个后来会在STM32工程里用到。
其他属性很简单,不再说明。
点击添加,添加第一个数据点
点击应用,确认本次修改
然后点击左侧导航栏的MCU开发
选择独立MCU方案
硬件平台就选择STM32F103C8TX
在下方粘贴你的Product Secret
Product Secret,可以在导航栏左侧的基本信息那里获得,复制过来粘贴即可。
点击生成代码包,下载到本地。
解压代码包
打开CubeMx新建工程
选择STM32F103ZETX
选中File选项,选择Import project
选中你刚刚下载解压的工程路径
点击Open
点击OK,会提示我们导入时钟树失败,我们一会再配置一下,时钟树。
配置时钟为72MHZ
这时我们观察一下我们导入的引脚定义。
由于我们使用的板子的按键是这样连接的,
我们的板载LED是
所以我们将PE3 PE4设为输入模式
PE5设为输出模式
为工程命名后生成工程
使用KEIL打开生成的工程,点击编译
没有错误,然后开始移植
STM32CUBEMX机智云平台移植
此时的工程中只有STM32L496ZGT相关的驱动代码,若要使用机智云的联网能力就需要移植相关的协议源码(即前文介绍的已自动生成的STM32F103工程中的三个文件:Gizwits、Hal、Utils)
移植前的STM32C8TX工程目录如下:
移植后(即从STM32F103中复制Gizwits、Hal、Utils到STM32ZET6下)如下:
接下来我们在STM32ZET6的keill5工程中添加如下的目录结构:
同理加入相应的编译路径:
接下来在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 *)¤tDataPoint);
}
/* USER CODE END 3 */
}
点击编译应该是没有错误的
然后在gizwits_product.c
中添加gpio.h头文件
添加灯的逻辑处理
点击编译
接下来要对WIFI模块进行烧录
WIFI模块烧录机智云固件
我们下载好,机智云的固件,和烧录工具
文末提供有用到的工具的链接
首先先介绍下ESP8266的引脚定义
在下载的时候我们这样接线
ESP8266 | 接线 |
---|---|
GND | GND |
VCC | 3.3V |
CH_PD | 3.3V |
GPIO0 | GND |
RST | 动态 |
RX | 串口TX |
TX | 串口RX |
按照表格接线完毕后,RST先不接
打开烧录工具,选择好烧录的固件
我们选择8MB的(这个flash大小,要根据你实际的wifi模块的型号来选择)
选择第一个
如果你的WIFI模块是这样的:
要选择32Mb的固件
下载工具界面(32MB):
点击START
如果一直等待上电同步,就把RST接GND,然后再拔开
如果你是用开发板上自带的CH340转串口,记得开发板里烧录的程序不要对和 CH340相连接的串口发送数据,可以先擦除程序再烧录。
否则会导致烧录失败,或者一直等待上电同步。
下载完成,
这时我们就烧录完成了
连接调试
- 我们把上一步写好的KEIL5工程下载到开发板上
- ESP8266按下图连线
ESP8266 | 连线 |
---|---|
GND | GND |
VCC | 3.3V |
RX | PA2 |
TX | PA3 |
CH_PD | 3.3V |
GPIO0&RST&GPIO2 | 悬空 |
- 打开串口调试助手
长按开发板的KEY2键(你自己定义的)
进入配网模式
- 打开微信,搜索公众号,安信可科技
- 输入你当前连接的wifi密码
点击连接,观察串口信息
提示配网成功
下载手机APP
机智云调试APP
注册新的账号,不是你的开发者账号。
登录后
就可以在发现新设备里看到我们的设备了。
点击设备,可以看到我们定义的数据点,
可以控制灯的亮灭。
在开发者中心,也可以看到具体的日志
最后放上用到的软件
百度云链接
百度云链接
提取码:dv74