【免费开源】STM32+ESP8266 打造低成本智能家居物联网系统(附源码与硬件设计)
💡 全文包含硬件方案、软件架构、通信协议以及源码打包下载链接。适合电子设计爱好者、物联网开发初学者以及想要 DIY 智能家居的朋友。
源码下载
完整项目已打包,开源免费:https://shangjinzhu.blog.csdn.net/article/details/150430423
1. 项目简介
如今,智能家居已经不再是科技展上的高端概念,而是逐渐走进普通家庭。传统的成品套件价格高、扩展性差,而如果我们利用常见的单片机和无线模块,就可以低成本实现一个可扩展、可远程控制的家居物联网系统。
本项目采用 STM32F103C8T6 作为核心处理器,配合 ESP8266 Wi-Fi 模块 搭建无线通信链路,实现环境数据的实时采集、云端传输和远程家电控制。用户只需一部手机,就能随时随地监控家中环境并操控设备。
2. 系统架构设计
整个系统可以分为 数据采集层、网络通信层、应用控制层 三个部分:
-
数据采集层 负责感知环境,例如温度、湿度、光照等,并将原始信号转换为数字数据。 本项目使用 DS18B20 数字温度传感器,数据采集周期可自由设定(默认 500ms)。
-
网络通信层 由 ESP8266 负责,将 STM32 的串口数据打包为 MQTT 消息,通过 Wi-Fi 上传至云端服务器,同时接收来自云端的控制指令。
-
应用控制层 手机 APP 通过 MQTT 协议与服务器交互,显示实时数据,并向硬件发送控制命令,例如开启/关闭继电器,驱动电机等。
3. 硬件实现
3.1 核心板
- 主控芯片:STM32F103C8T6
- 时钟频率:72MHz
- 存储:64KB Flash / 20KB SRAM
- 供电:5V 输入,板载 LDO 转 3.3V
3.2 传感与显示
- 温度传感器:DS18B20 单总线数字温度传感器
- 显示模块:0.96 寸 OLED(SSD1306 驱动),显示当前温度及连接状态
3.3 无线模块
- 型号:ESP-01S (ESP8266 内核)
- 固件:Arduino IDE 编写,支持 MQTT 协议
- 接口:UART 与 STM32 通信
3.4 控制执行
- 继电器模块:单路 5V 光耦隔离
- 用途:驱动灯具、风扇、加热器等
4. 软件架构
4.1 STM32 固件逻辑
- 初始化外设(GPIO、USART、I2C、OneWire)
- 定时读取温度传感器数据
- OLED 实时刷新显示
- 将温度数据通过 UART 发送给 ESP8266
4.2 ESP8266 程序逻辑
- 连接 Wi-Fi
- 连接 MQTT Broker(云端服务器)
- 发布温度数据至主题
home/temperature
- 订阅控制主题
home/control
- 接收到控制命令后,通过串口转发给 STM32
4.3 MQTT 云服务器
- 使用 EMQX 搭建在阿里云轻量应用服务器
- 配置多个 Topic,用于区分数据上传和指令下发
- 支持 WebSocket,方便网页端调试
5. 手机 APP 设计
在本项目中,手机端应用程序采用 HBuilderX + uni-app 技术栈进行开发。 这种方案的优势是 跨平台、开发效率高、维护成本低,非常适合个人和小团队的 IoT 应用。
5.1 HBuilderX 与 uni-app 简介
-
HBuilderX HBuilderX 是一款由 DCloud 推出的高效前端开发 IDE,专为 HTML5、JavaScript、CSS 等前端语言优化,内置了丰富的代码提示、调试、打包等功能,支持直接编译为 Android、iOS、H5、小程序等多端应用。 相比传统 Android Studio 或 Xcode,HBuilderX 更轻量、启动更快,非常适合中小型跨平台项目。
-
uni-app uni-app 是一个基于 Vue.js 的跨平台前端框架,可以让开发者 一次编写,生成多端应用(包括 Android、iOS、微信/支付宝/百度小程序、H5 网页等)。 在本项目中,我们利用 uni-app 提供的 API 与 MQTT over WebSocket 库结合,实现了与云端服务器的实时通信。
5.2 APP 与 MQTT 通信模式
本项目的手机 APP 通过 MQTT over WebSocket 与云端 EMQX 服务器交互:
- 连接服务器
APP 启动后首先建立 WebSocket 连接,登录 MQTT Broker,并订阅相关主题(如
home/temperature
、home/control
)。 - 接收实时数据 当 STM32 通过 ESP8266 上传温度数据到服务器时,APP 会立即收到消息并更新 UI。
- 发送控制指令
用户点击 APP 中的按钮,可以向
home/control
主题发送指令,控制继电器、风扇、灯具等设备。 - 历史数据查询 APP 可以从云端数据库(可选 MongoDB/MySQL)拉取历史记录,用于趋势分析。
5.3 APP 功能亮点
- 实时温度曲线 利用 uni-app 的 Canvas 绘图能力,将接收到的温度数据绘制成折线图,实时刷新。
- 设备在线状态检测 通过心跳包或 MQTT Last Will 消息判断设备在线/离线,并在 UI 上显示不同颜色的状态标识。
- 一键控制 提供简单直观的按钮界面,用户只需一次点击即可下发控制命令。
- 历史数据浏览 支持选择时间范围查看历史温度变化,为能耗分析或环境监控提供参考。
6. 性能与测试结果
- 数据更新频率:1 秒刷新一次
- 温度精度:±0.5℃(DS18B20 典型值)
- 响应延迟:本地控制 < 50ms,远程控制 < 200ms
- 稳定性:连续运行 72 小时无掉线
7. 项目亮点
- 开源共享:所有源码与原理图均已公开
- 低成本:硬件总成本不足 50 元
- 可扩展性:支持扩展湿度、光照、烟雾等传感器
- 跨平台:支持安卓、iOS、网页端访问
结语
这个项目不仅是一次物联网开发的实践,还涵盖了嵌入式、网络通信、云端架构、前端 APP 等多个领域的知识。如果你也想从 0 到 1 搭建属于自己的智能家居系统,这份开源工程会是一个很好的起点。 本项目通过 STM32 与 ESP8266 的高效协作,实现了低成本、可扩展的智能家居物联网方案。系统具备温度实时监测、云端数据传输、远程设备控制等功能,整体架构简洁、稳定性高,并且全部源码与硬件设计已开源,便于学习与二次开发。无论是物联网初学者还是嵌入式开发爱好者,都可以借助该项目快速搭建属于自己的智能家居系统。