郭秋國(guó),劉宇,吳通濱,鄧傳堃
(東南大學(xué) 成賢學(xué)院,江蘇南京,210088)
智能家居以住宅為平臺(tái),兼?zhèn)浣ㄖ?、網(wǎng)絡(luò)通信、信息家電、設(shè)備自動(dòng)化,集系統(tǒng)、結(jié)構(gòu)、服務(wù)、管理為一體的高效、舒適、安全、便利、環(huán)保的居住環(huán)境,盡顯便捷將家中的各種設(shè)備(如音視頻設(shè)備、照明設(shè)備、窗簾控制、空調(diào)控制、網(wǎng)絡(luò)家電等)通過(guò)家庭網(wǎng)絡(luò)連接到一起。與普通家居相比,不僅具有傳統(tǒng)的居住功能,提供安全舒適的家庭生活空間,還能提供全方位的信息交互功能,優(yōu)化人們的生活方式。
隨著社會(huì)信息化的加快,人們的工作、生活和通訊、信息的日益緊密。信息化社會(huì)在改變?nèi)藗兩罘绞脚c工作習(xí)慣的時(shí)候,也對(duì)傳統(tǒng)的住宅提出了挑戰(zhàn),社會(huì)、技術(shù)以及經(jīng)濟(jì)的進(jìn)步更使人們的觀(guān)念隨之巨變。人們對(duì)家居的要求早已不是物理空間,更為關(guān)注的是一個(gè)安全、方便、舒適的居家環(huán)境。
而且技術(shù)產(chǎn)業(yè)結(jié)構(gòu)的調(diào)整,生產(chǎn)工藝的飛速發(fā)展,人們的生活水平不斷提高,家用電器逐漸普及。高精度、多功能、低功耗是現(xiàn)代科技發(fā)展的趨勢(shì)。在這種趨勢(shì)下,窗簾的數(shù)字化、智能化已經(jīng)成為現(xiàn)代生產(chǎn)研究的主導(dǎo)設(shè)計(jì)方向。單片機(jī)在電子產(chǎn)品中的應(yīng)用已經(jīng)越來(lái)越廣泛,結(jié)合感光、時(shí)鐘、語(yǔ)音和紅外系統(tǒng)的智能窗簾系統(tǒng)具有較好的發(fā)展前景。
系統(tǒng)設(shè)計(jì)以51 單片機(jī)為主控模塊,采用模塊的設(shè)計(jì)方式,包括遙控、電源、時(shí)鐘、電機(jī)驅(qū)動(dòng)、光照檢測(cè)、語(yǔ)音檢測(cè)、溫度檢測(cè)、雨滴檢測(cè)、鍵盤(pán)和顯示等模塊,實(shí)現(xiàn)對(duì)家具智能化的控制。圖1 為智能窗簾控制系統(tǒng)的系統(tǒng)框圖。
圖1 智能窗簾控制系統(tǒng)的系統(tǒng)框圖
系統(tǒng)原理圖如圖2 所示。
圖2 系統(tǒng)原理圖
方案一:采用STM32 系列單片機(jī),STM32 單片機(jī)因其構(gòu)造簡(jiǎn)略、簡(jiǎn)單易用、功能強(qiáng)大、便于開(kāi)發(fā)創(chuàng)作等優(yōu)點(diǎn)深受廣大開(kāi)發(fā)者的青睞。該單片機(jī)支持多種外設(shè)接口和通信協(xié)議,例如USB、CAN、SPI、I2C 等,方便了它與其他設(shè)備進(jìn)行通信。但STM32 內(nèi)部的時(shí)鐘受到溫度、電壓等因素的影響較大。所以相比于外部時(shí)鐘,穩(wěn)定性會(huì)比較差。這就意味著系統(tǒng)在運(yùn)行過(guò)程中可能會(huì)受到時(shí)鐘抖動(dòng)的影響,從而導(dǎo)致計(jì)時(shí)不準(zhǔn)確或其他問(wèn)題。STM32 的時(shí)鐘精度也不高:內(nèi)部時(shí)鐘的精度一般在1%左右,這相對(duì)于晶振的精度要低得多。對(duì)于某些需要高精度計(jì)時(shí)的應(yīng)用場(chǎng)景,內(nèi)部時(shí)鐘可能會(huì)不夠精確。所以STM32 內(nèi)部時(shí)鐘通常被視為備用選項(xiàng),并且系統(tǒng)并不支持長(zhǎng)時(shí)間運(yùn)行,如果系統(tǒng)需要長(zhǎng)時(shí)間運(yùn)行內(nèi)部時(shí)鐘就可能會(huì)承擔(dān)不必要的風(fēng)險(xiǎn)。
方案二:采用STC89C52 單片機(jī)。此單片機(jī)具有強(qiáng)可靠性、高性?xún)r(jià)比、低電壓、低功耗等優(yōu)點(diǎn)從而得到迅猛發(fā)展和大范圍推廣,STC89C52 單片機(jī)算術(shù)運(yùn)算功能強(qiáng),軟件編程靈活,自由度大,可用軟件編程實(shí)現(xiàn)各種邏輯功能,本身帶有定時(shí)器、計(jì)數(shù)器,可以用來(lái)定時(shí)和計(jì)數(shù),并且其功耗低,體積小和成本低等優(yōu)點(diǎn)。因其擁有超強(qiáng)抗干擾性就可以解決比如定時(shí),計(jì)時(shí)的問(wèn)題。STC89C52 單片機(jī)系統(tǒng)支持長(zhǎng)時(shí)間運(yùn)行結(jié)合功耗低的特點(diǎn),可搭載蓄電池一類(lèi)的電源從而達(dá)到實(shí)時(shí)可使用性?;谝陨蟽煞N方案并結(jié)合作品智能窗簾的特性比較以及性?xún)r(jià)比,我們選擇了方案二。
本模塊采用的是LCD1602 液晶顯示屏,它是一款物美價(jià)廉的工業(yè)字符型顯示屏,可以顯示2 行標(biāo)準(zhǔn)字符,每行共有16 個(gè)字符。能夠很方便顯示英文字母大小寫(xiě)、阿拉伯?dāng)?shù)字、常用符號(hào)等。并且通過(guò)自定義還能顯示簡(jiǎn)單的漢字。
液晶模塊的電路的連接圖見(jiàn)圖2,第1 腳接到了電路的GND 和第2 腳接到了電路的VCC。第3 腳通過(guò)一個(gè)10k 的藍(lán)白可調(diào)電阻連接到地端,藍(lán)白可調(diào)電阻可根據(jù)實(shí)際情況調(diào)整電阻從而改變液晶屏對(duì)比度實(shí)現(xiàn)更清晰的文字顯示。第4腳是液晶的寄存器控制腳,接到單片機(jī)的P13 腳。第5 腳是液晶的讀寫(xiě)控制腳,接到單片機(jī)的P14 腳。第6 腳是液晶的使能腳,接到單片機(jī)的P15 腳。第7 腳到第14 腳是液晶的數(shù)據(jù)/地址8 位總線(xiàn),接到單片機(jī)的P00 到p07 腳。第15 腳接到電路的VCC 這是液晶的背光電源腳,第16 腳接到電路的GND。
此模塊由一個(gè)比較器和一個(gè)感應(yīng)板組成,它可以用于模擬量輸出和數(shù)字量輸出,AO 口可以與AD 模塊相連通過(guò)AD轉(zhuǎn)換之后可以獲取到更加精確的數(shù)值。DO 口則可以和單片機(jī)直接連接檢測(cè)其高低電平。我們?cè)诒驹O(shè)計(jì)中主要運(yùn)用到雨滴模塊的DO 口輸出。雨滴模塊電路圖見(jiàn)圖2。
該雨滴模塊在本系統(tǒng)中的用途主要是用于感應(yīng)外界天氣是否下雨并以此來(lái)控制步進(jìn)電機(jī)的狀態(tài),當(dāng)雨滴模塊感受到外界下雨時(shí)該模塊會(huì)輸出低電平給單片機(jī),與此同時(shí)單片機(jī)收到來(lái)自雨滴模塊傳達(dá)的信號(hào)并控制步進(jìn)電機(jī)使窗簾關(guān)閉。
本模塊中一共采用了五個(gè)按鍵,它們的功能分別是:模式切換、增按鈕、減按鈕、閾值設(shè)置、設(shè)定時(shí)間。按鍵模塊電路圖見(jiàn)圖2。K1 按鈕是模式切換按鍵,在初始化啟動(dòng)時(shí)系統(tǒng)默認(rèn)是手動(dòng)模式,可以通過(guò)K1 來(lái)切換到其他控制模式。K2 按鈕是設(shè)定時(shí)間按鈕,它的作用是設(shè)置實(shí)際時(shí)間。閾值設(shè)置按鈕是K3 按鈕它是用來(lái)選擇需要設(shè)置的閾值的類(lèi)型例如光照和溫度。增減按鈕則是用來(lái)調(diào)整閾值的分別是K5 和K4 按鈕。
光照感應(yīng)模塊我們采用的是通過(guò)光敏電阻來(lái)采集獲取光照強(qiáng)度,然后再通過(guò)ADC0832 將采集的信息傳給單片機(jī)進(jìn)行處理。然后將處理后的數(shù)據(jù)和系統(tǒng)設(shè)置的閾值進(jìn)行比較進(jìn)而來(lái)控制步進(jìn)電機(jī)的運(yùn)作。
紅遙控模塊是由1838 紅外接收頭和紅外遙控器組成。用戶(hù)可以在手動(dòng)模式下使用紅外遙控器上的左右鍵來(lái)控制窗簾的開(kāi)關(guān)。該系統(tǒng)的主要工作原理是由連接在單片機(jī)上的紅外接收頭來(lái)接收紅外遙控器的紅外信號(hào),再通過(guò)解碼來(lái)使單片機(jī)獲取到用戶(hù)按下的是哪個(gè)按鍵,進(jìn)而實(shí)現(xiàn)遠(yuǎn)程遙控控制步進(jìn)電機(jī)的運(yùn)動(dòng)狀態(tài)的操作。
溫度感應(yīng)模塊是由DS18B20 與單片機(jī)直接相連組成,用來(lái)對(duì)周?chē)h(huán)境的溫度進(jìn)行測(cè)量,它的工作原理是通過(guò)對(duì)DS18B20 中的晶振產(chǎn)生的脈沖信號(hào)進(jìn)行加減法計(jì)數(shù)來(lái)獲取溫度數(shù)據(jù),經(jīng)過(guò)DO 口傳遞給單片機(jī)再由單片機(jī)進(jìn)行處理之后就可以獲得室內(nèi)溫度數(shù)值。
定時(shí)模塊我們使用DS1302 芯片來(lái)計(jì)時(shí),并且為了保證其在系統(tǒng)斷電之后可以繼續(xù)正常工作,我們?yōu)槠浼友b了一個(gè)紐扣電池作為其后備電源。DS1302 的2、3 管腳連接晶振為DS1302 提供相應(yīng)的時(shí)鐘脈沖信號(hào)。5、6、7 管腳作為IO 口與單片機(jī)相連用于數(shù)據(jù)的傳輸。
在我們最初的方案設(shè)計(jì)中打算采用的是LD3320 語(yǔ)音控制模塊,但是由于此前的設(shè)計(jì)已經(jīng)占用了RXD 和TXD,所以最終語(yǔ)音控制模塊我們采用的是SU-03T。它一款離線(xiàn)智能語(yǔ)音識(shí)別模塊,有別于在線(xiàn)語(yǔ)音模塊的是,SU-03T 語(yǔ)音模塊是由本地存儲(chǔ)數(shù)據(jù),所以在使用前需要提前設(shè)置自己所需要的命令詞和回復(fù)語(yǔ)。SU-03T 智能語(yǔ)音模塊雖然使用簡(jiǎn)單,但由于詞匯有限制所以會(huì)比較單一,但基本可以滿(mǎn)足本模塊的設(shè)計(jì)需求。在實(shí)際使用過(guò)程中智能語(yǔ)音控制模塊SU-03T 在接收到預(yù)前預(yù)先設(shè)計(jì)好命令詞時(shí),A25,A26 管腳發(fā)出低電平給與之相連的STC89C52 的P3.6 和P3.7 管腳來(lái)控制電機(jī)的運(yùn)作。
作為本系統(tǒng)的核心電機(jī)驅(qū)動(dòng)模塊,我們選擇的是使用ULN2003 作為電機(jī)的驅(qū)動(dòng)芯片,用來(lái)將單片機(jī)IO 口直接輸出的弱電流進(jìn)行增強(qiáng),并以此來(lái)驅(qū)動(dòng)步進(jìn)電機(jī)的正常運(yùn)轉(zhuǎn)。
本系統(tǒng)的開(kāi)發(fā)使用的是Keil C51 編譯軟件。Keil C51 是一種專(zhuān)門(mén)用于8051 微控制器的C 語(yǔ)言編譯器。它是由Keil公司開(kāi)發(fā)的,已經(jīng)被ARM 公司收購(gòu)。Keil C51 提供了完整的集成開(kāi)發(fā)環(huán)境(IDE),其中包括編輯器,編譯器,調(diào)試器和仿真器。它支持廣泛的8051 系列芯片,并提供豐富的庫(kù)和示例程序,使8051 編程變得更加容易和高效。Keil C51在嵌入式系統(tǒng)開(kāi)發(fā)中應(yīng)用廣泛,尤其是在工業(yè)控制、汽車(chē)電子控制系統(tǒng)、通信設(shè)備和消費(fèi)電子中的應(yīng)用更為常見(jiàn)。
本系統(tǒng)流程圖如圖3 所示,整個(gè)系統(tǒng)為循環(huán)處理,在初始化的時(shí)候?qū)σ壕э@示屏以及時(shí)鐘芯片進(jìn)行初始化設(shè)置。先讀取由DS18B20 處理的時(shí)間數(shù)據(jù)信息以及光照強(qiáng)度和溫度的數(shù)據(jù)然后交由液晶顯示屏進(jìn)行顯示。緊接著是按鍵掃描,根據(jù)按下按鍵的信息實(shí)現(xiàn)不同模式的轉(zhuǎn)換和操作控制。例如按下光照模式時(shí),會(huì)自動(dòng)讀取并顯示實(shí)時(shí)的光強(qiáng)并且按照設(shè)定好的閾值來(lái)控制窗簾的驅(qū)動(dòng)模式。模式為溫度模式時(shí)則會(huì)讀取室溫并顯示,然后按照設(shè)定好的溫度閾值來(lái)操作窗簾狀態(tài)。手動(dòng)模式則是根據(jù)按下的按鍵來(lái)開(kāi)關(guān)窗簾。
圖3 系統(tǒng)流程圖
時(shí)間信息的獲取是依靠單片機(jī)不斷去讀取DS1302 芯片中的時(shí)間信息并且實(shí)時(shí)發(fā)送至LCD1602 液晶顯示屏上進(jìn)行顯示。讀取時(shí)間信息是將年、月、日、時(shí)、分、秒等,的數(shù)據(jù)分別儲(chǔ)存在幾個(gè)不同的個(gè)寄存器當(dāng)中,并且依次將其顯示在液晶顯示屏上。時(shí)鐘信息讀取流程圖如圖4 所示。
圖4 時(shí)鐘信息讀取流程圖
首先在LCD1602 顯示出我們想要顯示的內(nèi)容之前,需要將先通過(guò)設(shè)置光標(biāo)地址指針來(lái)確定需要顯示內(nèi)容在屏幕上的位置。而在顯示長(zhǎng)串字符串的時(shí)候可以只在最開(kāi)始的時(shí)候完成一次地址指針設(shè)置,之后的內(nèi)容會(huì)自動(dòng)順延下一位地址顯示,無(wú)需每個(gè)字符都定位一次。LCD 顯示模塊流程圖如圖5 所示。
圖5 LCD 顯示模塊流程圖
光強(qiáng)信息的讀取主要是由光感電阻來(lái)感應(yīng)光強(qiáng)弱變換,然后再由ADC0832 將收集到的數(shù)據(jù)進(jìn)行轉(zhuǎn)換,變成數(shù)字信號(hào)之后交由單片機(jī)進(jìn)行數(shù)據(jù)處理。所以該模塊的軟件設(shè)計(jì)主要是在于對(duì)所收集的光強(qiáng)數(shù)據(jù)進(jìn)行處理和對(duì)比后進(jìn)行對(duì)窗簾的控制。光控模塊程序設(shè)計(jì)流程圖如圖6 所示。
圖6 光控模塊程序設(shè)計(jì)流程圖
溫度數(shù)據(jù)的采集是利用了DS18B20 芯片對(duì)外界溫度數(shù)據(jù)的收集并將其返回的十六位二進(jìn)制數(shù)交由單片機(jī)進(jìn)行處理,所返回的二進(jìn)制數(shù)中高五位代表正負(fù),后面十一位將其換算成十進(jìn)制后再乘0.0625 之后所得到的就是此刻溫度。在單片機(jī)將此時(shí)的溫度數(shù)據(jù)與閾值進(jìn)行比較后來(lái)進(jìn)行對(duì)窗簾進(jìn)行操控。溫控模塊程序設(shè)計(jì)流程圖如圖7 所示。
圖7 溫控模塊程序設(shè)計(jì)流程圖
通過(guò)解碼單片機(jī)接收到的紅外信號(hào)來(lái)實(shí)現(xiàn)對(duì)窗簾的控制。而遙控器上有不同的按鍵,每個(gè)按鍵對(duì)應(yīng)不一樣的紅外信號(hào)。所以按下不同按鍵時(shí)單片機(jī)接收并解碼到的鍵值有所不同。這個(gè)模塊的設(shè)計(jì)主要是通過(guò)對(duì)比鍵值來(lái)實(shí)現(xiàn)對(duì)應(yīng)預(yù)設(shè)按鍵的功能。例如開(kāi)關(guān)窗簾。紅外遙控模塊程序設(shè)計(jì)流程圖如圖8 所示。
圖8 紅外遙控模塊程序設(shè)計(jì)流程圖