摘 要: 為了對(duì)已安裝在多個(gè)分散點(diǎn)的混雜品牌空調(diào)進(jìn)行統(tǒng)一高效管理,節(jié)約空調(diào)運(yùn)行成本,提出了一種新穎的空調(diào)集中控制方案。首先給出了系統(tǒng)總體設(shè)計(jì)框圖,然后依次對(duì)系統(tǒng)的各子模塊進(jìn)行論述。本設(shè)計(jì)方案的核心工作有兩點(diǎn),一是解決紅外遙控器的碼型識(shí)別問題,二是描述空調(diào)集中控制系統(tǒng)的具體工作過程和實(shí)現(xiàn)方法。
關(guān)鍵詞: 學(xué)習(xí)型遙控器;ZigBee;空調(diào)集中控制;嵌入式系統(tǒng)
在使用多個(gè)獨(dú)立空調(diào)而非中央空調(diào)的場(chǎng)所,對(duì)多個(gè)位置分散、品牌型號(hào)混雜的獨(dú)立空調(diào)進(jìn)行集中而靈活的控制,可提高管理的便捷性且節(jié)省能源。目前,市面上已經(jīng)出現(xiàn)了針對(duì)普通家庭使用的學(xué)習(xí)型萬能遙控器。但這種遙控器只是將多個(gè)遙控器的功能整合到一個(gè)遙控器上,無網(wǎng)絡(luò)功能,且需手工操作,不適合多人同時(shí)使用的場(chǎng)合。本文提出的空調(diào)集中控制方案以精確性、實(shí)用性、學(xué)習(xí)性和可擴(kuò)展性為設(shè)計(jì)理念。方案將網(wǎng)絡(luò)功能與數(shù)據(jù)庫技術(shù)應(yīng)用于嵌入式控制方案,提高了系統(tǒng)的靈活性和可擴(kuò)展性。文章主要介紹了系統(tǒng)總體結(jié)構(gòu)及各子模塊的實(shí)現(xiàn)方法,對(duì)紅外編碼學(xué)習(xí)和數(shù)據(jù)庫技術(shù)運(yùn)用進(jìn)行了詳細(xì)研究。
1 系統(tǒng)總體方案
集中控制系統(tǒng)的根本目的是將原遙控器所發(fā)出的紅外信號(hào)進(jìn)行解調(diào),獲得原遙控器功能鍵所對(duì)應(yīng)的調(diào)制信號(hào),然后根據(jù)這些調(diào)制信號(hào),加上相配套的載波,再調(diào)制出原遙控器功能按鍵所發(fā)出的已調(diào)信號(hào),最后通過該已調(diào)信號(hào)來控制空調(diào)而不使用原來的遙控器?;谏厦娴乃悸罚O(shè)計(jì)了如圖1所示的系統(tǒng)總體結(jié)構(gòu)。
在圖1中,學(xué)習(xí)模塊的作用是對(duì)原遙控器進(jìn)行學(xué)習(xí),并判斷學(xué)習(xí)是否正確,如果學(xué)習(xí)正確就將解調(diào)出的信息進(jìn)行緩存,然后學(xué)習(xí)模塊通過與集中控制模塊進(jìn)行通信將其緩存數(shù)據(jù)存儲(chǔ)在集中控制模塊。學(xué)習(xí)模塊并不總是系統(tǒng)必需的部分,在學(xué)習(xí)完成后,可以將其從系統(tǒng)中移除。
集中控制模塊是系統(tǒng)的核心,它由以ARM為核心的SoC以及一個(gè)ZigBee協(xié)調(diào)者(ZC)組成,可以響應(yīng)用戶的本地操作和網(wǎng)絡(luò)操作。集中控制模塊的主要任務(wù)是進(jìn)行數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)查詢和數(shù)據(jù)發(fā)送,這些功能主要由SoC來完成,ZigBee協(xié)調(diào)者負(fù)責(zé)與所有的單控制模塊進(jìn)行通信。單控制模塊的作用是接收集中控制模塊發(fā)送過來的數(shù)據(jù)包,從數(shù)據(jù)包中提取出調(diào)制碼,再控制紅外發(fā)射電路發(fā)送紅外信號(hào)。
相應(yīng)于圖1,圖2給出了系統(tǒng)運(yùn)轉(zhuǎn)時(shí)的總框圖,以數(shù)據(jù)流向和工作流程為依據(jù)。
2 學(xué)習(xí)模塊
2.1 碼型識(shí)別
在學(xué)習(xí)過程中,碼型識(shí)別是重點(diǎn)也是難點(diǎn)。紅外遙控的編碼方式紛繁復(fù)雜,從調(diào)試方式可分為調(diào)制碼和脈沖碼,從數(shù)據(jù)表示法可分為碼寬表示和相位表示,另外每種碼型的數(shù)據(jù)碼組合方式、引導(dǎo)碼、重復(fù)碼定義都有所不同[1]。
根據(jù)前面所提到實(shí)用性原則,排除邊緣功能鍵的學(xué)習(xí)而只對(duì)核心功能鍵(例如開、關(guān)、制冷、輔熱、溫度加、溫度減功能鍵)進(jìn)行學(xué)習(xí)是很好的選擇。這樣可以盡量避開對(duì)重復(fù)碼、翻轉(zhuǎn)碼的學(xué)習(xí),減少按鍵學(xué)習(xí)數(shù)量和降低學(xué)習(xí)復(fù)雜性。另外,如果核心功能按鍵要涉及到重復(fù)碼、翻轉(zhuǎn)碼的學(xué)習(xí),可以利用原遙控器提供的交互性界面來作為輔助。
各廠商紅外編碼協(xié)議的不同給碼型識(shí)別帶來了很大的困難。編碼中對(duì)數(shù)據(jù)0和1的表示多種多樣,更有甚者并不直接表示0和1。例如用4種不同波形來表示00、01、10、11這4種組合。由此可見,在學(xué)習(xí)過程中識(shí)別0、1是很困難的。
如果對(duì)0、1不加判別,而只是分別測(cè)量學(xué)習(xí)高低電平時(shí)間,則不管學(xué)習(xí)過程還是發(fā)射過程都要簡(jiǎn)單得多[1]。下面是一個(gè)說明這一學(xué)習(xí)過程的例子。
圖3中的已調(diào)紅外信號(hào),數(shù)據(jù)0由528 μs的低電平加上527 μs的低電平表示,數(shù)據(jù)1由528 μs的低電平加上1 582 ?滋s的低電平表示??梢杂?jì)算出該信號(hào)持續(xù)時(shí)間為42 ms。現(xiàn)在以“電平類別+持續(xù)時(shí)間+電平類別+持續(xù)時(shí)間+電平類別+ …”的方式來對(duì)它進(jìn)行重新編碼(其中0表示低電平,1表示高電平,持續(xù)時(shí)間是相應(yīng)電平保持的時(shí)長(zhǎng)),則對(duì)圖3的信號(hào)重新編碼為: 1+8440+0+4220+1+528+0+527+1+528+0+527+1+528+0+527+1+528+0+1582+1+528+0+1582+1+528+0+527+1+528+0+1582+1+528+0+1582+1+528+0+4220+1+528+0+1582+1+528+0+527+1+528+0+527+1+528+0+527+1+528+0+1582+1+528+0+527+1+528+0+1582+1+528+0+527+1+528
上面的編碼若用字符串來表示,要占用296個(gè)字符的空間,即296 B??梢钥闯鲞@種編碼將耗費(fèi)更多的存儲(chǔ)空間,并且對(duì)于發(fā)碼結(jié)束的判斷也存在難點(diǎn)。在前文提到,本方案將重新編碼的數(shù)據(jù)先進(jìn)行緩存,最后還要存入存儲(chǔ)容量足夠大的集中控制模塊,所以對(duì)于存儲(chǔ)空間的問題可以得到解決。對(duì)于發(fā)碼結(jié)束判斷的問題,本文提出“飽和截尾校正法”。該方法的解釋如下:在學(xué)習(xí)過程中,對(duì)碼的學(xué)習(xí)時(shí)間盡量延長(zhǎng),目的是確保學(xué)習(xí)一定完成。由于學(xué)習(xí)后要驗(yàn)證碼型識(shí)別的正確性,驗(yàn)證的過程中可以截去冗余的編碼信息。測(cè)試編碼時(shí),在保證碼的學(xué)習(xí)正確的前提下,從后往前逐步刪除已經(jīng)正確學(xué)習(xí)的編碼的尾部,直到編碼不能再執(zhí)行正確控制功能,此時(shí)完成學(xué)習(xí)。
2.2 學(xué)習(xí)的流程
圖4是對(duì)一個(gè)遙控器進(jìn)行學(xué)習(xí)的過程。每一個(gè)遙控器的調(diào)制方式只需在最初判斷一次,對(duì)于每一個(gè)要學(xué)習(xí)的按鍵,先學(xué)習(xí)后測(cè)試,然后再存入單片機(jī)的ROM,當(dāng)所有要學(xué)習(xí)的按鍵學(xué)習(xí)完后,再將單片機(jī)中ROM的內(nèi)容一次性讀入ARM的ROM中進(jìn)行存儲(chǔ)??紤]到單片機(jī)ROM的大小,學(xué)習(xí)完一個(gè)遙控器就進(jìn)行清空。
3 集中控制模塊
集中控制模塊是系統(tǒng)的核心,它由一個(gè) ZigBee模塊和一個(gè)基于ARM的SoC組成,系統(tǒng)依靠它進(jìn)行自動(dòng)控制。
3.1 ZigBee模塊
ZigBee是一種基于IEEE802.15.4標(biāo)準(zhǔn)的無線通信協(xié)議。根據(jù)該協(xié)議可以提供短距離、低功耗的無線通信技術(shù)。ZigBee技術(shù)具有功耗低、可靠性和安全性高、網(wǎng)絡(luò)容量大、成本低等特點(diǎn),它的通信距離在100 m左右。
ZigBee可以形成星形、樹形和網(wǎng)狀網(wǎng)絡(luò),這些網(wǎng)絡(luò)結(jié)構(gòu)由ZigBee協(xié)調(diào)器(ZC)、ZigBee路由器(ZR)和ZigBee終端結(jié)點(diǎn)(ZE)這3種結(jié)點(diǎn)類型組成。本設(shè)計(jì)方案使用星形拓?fù)浣Y(jié)構(gòu)。星形網(wǎng)絡(luò)由一個(gè)協(xié)調(diào)器與多個(gè)全功能設(shè)備(FFD)或精簡(jiǎn)功能設(shè)備(RFD)組成,在該網(wǎng)絡(luò)結(jié)構(gòu)中,只有協(xié)調(diào)器與終端設(shè)備間才存在直接的通信。
ZigBee協(xié)議棧建立在IEEE802.15.4的PHY層和MAC子層協(xié)議之上。它另外實(shí)現(xiàn)了網(wǎng)絡(luò)層(NWK)和應(yīng)用層(APL)。在應(yīng)用層內(nèi)提供了應(yīng)用支持子層(APS)和 ZigBee設(shè)備對(duì)象(ZDO)。應(yīng)用框架中則加入了用戶自定義的應(yīng)用對(duì)象[2]。本設(shè)計(jì)方案主要是利用ZigBee網(wǎng)絡(luò)來傳送控制命令,在傳送過程中要用到ZigBee協(xié)議,在編程中主要關(guān)注的是協(xié)議棧中的應(yīng)用層。
3.2 基于ARM的SoC
ARM是一款功能強(qiáng)大的處理器,以它為核心擴(kuò)展而成的片上系統(tǒng)(SoC)可以移植多種嵌入式操作系統(tǒng),因而可以提供強(qiáng)大的軟件功能。ARM模塊是ZC和學(xué)習(xí)模塊的橋梁。
為了實(shí)現(xiàn)數(shù)據(jù)的方便管理和集中控制,可以向ARM板中移植sqlite。sqlite是一款使用廣泛的開源數(shù)據(jù)庫軟件,它占用資源少,便于移植。sqlite使用類似于sql的結(jié)構(gòu)化查詢語言,支持5種存儲(chǔ)類型:空值(NULL)、無符號(hào)整型(INTEGER)、浮點(diǎn)型(REAL)、文本字符串(TEXT)和存儲(chǔ)Blob數(shù)據(jù)(BLOB),這些存儲(chǔ)類型完全滿足需求。為了對(duì)所有空調(diào)進(jìn)行管理,建立ac_type表、ac_name表和ac_type_function系列表來存儲(chǔ)數(shù)據(jù)。ac_type表用來表示所有同類型空調(diào)的公共信息,ac_type_function表則是存儲(chǔ)每一種不同類型遙控器被學(xué)習(xí)的功能鍵所對(duì)應(yīng)的編碼信息,ac_name表用來描述每一個(gè)空調(diào)的基本信息。數(shù)據(jù)表的構(gòu)建很靈活,可以方便地刪除、添加和修改數(shù)據(jù)表,而數(shù)據(jù)庫中表的相應(yīng)變化與空調(diào)的變化相對(duì)應(yīng)。為了直觀形象地說明數(shù)據(jù)如何存儲(chǔ),給出了3個(gè)具體的表加以說明,如表1~表3所示。
表1中的編碼字段是由學(xué)習(xí)模塊和原遙控器發(fā)出的紅外信號(hào)進(jìn)行解調(diào)再編碼形成的字符串。表2中的調(diào)制方式字段記錄遙控器所使用的是何種類型的調(diào)制方式。表3對(duì)每一個(gè)空調(diào)的信息進(jìn)行了詳細(xì)的記錄,地址字段對(duì)應(yīng)每一個(gè)ZigBee芯片的MAC地址,通過ZigBee芯片的MAC地址可以唯一定位空調(diào)。
當(dāng)要控制某一個(gè)或多個(gè)空調(diào)時(shí),具體的方法是先要對(duì)數(shù)據(jù)庫進(jìn)行查詢,然后讀出所需要的字段數(shù)據(jù),接著要對(duì)數(shù)據(jù)進(jìn)行“組合”。如要關(guān)掉一個(gè)空調(diào),先要進(jìn)行一系列的查詢,查詢完后可得出組合字符串格式“地址+載波頻率+調(diào)制方式+編碼”。這些數(shù)據(jù)將通過ZigBee協(xié)議進(jìn)行封裝,單控制模塊正是通過這些數(shù)據(jù)還原原遙控器紅外信號(hào)。
向ARM SoC中移植開源的Web服務(wù)器即可將其構(gòu)建成一個(gè)小型服務(wù)器,從而可以響應(yīng)用戶從網(wǎng)絡(luò)中發(fā)來的控制請(qǐng)求。結(jié)合數(shù)據(jù)庫技術(shù),集中控制系統(tǒng)可實(shí)現(xiàn)“軟件化控制”,使得控制動(dòng)作、方式、權(quán)限和個(gè)性化可靈活定做。不僅實(shí)現(xiàn)集中化控制,并且可以因個(gè)人而靈活使用。
3.3 數(shù)據(jù)封裝
當(dāng)應(yīng)用程序需要發(fā)送數(shù)據(jù)時(shí),將通過應(yīng)用支持子層(APS)數(shù)據(jù)實(shí)體發(fā)送數(shù)據(jù)請(qǐng)求到APS,下面的每一層都會(huì)為數(shù)據(jù)附加相應(yīng)的幀頭,組成要發(fā)送的幀信息[3]。圖5顯示了在ZigBee協(xié)議中數(shù)據(jù)是如何層層封裝的。
在分層的通信協(xié)議中,層與層之間通過服務(wù)接入點(diǎn)(SAP)相連接。SAP是層與層之間的唯一接口,其具體的服務(wù)以通信原語的形式供上層調(diào)用。在上層調(diào)用下層服務(wù)時(shí),只要遵循統(tǒng)一的原語規(guī)范,并不需要去了解如何處理原語,這樣就做到了數(shù)據(jù)層與層之間的透明傳輸[4]。
4 單控制模塊
單控制模塊中ZE負(fù)責(zé)接收和解封裝ZC發(fā)送過來的數(shù)據(jù)包,單片機(jī)的工作就是根據(jù)解封裝出來的數(shù)據(jù)信息控制紅外發(fā)射電路。
單控制模塊中的所有ZE與集中控制系統(tǒng)中的ZC形成星形網(wǎng)絡(luò),每一個(gè)空調(diào)與一個(gè)ZE相對(duì)應(yīng)。圖6中左邊的流程是集中控制模塊向單控制模塊發(fā)送數(shù)據(jù)包的過程。ARM中的主控程序接受用戶操作請(qǐng)求,根據(jù)用戶命令查詢數(shù)據(jù)庫,獲得要控制空調(diào)的記錄信息,記錄信息經(jīng)層層封裝成幀,通過ZC發(fā)送到相應(yīng)的ZE。右邊的流程是單控制模塊發(fā)送紅外控制信號(hào)的過程,ZE接收到數(shù)據(jù),在應(yīng)用層對(duì)它進(jìn)行解析,得到想要的數(shù)據(jù),然后由單片機(jī)對(duì)編碼進(jìn)行調(diào)制,從而產(chǎn)生調(diào)制的紅外控制信號(hào)。
本文提出的空調(diào)集中控制方案具有很好的兼容性、實(shí)用性和擴(kuò)展性。另外它還可以很好地適應(yīng)物聯(lián)網(wǎng)的發(fā)展,如果空調(diào)廠商在空調(diào)內(nèi)置ZigBee模塊,那么這種無線的集中控制方案硬件設(shè)計(jì)將會(huì)更加精簡(jiǎn),并且實(shí)現(xiàn)預(yù)定的功能將更加方便。
參考文獻(xiàn)
[1] 顧曉紅.學(xué)習(xí)型遙控器中的碼型識(shí)別[J].電子與封裝,2009,9(10):42-43.
[2] ONDREJ S,ZDENEK B,PETR F,et al.ZigBee technology and device design[C].Networking,International Conference on Systems and International Conference on Mobile Communications and Learning Technologies,2006.
[3] 章偉聰,俞新武,李忠成.基于CC2530及ZigBee協(xié)議棧設(shè)計(jì)無線網(wǎng)絡(luò)傳感器節(jié)點(diǎn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2011,20(7):186-189.
[4] 賴聯(lián)有.ZigBee協(xié)議分析及其實(shí)現(xiàn)[J].齊齊哈爾大學(xué)學(xué)報(bào),2010,26(1):50-53.