陳峰
(江蘇商貿(mào)職業(yè)學(xué)院,江蘇南通,226011)
目前家庭居住環(huán)境的采光及避光問題主要采用的是手動(dòng)開閉窗簾,手動(dòng)開閉不僅費(fèi)力而且很多方面不夠人性化,會(huì)對(duì)用戶造成一定的困擾。為了解決這些問題,本文設(shè)計(jì)了基于單片機(jī)的自動(dòng)窗簾控制系統(tǒng),具有以下特點(diǎn):可以實(shí)現(xiàn)光照控制、定時(shí)控制和藍(lán)牙控制三種工作模式,光照控制模式下根據(jù)光照強(qiáng)度實(shí)現(xiàn)窗簾自動(dòng)開閉,定時(shí)控制模式下能根據(jù)設(shè)定的時(shí)間實(shí)現(xiàn)窗簾自動(dòng)開閉,藍(lán)牙控制模式下可利用手機(jī)遠(yuǎn)程遙控功能實(shí)現(xiàn)窗簾開閉,給用戶帶來很大的方便。
自動(dòng)窗簾控制系統(tǒng)的總體設(shè)計(jì)框圖如圖1所示,由單片機(jī)最小系統(tǒng)、光照強(qiáng)度檢測(cè)電路、模數(shù)轉(zhuǎn)換電路、實(shí)時(shí)時(shí)鐘電路、LCD1602液晶顯示電路、按鍵模塊和藍(lán)牙模塊等共同組成。
圖1 自動(dòng)窗簾控制設(shè)計(jì)框圖
自動(dòng)窗簾控制系統(tǒng)的電路原理圖如圖2所示。該系統(tǒng)以STC89C52單片機(jī)為核心,單片機(jī)根據(jù)系統(tǒng)的工作模式,通過獲取光照強(qiáng)度、當(dāng)前時(shí)間來控制電機(jī)正反轉(zhuǎn)實(shí)現(xiàn)窗簾的開閉,按鍵模塊用于設(shè)置窗簾開閉時(shí)間和光照強(qiáng)度上下限閾值,手機(jī)APP通過藍(lán)牙模塊與單片機(jī)進(jìn)行通信,實(shí)現(xiàn)系統(tǒng)工作模式的切換和藍(lán)牙控制模式下窗簾的開閉。
圖2 自動(dòng)窗簾控制系統(tǒng)電路原理圖
設(shè)計(jì)中采用STC89C52RC單片機(jī)作為系統(tǒng)核心,由電源、時(shí)鐘電路、按鍵復(fù)位電路構(gòu)成單片機(jī)最小系統(tǒng),控制協(xié)調(diào)整個(gè)控制系統(tǒng)的運(yùn)行。
光照采集模塊主要由光敏電阻、ADC0831芯片組成。光照采集模塊利用光敏電阻采集光照強(qiáng)度,光敏電阻檢測(cè)到光照強(qiáng)度的變化,將電阻變化值轉(zhuǎn)化為電壓變化值,并通過模數(shù)轉(zhuǎn)換芯片ADC0831將電壓值轉(zhuǎn)換為數(shù)字信號(hào)傳輸?shù)絾纹瑱C(jī)進(jìn)行處理,從而實(shí)現(xiàn)光照控制模式下窗簾開閉的控制。
實(shí)時(shí)時(shí)鐘電路主要用于定時(shí)工作模式,DS1302是單片機(jī)系統(tǒng)中常用的日歷時(shí)鐘芯片。該芯片可提供秒、分、時(shí)、日、月、星期和年信息。DS1302與單片機(jī)之間能方便地采用同步串行的方式進(jìn)行通信。通過時(shí)鐘電路計(jì)時(shí),系統(tǒng)根據(jù)計(jì)時(shí)時(shí)間和設(shè)置定時(shí)時(shí)間進(jìn)行比較控制窗簾的開閉。
采用1602液晶顯示器實(shí)時(shí)顯示系統(tǒng)的工作狀態(tài)和設(shè)置狀態(tài)信息,系統(tǒng)工作時(shí)液晶實(shí)時(shí)顯示系統(tǒng)工作模式和當(dāng)前光照強(qiáng)度、當(dāng)前時(shí)間;設(shè)置狀態(tài)時(shí)液晶顯示如圖3和圖4所示,實(shí)時(shí)顯示相應(yīng)的設(shè)置參數(shù)信息。
圖3 設(shè)置定時(shí)時(shí)間液晶顯示界面
圖4 設(shè)置光照上下限液晶顯示界面
采用3個(gè)獨(dú)立按鍵來設(shè)置窗簾開閉時(shí)間和光照強(qiáng)度上下限閾值,其中設(shè)置按鍵K1用于工作狀態(tài)、時(shí)間設(shè)置、光照設(shè)置的切換,按鍵K2用于在設(shè)置狀態(tài)下,對(duì)應(yīng)設(shè)置的參數(shù)加1。按鍵K3用于在設(shè)置狀態(tài)下,對(duì)應(yīng)設(shè)置的參數(shù)減1。
單片機(jī)根據(jù)光照強(qiáng)度、設(shè)定時(shí)間或者遠(yuǎn)程遙控調(diào)節(jié)直流電機(jī)的正反轉(zhuǎn),從而實(shí)現(xiàn)窗簾的自動(dòng)開閉。采用8個(gè)晶體管接成復(fù)合管構(gòu)成電機(jī)的驅(qū)動(dòng)電路。當(dāng)A=0,C=1時(shí),VT1、VT2及VT7、VT8導(dǎo)通,電機(jī)正轉(zhuǎn);當(dāng)A=1,C=0時(shí),VT3、VT4及VT5、VT6導(dǎo)通,電機(jī)反轉(zhuǎn)。
采用HC-06藍(lán)牙模塊,可方便地與手機(jī)等智能終端的藍(lán)牙設(shè)備相連,實(shí)現(xiàn)兩個(gè)模塊之間通信。由于HC-06模塊支持UART接口,因此將HC-06的TX、RX分別和單片機(jī)的RXD、TXD,通電后即可進(jìn)行二者之間的串口通信。通過手機(jī)藍(lán)牙串口APP的手機(jī)發(fā)出相應(yīng)的指令來實(shí)現(xiàn)光控模式、定時(shí)模式和藍(lán)牙模式切換以及藍(lán)牙模式下遠(yuǎn)程遙控電機(jī)正反轉(zhuǎn)實(shí)現(xiàn)窗簾開閉。
利用兩個(gè)限位開關(guān)實(shí)現(xiàn)全開點(diǎn)、全關(guān)點(diǎn)電機(jī)自動(dòng)停止來防止窗簾電機(jī)過度轉(zhuǎn)動(dòng)而造成窗簾損壞。
根據(jù)自動(dòng)窗簾控制系統(tǒng)的功能,軟件設(shè)計(jì)主要的工作是采集當(dāng)前光照強(qiáng)度和時(shí)間,并根據(jù)工作模式實(shí)現(xiàn)窗簾打開和關(guān)閉的智能化控制。
系統(tǒng)的軟件設(shè)計(jì)流程圖如圖5所示,先進(jìn)行串行口和LCD1602液晶初始化,然后讀取當(dāng)前時(shí)間和光照強(qiáng)度,通過掃描按鍵執(zhí)行相關(guān)參數(shù)的設(shè)置功能,根據(jù)不同工作模式,對(duì)窗簾進(jìn)行控制,并通過LCD1602液晶實(shí)時(shí)顯示相關(guān)信息。
圖5 主程序流程圖
串行口中斷服務(wù)程序流程圖如圖6所示,主要用于接收手機(jī)藍(lán)牙APP發(fā)送的數(shù)據(jù)SBUF,并根據(jù)SBUF的內(nèi)容設(shè)置系統(tǒng)的工作模式、藍(lán)牙模式下電機(jī)正反轉(zhuǎn)和停止。藍(lán)牙串口APP界面如圖7所示,通過按鍵編輯器設(shè)置每個(gè)按鈕發(fā)送的字符。6個(gè)按鈕對(duì)應(yīng)的字符如表1所示。
圖6 串行口中斷服務(wù)程序流程圖
圖7 藍(lán)牙APP界面
表1 按鈕對(duì)應(yīng)發(fā)送字符
主要由讀取當(dāng)前時(shí)間和光照強(qiáng)度組成。系統(tǒng)啟動(dòng)后,單片機(jī)從DS1302時(shí)鐘芯片獲取時(shí)間,通過A/D轉(zhuǎn)換、數(shù)據(jù)處理進(jìn)行光照強(qiáng)度的采集。
按鍵檢測(cè)控制程序主要進(jìn)行窗簾開啟、關(guān)閉時(shí)間和光照上下限閾值的設(shè)置,其流程圖如圖8所示。變量flag用于表示系統(tǒng)設(shè)置的參數(shù),變量flag對(duì)應(yīng)的設(shè)置狀態(tài)如表2所示。
圖8 按鍵檢測(cè)子程序流程
表2 變量flag對(duì)應(yīng)的設(shè)置狀態(tài)
顯示子程序主要根據(jù)變量flag值顯示系統(tǒng)的工作或設(shè)置狀態(tài)的信息。當(dāng)flag=0時(shí)為工作狀態(tài)顯示界面,實(shí)時(shí)顯示系統(tǒng)的工作模式、光照強(qiáng)度和當(dāng)前時(shí)間;當(dāng)flag <5時(shí)顯示設(shè)置時(shí)間顯示界面;當(dāng)flag<7時(shí)顯示設(shè)置光照強(qiáng)度界面。
當(dāng)MODE=0時(shí)為光照控制模式,當(dāng)光照強(qiáng)度低于光照下限閾值時(shí),電機(jī)正轉(zhuǎn),窗簾開啟到開限位時(shí)電機(jī)停止;當(dāng)光照強(qiáng)度高于光照上限閾值時(shí),電機(jī)反轉(zhuǎn),窗簾關(guān)閉到關(guān)限位時(shí)電機(jī)停止。
當(dāng)MODE=1時(shí)為定時(shí)控制模式,當(dāng)前時(shí)間大于窗簾開啟時(shí)間時(shí),電機(jī)正轉(zhuǎn),窗簾開啟到開限位時(shí)電機(jī)停止;當(dāng)前時(shí)間大于窗簾關(guān)閉時(shí)間時(shí),電機(jī)反轉(zhuǎn),窗簾關(guān)閉到關(guān)限位時(shí)電機(jī)停止。
利用KEIL軟件與PROTEUS軟件進(jìn)行聯(lián)合仿真調(diào)試,使用AT89C51代替STC89C52。仿真時(shí)通過串口模擬藍(lán)牙,系統(tǒng)仿真效果如圖9所示,LCD1602液晶第一行顯示當(dāng)前工作模式為光照模式,當(dāng)前光照為60%;第二行實(shí)時(shí)顯示時(shí)間。通過改變光敏電阻(LDR1)中燈的位置改變光強(qiáng),觀察電機(jī)是否轉(zhuǎn)動(dòng)。采用串口調(diào)試助手發(fā)送相應(yīng)控制字符觀察能否進(jìn)行工作模式的切換,并測(cè)試定時(shí)模式和藍(lán)牙模式系統(tǒng)是否正常工作。
圖9 系統(tǒng)仿真結(jié)果圖
自動(dòng)窗簾控制系統(tǒng)有光照控制、定時(shí)控制和藍(lán)牙控制三種工作模式,通過手機(jī)藍(lán)牙串口APP來實(shí)現(xiàn)工作模式切換。在光照控制模式下,窗簾開閉由當(dāng)前光照強(qiáng)度控制,高于設(shè)定上限閾值就關(guān)窗簾,低于設(shè)定下限閾值則開窗簾系統(tǒng);在定時(shí)控制模式下,當(dāng)計(jì)時(shí)時(shí)間和預(yù)設(shè)的定時(shí)時(shí)間一致時(shí)進(jìn)行控制窗簾開閉;在藍(lán)牙控制模式下,系統(tǒng)通過HC-06藍(lán)牙模塊接收數(shù)據(jù),來控制窗簾開閉。該系統(tǒng)能夠取代傳統(tǒng)窗簾,能夠一定程度上滿足了人們對(duì)于智能家居的需求,方便人們的生活,具有一定的應(yīng)用價(jià)值。