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

举报
柠檬🍋 发表于 2025/12/15 10:28:08 2025/12/15
【摘要】 基于 STM32F103C8T6 单片机的智能家居系统设计与实现——从传感器采集到 MQTT 远程控制的完整方案解析在当前智能家居快速发展的时代,如何利用低成本 MCU、无线通信模块与 MQTT 服务器搭建一个可扩展、易维护且可靠的智能家居系统,是许多电子工程师和 DIY 开发者关注的话题。本文将详细介绍一个基于 STM32F103C8T6、ESP8266(ESP-01S)、EMQX MQ...

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

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

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


源码分享

直接放到之前写的文章里了,免费开源,下载学习即可。

https://blog.csdn.net/weixin_52908342/article/details/155673101

一、项目目标

本项目旨在设计并实现一套基于 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 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 传感器节点功能

  1. 温度监测

    • 每 100ms 采集一次温度
    • 通过 DS18B20 读取数字信号
  2. 温度显示

    • OLED 屏实时刷新
  3. MQTT 数据上传

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

      home/sensor/temperature
      
  4. 移动端查看

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

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。