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