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