若該文為原創文章,轉載請注明原文出處。
一、引言
(一)研究背景及意義
背景:隨著智能家居概念的普及,人們對家庭安全、舒適度和節能提出了更高要求。傳統安防系統功能單一、各系統獨立,缺乏聯動和遠程管理能力。
意義:本系統集成環境監測(溫濕度、煙霧、火焰、光照)、安防(人體紅外入侵檢測)和智能控制(燈光、風扇、水泵)于一體,通過STM32實現智能化決策,并通過WiFi實現遠程監控。它有效提升了家庭安全性、舒適性和能源利用效率,是智能家居的重要組成部分。
(二)國內外研究現狀
國內現狀:國內智能家居市場發展迅速,有小米、華為等生態鏈產品,但多為獨立產品(如單獨的溫度計、人體傳感器),深度自定義和本地聯動能力較弱。
國外現狀:國外如SmartThings、Home Assistant等平臺強調本地化集成和高度自動化,但入門門檻和成本較高。
本文創新點:本設計以STM32為本地控制核心,實現了高度集成的多參數監測和復雜的本地自動化邏輯(手動/自動模式),同時通過WiFi與手機APP通信,提供了一種高性價比、高靈活性、高可靠性的本地+遠程一體化家庭安全監測解決方案。
二、系統總體設計
(一)系統架構
系統采用“感知-決策-執行-云控”架構。
感知層:由DHT11(溫濕度)、MQ-2(煙霧)、火焰傳感器、光敏電阻、HC-SR501(人體紅外)組成。
決策層:STM32F103核心板,運行主控制邏輯。
執行層:繼電器模塊(控制燈、風扇、水泵)、蜂鳴器。
人機交互層:OLED顯示屏、按鍵。
云平臺層:ESP8266 WiFi模塊,連接手機APP,實現數據上傳和指令下發。
(二)功能模塊劃分
環境監測模塊:負責采集溫濕度、煙霧濃度、火焰、光照強度。
安防監測模塊:人體紅外檢測,判斷入侵。
核心控制模塊:STM32,處理所有數據,執行模式邏輯。
設備控制模塊:通過繼電器控制燈、風扇、水泵。
報警模塊:蜂鳴器發聲報警。
交互模塊:OLED顯示、按鍵設置。
通信模塊:ESP8266,負責與云平臺/APP交互。
三、硬件設計與實現
(一)系統硬件框架圖
(二)主控模塊選型及介紹
選用STM32F103C8T6。理由:資源豐富(多路ADC、GPIO、USART),性能強大,足以同時處理多路傳感器數據、驅動多個外設、進行邏輯判斷和網絡通信,是復雜嵌入式項目的理想選擇。
(三)傳感器模塊選型及電路設計
DHT11溫濕度傳感器:單總線數字式,接3.3V,DATA腳接GPIO加上拉電阻。
MQ-2煙霧傳感器:模擬輸出,接5V,AOUT腳接STM32的ADC引腳。
火焰傳感器:數字輸出(DO)和模擬輸出(AO)。DO可直接接GPIO,用于閾值報警;AO接ADC,可用于測量火焰強度。接5V。
光敏電阻:配合10KΩ電阻組成分壓電路,中間點接STM32的ADC引腳,接3.3V。
HC-SR501人體紅外傳感器:數字輸出,接5V,OUT腳接GPIO輸入。
(四)通信模塊選型及配置
選用ESP-01S ESP8266模塊。通過AT指令與STM32的USART進行通信,連接至云平臺(如OneNET、Blinker、阿里云等)。
(五)執行模塊選型及驅動電路
選用3路5V繼電器模塊(分別控制燈、風扇、水泵)和有源蜂鳴器。
驅動電路:繼電器模塊可直接由STM32的IO口驅動(內置光耦隔離)。蜂鳴器通過一個NPN三極管(如S8050)驅動,基極通過1K電阻接STM32的IO口。
(六)顯示與交互模塊選型及接口電路
OLED顯示屏:0.96寸SSD1306,I2C接口,SCL接PB6,SDA接PB7。
按鍵:使用3個輕觸按鍵,一端接地,另一端分別接GPIO(設置為上拉輸入),用于切換界面、模式、手動控制和設置閾值。
(七)電源模塊設計
采用5V/2A直流電源適配器供電,通過AMS1117-3.3V穩壓芯片為STM32、OLED、DHT11、光敏電阻提供3.3V電源。其他模塊使用5V供電。
四、軟件設計與實現
(一)開發環境搭建
IDE:Keil uVision 5 / STM32CubeIDE。
庫:HAL庫。
云平臺:推薦使用Blinker或OneNET,其對APP開發支持友好,可快速搭建手機端界面。
(二)系統軟件流程圖
(三)系統初始化(代碼片段)
int main(void) {HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_ADC1_Init();MX_I2C1_Init();MX_USART2_UART_Init(); // 用于ESP8266OLED_Init();ESP8266_Init();Read_Threshold_From_EEPROM(); // 從EEPROM讀取存儲的閾值while (1) {Sensor_Read_Task(); // 傳感器讀取任務OLED_Refresh_Task(); // 顯示刷新任務Key_Scan_Task(); // 按鍵掃描任務Control_Task(); // 核心控制任務Cloud_Comm_Task(); // 云通信任務HAL_Delay(200);}
}
(四)多傳感器數據采集與處理(代碼片段)
// 讀取光照強度(ADC值 -> Lux需校準)
uint16_t Read_Light_Sensor(void) {uint32_t adc_val = HAL_ADC_GetValue(&hadc1);// 可根據公式或查表法轉換為Lux,此處返回原始ADC值用于比較return (uint16_t)adc_val;
}// 讀取火焰傳感器
uint8_t Read_Flame_Sensor(void) {// 如果使用數字輸出,直接讀取電平return HAL_GPIO_ReadPin(FLAME_GPIO_Port, FLAME_Pin);// 如果使用模擬輸出,則進行ADC采樣并與閾值比較
}// 讀取所有傳感器
void Sensor_Read_Task(void) {DHT11_Read(&temperature, &humidity);smoke_value = HAL_ADC_GetValue(&hadc2);light_value = Read_Light_Sensor();flame_detected = Read_Flame_Sensor();pir_detected = HAL_GPIO_ReadPin(PIR_GPIO_Port, PIR_Pin);
}
(五)模式切換與邏輯控制(代碼片段)
void Control_Task(void) {if (system_mode == AUTO_MODE) {// 1. 光照控制if (light_value > light_threshold) { // ADC值越大,光照越弱Light_OFF();} else {Light_ON();}// 2. 溫度控制if (temperature > temp_threshold) {Fan_ON();} else {Fan_OFF();}// 3. 安防與火災控制(最高優先級)if (smoke_value > smoke_threshold || flame_detected == 0) { // 火焰傳感器檢測到火焰時輸出低電平Buzzer_ON();Fan_ON(); // 通風WaterPump_ON(); // 噴水滅火} else if (is_armed && pir_detected) { // 布防狀態且有人Buzzer_ON();} else {Buzzer_OFF();WaterPump_OFF();}} else { // MANUAL_MODE// 手動模式下,設備狀態完全由manual_light_cmd等變量控制// 這些變量由按鍵或APP設置Light_Set(manual_light_cmd);Fan_Set(manual_fan_cmd);WaterPump_Set(manual_pump_cmd);}
}
(六)人機交互實現(代碼片段)
// 按鍵掃描狀態機
void Key_Scan_Task(void) {static uint8_t key_state = 0;if (KEY1 == 0) { // 按鍵按下HAL_Delay(20); // 消抖if (KEY1 == 0) {if (key_state == 0) {key_state = 1;current_screen = (current_screen + 1) % TOTAL_SCREENS; // 切換顯示界面}}} else {key_state = 0;}// ... 類似處理KEY2(模式/確認)、KEY3(設置/返回)
}// 在設置菜單中修改閾值
void Enter_Setting_Menu(void) {// 通過按鍵選擇要修改的項(如溫度閾值)// 按KEY2或KEY3增加/減少數值// 按KEY1確認并保存到EEPROM
}
五、系統測試與優化
(一)測試方案
功能測試:
環境控制:用手遮擋光敏電阻,測試燈是否自動開啟;用電吹風加熱,測試風扇是否啟動。
安防報警:在布防狀態下,在紅外傳感器前移動,測試蜂鳴器報警。
火災模擬:用打火機模擬火焰,用煙熏MQ-2,測試水泵、風扇、蜂鳴器是否聯動。
模式切換:測試按鍵和APP切換模式功能。
遠程通信:測試APP數據刷新和遠程控制設備的功能。
性能測試:測試系統響應延遲、通信穩定性、控制精度。
(二)測試結果與分析
記錄測試數據,分析是否達到預期目標。例如:從檢測到火焰到水泵啟動的延遲<1秒。
(三)系統優化
軟件優化:為煙霧傳感器ADC值加入滑動平均濾波,防止誤報;設置延時觸發機制(如持續3秒超閾值才觸發火災報警),避免瞬時干擾。
硬件優化:為水泵繼電器增加續流二極管,保護STM32的IO口;合理布局傳感器,避免相互干擾(如溫度傳感器遠離發熱元件)。
六、結論與展望
(一)結論
本項目成功設計并實現了一套高度集成、功能強大的家庭安全監測系統。系統穩定可靠,實現了環境監測、安防報警、智能聯動和遠程監控的所有預設功能,為智能家居提供了一個優秀的本地控制中樞方案。
(二)未來展望
增加攝像頭模塊:在檢測到入侵時,抓拍圖片并上傳到手機APP,提供可視化證據。
語音提示與控制:加入語音合成模塊(如SYN6288),實現中文語音報警;加入語音識別模塊,實現本地語音控制。
多設備聯動:通過WiFi或Zigbee與其他智能設備聯動,如發生火災時自動打開窗戶。
能源管理:增加電量統計功能,優化電器使用,實現節能。
如有侵權,或需要完整代碼,請及時聯系博主。