STM32F103RC使用esp-01s连接机智云

STM32F103RC使用esp-01s连接机智云点亮LED

  • 1、机智云账号注册和创建新产品
    • 1.1、账号注册及其机智云使用文档
    • 1.2、产品创建
      • 1.3、数据读写类型区别
      • 1.4、MCU开发
  • 2、可以使用虚拟设备调试
  • 3、esp-01s烧录机智云固件
    • 3.1、固件下载
    • 3.2、esp-01s简介
    • 3.3、烧录
    • 3.4、esp与STM32引脚连接
  • 4、程序移植MCU
    • 4.1、工程配置
    • 4.2 代码移植
      • 4.2.1、修改 USART3 文件
      • 4.2.2、修改 timer.c 文件
      • 4.2.3、修改 gizwits_product.c 文件
      • 4.2.4、主函数 main:
  • 5、烧录工程配网
    • 5.1、实物图
    • 5.2、配网
    • 5.3 、实物效果展示

  这几天搞了搞,机智云的物联网,试着使用STM32F103RC配合esp-01s接入了机智云的物联网,记录以下过程,仅仅是一个简单的LED灯开关,但是连接机智云的基本过程和方法是一样的。
我自己的工程文件: https://download.csdn.net/download/weixin_45488643/12558122 文末有福利哦。

1、机智云账号注册和创建新产品

1.1、账号注册及其机智云使用文档

账号注册我就不详细说了,http://docs.gizwits.com/zh-cn/overview/overview.html机智云的文档中心。可以查找自己需要的一部分信息。

1.2、产品创建

STM32F103RC使用esp-01s连接机智云_第1张图片
选择入网方式:
STM32F103RC使用esp-01s连接机智云_第2张图片
查看产品基本信息:
STM32F103RC使用esp-01s连接机智云_第3张图片
数据点:
数据点要一定要选择可写。
STM32F103RC使用esp-01s连接机智云_第4张图片

1.3、数据读写类型区别

  读写类型:定义数据点的作用范围,包含有 4 种类型,分别是:只读、可写、报警、故障,
以下是官方对读写类型的介绍:
  ① 只读:表示该数据点为非控制,数据只支持从设备上报。
  ② 可写:表示该数据点可控制。设备端可上报数据点数据,云端/客户端(移动端)可对该数
据点数据做出下发控制。
  ③ 报警:表示该数据点非控制,数据只支持从设备(设备端)上报,数据类型需为布尔值。
  ④ 故障:表示该数据点非控制,数据只支持从设备(设备端)上报,数据类型需为布尔值。
云端对设备上报的该数据点做统计,可在“运行状态”查看。
  数据类型:定义数据点数据类型,包含有布尔值、枚举类型、数值、以及扩展,以下是官方对数据类型介绍:
  ① 布尔值:表示两个状态: 0 或 1。如开关状态等,建议使用布尔数据类型。
  ② 枚举类型:可定义一个有限的取值集合。当定义的某个功能(元器件)有固定的若干个值,
  例如:“设定 LED 组合颜色”该数据点的枚举定义值:“自定义,黄色,紫色,粉色”。
  ③ 数值:填写数值范围,数值可为负数/小数,机智云自动将数值转换为正数。
  ④ 扩展:填写数据长度,数据内容由用户自定义。对于上述功能点无法满足的复杂功能可采用,机智云不建议使用此类型数据,数据上报该数据点的数据,机智云无法识别。

1.4、MCU开发

Product Secret 在前面基本信息里面可以看到。
STM32F103RC使用esp-01s连接机智云_第5张图片
下载代码:
STM32F103RC使用esp-01s连接机智云_第6张图片

2、可以使用虚拟设备调试

STM32F103RC使用esp-01s连接机智云_第7张图片
STM32F103RC使用esp-01s连接机智云_第8张图片
手机app下载地址:
https://download.gizwits.com/zh-cn/p/98/99机智云官方下载地址。

  现在就可以使用手机和虚拟设备进行简单调试了。

3、esp-01s烧录机智云固件

3.1、固件下载

  固件下载https://download.gizwits.com/zh-cn/p/92/94直接下载机智云固件。由于 GAgent 固件会时刻的更新,有可能你们所看到的时间会不一样,以官网最新发布的为准,你也可以下载旧版本的固件。


解压后的固件文件:
可以看到固件类型有好几种类型,标红那个是我们需要烧录的固件,我是直接烧录的已经打包好的固件,我看到网上有人发布的不是打包的固件,烧录起来麻烦一点。
STM32F103RC使用esp-01s连接机智云_第9张图片
  烧录软件下载地址:http://wiki.ai-thinker.com/esp_download
STM32F103RC使用esp-01s连接机智云_第10张图片
下载解压就可以看到烧录软件:
STM32F103RC使用esp-01s连接机智云_第11张图片
  烧录了机智云固件还想要还原乐鑫的固件,附下载地址。
乐鑫固件下载地址:http://wiki.ai-thinker.com/esp8266/sdk

3.2、esp-01s简介

实物图:
STM32F103RC使用esp-01s连接机智云_第12张图片
管脚分布:
STM32F103RC使用esp-01s连接机智云_第13张图片

STM32F103RC使用esp-01s连接机智云_第14张图片
STM32F103RC使用esp-01s连接机智云_第15张图片

3.3、烧录

STM32F103RC使用esp-01s连接机智云_第16张图片

3.4、esp与STM32引脚连接

引脚连接:
在这里插入图片描述
其它的引脚可以悬空。

4、程序移植MCU

我自己的工程文件:https://download.csdn.net/download/weixin_45488643/12558122

4.1、工程配置

  前面已经下载了机智云程序文件夹,解压缩可以看到如下文件:
STM32F103RC使用esp-01s连接机智云_第17张图片
把这2个文件夹拷贝到自己的工程文件下。
我自己使用的是正点的代码。
STM32F103RC使用esp-01s连接机智云_第18张图片

在工程文件里面添加文件夹和文件路径。
STM32F103RC使用esp-01s连接机智云_第19张图片
STM32F103RC使用esp-01s连接机智云_第20张图片
选择C99 Mode 防止编译报错。
STM32F103RC使用esp-01s连接机智云_第21张图片

4.2 代码移植

工程文件夹目录:
使用了定时器3和串口3。
STM32F103RC使用esp-01s连接机智云_第22张图片

4.2.1、修改 USART3 文件

  在 usart3.c 文件中添加串口 3 的初始化和中断服务函数,将中断接收的数据写入到gizPutData()函数,代码如下:
  添加头文件#include “gizwits_product.h” 到USART3文件里面,不添加就会报错。

STM32F103RC使用esp-01s连接机智云_第23张图片

4.2.2、修改 timer.c 文件

  在定时器 3 中断服务函数中添加 gizTimerMs()函数,并且添加 gizwits_product.h 头文件,代码如下
在这里插入图片描述
STM32F103RC使用esp-01s连接机智云_第24张图片
注意: gizwits_product.h 文件中没有对 gizTimerMs()函数做声明,需自己添加,否则编译会出现警报。

4.2.3、修改 gizwits_product.c 文件

STM32F103RC使用esp-01s连接机智云_第25张图片
  添加完串口发送函数后,回到 gizwitsEventProcess()用户处理事件函数中添加我们的用户事件逻辑,这里我们是控制 LED1 的亮灭,在 EVENT_LEDonoff 事件中根据返回的开关量添加其 LED1 的开关控制,代码如下:需要提前添加自己定义的LED头文件和usart3.h头文件,不然就报错了。
STM32F103RC使用esp-01s连接机智云_第26张图片
在mcuRestart()函数中添加软复位函数,代码如下:
STM32F103RC使用esp-01s连接机智云_第27张图片
修改**userHandle()**函数:
添加数据上报。
STM32F103RC使用esp-01s连接机智云_第28张图片

4.2.4、主函数 main:

#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "timer.h"
#include "usart3.h"
#include "gizwits_product.h" 

//协议初始化
void Gizwits_Init(void)
{
	TIM3_Int_Init(9,7199);//1MS系统定时
  usart3_init(9600);//WIFI初始化
	userInit();//设备状态结构体初始化
	gizwitsInit();//缓冲区初始化
}

//主函数
int main(void)
{
	int key;
	delay_init();	    	 //延时函数初始化
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	uart_init(115200);	    //串口初始化为115200
	LED_Init();			    //LED端口初始化
	KEY_Init();             //按键初始化
	Gizwits_Init();         //协议初始化
	printf("--------机智云-协议移植LED测试实验----------\r\n");
	printf("KEY1:AirLink连接模式\t KEY_UP:复位\r\n\r\n");
	while(1)
	{
		userHandle();//用户采集
		gizwitsHandle((dataPoint_t *)&currentDataPoint);//协议处理
		key = KEY_Scan(0);
		if(key==KEY1_PRES)//KEY1按键
		{
			printf("WIFI进入AirLink连接模式\r\n");
			gizwitsSetMode(WIFI_AIRLINK_MODE);//Air-link模式接入
		}
		if(key==WKUP_PRES)//KEY_UP按键
		{
			printf("WIFI复位,请重新配置连接\r\n");
			gizwitsSetMode(WIFI_RESET_MODE);//WIFI复位
		}
		delay_ms(200);
		LED0 = ~LED0;
	}
}

  在主函数中,先对按键、 LED、串口以及 Gizwits 串口协议所需的定时器、 WIF 串口、数据缓冲区等一系列进行初始化,主循环通过按键扫描函数 KEY_Scan 一直扫描当前按键状态,KEY1 按下使 WIFI 设备进入 AirLink 配网模式, KEY_UP 按下让 WIFI 设备进入复位模式(清除配对信息、断开连接),而 UserHandl 函数则读取当前的 LED1 状态,将读出状态值赋予回设备数据结构体变量中,然后再通过 gizwitsHandle 函数上报到服务器。

5、烧录工程配网

下载工程文件到开发板。

5.1、实物图

STM32F103RC使用esp-01s连接机智云_第29张图片

5.2、配网

配网:
STM32F103RC使用esp-01s连接机智云_第30张图片
STM32F103RC使用esp-01s连接机智云_第31张图片
STM32F103RC使用esp-01s连接机智云_第32张图片
  先按下开发板上的KEY1键在,在点击我已经完成上述操作。
STM32F103RC使用esp-01s连接机智云_第33张图片

5.3 、实物效果展示

打开灯:
STM32F103RC使用esp-01s连接机智云_第34张图片
STM32F103RC使用esp-01s连接机智云_第35张图片
  能看到这个地方的小伙伴也是比较有耐心了,工程文件免费送了。
工程文件免费下载地址:https://wwa.lanzous.com/iVf8re42hvi

  整个工程到此就结束了,希望小伙伴能够手下留情,给个

你可能感兴趣的:(STM32F103,物联网)