蔡燕玲
(廈門海洋職業技術學院,福建 廈門 361012)
家庭中只要具有紅外遙控功能的電器都是各自配備一個紅外遙控器,各種遙控器之間無法通用,造成家中遙控器多、使用不方便的現象。若要將家中所有的遙控器整合在一起,即實現一個遙控器或一機(如eBox II)控制所有能接收紅外遙控的電器設備,則必須對原先的各種紅外遙控器編碼進行解碼。由于市場上各類電器的紅外遙控器編碼格式不同,不同廠家生產的同類電器其紅外遙控器的編碼格式也不同,造成各類紅外遙控器編碼無法以統一的編碼格式進行識別。目前市場上解決這個問題的方法有兩種,一種是將大多數常用電器的紅外遙控器的鍵碼事先存儲在所謂的萬能遙控器中,因每個家庭選購的電器組合各不相同,這種方式不僅浪費遙控器的存儲器資源,而且遇到某種電器的紅外遙控器鍵碼不屬于其設想的范圍內,就失去了“萬能”的功能。另一種方法是在專門定制的紅外遙控器中通過軟件判斷某個紅外遙控器的編碼格式,從而以特定的格式對遙控器編碼進行解碼,也就是“學習”原有的紅外遙控器各鍵的編碼,并將編碼存儲在該遙控器中,這樣,“學習”多少個紅外遙控器的編碼,就能取代多少個遙控器對相應的家電進行控制,這種方式更能體現“萬能”的含義。但是,若某種紅外遙控器的編碼格式不是內置軟件能判斷的,還是無法進行“學習”,所以這種方式也不是真正的“萬能”。
本文提出的對紅外遙控器編碼進行“學習”的原理是不考慮信號的紅外編碼格式,即不去判斷接收進來的邏輯是“0”還是“1”,直接計算同一種邏輯持續的時間,并根據持續時間的比例判斷出兩種不同的邏輯,用“0”或“1”表示 ,經解碼后得到紅外遙控器上各按鍵的發射編碼,并將這些發射編碼存儲起來,需要時,再將相應的發射編碼經調制后發射出去。
紅外遙控器是通過紅外發光管發射波長為940mn的紅外光來傳遞信號,紅外光為不可見光,以直線方式傳遞信號。
紅外編碼采用一個高低電平組合的脈沖信號代表編碼中的邏輯“0”和邏輯“1”,紅外遙控器上的每個按鍵對應一組規定的邏輯“0”和邏輯“1”,叫做按鍵編碼,簡稱鍵碼。
各廠商對紅外編碼格式[1]的規定各不相同。例如,NEC編碼格式規定,0.56m s的高電平和1.69m s的低電平代表邏輯“1”,0.56m s的高電平和0.565m s的低電平代表邏輯“0”(見圖1)。SONY SIC的編碼格式則規定,1.2m s的高電平和0.6m s的低電平為邏輯“1”,0.6m s高電平和0.6m s低電平為邏輯“0” (見圖2)。也就是說,不同編碼格式規定的邏輯“1”﹑“0”的脈沖高低電平的持續時間是不同的。

圖1 NEC編碼格式

圖2 SONY SIRC編碼格式
目前紅外編碼格式沒有一個統一的標準,制造編碼芯片的廠商都是各自規定自己的紅外編碼格式,而且發碼的格式也不一樣,對紅外遙控器信號的解碼造成一定的困難。
為了增加紅外編碼的傳送距離,提高抗干擾能力,紅外編碼在傳送之前必須進行調制,國內常見的調制頻率是38KHZ,國外為40KHZ。
紅外編碼調制方式有兩種:脈沖寬度調制(PWM)和脈沖相位調制(PPM)。
(1)脈沖寬度調制(PWM)
以發射紅外載波的占空比代表邏輯“0”和“1”的調制方式叫做脈沖寬度調制。如上述的NEC編碼,經調制后,發射載波0.56m s,不發射載波1.69m s,共2.25m s的脈沖周期表示邏輯“1”,發射載波0.56m s,不發射載波0.56m s,共1.12m s的脈沖周期表示邏輯“0”,如圖3所示。同理,SON Y SIC的編碼調制方式見圖4。

圖3 NEC編碼的調制方式

圖4 SONY SIRC編碼的調制方式
為了解碼方便,多數協議規定了紅外編碼的引導碼。引導碼一般是一個高低電平組成的脈沖,如NEC紅外編碼的引導碼為9m s的高電平和4.5m s的低電平,經脈寬調制后就是載波發射9m s和載波不發射4.5m s,如圖5(a),SONY SIC紅外編碼的引導碼為2.4m s的高電平和0.6m s的低電平,如圖5(b)。

圖5 NEC、SONY SIRC紅外編碼引導碼
同一協議中每組編碼的周期是固定的,NEC為108m s。以NEC upd6121編碼芯片為例,完整的編碼串如圖6(a)所示。SON Y SIRC的編碼串如圖6(b)。

圖6 NEC(a)、SONY SIRC(b)紅外編碼串發射情況
(2)脈沖相位調制(PPM)
以發射載波的相位表示邏輯“0”和邏輯“1”的調制方法叫做脈沖相位調制。從發射載波到不發射載波規定為邏輯“0”,從不發射載波到發射載波規定為邏輯“1”。其發射載波和不發射載波的時間是相同的,也就是邏輯“0”和“1”脈沖周期是固定的,這種調制方式的代表產品有Philips的RC-5、RC-6等,圖7為Philips RC-5紅外編碼調制和紅外編碼串發射情況。
本文主要研究調制頻率為38KHZ脈寬調制編碼的解碼方法。

圖7 Philips RC-5紅外編碼調制(a)和紅外編碼串發射情況(b)
由于各制造商規定的紅外編碼格式不同,如果只按照某種型號的格式進行解碼,不能得到正確的解碼。針對多種編碼格式,本系統采用“學習”的方式,即分析接收到的邏輯位高低電平的持續時間,得到對應的按鍵發射編碼,需要時再將對應的發射編碼調制發射。這樣就不必考慮編碼格式和發碼格式的問題,但這種方法需要較大的存儲器容量。
分析常見紅外編碼格式,可以看出,引導碼的脈沖寬度在3m s以上,邏輯“0”和邏輯“1”的脈沖寬度在0.52m s到1.69m s之間。
引導碼為先高電平后低電平的脈沖,通過調制發射,經紅外接收模塊處理后的信號相位變反,因此, A T89S52只要識別到低電平,就開始接收,接收到的前兩個邏輯位的持續時間為引導碼的高低電平持續時間。接下來接收到的是按鍵發射編碼串各邏輯位的高低電平持續時間。依次將每個邏輯位的高低電平持續時間存儲在A T89S52的內部RAM,并計算已存的單元個數,直到接收到的邏輯位高低電平持續時間大大于邏輯“0”或邏輯“1”的脈沖寬度,則可認為一串編碼已發射完整,A T89S52停止接收。將已存儲的數據進行分析,并轉換為二進制“0”和“1”,形成該鍵的發射編碼。
紅外接收/解碼電路以A T89S52為核心,包括紅外接收電路和單片機解碼部分。
3.1 紅外接收電路
這部分的功能是接收紅外遙控器發出的信號,并將解調信號送A T89S52的P1.6腳。
為了防止周圍光源對紅外光的干擾,提高紅外編碼的傳送距離,所有紅外遙控器發射的信號都是經過調制的。因此,要測量原先的編碼脈寬,必須對已調波進行解調,即還原出按鍵的發射編碼。紅外接收電路采用了市面上常見的一體化紅外接收頭 HS0038。HS0038集成了光電轉換、解調和放大電路,能解調接收到的紅外已調波,處理后輸出與TTL電平信號兼容的紅外編碼信號。需注意的是,由HS0038解調出來的信號與原信號的相位相反。HS0038只有三個引腳,1腳OU T輸出紅外調制編碼信號的解調信號, 2腳GND接地,3腳V s為電源端。
3.2 單片機解碼
紅外編碼串由一組邏輯“0”和邏輯“1”組成,而邏輯“0”和邏輯“1”又是由持續時間不同的高低電平組成。在不知邏輯“0”和邏輯“1”是由持續時間多長的高低電平組成的情況下,無法根據預定的時間來判斷接收到的邏輯位。因此,本系統中采用單片機的定時器計算邏輯位高低電平的持續時間,通過綜合分析判斷出編碼串中兩種不同邏輯的組合方式,從而得出紅外遙控器相應鍵按下后發射出的紅外編碼信號的解碼數據。圖8為解碼程序的流程圖。
該模塊的功能是將紅外遙控器發射出來的紅外信號進行解碼,算出按鍵發射編碼。遙控器上每個按鍵對應一組不同的發射編碼。設計制作的紅外遙控接收/解碼模塊的電路板如圖9所示。
測試環境:電路板,遙控器,單片機仿真實驗系統。
測試方法:將電路板上的 A T89S52串口與仿真實驗系統的串口相接,用 51匯編語言編程將A T89S52讀到的解調信號經雙方串口傳送到仿真系統的RAM。測試時,先按一下電路板上的“學習”鍵K1,將遙控器發射端對準紅外接收模塊并按“1”鍵,然后在仿真實驗系統上,通過操作可查看傳送過來的數據,即解調后發射編碼各邏輯位高低電平的持續時間值。

圖8 紅外遙控信號解碼流程圖
測試結果:受仿真實驗系統晶振的限制,測試時A T89S52晶振改為6M Hz。測試后,“1”鍵發射編碼邏輯位高低電平的持續時間數據如下:



圖9 紅外遙控接收/解碼電路板
其中,每四位十六進制數表示電平的持續時間,八位十六進制數為一組,表示邏輯位高低電平的持續時間。
第一組數據為引導碼的高低電平持續時間。最末一組數據經判斷后為結束碼。中間的數據為“1”鍵發射編碼中各邏輯位高低電平的持續時間。經過分析,這些數據中接近“00FB0095”的數據為一種邏輯,接近“00FB0249”的數據為另一種邏輯,因此可認為該鍵的發射編碼為“01000000 00000100 00000001 00000000 00001000 00001001”。
用相同的方法可得到遙控器上各鍵的發射編碼,如表1所示。

表1 遙控器上各鍵發射編碼
分析以上數據可以看出,每個按鍵的發射編碼有6個字節,前4個字節相同,應為廠商產品的編號,后兩個字節不同,應為鍵碼。再分析這兩個字節,有一定的規律,根據一些編碼芯片紅外發碼的特點,可判定鍵碼其實只有一個字節,最后一個字節是為了增加可靠性而設置的校驗碼。
通過以上測試數據及數據分析,可初步判斷[2]紅外接收/解碼電路及軟件設計思路是正確的。
文中提出了一種新的對紅外遙控編碼進行解碼的方法,并根據這個思路設計制作了實際電路。為了證實以上解碼方法的可行性,在制作紅外接收/解碼模塊的同時,也設計制作了紅外發射模塊,該模塊是將存放在嵌入式計算機ebox II中的碼經A T89S52軟件調制后發射,遙控相應的設備。試驗證明,用這個紅外發射模塊遙控設備,效果等同于原有的遙控器控制。
[1]Sam Bergmans.全面了解紅外遙控[EB/OL].(2007-02-23)[2010-08-16]. http://www.ca800.com/dow nload/htm l/2007-2-23/dow n16534.htm l.
[2]蔡明文.紅外遙控編碼的唯一性研究[J].蘭州工業高等專科學校學報,2008,15(4):1-3.