当前位置:网站首页>机智云物联网平台 STM32 ESP8266-01S 简单无线控灯
机智云物联网平台 STM32 ESP8266-01S 简单无线控灯
2022-07-25 10:18:00 【CoderEnd】
机智云 STM32 ESP8266-01S 简单无线控灯
转载青烨慕容博客地址https://blog.csdn.net/weixin_45488643/article/details/106998647
1、机智云账号注册和创建新产品
1.1、账号注册及其机智云使用文档
账号注册我就不详细说了,http://docs.gizwits.com/zh-cn/overview/overview.html机智云的文档中心。可以查找自己需要的一部分信息。
1.2、产品创建

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


手机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 固件会时刻的更新,有可能你们所看到的时间会不一样,以官网最新发布的为准,你也可以下载旧版本的固件。

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


3.3、烧录

3.4、esp与STM32引脚连接
引脚连接:
其它的引脚可以悬空。
4、程序移植MCU
我自己的工程文件:https://download.csdn.net/download/weixin_45488643/12558122
4.1、工程配置
前面已经下载了机智云程序文件夹,解压缩可以看到如下文件:
把这2个文件夹拷贝到自己的工程文件下。
我自己使用的是正点的代码。
在工程文件里面添加文件夹和文件路径。

选择C99 Mode 防止编译报错。
4.2 代码移植
工程文件夹目录:
使用了定时器3和串口3。
4.2.1、修改 USART3 文件
在 usart3.c 文件中添加串口 3 的初始化和中断服务函数,将中断接收的数据写入到gizPutData()函数,代码如下:
添加头文件#include “gizwits_product.h” 到USART3文件里面,不添加就会报错。

4.2.2、修改 timer.c 文件
在定时器 3 中断服务函数中添加 gizTimerMs()函数,并且添加 gizwits_product.h 头文件,代码如下

注意: gizwits_product.h 文件中没有对 gizTimerMs()函数做声明,需自己添加,否则编译会出现警报。
4.2.3、修改 gizwits_product.c 文件

添加完串口发送函数后,回到 gizwitsEventProcess()用户处理事件函数中添加我们的用户事件逻辑,这里我们是控制 LED1 的亮灭,在 EVENT_LEDonoff 事件中根据返回的开关量添加其 LED1 的开关控制,代码如下:需要提前添加自己定义的LED头文件和usart3.h头文件,不然就报错了。
在mcuRestart()函数中添加软复位函数,代码如下:
修改**userHandle()**函数:
添加数据上报。
在主函数中,先对按键、 LED、串口以及 Gizwits 串口协议所需的定时器、 WIF 串口、数据缓冲区等一系列进行初始化,主循环通过按键扫描函数 KEY_Scan 一直扫描当前按键状态,KEY1 按下使 WIFI 设备进入 AirLink 配网模式, KEY_UP 按下让 WIFI 设备进入复位模式(清除配对信息、断开连接),而 UserHandl 函数则读取当前的 LED1 状态,将读出状态值赋予回设备数据结构体变量中,然后再通过 gizwitsHandle 函数上报到服务器。
5、烧录工程配网
下载工程文件到开发板。
5.1、实物图

5.2、配网
配网:


先按下开发板上的KEY1键在,在点击我已经完成上述操作。
5.3 、实物效果展示
打开灯:

能看到这个地方的小伙伴也是比较有耐心了,工程文件免费送了。
工程文件免费下载地址:https://wwa.lanzous.com/iVf8re42hvi
整个工程到此就结束了,希望小伙伴能够手下留情,给个赞。
main.c
#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 *)¤tDataPoint);//协议处理
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;
}
}
参考资料
- 转载青烨慕容博客地址https://blog.csdn.net/weixin_45488643/article/details/106998647
- 机智云官网https://www.gizwits.com/

边栏推荐
- Electromagnetic field and electromagnetic wave experiment I familiar with the application of MATLAB software in the field of electromagnetic field
- 【云享新鲜】社区周刊·Vol.72- 2022华为开发者大赛中国区首场开幕式启动;华为云KooMessage火热公测中…
- HCIP (01)
- Leetcode 560 prefix and + hash table
- AI system frontier dynamics issue 43: ONEFLOW V0.8.0 officially released; GPU finds human brain connections; AI doctoral online crowdfunding research topic
- [high concurrency] how to realize distributed flow restriction under 100 million level traffic? You must master these theories!!
- C3d model pytorch source code sentence by sentence analysis (II)
- mysql高级语句(一)(总有一个人的出现,让你的生活不再继续糟糕)
- Probe into Druid query timeout configuration → who is the querytimeout of datasource and jdbctemplate effective?
- Learn NLP with Transformer (Chapter 8)
猜你喜欢

HCIA experiment (10) nat

JS collection

mysql高级语句(一)(总有一个人的出现,让你的生活不再继续糟糕)

2021 CEC written examination summary

ESP8266 使用 DRV8833驱动板驱动N20电机

企业实践开源的动机

【蓝桥杯集训100题】scratch太极图 蓝桥杯scratch比赛专项预测编程题 集训模拟练习题第22题

代码的表示学习:CodeBERT及其他相关模型介绍

Flask framework - flask WTF form: data validation, CSRF protection
![[strategic mode] like Zhugeliang's brocade bag](/img/c8/4baeabbc3674b956f6d376ab71e15a.png)
[strategic mode] like Zhugeliang's brocade bag
随机推荐
AI technology stack is too huge! Wu Enda gives career planning: lifelong learning
Digital twin everything can be seen | connecting the real world and digital space
redis 哨兵,高可用的执行者
[flask advanced] solve the classic error reporting of flask by combining the source code: working outside of application context
HDD杭州站全程体验有感
性能测试中TPS的计算【杭州多测师】【杭州多测师_王sir】
Flask框架——flask-caching缓存
[servlet] request parsing
Flask framework - session and cookies
Disabled and readonly and focus issues
Learn NLP with Transformer (Chapter 7)
HCIA实验(09)
三万字速通Servlet
Introduction to onnx (open neural network exchange)
【flask高级】从源码深入理解flask的应用上下文和请求上下文
Learn NLP with Transformer (Chapter 4)
BGP联邦实验
上周热点回顾(7.18-7.24)
Motivation of enterprises to practice open source
HCIP(12)