魏金文,馬維華,吳僑
物聯網這幾年迅速發展,為人們的生活帶來便捷。中央空調也已廣泛應用,充分體現物聯網對人們生活的改變,若將我國建筑中的分體式空調替代成中央空調,在成本上和時間上都是一個巨大的耗費,因此如何對建筑中的分體式空調進行便捷化和人性化的統一管理,成為本課題的研作者:Ethan究方向。
系統結構,如圖1所示:

圖1 系統整體架構
該系統主要由控制采集節點,傳輸節點,信息控制中心構成。控制采集節點負責控制空調的開關,調節室內溫度,同時采集房間的溫度、濕度、光線等數據。采集到的數據將被傳送到傳輸節點,再由傳輸節點對數據重新封裝,通過以太網功能傳輸到信息控制中心。信息控制中心擁有多臺上位機,對各采集控制節點進行統一管理。各采集節點和傳輸節點之間的數據交換分為有線和無線兩種通訊方式:在方便布線的地方采用有線通訊,難以布線的地方則用無線傳輸。
控制采集節點的MCU采用新唐科技公司的Cortex-M052,它的成本僅相當于傳統的8位微控制器,功能卻非常豐富:它具有ISP和ICP功能,可直接在電路板上對程序進行升級;還包括了4個定時器,8通道12位逐次逼近模數轉換器,兩個UART串口;另外它還帶有SPI和 I2C接口。基于I2C接口,外部擴展一個32KB的EEPROM存儲器AT24C256來存儲數據,控制采集節點的硬件結構,如圖2所示:

圖2 控制采集節點硬件結構圖
MCU通過AD轉換功能不斷從傳感器模塊獲得室內環境參數,通過RS485有線通訊方式或者SI4432無線通訊方式發送給傳輸節點。紅外接收模塊則是通過M0的外部中斷功能來學習紅外編碼,然后存入AT24C256中。紅外發送模塊的職責是先從AT24C256中讀出紅外編碼,然后通過M0的PWM功能,發送紅外編碼,控制空調運行。數碼管顯示模塊則是留給調試人員的調試接口,用來顯示當前操作的是第幾條紅外編碼。
如圖3所示:

圖3 紅外發射電路
紅外通訊協議規定:為了減少干擾,信號必須調制成38KHZ后再通訊。所以IR_TXD傳輸給紅外發射模塊的就是38KHZ的信號。兩個三極管的作用來穩定信號,和開關紅外發射管。為了能夠多角度的控制空調,此處采用了3個紅外發射管,而在安裝節點的時候,也可以減少地理方位的局限。
如圖4所示:

圖4 紅外接收電路
紅外信號是通過 HS0038B(具有解調功能的紅外接收管)來接收。波形即是被調制成38KHZ后的紅外信號,如圖5所示:

圖5 38KHZ紅外信號波形
如圖6所示:

圖6 HS0038B解調后信號
HS0038B解調38KHZ紅外信號后,在OUT引腳所輸出的波形。比較圖 5和圖 6,可以得出結論:如果接收到38KHZ的信號,那么接收管會解調信號成為高電平,然后取反,在OUT引腳輸出低電平;若收到是低電平信號,就直接取反,在OUT引腳輸出高電平。IR_RXD與M052的具有外部中斷功能的引腳相連,當有紅外信號被接收時,就會觸發外部中斷,在中斷服務程序中讀取電平的組合情況,從而獲取紅外編碼。為了增強信號,在OUT引腳添加了一個 47K的上拉電阻,因此,整套接收電路具有很高的可靠性。
如圖7所示:

圖7 程序整體運行邏輯
軟件設計主要任務是如何學習紅外編碼,從而使得節點具有通用性、發射紅外信號以及和傳輸節點之間通訊。
在采集控制節點上電的之后,系統對節點的各個模塊進行初始化,然后系統默認進入 A模式,進行室內溫濕度和光線強度的采集;當接收到上位機的命令(可以是通過RS485或 SI4432),則會進入中斷,對指令進行解析,而置X為不同值,以此進入其它模式;如果進入 B模式運行,則會開啟外部中斷,等待學習紅外編碼;若是 C模式,就會發送紅外信號,控制空調,然后回到 A模式,繼續采集室內環境參數;D模式是調試模式,使得安裝人員在安裝節點之前,能夠對其進行設置和調試,此時通過數碼管顯示當前操作的是第幾條紅外編碼,以驗證編碼的正確性和通用性,從而保證節點的正常運行。
電視機遙控的紅外編碼,有固定的格式和長度,每個按鍵有唯一的紅外波形,而空調的卻不同,不同的廠家編碼的格式大相徑庭,所以如何實現遙控的通用性,是首要解決的問題。經過觀察發現,空調紅外的編碼一般由引導碼、數據碼、間隔碼組成,但是有的也沒有間隔碼,如圖8所示:

圖8 兩種不同的紅外編碼
可以看出不同廠家的引導碼時間長短不同,編碼格式和長度也沒有統一的規范,那么如何通用性地記錄下編碼格式?
針對這個問題,產生了兩種思路:第一種,將常見的編碼存儲下來,然后將學習到的編碼和已知的編碼進行比對,經過實驗發現,對于同一種編碼,多次比對后發現相同電平持續的時間每次都不一樣,差值有多有少,如果規定一個誤差范圍,其值偏大或者偏小都會影響整體解碼,很難找到一個適中的誤差范圍而保證解碼的正確性,因此這種方法可行性不高;第二種方法,記錄波形法,記下從學習開始到結束的每個高低電平的持續時間,然后存儲下來,這種方法雖然耗費空間比較大,但是通用性較高,適合絕大多數情況。
然而要用多少個字節來存儲一個編碼,怎樣才能節省空間,如何判斷編碼結束?經過對30多種編碼的比對,發現最長的編碼有 200多個高低電平的組合,而引導碼一般在 ms級別,數據碼在us級別。為了減少誤差,用定時器記錄下系統時鐘的震動次數是一個很好的選擇,外部晶振是12MHZ,那么1ms的時間長度,定時器計數12000下,則存入引導碼必須需要4個字節,引導碼一般最多為兩個電平,故前兩個電平要特殊處理;而對于us級的數據碼2個字節已經足夠了,這樣512個字節就可以存儲一個紅外編碼;當數據碼的電平持續時間大于60000下,視為結束,因為一位數據碼的一個電平不可能持續5ms。流程,如圖9所示:

圖9 紅外學習過程
紅外信號發射之前,先從AT24C256中讀取空調的紅外編碼,存入數組中,然后從數組中讀出數值,再將信號調制成38KHZ信號發射出去,從而保證實時性,如圖10所示:

圖10 華凌空調“關”紅外編碼
從圖10中可以看出,信號被調制成38KHZ之后,發送的時序圖。
原來調制信號使用的是38KHZ硬件自震蕩電路和與非門實現,這樣雖然簡化了軟件設計,卻增加了硬件成本,因此本次通過M0的PWM功能來實現。首先初始化PWM功能,配置成38KHZ的方波,通過禁止和使能PWM組合操作,產生如圖9所示的時序圖。
值得注意的是:空調在通電之后運行于睡眠模式,需要紅外編碼喚醒,此時需要一個電平跳變從而觸發解碼程序,否則即使發出的紅外編碼正確,空調也不受控制,這是由于上一次發送的最后一個數據可能是38KHZ信號也可能是低電平,若發送完的最后一個信號是38KHZ的,那么空調一直收到低電平,如果此時發送正確的編碼,接收到的也是低電平,那么空調就無法識別此次編碼,所以每次發送完之后要關掉PWM信號,或者每次紅外發射前,持續發送時間長度為 1s,且與第一個將要發送的電平信號相反的信號,而產生一個邊沿跳變,觸發中斷,運行內部的解碼程序。
通訊模塊采用RS485有線通訊和SI4432無線通訊的組合。RS485電路采用經典的光耦隔離電路,有效地防止外部信號干擾,SI4432通過M0的SPI功能實現。兩者都是通過中斷實現。接收到上位機發送的命令之后,進入各自的服務子程序進行指令的解析而做出相應的動作。
物聯網發展到今天,旨在為人們的生活帶來更多的便捷,讓人類享受科技帶來的諸多舒適與人性化,通過此空調集中系統,使物理上分散的空調可以進行統一的管理,實現與中央空調同樣的功能,而Cortex內核的低功耗和低成本,很好地解決了成本和功耗問題。
[1]顧曉紅.學習型遙控器中的碼型識別[J].電子與封裝,2009.10
[2]陳在平, 杜金利.面向 RS485協議配置應用的單片機與PC機之間的通信[J].天津理工大學學報,2009.04
[3]任登峰, 師衛.實現萬能遙控器的一種新方法[J].科技情報開發與經濟,2008.04
[4]劉政,袁國良,王麗芳.基于 Cortex-M0 的室內溫控系統的設計[J].中國科技信息,2011.04
[5]Michael Barr.C/C++嵌入式系統編程[ M].于志宏,譯.北京: 中國電力出版社,2001.
[6]范云龍,方安平,李寧.Cortex-M0處理器初探[J].單片機與嵌入式系統應用,2010.06