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

描述

一、项目目标

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

MCU + ESP8266 实现 单点控制

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

实现 MCU 数据上报至云端

实现 获取网络时间(NTP)



智能家居


 



 

二、机智云平台简介

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

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

自动生成设备端代码

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

提供开发调试 App

组成结构:

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


 

核心优势:

省去协议编写

提高开发效率

简化配置流程



 


 

三、两种典型开发方案

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


 

四、开发流程总览

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

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

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

配置 MCU 串口与定时器

移植 Gizwits 库到工程中

配置固件、烧写 ESP8266

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



 

五、代码移植与配置详解

1. 配置 USART2 接收中断


 

voidUSART2_IRQHandler(void)
{
static u8 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_t len)
{
for(uint32_t i = 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);
        }
    }
return len;
}



 

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])
    {
case EVENT_LED:
            currentDataPoint.valueLED ? LED_ON() : LED_OFF();
break;
        ...
    }
}
 



 

九、获取网络时间(NTP)

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


 

case EVENT_NTP:
// 时间戳处理 ntp_time
break;
 


十、总结

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


 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分