基于智能家居项目 完结散花

频道:保险市场 日期: 浏览:62163

一、项目目标

通过机智云平台,快速实现以下功能:

MCU + ESP8266 实现单点控制

实现多点控制(如多个按键控制一个设备)

实现MCU 数据上报至云端

实现获取网络时间(NTP)

9d9c92ba-6df5-11f0-9080-92fbcf53809c.jpg


二、机智云平台简介

机智云(Gizwits)是一款面向物联网开发者的云平台,提供:

免费的云端服务与接入架构

自动生成设备端代码

支持多种硬件平台(如 STM32、ESP8266、ESP32 等)

提供开发调试 App

组成结构:

机智云 = 云端服务器 + APP框架 + 自动生成底层代码

核心优势:

省去协议编写

提高开发效率

简化配置流程


三、两种典型开发方案

开发方案 描述 特点
MCU + ESP8266 串口通信 模组负责联网,MCU负责功能逻辑 本文采用
SoC 模组直接开发(如 ESP32) 直接在模组上跑应用 简化硬件

四、开发流程总览

注册机智云账号,创建产品

创建自定义数据点(即控制/状态变量)

下载机智云代码(自动生成)

配置 MCU 串口与定时器

移植 Gizwits 库到工程中

配置固件、烧写 ESP8266

调用初始化函数,测试控制与上报功能


五、代码移植与配置详解

1. 配置 USART2 接收中断

voidUSART2_IRQHandler(void)

{

staticu8 data;

if(USART_GetITStatus(USART2,USART_IT_RXNE))

{

USART_ClearITPendingBit(USART2,USART_IT_RXNE);

data = USART_ReceiveData(USART2);

gizPutData(&data,1); // 写入环形缓冲区

}

}

2. 实现uartWrite()串口发送函数

int32_tuartWrite(uint8_t*buf,uint32_tlen)

{

for(uint32_ti =0; i < len; i++)

{

USART_SendData(USART2, buf[i]);

while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);

if(i >=2&& buf[i] ==0xFF)

{

USART_SendData(USART2,0x55);

while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);

}

}

returnlen;

}

3. 1ms 定时器实现

定时器中断服务函数中添加:

voidTIM1_UP_IRQHandler(void)

{

if(TIM_GetITStatus(TIM1, TIM_IT_Update))

{

TIM_ClearITPendingBit(TIM1, TIM_IT_Update);

gizTimerMs(); // 为 Gizwits 协议提供时基

}

}

4. 初始化代码封装

voidGizwits_Init(void)

{

TIM1_Update(); // 初始化1ms定时器

Usart2_Init(); // 初始化串口

memset(¤tDataPoint,0,sizeof(dataPoint_t));

gizwitsInit(); // 初始化协议栈

}

5. 主循环中调用:

while(1)

{

gizwitsHandle(¤tDataPoint);// 数据处理与上报

userHandle(); // 采集逻辑

}


六、ESP8266 烧录机智云固件

两种烧录方式:

固件类型 描述 推荐场景
合并固件 combine.bin 适合快速下载,只设置一个地址 推荐新手
分离固件 需配置 4 个地址:boot、init、blank、app 更灵活

烧录步骤:

板子拨到LOAD 模式

使用乐鑫串口烧录工具,配置固件路径

设置波特率(115200 或 9600)

点击START开始烧写

烧写完成后,切回RUN 模式


七、机智云 APP 调试与配网

下载 Gizwits 调试 APP(推荐 v2.4.5)

使用 SoftAP 或 AirLink 配网

绑定设备(扫码或输入 DID)

实时观察数据点上传、下发控制


八、数据点逻辑开发

1. 数据上报逻辑

voiduserHandle(void)

{

// 模拟采集温度数据

currentDataPoint.valueTemperature = get_temperature();

}

2. 云端控制执行逻辑

int8_tgizwitsEventProcess(...)

{

switch(event[i])

{

caseEVENT_LED:

currentDataPoint.valueLED ? LED_ON() : LED_OFF();

break;

...

}

}


九、获取网络时间(NTP)

机智云默认支持网络时间同步,用户可在gizwitsEventProcess中监听:

caseEVENT_NTP:

// 时间戳处理 ntp_time

break;


十、总结

教程从实际出发,完整展示了使用机智云平台 + ESP8266 + MCU实现智能家居联网通信的全过程。通过代码自动生成 + 固件烧录 + STM32 工程移植,开发者无需关心底层协议即可快速构建联网设备。

  • 随机文章
  • 热门文章
  • 热评文章