近年來,智能家居行業迅速發展,但許多市場上的風扇功能依然簡單。我們的智能風扇以STM32單片機為核心,提供三種工作模式:自動模式通過溫度傳感器檢測環境溫度變化,自動調整風扇轉速以優化效果;手動模式允許通過按鍵或語音控制調整風扇設置;人體識別模式則在檢測到人靠近時自動啟動。額外的定時功能支持設置自動關閉時間,為用戶帶來更智能和便捷的使用體驗。
引言
本文設計的智能風扇具備以下功能:自動控制,根據外界溫度調整風扇轉速;人體檢測,靠近時自動開啟,離開時自動關閉;聲音控制,利用LD3320語音芯片識別命令控制風扇;燈光控制,通過語音或按鍵控制燈光;睡眠定時,設置定時時間后自動關閉風扇。
系統設計
該設計選用的核心控制芯片是基于Cortex-M3內核的STM32F103C8T6,它是一款高性能、高兼容、易開發、低功耗、低工作電壓以及具有實時數字信號處理的32位閃存微控制器產品。智能風扇系統是由單片機、語音識別模塊、溫度傳感器模塊、紅外傳感器模塊等組成,系統的結構圖如圖1所示:
圖1 系統結構圖
語音識別模塊
語音識別模塊內部包含LD3320芯片和STC11L08XE單片機,LD3320芯片由ICRoute公司設計,語音識別模塊集成麥克風口、聲音輸出接口等外部電路,該芯片通過特別的算法可以完成非特定的語音識別,語音識別無需事先訓練和錄音,只要說出相應關鍵字,語音識別就可以完成,使用起來非常方便。
語音識別開始時,模塊的麥克風接收周圍的聲音,這些聲音不一定是帶有關鍵字的聲音,也可能是一段沒有意義的聲音,語音識別芯片對接收的聲音進行頻譜分解,根據聲音特征提取相應的頻率,然后與芯片數據庫中進行關鍵字的匹配,將會對不同關鍵詞進行打分,哪個分數高就選擇相應的結果作為輸出。
DS18B20溫度傳感器
為了實現對周圍溫度的檢測該系統選用的是DS18B20可編程數字溫度傳感器,它具有抗干擾能力強、價格便宜、使用方便等優勢[5]。傳感器測溫結果是通過其內部精密晶振振動頻率隨溫度變化的特性得到的。傳感器內部獨立包含一個獨立的測量芯片,芯片內置存儲單元,包含64位的ROM和9字節的RAM,64位ROM用于存放產品編碼,9字節RAM的前兩字節用于保存溫度信息。
溫度傳感器DS18B20的高度集成化,大大降低了外接放大轉換等電路的誤差因素,測量出的溫度誤差很小[6]。檢測到的溫度數值可以在器件內部轉換成數字量直接輸出,這樣方便了系統程序設計。溫度傳感器的詳細參數如下:
(1) DS18B20溫度傳感器與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20的雙向通訊。
(2) 工作電壓范圍1.8V~5.5 V。
(3) 測溫范圍:-55~+125°C,默認測溫分辨率為0.5°C。
(4) 可實現9~12位的數字讀數方式。
(5) 可以將多個傳感器并聯在一條總線上,測量多個地方的溫度。
(6) 傳感器不會因為電源反接而損壞。
OLED顯示屏
屏幕選用的是4針9.6寸OLED屏幕,這是一種新型的屏幕技術,擁有自發光的特性,具有可視角度大、功耗低、對比度高等優勢。對比lcd屏屏幕,OLED顯示效果更好、功耗更低、適合小系統。OLED屏幕支持3.3V~5V供電,所以不用修改模塊電路。OLED屏幕包含4個引腳分別是GND、VCC、SCL和SDA。GND和VCC接地和電源,SCL連接PA0,SDA連接PA1。OLED屏幕可以根據需要顯示出字符、數字、漢字等,使用起來簡單方便。
紅外傳感器模塊
該系統選用紅外對管傳感器檢測人體,該傳感器具有干擾小、便于裝配、使用方便等特點。紅外對管傳感器是由紅外發射管與光敏接收管等構成,紅外對管傳感器工作時發射管會發出人眼不可見的紅外線,當檢測方向遇到障礙物時,紅外線就會反射回來被接收管接收,經過LM393比較器電路處理之后,輸出指示燈會亮起,OUT口輸出低電平數字信號[7]。
傳感器的工作電壓為3.3V~5V,傳感器模塊輸出端口可以與單片機IO口直接相連,傳感器模塊檢測到人體時會持續輸出低電平信息。
直流風扇
目前,市面上的220V風扇使用起來不安全且不容易控制,所以該系統選用的是一個5V供電的直流風扇,這是一種小型風扇,使用起來更加安全,并且容易被單片機所控制。
因為是使用PWM波控制風扇速度,所以直流風扇可以有多種擋位選擇,可以根據自己需要調整合適的速度。直流風扇的噪音很小,使用的時候不會影響到工作和休息,而且使得語音識別更加的可靠準確。
燈光模塊
該系統選用一個5V供電的LED燈光用于照明,LED學名叫做發光二極管,這種發光材料由N、P、As等多種化合物制成,當電子與空穴相遇就能夠產生光。這種燈光可以有多種顏色,本設計選用的是白色LED燈。
設計選用的燈光可以用于在晚上閱讀時候照明,也可以用來裝飾家居環境等等,可以滿足大部分的照明需要。將照明功能加入智能風扇當中豐富了產品功能,還能夠節省臺燈占用的空間。智能風扇中含有一個專門用于控制燈光的按鍵,除了按鍵之外,也可以用語音控制燈光,只要說出打開燈光、關閉燈光等關鍵詞就可以控制燈光運行。
按鍵模塊
該系統選用的是輕觸式開關,該按鍵內部有彈簧,這種按鍵只需要施加一個很小的力就能夠使開關閉合,松手時按鍵會自動彈起,手感很好,有段落感,發出清脆的聲音,容易辨別。
輕觸開關應用于遙控器、玩具、家用電器等等,使用方面非常廣。影響輕觸按鍵使用的因素有很多,主要在于開關的防腐蝕性、壽命、按壓手感,一般開關為了降低接觸電阻,采用鍍銀方式,將按鍵引腳的基材進行鍍銀。
彈簧的好壞取決了按鍵的手感,目前使用最多的是日本的沖壓技術,采用這種技術的按鍵可承受數萬次的按壓,非常耐用手感也非常好。設計采用7個按鍵組成獨立式按鍵,每個按鍵直接用IO口線組成單個鍵盤電路,配置靈活,軟件設計非常方便。
電源控制模塊
該系統采用的5V的micro usb向stm32最小系統板供電,因為stm32f芯片需要3.3V的電壓才能正常工作,所以利用單片系統板上的線性穩壓器將5V電壓轉化為3.3V。這種線性穩壓器成本非常低,只需要幾分錢就可以買到,體積非常小,可以非常方便地安裝在其他器件上,工作的時候噪音很小,輸出電流可靠穩定,因此十分適合在單片機系統上使用。
系統電路設計
單片機供電電路
單片機的正常工作的電壓是2.0~3.6V,斷電時VBAT引腳為RTC和備份寄存器提供電源。穩定良好的電源供應是實現各種功能的基礎,設計采用micro usb為系統板供電,供電電壓為5V,最小系統板內部包含ME6211穩壓芯片,該芯片可以將5V電壓轉化置3.3V,輸出電流為100MA,C1、C2、C3、C4均為濾波電容,過濾掉電流的交流部分,從而使得電流更加平滑。穩壓芯片如圖2所示:
圖2 電源穩壓芯片
單片機復位電路
復位電路可以實現單片機的初始化,系統穩定運行需要上電復位和按鍵復位,圖中電路為低電平復位電路,通電時,由于電容兩端電壓無法突變,所以NRST為低電平復位,然后電容在緩慢充電,NRST端電壓緩慢升高,當上升到一定的高電平時,單片機開始正常工作。
當按下RST時NRST又變為低電平復位,復位電路是系統中不可或缺的一部分。單片機的復位電路如圖3所示:
圖3 單片機復位電路
燈光控制模塊電路
圖4 燈光控制電路
燈光需要5V的電壓供電,單片機最多輸出3.3V的電壓,所以需要一個繼電器和三極管來控制電路,由此可以實現弱電控制強電。一般動觸點K1和常閉引腳閉合,電燈不工作。當單片機IO口輸出信號時,繼電器產生磁效應吸合銜鐵,動觸點K1和常開觸點閉合,電燈亮起。
當燈光停止工作時,為了防止繼電器的反電動勢對繼電器造成損害,所以并聯一個續流二極管保護繼電器。燈光控制電路如圖4所示。
溫度傳感器模塊電路
DS18B20智能溫度傳感器,屬于新一代適配微處理器的智能溫度傳感器,全部傳感器原件及轉換電路集成在形如一只三極管集成電路內,可以直接讀出數據,溫度傳感器的DQ口連接單片機PB6引腳。溫度傳感器電路如圖5所示:
圖5 溫度傳感器電路
紅外對管傳感器電路
紅外對管傳感器采用3.3V供電,輸出端口連接單片機的PA6。紅外對管傳感器模塊電路如圖6所示:
圖6 紅外對管傳感器模塊電路
OLED屏幕電路
本設計采用4腳的0.96寸OLED屏幕作為顯示屏,它的分辨率為128x64,意思就是它有這么多的像素點,所有像素點都可以自發光,然后通過程序將對應像素點點亮就組成了自己想要的文字或圖案。
OLED的屏幕采用I2C通信方式,stm32作為主機輸入,OLED作為從機接收信息,采用軟件模擬I2C通信方式,將PA0設置為時鐘線,PA1設置為數據線。數據傳輸是根據時鐘線的電平信息進行相應的操作,數據線用于傳輸信息。OLED顯示電路如圖7所示:
圖7 OLED顯示模塊電路
系統軟件設計
主程序設計
風扇系統的程序設計使用的是C語言編程。除主程序外,還有多種子程序,分別執行溫度讀取,電機控制,定時設置等,風扇一共有人體識別模式、手動模式和自動模式三種模式。系統的程序流程圖如圖8所示:
圖8 系統流程圖
電機驅動程序設計
電機設置由定時器TIM4產生的PWM波控制,首先利用Timer4_Init(0,7200)初始化的TIM4定時器,設置定時器,使TIM4_CH4輸出PWM波,TIM_Set Compare4(TIM_Type Def*TIMx,uint16_t Compare4)函數可以調整輸出PWM波的占空比達到控制風扇擋位的效果。
自動模式程序設計
自動模式下風扇的擋位是根據溫度傳感器檢測到的周圍溫度變化而變化,并且傳感器檢測到周圍溫度低于20℃時,風扇不會工作。溫度的讀取程序中,首先使用DS18B20_Init()初始化DS18B20,使能IO時鐘,設置IO口并根據時序檢測傳感器是否存在,若傳感器存在則通過DS18B20_Get_Temp()輸出溫度數值。單片機主函數中會一直讀取感器檢測到的溫度數值,并根據相應的溫度數值改變風扇至相應的擋位,擋位選擇程序流程圖9所示:
圖9 擋位選擇流程圖
按鍵模塊程序
風扇啟動時默認為手動模式,手動模式下可以通過語音和按鍵來控制風扇。使用按鍵前先利用Init_Key_Pin()初始化按鍵IO,將IO設置為上拉輸入模式。主函數中通過循環While(1)執行按鍵輸入判斷,當一個按鍵按下時,按鍵所處引腳接地,單片機通過讀取IO口處于電平變化判斷哪個按鍵被按下并執行相應的操作。為了消除按鍵機械抖動對判斷的影響,當檢測到按鍵被按下后會使用delay_ms(10)函數延時10ms后再對IO口的電平進行一次判斷。
語音識別模式程序
語音識別模塊的LD3320芯片與51單片機采用SPI通信,語音識別模塊的程序是在其模塊內部編譯的,使用前在51單片機程序中設置LD3320語音識別芯片寄存器,將關鍵字以字符串的形式保存在一個二維數組之中,并對每一個關鍵字設置相應的識別碼。
主函數首先初始化系統,初始化51單片機,對LD3320芯片做復位操作激活其內部DSP,51單片機反復啟動語音識別模塊的ASR(非特定人語音識別技術)識別,當識別到聲音時使用Process Int0()函數發生中斷,讀取LD3320寄存器中的識別碼并返回到LD_Get Result()函數中,根據語音識別碼選擇語音識別結果,并在對應引腳輸出低電平信息,stm32根據接收到不同引腳的電平信息對風扇系統做出相應的操作。
5系統測試
智能風扇的組成包括stm32最小系統板,語音識別模塊,PWM調速風扇,led燈光等。
運行測試
智能風扇包含三種工作模式,手動模式下通過按鍵和語音控制風扇,自動模式下,風扇擋位根據周圍溫度高低做出變化,人體識別模式是檢測到人出現在風扇前就會啟動,當人離開時風扇會自動關閉。本章主要對自動模式和人體識別模式進行測試。
自動模式測試
風扇切換成自動模式時,風扇開始自動轉動,OLED屏幕顯示擋位為1,周圍溫度為21℃。實物圖如圖10所示:
圖10 自動模式測試
用手將溫度傳感器捂熱,OLED屏幕顯示的溫度數值逐漸升高,當溫度到達25℃,擋位升至2檔,實物如圖11所示:
圖11 自動模式測試
將手松開后,OLED顯示的溫度在慢慢下降,最終回到21℃,風扇擋位為1。
人體識別模式測試
風扇切換成人體識別模式,OLED屏幕顯示模式為Introduction。沒有人體靠近時,風扇默認為待機狀態,輸出信號指示燈為熄滅狀態,電源指示燈長亮,紅外傳感器運行實物如圖12所示:
圖12 人體識別模式測試
當用手靠近紅外傳感器時,傳感器輸出指示燈亮起,風扇開始轉動,把手遠離紅外傳感器時,經過5s后,風扇停止轉動。傳感器響應時實物如圖13所示:
圖13 人體識別模式測試
該智能風扇系統不僅支持傳統的手動模式下通過按鍵控制燈光、風扇開關、風扇擋位和定時功能,還提供了更先進的功能。語音識別系統可以準確識別指令,控制風扇和燈光的運行。
在自動模式下,風扇根據溫度傳感器檢測到的溫度自動調整擋位:溫度升高時增加擋位,溫度降低時減少擋位。人體識別模式通過紅外傳感器檢測到人體時啟動風扇,若5秒內未檢測到人體,則風扇自動關閉。
-
傳感器
+關注
關注
2561文章
52198瀏覽量
761675 -
STM32
+關注
關注
2283文章
10986瀏覽量
361272 -
智能風扇
+關注
關注
1文章
47瀏覽量
18470
發布評論請先 登錄
相關推薦
評論