博客 / 詳情

返回

【開源免費】基於 STM32F103C8T6 單片機的智能家居系統設計與實現

基於 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 雲端和移動端應用的搭建,整個系統體現了軟硬件協同開發的思路。通過模塊化架構設計,系統不僅具備良好的穩定性與實時性,也為後續擴展光照、濕度、門禁、安防等更多智能家居場景提供了充足空間。該方案以低成本實現了高實用性,是學習物聯網系統開發、嵌入式通信以及智能家居架構設計的優秀實踐案例。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.