郭秋國,劉宇,吳通濱,鄧傳堃
(東南大學 成賢學院,江蘇南京,210088)
智能家居以住宅為平臺,兼備建筑、網絡通信、信息家電、設備自動化,集系統、結構、服務、管理為一體的高效、舒適、安全、便利、環保的居住環境,盡顯便捷將家中的各種設備(如音視頻設備、照明設備、窗簾控制、空調控制、網絡家電等)通過家庭網絡連接到一起。與普通家居相比,不僅具有傳統的居住功能,提供安全舒適的家庭生活空間,還能提供全方位的信息交互功能,優化人們的生活方式。
隨著社會信息化的加快,人們的工作、生活和通訊、信息的日益緊密。信息化社會在改變人們生活方式與工作習慣的時候,也對傳統的住宅提出了挑戰,社會、技術以及經濟的進步更使人們的觀念隨之巨變。人們對家居的要求早已不是物理空間,更為關注的是一個安全、方便、舒適的居家環境。
而且技術產業結構的調整,生產工藝的飛速發展,人們的生活水平不斷提高,家用電器逐漸普及。高精度、多功能、低功耗是現代科技發展的趨勢。在這種趨勢下,窗簾的數字化、智能化已經成為現代生產研究的主導設計方向。單片機在電子產品中的應用已經越來越廣泛,結合感光、時鐘、語音和紅外系統的智能窗簾系統具有較好的發展前景。
系統設計以51 單片機為主控模塊,采用模塊的設計方式,包括遙控、電源、時鐘、電機驅動、光照檢測、語音檢測、溫度檢測、雨滴檢測、鍵盤和顯示等模塊,實現對家具智能化的控制。圖1 為智能窗簾控制系統的系統框圖。

圖1 智能窗簾控制系統的系統框圖
系統原理圖如圖2 所示。

圖2 系統原理圖
方案一:采用STM32 系列單片機,STM32 單片機因其構造簡略、簡單易用、功能強大、便于開發創作等優點深受廣大開發者的青睞。該單片機支持多種外設接口和通信協議,例如USB、CAN、SPI、I2C 等,方便了它與其他設備進行通信。但STM32 內部的時鐘受到溫度、電壓等因素的影響較大。所以相比于外部時鐘,穩定性會比較差。這就意味著系統在運行過程中可能會受到時鐘抖動的影響,從而導致計時不準確或其他問題。STM32 的時鐘精度也不高:內部時鐘的精度一般在1%左右,這相對于晶振的精度要低得多。對于某些需要高精度計時的應用場景,內部時鐘可能會不夠精確。所以STM32 內部時鐘通常被視為備用選項,并且系統并不支持長時間運行,如果系統需要長時間運行內部時鐘就可能會承擔不必要的風險。
方案二:采用STC89C52 單片機。此單片機具有強可靠性、高性價比、低電壓、低功耗等優點從而得到迅猛發展和大范圍推廣,STC89C52 單片機算術運算功能強,軟件編程靈活,自由度大,可用軟件編程實現各種邏輯功能,本身帶有定時器、計數器,可以用來定時和計數,并且其功耗低,體積小和成本低等優點。因其擁有超強抗干擾性就可以解決比如定時,計時的問題。STC89C52 單片機系統支持長時間運行結合功耗低的特點,可搭載蓄電池一類的電源從而達到實時可使用性。基于以上兩種方案并結合作品智能窗簾的特性比較以及性價比,我們選擇了方案二。
本模塊采用的是LCD1602 液晶顯示屏,它是一款物美價廉的工業字符型顯示屏,可以顯示2 行標準字符,每行共有16 個字符。能夠很方便顯示英文字母大小寫、阿拉伯數字、常用符號等。并且通過自定義還能顯示簡單的漢字。
液晶模塊的電路的連接圖見圖2,第1 腳接到了電路的GND 和第2 腳接到了電路的VCC。第3 腳通過一個10k 的藍白可調電阻連接到地端,藍白可調電阻可根據實際情況調整電阻從而改變液晶屏對比度實現更清晰的文字顯示。第4腳是液晶的寄存器控制腳,接到單片機的P13 腳。第5 腳是液晶的讀寫控制腳,接到單片機的P14 腳。第6 腳是液晶的使能腳,接到單片機的P15 腳。第7 腳到第14 腳是液晶的數據/地址8 位總線,接到單片機的P00 到p07 腳。第15 腳接到電路的VCC 這是液晶的背光電源腳,第16 腳接到電路的GND。
此模塊由一個比較器和一個感應板組成,它可以用于模擬量輸出和數字量輸出,AO 口可以與AD 模塊相連通過AD轉換之后可以獲取到更加精確的數值。DO 口則可以和單片機直接連接檢測其高低電平。我們在本設計中主要運用到雨滴模塊的DO 口輸出。雨滴模塊電路圖見圖2。
該雨滴模塊在本系統中的用途主要是用于感應外界天氣是否下雨并以此來控制步進電機的狀態,當雨滴模塊感受到外界下雨時該模塊會輸出低電平給單片機,與此同時單片機收到來自雨滴模塊傳達的信號并控制步進電機使窗簾關閉。
本模塊中一共采用了五個按鍵,它們的功能分別是:模式切換、增按鈕、減按鈕、閾值設置、設定時間。按鍵模塊電路圖見圖2。K1 按鈕是模式切換按鍵,在初始化啟動時系統默認是手動模式,可以通過K1 來切換到其他控制模式。K2 按鈕是設定時間按鈕,它的作用是設置實際時間。閾值設置按鈕是K3 按鈕它是用來選擇需要設置的閾值的類型例如光照和溫度。增減按鈕則是用來調整閾值的分別是K5 和K4 按鈕。
光照感應模塊我們采用的是通過光敏電阻來采集獲取光照強度,然后再通過ADC0832 將采集的信息傳給單片機進行處理。然后將處理后的數據和系統設置的閾值進行比較進而來控制步進電機的運作。
紅遙控模塊是由1838 紅外接收頭和紅外遙控器組成。用戶可以在手動模式下使用紅外遙控器上的左右鍵來控制窗簾的開關。該系統的主要工作原理是由連接在單片機上的紅外接收頭來接收紅外遙控器的紅外信號,再通過解碼來使單片機獲取到用戶按下的是哪個按鍵,進而實現遠程遙控控制步進電機的運動狀態的操作。
溫度感應模塊是由DS18B20 與單片機直接相連組成,用來對周圍環境的溫度進行測量,它的工作原理是通過對DS18B20 中的晶振產生的脈沖信號進行加減法計數來獲取溫度數據,經過DO 口傳遞給單片機再由單片機進行處理之后就可以獲得室內溫度數值。
定時模塊我們使用DS1302 芯片來計時,并且為了保證其在系統斷電之后可以繼續正常工作,我們為其加裝了一個紐扣電池作為其后備電源。DS1302 的2、3 管腳連接晶振為DS1302 提供相應的時鐘脈沖信號。5、6、7 管腳作為IO 口與單片機相連用于數據的傳輸。
在我們最初的方案設計中打算采用的是LD3320 語音控制模塊,但是由于此前的設計已經占用了RXD 和TXD,所以最終語音控制模塊我們采用的是SU-03T。它一款離線智能語音識別模塊,有別于在線語音模塊的是,SU-03T 語音模塊是由本地存儲數據,所以在使用前需要提前設置自己所需要的命令詞和回復語。SU-03T 智能語音模塊雖然使用簡單,但由于詞匯有限制所以會比較單一,但基本可以滿足本模塊的設計需求。在實際使用過程中智能語音控制模塊SU-03T 在接收到預前預先設計好命令詞時,A25,A26 管腳發出低電平給與之相連的STC89C52 的P3.6 和P3.7 管腳來控制電機的運作。
作為本系統的核心電機驅動模塊,我們選擇的是使用ULN2003 作為電機的驅動芯片,用來將單片機IO 口直接輸出的弱電流進行增強,并以此來驅動步進電機的正常運轉。
本系統的開發使用的是Keil C51 編譯軟件。Keil C51 是一種專門用于8051 微控制器的C 語言編譯器。它是由Keil公司開發的,已經被ARM 公司收購。Keil C51 提供了完整的集成開發環境(IDE),其中包括編輯器,編譯器,調試器和仿真器。它支持廣泛的8051 系列芯片,并提供豐富的庫和示例程序,使8051 編程變得更加容易和高效。Keil C51在嵌入式系統開發中應用廣泛,尤其是在工業控制、汽車電子控制系統、通信設備和消費電子中的應用更為常見。
本系統流程圖如圖3 所示,整個系統為循環處理,在初始化的時候對液晶顯示屏以及時鐘芯片進行初始化設置。先讀取由DS18B20 處理的時間數據信息以及光照強度和溫度的數據然后交由液晶顯示屏進行顯示。緊接著是按鍵掃描,根據按下按鍵的信息實現不同模式的轉換和操作控制。例如按下光照模式時,會自動讀取并顯示實時的光強并且按照設定好的閾值來控制窗簾的驅動模式。模式為溫度模式時則會讀取室溫并顯示,然后按照設定好的溫度閾值來操作窗簾狀態。手動模式則是根據按下的按鍵來開關窗簾。

圖3 系統流程圖
時間信息的獲取是依靠單片機不斷去讀取DS1302 芯片中的時間信息并且實時發送至LCD1602 液晶顯示屏上進行顯示。讀取時間信息是將年、月、日、時、分、秒等,的數據分別儲存在幾個不同的個寄存器當中,并且依次將其顯示在液晶顯示屏上。時鐘信息讀取流程圖如圖4 所示。

圖4 時鐘信息讀取流程圖
首先在LCD1602 顯示出我們想要顯示的內容之前,需要將先通過設置光標地址指針來確定需要顯示內容在屏幕上的位置。而在顯示長串字符串的時候可以只在最開始的時候完成一次地址指針設置,之后的內容會自動順延下一位地址顯示,無需每個字符都定位一次。LCD 顯示模塊流程圖如圖5 所示。

圖5 LCD 顯示模塊流程圖
光強信息的讀取主要是由光感電阻來感應光強弱變換,然后再由ADC0832 將收集到的數據進行轉換,變成數字信號之后交由單片機進行數據處理。所以該模塊的軟件設計主要是在于對所收集的光強數據進行處理和對比后進行對窗簾的控制。光控模塊程序設計流程圖如圖6 所示。

圖6 光控模塊程序設計流程圖
溫度數據的采集是利用了DS18B20 芯片對外界溫度數據的收集并將其返回的十六位二進制數交由單片機進行處理,所返回的二進制數中高五位代表正負,后面十一位將其換算成十進制后再乘0.0625 之后所得到的就是此刻溫度。在單片機將此時的溫度數據與閾值進行比較后來進行對窗簾進行操控。溫控模塊程序設計流程圖如圖7 所示。

圖7 溫控模塊程序設計流程圖
通過解碼單片機接收到的紅外信號來實現對窗簾的控制。而遙控器上有不同的按鍵,每個按鍵對應不一樣的紅外信號。所以按下不同按鍵時單片機接收并解碼到的鍵值有所不同。這個模塊的設計主要是通過對比鍵值來實現對應預設按鍵的功能。例如開關窗簾。紅外遙控模塊程序設計流程圖如圖8 所示。

圖8 紅外遙控模塊程序設計流程圖