基于STM32与ESP8266的智能家居控制系统【免费开源】
源码下载 完整项目已打包,开源免费: https://blog.csdn.net/weixin_52908342/article/details/150466094
随着 物联网(IoT) 技术的快速发展,智能家居作为其中的重要应用场景,逐渐成为人们生活中不可或缺的一部分。传统家居往往依赖人工操作,缺乏自动化与远程管理功能,而智能家居系统则通过 传感器感知环境、无线通信实现互联、控制器进行逻辑处理,从而让家庭生活更加便捷、安全和节能。
在众多控制器平台中,STM32 系列单片机 以其高性能、低功耗、丰富的外设接口和稳定的生态支持,被广泛应用于智能家居设备的开发。本项目以 STM32F103C8T6 为核心,结合多种传感器、执行器和通信模块,设计并实现了一套小型智能家居系统。
该系统不仅能够完成 温湿度检测、光照感知、烟雾报警、家电控制 等功能,还支持 WiFi 联网与手机 APP 远程交互,实现了典型的物联网智能家居应用。本文将从 硬件设计、软件实现、功能展示 等方面详细介绍该系统的构建过程,帮助学习者理解智能家居的完整开发流程。
一、项目概述
随着物联网(IoT, Internet of Things)的快速发展,智能家居逐渐走进人们的生活。它通过嵌入式控制系统、传感器网络和无线通信技术,实现家庭设备的互联互通与智能化管理。 本项目基于 STM32 微控制器 设计了一套智能家居系统,主要实现了以下功能:
- 环境监测:采集温度、湿度、光照等信息。
- 远程控制:通过手机 APP 或网页实现家电远程控制。
- 自动化控制:根据环境参数自动开启或关闭电器(如风扇、灯光)。
- 安全防护:门禁管理、红外人体检测与报警功能。
- 无线通信:基于 ESP8266 WiFi 模块与云端交互。
系统在硬件选型、软件架构和应用层设计上都有较强的实用性,适合作为嵌入式物联网的学习和实践案例。
二、硬件设计
1. 核心控制器
-
STM32F103C8T6 微控制器
- 72MHz 主频,32KB SRAM,64KB Flash
- 丰富的外设接口(GPIO、ADC、UART、I2C、SPI)
- 功耗低,性价比高
2. 传感器模块
- DHT11/DHT22:温湿度采集
- 光敏电阻/光照传感器:室内亮度监测
- MQ-2 烟雾传感器:火灾监测
- HC-SR501 红外人体感应模块:安全检测
3. 执行器模块
- 继电器模块:控制家电通断(风扇、灯光)
- 舵机:控制门锁开关
- 蜂鸣器:报警提示
4. 通信模块
- ESP8266 WiFi 模块:负责无线联网与云端通信
- 蓝牙 HC-05(可选):本地蓝牙控制
5. 电源与保护
- DC-DC 降压模块:将 12V 转 5V/3.3V
- 保险丝与二极管保护:避免电路过流或反接
三、软件设计
系统的软件部分分为 底层驱动、业务逻辑、通信协议和上位机/APP 四个层次。
1. 系统架构
- 底层驱动层:GPIO、ADC、USART、I2C、PWM 驱动
- 业务逻辑层:传感器数据采集、控制逻辑实现
- 通信层:MQTT 协议封装,ESP8266 串口通信
- 应用层:自动化规则、手机 APP 控制界面
2. 主要功能流程
-
环境监控:STM32 采集传感器数据 → 数据通过 WiFi 上传云端 → 手机 APP 实时显示
-
远程控制:用户通过 APP/网页发送控制命令 → 云端 → STM32 → 控制继电器/舵机
-
自动化逻辑:
- 温度 > 28℃ → 自动开启风扇
- 光照 < 阈值 → 自动开灯
- 检测到烟雾/人体异常 → 蜂鸣器报警并发送消息
四、核心功能实现
1. 传感器数据采集
#include "dht11.h"int temperature, humidity;void Read_DHT11(void) {if(DHT11_Read(&temperature, &humidity) == SUCCESS) {printf("Temp: %d C, Humi: %d %%\r\n", temperature, humidity);} else {printf("DHT11 Error!\r\n");}
}
2. 控制继电器(家电开关)
#define RELAY_PIN GPIO_Pin_0
#define RELAY_PORT GPIOAvoid Relay_Control(uint8_t state) {if(state)GPIO_SetBits(RELAY_PORT, RELAY_PIN); // 开启elseGPIO_ResetBits(RELAY_PORT, RELAY_PIN); // 关闭
}
3. ESP8266 串口通信(MQTT)
void ESP8266_SendCommand(char *cmd) {printf("Send: %s\r\n", cmd);USART_SendString(USART1, cmd);
}void MQTT_Publish(char *topic, char *payload) {char buffer[128];sprintf(buffer, "PUBLISH %s %s\r\n", topic, payload);ESP8266_SendCommand(buffer);
}
4. 自动化控制逻辑
void Auto_Control(void) {if(temperature > 28) {Relay_Control(1); // 打开风扇} else {Relay_Control(0);}if(light < 200) {Relay_Control(1); // 开灯} else {Relay_Control(0);}
}
五、上位机与手机端
1. 手机 APP
-
使用 HBuilderX + uni-app 开发跨平台 APP
-
主要界面功能:
- 设备状态显示(温湿度、光照值)
- 家电远程开关
- 报警消息推送
2. 云端平台
- MQTT 服务器:可选用 EMQX 或阿里云 IoT 平台
- 数据库存储:MySQL/InfluxDB
- 可视化平台:Grafana 展示环境变化曲线
六、实验效果与运行截图
- 环境监测界面:实时显示温湿度、光照等参数
- 设备控制界面:远程控制灯光、风扇、门锁
- 异常报警:检测到烟雾或人体异常时,APP 立即收到推送
七、总结
本项目基于 STM32 + 传感器 + WiFi模块 搭建了一个小型智能家居系统,涵盖了嵌入式开发、物联网通信、自动化控制等多个方面。 其优势包括:
- 低成本:硬件价格低廉,适合学习和实验
- 扩展性强:可接入更多传感器和智能设备
- 应用场景广泛:家庭安防、节能控制、老人看护等
未来可以继续优化的方向:
- 增加语音控制(接入语音识别模块)
- 使用低功耗蓝牙(BLE)进行设备间通信
- 引入 AI 边缘计算,实现更智能的决策
八、心得体会
通过本项目的开发,不仅加深了对 STM32 外设编程的理解,还掌握了物联网系统的整体设计思路。从传感器数据采集,到通信协议实现,再到云端与APP交互,完整地体验了智能家居系统的开发流程。这为后续更复杂的 IoT 项目打下了坚实基础。
本项目通过 STM32 单片机 为核心控制平台,结合温湿度传感器、光照传感器、烟雾传感器、红外感应模块等硬件,实现了智能家居的多项功能,包括 环境监测、家电控制、安全防护和远程交互。 系统采用 ESP8266 WiFi 模块 与云端通信,用户可通过手机 APP 实时查看数据并远程操作家电,达到了“智能化、便捷化、安全化”的目标。
整个项目不仅展示了 嵌入式开发与物联网技术的结合,还为后续智能家居的扩展应用(如语音控制、AI 边缘计算)提供了良好的实践基础。