江蘇職業(yè)技術(shù)學(xué)院無錫機(jī)電分院的研究人員張超敏、王雪嬌,在2019年第3期《電氣技術(shù)》雜志上撰文(論文標(biāo)題為“基于單片機(jī)的語音識別智能窗簾控制器的設(shè)計”),系統(tǒng)以單片機(jī)STC89C52芯片作為主控模塊,可以對窗簾實(shí)現(xiàn)光照度檢測、語音識別、按鍵手動等智能控制功能。
光照度模塊采集室外光照度數(shù)據(jù)上傳至單片機(jī),單片機(jī)發(fā)送控制指令驅(qū)動步進(jìn)電動機(jī)驅(qū)動模塊,控制步進(jìn)電動機(jī)轉(zhuǎn)動實(shí)現(xiàn)窗簾的自動開合,LCD顯示屏顯示實(shí)時的溫度和時間。同時,系統(tǒng)還具備手動控制功能,通過語音識別模塊或按鍵控制窗簾的開合。通過仿真驗(yàn)證該系統(tǒng)性能穩(wěn)定、結(jié)構(gòu)簡單、抗干擾能力強(qiáng)、成本低廉、能夠滿足智能家居的需求。
隨著物聯(lián)網(wǎng)技術(shù)的高速發(fā)展,智能化建筑悄然興起,傳統(tǒng)窗簾操作不方便,智能窗簾為人們提供了一個舒適的家居環(huán)境。在智能家居領(lǐng)域,電動智能窗簾克服了傳統(tǒng)窗簾操作不便的缺點(diǎn),可以在設(shè)定的光線和溫度下,自動開啟窗簾和關(guān)閉窗簾,為人們提供了更方便、舒適的居住環(huán)境。因此,研究與設(shè)計智能窗簾控制系統(tǒng)具有深遠(yuǎn)的現(xiàn)實(shí)意義。
一些學(xué)者在智能窗簾的設(shè)計方面進(jìn)行了研究,比如孫勇等通過紅外遙控控制系統(tǒng)可實(shí)現(xiàn)窗簾的自動開合;孫勤設(shè)計窗簾光控智能控制系統(tǒng);揚(yáng)亞讓通過主從式多機(jī)通信協(xié)議可實(shí)現(xiàn)窗簾控制信號的遠(yuǎn)距離傳輸。陳曉燕等通過串口多機(jī)通信實(shí)現(xiàn)了窗簾開合的遠(yuǎn)程控制。市場上現(xiàn)有的智能窗簾控制器價格較昂貴且尚不具備語音功能,而基于單片機(jī)的語音智能窗簾控制器具有更好的穩(wěn)定性、更適中的價格、功耗更低、更實(shí)用,就這也為智能窗簾系統(tǒng)的研發(fā)提供了市場價值。
單片機(jī)STC89C52作為系統(tǒng)的核心芯片,由光控模塊、按鍵模塊、步進(jìn)電動機(jī)驅(qū)動模塊、語音識別模塊、和LCD顯示模塊等組成。光控模塊就是利用光照度傳感器實(shí)時檢測室外光照度的變化,從而控制窗簾自動開合,使室內(nèi)保持恒照度控制。
當(dāng)單片機(jī)接收到手動控制、自動控制、遠(yuǎn)程控制信號后驅(qū)動步進(jìn)電動機(jī)驅(qū)動模塊控制步進(jìn)電動機(jī)的正反轉(zhuǎn),從而實(shí)現(xiàn)窗簾的開合。語音識別模塊具有語言記憶功能,把語音“開關(guān)窗”的指令預(yù)先寫入程序中,程序植入語音識別模塊中,當(dāng)有人發(fā)出相應(yīng)語音指令時,通過與程序中原有指令比較,相符即控制窗簾開關(guān)。
系統(tǒng)硬件為模塊化設(shè)計,包括語音識別模塊、光控模塊、按鍵模塊、步進(jìn)電動機(jī)驅(qū)動模塊,LCD液晶顯示模塊。整個系統(tǒng)硬件框圖如圖1所示。溫度檢測模塊和光照度檢測模塊主要完成溫度和光照度數(shù)據(jù)的采集,并且通過液晶LCD顯示屏顯示; 按鍵模塊主要完成人工手動控制功能;步進(jìn)電動機(jī)驅(qū)動模塊通過控制步進(jìn)電動機(jī)的正反轉(zhuǎn)來模擬窗簾的開合;采用單片機(jī)STC89C52作為主控芯片,完成對接收到的光照度、語音、按鍵輸入等數(shù)據(jù)進(jìn)行處理,并通過驅(qū)動模塊實(shí)現(xiàn)窗簾的開合。
圖1 系統(tǒng)硬件框圖
2.1 語音識別模塊
語音識別模塊核心芯片采用LD3320芯片,是一種非特定人“語音識別”專用芯片。語音信號為模擬量信號,需嵌入在芯片內(nèi)部A/D和D/A接口將語音模擬信號轉(zhuǎn)換為數(shù)字信號,操作者無需提前經(jīng)過語音訓(xùn)練,識別的關(guān)鍵語句如“開窗”指令以字符串的形式存入芯片中,識別的過程就是將操作者的語音與關(guān)鍵語句進(jìn)行比較,若匹配,則執(zhí)行相應(yīng)控制功能。LD3320語音識別模塊硬件電路如圖2所示。
圖2 語音識別模塊電路
2.2 光控模塊
利用光控模塊,用戶可以根據(jù)日常需求自行設(shè)定室內(nèi)光照度,通過光敏電阻實(shí)時監(jiān)測室外光照度,單片機(jī)控制窗簾開合實(shí)現(xiàn)室內(nèi)恒照度控制。窗簾實(shí)現(xiàn)光照度自動控制,天亮窗簾自動打開,室外光照度超過3000lx自動關(guān)閉,天黑窗簾自動關(guān)閉。光敏電阻監(jiān)測到的光照度數(shù)據(jù)為4~20mA電流模擬量信號,需經(jīng)過A/D模數(shù)轉(zhuǎn)換后輸出數(shù)字量信號給單片機(jī)。
A/D轉(zhuǎn)換器的功能是進(jìn)行模數(shù)轉(zhuǎn)換,把LD3320語音芯片接收到的模擬信號轉(zhuǎn)換成數(shù)字信號輸出至ST89C52。為確保A/D轉(zhuǎn)換的精度和速度,A/D轉(zhuǎn)換位數(shù)與整個智能窗簾控制系統(tǒng)測量控制的范圍和精度有關(guān)。本系統(tǒng)中采用8位A/D轉(zhuǎn)換器ADC0832芯片。整個光控模塊硬件電路如圖3所示。
圖3 光控模塊電路
2.3 步進(jìn)電動機(jī)驅(qū)動模塊
系統(tǒng)采用28BYJ-48型四相八拍步進(jìn)電動機(jī)控制窗簾的開合,力矩較大、帶負(fù)載能力強(qiáng)、控制精度高。單片機(jī)控制步進(jìn)電動機(jī)驅(qū)動模塊給電動機(jī)輸入一系列脈沖信號,控制電動機(jī)連續(xù)轉(zhuǎn)動,帶動窗簾在軌道上移動。
步進(jìn)電動機(jī)的轉(zhuǎn)速、停止的位置取決于輸入脈沖信號的頻率和脈沖數(shù),單片機(jī)控制發(fā)送一系列脈沖至步進(jìn)電動機(jī)驅(qū)動模塊,當(dāng)步進(jìn)驅(qū)動器接收到一個脈沖信號時,它就驅(qū)動步進(jìn)電動機(jī)按設(shè)定的方向轉(zhuǎn)動一個“步距角”0.62°,通過輸出連續(xù)脈沖信號控制窗簾的連續(xù)移動。
步進(jìn)電動機(jī)的工作峰值電流大范圍為2.6~7A,若通過下拉電阻或三極管驅(qū)動產(chǎn)生的轉(zhuǎn)矩小難以帶動窗簾開合,通常需要專用驅(qū)動芯片驅(qū)動才能正常工作,本系統(tǒng)采用ULN2003專用驅(qū)動芯片驅(qū)動步進(jìn)電動機(jī)。步進(jìn)電動機(jī)驅(qū)動模塊硬件電路如圖4所示。
圖4 步進(jìn)電動機(jī)驅(qū)動模塊電路
2.4 LCD顯示模塊
LCD顯示模塊采用LCD1602芯片,該模塊用來實(shí)時顯示室外光照度數(shù)據(jù)及窗簾工作狀態(tài)。由于STC89C52單片機(jī)P0口帶負(fù)載能力較差,故需先接10K上拉電阻排,再連接芯片LCD1602的DB1—DB7口作為數(shù)據(jù)輸入輸出端,傳輸光照度數(shù)據(jù)及窗簾開合狀態(tài)指令。單片機(jī)P2.7數(shù)據(jù)端口接顯示屏芯片LCD1602的使能端EN,P2.5口接液晶顯示的RS數(shù)據(jù)指令選通端,LCD1602的5腳R/W讀寫選通接單片機(jī)P2.6。并用電位器RV2用來調(diào)節(jié)LCD1602的亮度,LCD顯示模塊硬件電路如圖5所示。
圖5 LCD顯示模塊電路
3.1 主控模塊流程設(shè)計
軟件程序采用C語言編寫,為了便于修改和調(diào)試,采用模塊化設(shè)計,編程語言的開發(fā)工具用Keil C編程軟件。系統(tǒng)主程序的流程圖如圖6所示。
系統(tǒng)首先上電復(fù)位完成對單片機(jī)、傳感器、各端口模塊初始化和Y值及Y值優(yōu)先級設(shè)置,其中Y=3的優(yōu)先級小于Y=1或Y=2。然后單片機(jī)根據(jù)接收到的外界信息的類型,進(jìn)行相應(yīng)的數(shù)據(jù)分析和處理后,通過電動機(jī)控制器控制步進(jìn)電動機(jī)完成對窗簾的控制。
圖6 主程序流程圖
若Y=2有開合窗簾語音信號輸入,則子程序驅(qū)動LD3320非特定人“語音識別”專用芯片,執(zhí)行語音識別子程序,等待控制窗簾開合的語的輸入。當(dāng)LD3320接收到“開關(guān)窗”語音信號時,先對語音信號進(jìn)行分析提取語音特征值,并與芯片中預(yù)存的開關(guān)窗控制關(guān)鍵字符比較,若匹配,則驅(qū)動步進(jìn)電動機(jī)控制窗簾的開合。
若Y=3需執(zhí)行光控子程序,則光敏電阻實(shí)時監(jiān)測室外光照強(qiáng)度是否大于3000lx,若條件符合,則步進(jìn)電動機(jī)正向轉(zhuǎn)動,控制窗簾開起,直至碰到限位開關(guān)停止轉(zhuǎn)動。在條件要求不符合時,返回到子程序入口重新初始化。檢測窗簾開合狀態(tài),在打開狀態(tài)下,光敏電阻檢測到室外光照強(qiáng)度小于500lx時,控制步進(jìn)電動機(jī)反轉(zhuǎn)實(shí)現(xiàn)窗簾閉合。
顯示子程序,當(dāng)LCD1602芯片的讀寫選通端RW為低電平時,執(zhí)行寫操作;當(dāng)數(shù)據(jù)指令選通端RS端工作狀態(tài)為高電平時,選擇指令寄存器;使能端EN為下降沿信號,顯示數(shù)據(jù)被送到ST89C52單片機(jī)P2.0-P2.7口,LCD執(zhí)行數(shù)據(jù)指令,判斷數(shù)據(jù)指令是否執(zhí)行完畢,若完畢,則在液晶屏顯示光照度數(shù)據(jù)及窗簾開合狀態(tài),子程序退出。否則,返回到數(shù)據(jù)指令選擇寄存器繼續(xù)循環(huán)重復(fù)執(zhí)行之前步驟。
3.2 系統(tǒng)仿真
利用Proteus軟件進(jìn)行系統(tǒng)仿真,根據(jù)智能窗簾控制系統(tǒng)的原理圖,把相應(yīng)的元件在庫編輯器中找出來,然后進(jìn)行繪制。電路圖畫好后再選擇KEIL中已經(jīng)編譯好的*.hex文件,點(diǎn)擊運(yùn)行按鈕,仿真結(jié)果如圖7所示。
圖7 系統(tǒng)仿真圖
在整個系統(tǒng)設(shè)計過程中,光控模塊實(shí)時檢測室外光照度數(shù)據(jù)傳送至單片機(jī),STC89C52作為主控芯片通過步進(jìn)電動機(jī)驅(qū)動模塊控制步進(jìn)電動機(jī)正反轉(zhuǎn)從而實(shí)現(xiàn)窗簾的開合,并通過LCD液晶顯示屏顯示光照度和溫度。在實(shí)現(xiàn)光照度自動控制基礎(chǔ)上,同時又添加了語音控制和按鍵控制功能,使智能窗簾的控制更加完善,更加人性化。