【开源免费】基于 STM32F103C8T6 单片机的智能家居系统设计与实现
基于 STM32F103C8T6 单片机的智能家居系统设计与实现
——从传感器采集到 MQTT 远程控制的完整方案解析
在当前智能家居快速发展的时代,如何利用低成本 MCU、无线通信模块与 MQTT 服务器搭建一个可扩展、易维护且可靠的智能家居系统,是许多电子工程师和 DIY 开发者关注的话题。
本文将详细介绍一个基于 STM32F103C8T6、ESP8266(ESP-01S)、EMQX MQTT 服务器 和 安卓 APP 的完整智能家居系统,从硬件设计、通信架构、固件编写到应用显示,逐步拆解整个方案的实现过程,帮助读者快速构建属于自己的智能家居控制平台。
源码分享
直接放到之前写的文章里了,免费开源,下载学习即可。
https://blog.csdn.net/weixin_52908342/article/details/155673101
一、项目目标
本项目旨在设计并实现一套基于 STM32F103C8T6 的智能家居系统。系统主要目标包括:
- 采集环境温度数据并本地显示(OLED 屏幕)。
- 通过 ESP8266 将温度数据实时传输到网关,再上传至云端 MQTT 服务器。
- 移动端 APP 可实时查看温度数据,并下发控制指令。
- 控制节点接收来自云端的控制命令,实现继电器、电机等负载设备的远程控制。
实现软硬件互联、可视化监控和远程控制,是本系统的核心目标。
二、概要实现方案
本系统采用 三层架构 实现数据采集、网络通信和用户交互。

1. STM32F103C8T6 负责底层硬件控制
- 驱动温度传感器、继电器、OLED 等外设;
- 通过 UART 与 ESP-01S 进行串口通信;
- 本地进行数据采集、处理、控制逻辑判断。
2. ESP-01S(ESP8266) 执行 MQTT 通信逻辑
- 采集来自 STM32 的传感器数据并转发到 MQTT 服务器;
- 接收 MQTT 服务器下发的控制命令;
- 通过 AT 指令或自写 SDK 对接 STM32。
3. 安卓 APP 提供用户界面
- 通过 MQTT 协议订阅设备数据;
- 展示实时温度曲线;
- 下发控制指令,如开/关继电器、电机启动等。
该方案结构清晰、扩展性强,适合后续增加更多传感器和子设备。
三、系统组成
3.1 传感器节点
硬件组成
- STM32F103C8T6:负责读取传感器数据、驱动显示模块。
- 温度传感器:可选 DHT11/DS18B20,本文以 DS18B20 为例。
- OLED 显示屏 (0.96 寸、SSD1315):实时显示温度。
- ESP-01S 无线模块:与 MQTT 云端通信。
功能说明
传感器节点主要用于环境监测,采集周期 100ms,1Hz 上传云端数据。
3.2 控制节点
硬件组成
- STM32F103C8T6 核心控制 MCU
- 单路光耦继电器模块:用于设备的开关控制
- ESP-01S:接收指令
功能说明
控制节点接收 MQTT 云端的控制命令,如:
- 控制家电开关
- 控制马达/加热管
- 小型门禁的开合
实现真正从“查看数据”到“远程控制”的闭环。
3.3 WiFi 网关
- ESP-01S 作为网关 MCU
- 直接连接 EMQX MQTT 服务器
- 上行传感器数据
- 下发控制命令至 STM32 节点
网关设计简单、高效,适合部署在家中。
3.4 软件开发环境
| 类型 | 工具 |
|---|---|
| MCU 开发 | Keil MDK5 |
| ESP8266 SDK | Arduino IDE |
| 上位机 APP | HBuilderX(uni-app 框架) |
| EDA | 嘉立创EDA |
| 服务端 | 阿里云服务器(部署 EMQX MQTT) |
3.5 软件组成
固件程序(STM32 + ESP8266)
- STM32 程序负责采集、显示与串口通信
- ESP8266 程序负责 MQTT 数据收发
APP
- 负责展示实时温度数据
- 提供远程控制按钮
- 实现消息订阅/发布
3.6 服务器
- 阿里云轻量服务器
- EMQX MQTT Broker
- 通过 TCP/1883 接口实现消息发布和订阅

四、功能要求
4.1 传感器节点功能
-
温度监测
- 每 100ms 采集一次温度
- 通过 DS18B20 读取数字信号
-
温度显示
- OLED 屏实时刷新
-
MQTT 数据上传
-
ESP8266 每秒将数据发布到主题:
home/sensor/temperature
-
-
移动端查看
- APP 订阅上述主题,实时显示数值和曲线
4.2 控制节点功能
-
接收 MQTT 控制主题:
home/control/device1 -
根据命令驱动继电器
-
控制逻辑:
{"cmd":"on"}→ 启动{"cmd":"off"}→ 关闭
五、技术路线详解
5.1 传感器节点技术路线
(1)数据采集
使用 DS18B20 数字温度传感器,单总线驱动,稳定可靠。
核心流程:
- 初始化 → 触发温度转换 → 读取 scratchpad → CRC 校验 → 温度换算
(2)OLED 显示
使用 I2C 驱动 SSD1315,显示内容包括:
- 实时温度
- WiFi 状态
- 设备 ID
(3)无线通信(STM32 ↔ ESP-01S)
通信方式:UART
协议格式示例:
$TEMP,25.6\n
(4)MQTT 数据上行
ESP8266 使用 Pub/Sub:
mqttClient.publish("home/sensor/temperature", value);
5.2 控制节点技术路线
(1)命令接收流程
MQTT 下行 → ESP8266 → 串口 → STM32 → GPIO 输出控制继电器
数据格式:
$CTRL,ON\n
$CTRL,OFF\n
(2)继电器驱动
使用光耦隔离,保护 MCU 防止高压干扰。
六、性能指标
| 指标 | 要求 |
|---|---|
| 温度精度 | 满足 DS18B20 精度 ±0.5°C |
| 响应时间 | 环境变化 < 1s 更新 |
| MQTT 延迟 | 200ms 以内 |
| 系统稳定性 | 连续运行 24 小时无重启 |
| 用户体验 | APP 延迟低、界面清晰 |
七、进度安排
| 阶段 | 内容 |
|---|---|
| 1. 需求分析 | 定义整体功能、数据流、通信协议 |
| 2. 硬件设计 | STM32 开发板、传感器、继电器、电源、电路设计 |
| 3. 软件开发 | STM32 固件 / ESP8266 SDK / 安卓 APP |
| 4. 联调测试 | 串口通信、MQTT 主题调试、APP 展示 |
| 5. 系统集成 | 完成本地显示 + 远程监控 + 控制执行 |
八、总结与展望
本项目基于 STM32F103C8T6 和 ESP8266,构建了一个 “采集—传输—监控—控制” 四位一体 的智能家居系统。系统具备:
- 模块化结构
- 通信架构清晰
- 扩展性强
- 运行稳定
本项目基于 STM32F103C8T6 与 ESP8266 构建了一套完整的智能家居系统,实现了环境数据采集、本地显示、无线传输、云端管理以及终端控制等核心功能。从硬件电路设计到通信协议实现,再到 MQTT 云端和移动端应用的搭建,整个系统体现了软硬件协同开发的思路。通过模块化架构设计,系统不仅具备良好的稳定性与实时性,也为后续扩展光照、湿度、门禁、安防等更多智能家居场景提供了充足空间。该方案以低成本实现了高实用性,是学习物联网系统开发、嵌入式通信以及智能家居架构设计的优秀实践案例。
- 点赞
- 收藏
- 关注作者
评论(0)