隨著物聯網技術的發展,智能家居的需求不斷增加,但仍存在設備兼容性差和成本高等問題。本文提出了一種基于STM32單片機的多模式智能家居控制系統,該系統通過溫濕度、光照強度和煙霧濃度傳感器與OLED顯示屏實現環境監測和實時數據顯示。
它結合了ASRPRO語音識別模塊與ESP8266 Wi-Fi模塊,提供手動控制、自動調節、語音識別和遠程控制四種操作模式,能夠智能控制燈光、風扇、窗簾和加濕器等設備。測試結果表明,該系統在環境監測精度和語音響應速度方面表現優異,為低成本、高兼容性的智能家居解決方案奠定基礎。
013D實景地圖

圖1 系統總體設計框圖
本系統旨在實現家庭中常用電器的智能控制,設計了一款基于STM32單片機的多控制智能家居系統,整體設計框圖如圖1所示。該系統集成了環境檢測、自動控制、語音識別和遠程通信等多種功能,采用模塊化結構。主要由主控模塊、傳感器采集模塊、執行控制模塊、語音識別模塊以及顯示與通信模塊構成。各模塊通過串口、I2C、PWM和GPIO等接口進行互聯,由主控芯片協調處理,實現對包括燈光、風扇、窗簾和加濕器在內的多種設備的多模式智能控制。
02 硬件設計
2.1 主控模塊電路設計
主控模塊在電路設計中以STM32F103C8T6最小系統板為基礎,核心電路內部主要由時鐘電路、復位電路、電源穩壓電路及引腳接口組成。外部8MHz晶振通過內建PLL實現主頻上升,為系統提供穩定的時鐘源;復位端接入RC延時電路,確保單片機在上電或干擾下能可靠復位;電源模塊通過AMS1117穩壓器將5V電壓穩定輸出至3.3V,為核心邏輯部分供電。整體硬件電路設計圖如圖2所示。
2.2 語音識別模塊電路設計
語音識別模塊采用ASRPRO模塊,通過串口方式與STM32主控進行通信。模塊的PA2引腳連接至主控的PB11引腳,用于向主控發送識別后的語音指令編碼。模塊由5V電源供電,GND接系統公共地線。該模塊識別結果以串口編碼形式傳輸,主控接收后解析執行對應操作,完成語音控制功能。
2.3 無線通信模塊電路設計
無線通信模塊選用ESP8266-01S,用于實現系統與云平臺之間的Wi-Fi數據通信。模塊采用串口(UART)方式與主控芯片進行雙向通信,TXD引腳連接至STM32的PA3(USART1_RX),RXD引腳連接至PA2(USART1_TX),實現主從數據交互。模塊通過AT指令配置為STA模式后可連接路由器,結合機智云平臺實現遠程數據上傳與控制命令下發。

圖2 整體硬件電路設計圖
2.4 傳感器模塊電路設計
溫濕度檢測模塊采用DHT11數字型傳感器,該模塊只需一個數據引腳與主控相連,便可通過單總線方式與STM32主控進行通信。模塊的VCC端接5V電源,GND接地,OUT引腳連接至STM32的PB3引腳。模塊周期性將溫濕度數據打包輸出,主控芯片通過定時輪詢讀取并進行解析。
煙霧檢測模塊使用MQ-2傳感器,能夠檢測煙霧、液化氣、酒精等可燃性氣體濃度。該模塊輸出模擬電壓信號,主控通過ADC接口進行采樣判斷。模塊供電為5V,GND接地,A0引腳連接至STM32的PA4引腳,實時讀取電壓值。當空氣中煙霧濃度升高,輸出電壓隨之變化,主控將采樣值與設定閾值比較,從而判斷是否觸發報警。
光照檢測模塊選用GY-302光照傳感器,通過I2C接口與STM32主控進行通信。模塊VCC引腳連接至3.3V電源,GND接地,SCL與SDA引腳分別連接至STM32的PB4和PB5引腳,構成I2C總線通信。模塊上電后可直接輸出以勒克斯(lx)為單位的光照強度數據,主控通過I2C協議讀取測量值并用于判斷是否啟用照明裝置。
2.5 屏幕顯示模塊電路設計
顯示模塊采用0.96英寸OLED屏幕,用于在本地實時顯示系統采集的環境數據與設備運行模式。該模塊采用I2C通信方式連接主控,SCL引腳與STM32的PB1相連,SDA引腳連接至PB0,供電電壓為3.3V,GND接地。OLED模塊支持字符、圖形和動態刷新顯示,模塊內部已集成驅動芯片SSD1306,可直接通過標準I2C協議與主控進行數據通信。
2.6 執行機構模塊電路設計
步進電機驅動電路運用ULN2003驅動板,將其與28BYJ-48步進電機以及STM32主控相連,共同協同工作,以此來模擬窗簾開合的功能,ULN2003內部整合了達林頓管陣列,可直接接收STM32輸出的脈沖信號,驅動步進電機實現轉動,驅動模塊的四個輸入控制信號IN1至IN4引腳,分別與STM32的PA8、PA11、PA12、PA15引腳相連接,其目的在于接收方向以及步進控制信號,而OUT1至OUT4則連接著步進電機的四相繞組。該模塊由外部5V電源進行供電,COM端連接電源正極,GND接地,主控借助定時器產生脈沖序列,對電機轉動的步數以及方向加以控制,再配合ULN2003的高電流輸出能力,保證電機可平穩地運行。
繼電器模塊用于控制加濕器的開關,采用5V直流繼電器,通過STM32的PB13引腳輸出高低電平信號驅動。繼電器控制端通過NPN三極管與主控連接,基極串聯限流電阻連接至PB13,發射極接地,集電極連接繼電器線圈。當PB13輸出高電平時,三極管導通,繼電器吸合,加濕器通電工作;低電平時斷開,加濕器停止工作。
PWM控制電路用于調節LED亮度與風扇轉速,分別由STM32的PB14和PB15引腳輸出PWM信號,實現對輸出功率的連續調節。主控芯片通過定時器模塊配置不同頻率和占空比的PWM波形,輸出至LED和風扇控制電路。LED驅動采用MOS管,柵極通過限流電阻連接PB14,漏極串聯LED燈至5V電源,源極接地。風扇通過PB15引腳連接驅動電路。PWM信號經濾波后轉換為模擬電壓,從而實現控制風扇轉速和LED亮度。
蜂鳴器用于煙霧濃度超標時發出聲音警報。采用有源蜂鳴器,工作電壓為5V,通過STM32的PA0引腳控制。PA0連接NPN三極管基極,發射極接地,集電極接蜂鳴器負極,正極接電源。當PA0輸出高電平時,三極管導通,蜂鳴器鳴響。在電路中加入了一個撥碼開關SW1,可以用來切換蜂鳴器的工作狀態,避免蜂鳴器始終處于響聲狀態。
2.7 按鍵模塊電路設計
按鍵模塊采用四路獨立按鍵,分別連接至STM32的PB6~PB9引腳,用于模式切換、閾值設置和設備手動控制。每個按鍵一端接至IO口,另一端接地,同時在IO口與電源之間接入10kΩ上拉電阻,確保按鍵未按下時IO保持高電平。按鍵按下后引腳電平變為低,主控通過輪詢方式檢測按鍵狀態,為避免抖動干擾,軟件中設置消抖延時處理邏輯,確保操作識別準確。
2.8 供電模塊電路設計
供電模塊負責為整個系統提供穩定的工作電壓,確保各功能模塊正常運行。系統使用外部DC 5V電源適配器作為主輸入電源,經過AMS1117-3.3穩壓芯片將電壓降至3.3V,供主控STM32以及其他3.3V模塊使用,繼電器、風扇、語音模塊等設備直接使用5V供電。
03軟件設計
3.1 系統主程序設計
主程序流程圖如圖3所示。在系統上電后,首先進行定時器和GPIO端口的初始化,隨后系統便進入到主循環之中,傳感器會實時采集環境數據,然后在OLED屏幕上展示當前狀態信息,還會把傳感器數據借助Wi-Fi模塊上傳至機智云平臺,以此達成遠程數據同步。
系統有四種控制模式,分別是手動控制、自動控制、語音控制以及遠程控制,用戶可依靠語音識別、按鍵以及手機APP來切換控制模式并下達具體指令。在手動控制模式下,可通過按鍵對燈光、風扇、窗簾、加濕器等執行設備直接實施控制;在自動控制模式下,系統會依據環境參數與用戶設置的閾值作出判斷;在語音控制模式下,系統會識別用戶語音指令并對執行設備進行相應的控制;在遠程控制模式下,通過手機APP將控制指令上傳至云端,系統自動接收來自云端下發的指令并對執行設備進行相應的控制。
3.2 語音識別控制程序設計
語音識別是本系統的人機交互核心之一,采用ASRPRO語音識別模塊進行本地離線識別,并通過USART串口與STM32主控通信。模塊在識別到有效語音指令后,將指令對應的編號以串口數據形式發送給主控芯片,主控程序通過中斷接收方式捕獲該數據,并根據編號內容判斷用戶意圖,從而控制對應的智能設備運行狀態。語音模塊程序流程圖如圖4所示。

圖3 主程序流程圖
圖4 語音模塊程序流程圖

圖5 按鍵控制與閾值設置程序流程圖
程序運行過程中,首先對語音模塊初始化并配置串口接收通道。當串口接收到來自模塊的指令編碼時,主控立即解析該編號,并在預設命令表中查找其對應功能。若指令有效,系統將執行相關控制操作,同時通過OLED模塊更新當前狀態。若為無效或錯誤編碼,則直接忽略,并繼續監聽下一條指令。語音識別控制邏輯反應迅速、指令明確,特別適合在手動操作不便的場景。
3.3 按鍵控制程序設計
本系統配備多功能按鍵模塊,用于在無語音及無網絡環境下實現本地控制,主要包括運行模式切換、設備手動開關控制以及自動控制模式下的閾值設定。在程序里運用輪詢的方式來掃描按鍵狀態,按鍵輸入信號經由GPIO引腳接入到STM32主控當中,程序會對按鍵按下以及釋放的時間長度作出判斷,區分短按與長按操作,其中短按可用來切換運行模式以及直接控制某一設備的啟動和停止,長按則是用于進入參數設置流程。流程圖如圖5所示。
在閾值設置功能里,用戶可以借助按鍵去設置溫度,濕度,光照等參數的上下限數值,這些閾值并非會立刻對系統行為產生影響,而是只有在切換到自動控制模式的時候,才會作為環境判斷的依據來加以使用,系統處于自動模式時,會按照一定周期讀取當下的環境數據,并把它和用戶所設定的閾值進行對比。如果超出了范圍,那么就會觸發執行模塊做出響應,比如自動開啟或者關閉風扇,窗簾,加濕器,同時蜂鳴器發出報警聲。
在閾值設置的過程當中OLED顯示屏會實時反饋當前設置的項目以及對應的數值,用戶可以依靠加減鍵來調整參數,借助確認鍵來保存設置,最終會把設定值存儲在主控變量之中。并且配置寫入EEPROM來實現掉電保存功能。
3.4 OLED顯示程序設計
OLED顯示程序流程圖如圖6所示。所選OLED模塊基于SSD1306驅動芯片,采用I2C總線方式與STM32主控通信,在程序實現方面,首先需要在STM32CubeMX中對I2C接口進行配置,包括選擇I2C通道、映射引腳、開啟中斷及波特率設置。配置完成后生成初始化代碼,并在工程目錄中添加OLED顯示模塊所需的驅動文件,用于封裝底層顯示函數及命令通信接口。在主函數中包含相關頭文件,完成驅動初始化調用,即可實現對屏幕的控制。
3.5 無線通信模塊程序設計
ESP8266-01S作為WiFi通信模塊,負責將本地STM32主控與機智云平臺建立數據交互通道。該模塊通過串口與主控芯片通信,使用AT指令集完成無線網絡連接、云平臺接入以及控制指令與傳感器數據的雙向傳輸。WiFi模塊流程圖如圖7所示。
當ESP8266成功連接到局域網后,模塊會嘗試與機智云平臺建立通信連接。平臺接入方式基于USART串口和MQTT數據傳輸協議,由機智云平臺生成的通信協議文檔和數據點格式統一規范通信內容。開發者無需手動構建MQTT包結構,只需遵循平臺提供的協議說明,封裝上傳數據和解析下發指令。

圖6 OLED顯示程序流程圖

圖7 Wi-Fi模塊流程圖
04 系統功能測試
4.1 顯示功能測試
首先,確保所有硬件模塊正確連接,檢查各模塊電源、引腳、通信接口,確保它們連接牢固,沒有松動或接觸不良。使用Type-C接入電源模塊給整個系統供電,供電后可通過供電模塊的按鍵開關啟動整個系統。系統上電后會進行一系列程序的初始化之后OLED屏幕開始工作顯示由傳感器采集到的環境數據和系統當前運行模式。第一行顯示的是溫度數據和濕度數據,第二行顯示的是光照強度,第三行顯示的是煙霧濃度,第四行顯示的是系統當前模式。硬件整體實物圖如圖8所示。

圖8 硬件整體實物圖
4.2 語音控制功能測試
語音控制是本設計的核心內容,為避免誤觸發,系統設定了喚醒機制。用戶需先說出喚醒詞“你好,小智”以激活語音識別通道,系統接收到喚醒信號后將進入十秒倒計時監聽階段,在此期間內可識別有效控制指令。若超過十秒未識別到任何指令,系統將自動退出語音模式,返回默認運行狀態。對系統語音控制功能進行了5次近距離、5次遠距離測試,結果表明,系統距離指令發出者5m內能3s內快速響應,且識別準確,超過5m時會因語音信號有干擾時受到影響。
4.3 手動控制功能測試
在無網絡或語音不可用的情況下,系統可以通過按鍵手動控制,以實現模式切換、設備控制與閾值調整三類操作,按鍵控制如圖9所示,系統右下方從左往右依次有四個功能按鍵,短按K1按鍵可進行模式切換,當前系統模式可直接顯示在OLED屏幕上,K2、K3、K4按鍵分別控制燈光、風扇和步進電機。K2、K3按鍵通過按動不同次數,還可以調整燈光亮度和風扇風速,K4按鍵用來控制步進電機轉動,正轉模擬窗簾打開,反轉模擬窗簾關閉。長按K1兩秒鐘進入閾值設置界面,可以通過按鍵調整溫度、濕度、光照強度以及煙霧濃度參數,用于在自動模式下的閾值判斷。閾值參數設置圖如圖10所示。

圖9 按鍵控制測試結果
4.4 自動模式功能測試
通過按鍵以及語音控制可切換為自動模式,在自動控制模式下,系統將依據傳感器實時采集的數據與用戶設定的閾值進行比較。當系統檢測到當前溫度大于設定閾值時,風扇開始轉動,超于閾值越高,風扇轉速越快。溫度低于設定閾值時,風扇停止轉動。當系統檢測到當前濕度低于設定閾值時,加濕器開啟,濕度高于設定閾值時,加濕器關閉。
當系統檢測到當前煙霧濃度高于設定閾值時,蜂鳴器便會觸發聲音警報,當煙霧濃度持續高于設定值時,可通過蜂鳴器報警開關手動關閉聲音警報。當系統檢測到當前光照強度大于閾值時,窗簾打開燈光關閉用來模擬白天,反之當光照強度低于閾值時,窗簾關閉燈光打開用來模擬黑夜。自動模式測試圖如圖11所示。

圖10 閾值參數設置

圖11 自動模式測試結果
4.5 遠程控制功能測試
系統上電后,使設備與手機控制端處于同一局域網下,打開機智云手機APP,添加設備,并進行一鍵配網,數據將通過ESP8266Wi-Fi模塊與機智云平臺完成設備與云端數據交互,實現遠程對智能家居系統的操控。通過機智云APP可以實時顯示當前的溫濕度數據、煙霧濃度數據、光照強度數據以及煙霧濃度數據。通過手機APP還可以實現對風扇、加濕器、燈光以及窗簾的控制。

圖12 遠程控制測試結果
05總結
該設計基于STM32主控制器,結合溫濕度、光照、煙霧傳感器,以及語音、通信和Wi-Fi模塊,構建了一個支持手動、自動、語音和遠程四種控制模式的智能家居控制系統。該系統具有低成本、高兼容性和強可操作性的優勢,并展現出良好的發展潛力。未來可通過擴展環境傳感器類型來提升系統的環境感知能力,并可接入云端語音識別服務,以增強語言識別性能。
-
智能家居
+關注
關注
1943文章
9995瀏覽量
197410 -
系統設計
+關注
關注
0文章
173瀏覽量
22814 -
控制模式
+關注
關注
0文章
33瀏覽量
8593
發布評論請先 登錄
多控制模式的智能家居系統設計
評論