【开源免费】基于 STM32F103C8T6 单片机的智能家居系统设计与实现

【开源免费】基于 STM32F103C8T6 单片机的智能家居系统设计与实现

基于 STM32F103C8T6 单片机的智能家居系统设计与实现

——从传感器采集到 MQTT 远程控制的完整方案解析

在当前智能家居快速发展的时代,如何利用低成本 MCU、无线通信模块与 MQTT 服务器搭建一个可扩展、易维护且可靠的智能家居系统,是许多电子工程师和 DIY 开发者关注的话题。
本文将详细介绍一个基于 STM32F103C8T6ESP8266(ESP-01S)EMQX MQTT 服务器安卓 APP 的完整智能家居系统,从硬件设计、通信架构、固件编写到应用显示,逐步拆解整个方案的实现过程,帮助读者快速构建属于自己的智能家居控制平台。


源码分享

由于平台诸多限制,链接无法直接分享并容易失效。源码可在下方链接中直接下载。免费开源

https://code.devzoo.top/embedded/151.html

一、项目目标

本项目旨在设计并实现一套基于 STM32F103C8T6 的智能家居系统。系统主要目标包括:

  1. 采集环境温度数据并本地显示(OLED 屏幕)。
  2. 通过 ESP8266 将温度数据实时传输到网关,再上传至云端 MQTT 服务器
  3. 移动端 APP 可实时查看温度数据,并下发控制指令
  4. 控制节点接收来自云端的控制命令,实现继电器、电机等负载设备的远程控制

实现软硬件互联、可视化监控和远程控制,是本系统的核心目标。


二、概要实现方案

本系统采用 三层架构 实现数据采集、网络通信和用户交互。

在这里插入图片描述

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 SDKArduino IDE
上位机 APPHBuilderX(uni-app 框架)
EDA嘉立创EDA
服务端阿里云服务器(部署 EMQX MQTT)

3.5 软件组成

固件程序(STM32 + ESP8266)

  • STM32 程序负责采集、显示与串口通信
  • ESP8266 程序负责 MQTT 数据收发

APP

  • 负责展示实时温度数据
  • 提供远程控制按钮
  • 实现消息订阅/发布

3.6 服务器

  • 阿里云轻量服务器
  • EMQX MQTT Broker
  • 通过 TCP/1883 接口实现消息发布和订阅

在这里插入图片描述

四、功能要求

4.1 传感器节点功能

  1. 温度监测
    • 每 100ms 采集一次温度
    • 通过 DS18B20 读取数字信号
  2. 温度显示
    • OLED 屏实时刷新
  3. MQTT 数据上传
  4. 移动端查看
    • APP 订阅上述主题,实时显示数值和曲线

ESP8266 每秒将数据发布到主题:

home/sensor/temperature 

4.2 控制节点功能

  • 根据命令驱动继电器
  • 控制逻辑:
    • {"cmd":"on"} → 启动
    • {"cmd":"off"} → 关闭

接收 MQTT 控制主题:

home/control/device1 

五、技术路线详解

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 云端和移动端应用的搭建,整个系统体现了软硬件协同开发的思路。通过模块化架构设计,系统不仅具备良好的稳定性与实时性,也为后续扩展光照、湿度、门禁、安防等更多智能家居场景提供了充足空间。该方案以低成本实现了高实用性,是学习物联网系统开发、嵌入式通信以及智能家居架构设计的优秀实践案例。

Read more

深度盘点:GitHub 上十大必装 Claude Skill,让你的 AI 助手效率提升 4 倍

深度盘点:GitHub 上十大必装 Claude Skill,让你的 AI 助手效率提升 4 倍

深度盘点:GitHub 上十大必装 Claude Skill,让你的 AI 助手效率提升 4 倍 Claude Code 已经很强大,但如果搭配这些精心设计的 Skills,它将变身超级生产力工具。本文为你深度解析 GitHub 上最受欢迎的 10 大 Claude Skills,帮助你找到最适合的配置方案。 引言:为什么 Claude Skills 如此重要? 在 2025-2026 年,Claude Code 生态经历了爆发式增长。Skills 系统的出现,让 Claude 从一个"对话助手"升级为"专业工具"。通过安装不同的 Skills,你可以:

By Ne0inhk
Git 到底是干啥的?零基础小白听完都懂了并且轻松驾驭它

Git 到底是干啥的?零基础小白听完都懂了并且轻松驾驭它

git,通俗的来说就是一种用来多人文件版本合作的工具,但是对一些非程序员的项目小白或者没有程序基础的但是想要入行做程序员的人来说,完完全全理解起来稍微有点困难。这篇文章不像很多文章一样是枯涩的码字教学。现在,我们就用最通俗易懂的方式,让你从零基础理解他,并且使用他。这种教学方法不是把你当白痴的教学方法,反而是让你快速入门深刻理解它,并记住它的教学方法。因为可能说得比较详细,篇幅较长,还得请你耐心的把他看完。 一、git的作用 1、git的版本控制 文件永远不会只有一个版本,这句话我们似乎用亲身经历证明过。你是否有过以下经历👇 📘论文会有“终稿v1、终稿v2、终稿最终版”、 ✍设计稿会有“改版A、改版B、改版C”、 🧺甚至自己写的文章也会来回改十几遍。 🥚更不用说单独只通过一个本地夹操刀一个大型项目了 突然有一天你觉得你的论文、设计稿、文章、项目某一个节点开始脱离了原本的方向或者发生了一些错误,但是你已经对其进行多处修改了,单独再修改不仅费事废经历,还容易发生遗漏。 你或许信誓旦旦的告诉我,你可以这样做。。。👇 论文_最终v1.docx 论文_

By Ne0inhk
Git 基础操作通关指南:版本回退、撤销修改与文件删除深度解析

Git 基础操作通关指南:版本回退、撤销修改与文件删除深度解析

🔥个人主页:Cx330🌸 ❄️个人专栏:《C语言》《LeetCode刷题集》《数据结构-初阶》《C++知识分享》 《优选算法指南-必刷经典100题》《Linux操作系统》:从入门到入魔 《Git深度解析》:版本管理实战全解 🌟心向往之行必能至 🎥Cx330🌸的简介: 目录 前言: 一、Git 实用技巧:版本回退与撤销修改 1.1 版本回退 1.1.1 搭配选项注意事项: 1.1.2 最佳实践 1.2 撤销修改 场景 1:修改仅在工作区,未执行 git add 场景 2:修改过后已执行 git add 到暂存区,但未 commit

By Ne0inhk
Python实现开源AI模型引入及测试全过程

Python实现开源AI模型引入及测试全过程

文章目录 * 摘要 * 1. 引言:开源AI生态系统概述 * 1.1 开源AI的发展现状 * 1.2 技术栈选择 * 1.3 项目目标 * 2. 环境配置与项目初始化 * 2.1 系统要求 * 2.2 创建虚拟环境 * 2.3 依赖管理文件 * 2.4 安装依赖 * 2.5 项目结构 * 3. 模型原理与架构解析 * 3.1 BERT模型原理 * 3.1.1 Transformer编码器架构 * 3.2 Hugging Face Transformers架构 * 4. 数据准备与预处理 * 4.1 数据集选择与加载

By Ne0inhk