《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 學習型紅外遙控器的設計
學習型紅外遙控器的設計
李 斌,高恭嫻
(南京信息職業(yè)技術學院,江蘇 南京 210036)
摘要: 提出了一種用于智能家居的學習型空調遙控器解決方案。該方案在軟件設計時采用測量脈沖寬度的原理并對測量數(shù)據進行了編碼壓縮,同時用軟件形式模擬38 kHz載波信號的發(fā)送,實現(xiàn)了對各種空調遙控器的自學習功能。測試結果表明,本編碼壓縮方法簡化了編碼信息,減少了存儲空間,可以代替各種遙控器。
Abstract:
Key words :

摘  要: 提出了一種用于智能家居的學習型空調遙控器解決方案。該方案在軟件設計時采用測量脈沖寬度的原理并對測量數(shù)據進行了編碼壓縮,同時用軟件形式模擬38 kHz載波信號的發(fā)送,實現(xiàn)了對各種空調遙控器的自學習功能。測試結果表明,本編碼壓縮方法簡化了編碼信息,減少了存儲空間,可以代替各種遙控器。
關鍵詞: 紅外遙控;載頻;編碼狀態(tài)轉換;自學習

    現(xiàn)代科學技術的發(fā)展,尤其是計算機技術和網絡技術的高速發(fā)展,不僅改變了人們的工作方式,也逐漸地改變了人們的生活方式,智能家居即是在這樣的背景下產生的。無線控制的智能家居系統(tǒng)可以不破壞原有裝修,只要在一些插座等處安裝相應的模塊即可實現(xiàn)智能控制,更不會對原來房屋墻面造成破壞,即便家居已裝修也可輕松升級為智能家居。但是對主要由遙控器控制的空調系統(tǒng)需設計專門的學習型紅外遙控器以便接入智能家居系統(tǒng)。為此,本文提出一種此類型的空調遙控器解決方案。
1 紅外遙控碼型分析
    通過對市面上比較普遍的幾十種遙控器的碼型結構進行研究分析發(fā)現(xiàn),各空調生產廠家對其遙控器的收發(fā)信號的脈沖編碼、碼型和碼流沒有統(tǒng)一的標準,存在如下狀況:
    (1)幀格式多樣:脈沖流中一般包括:幀頭、系統(tǒng)碼、操作碼、同步碼、幀間隔碼、幀尾,且同步碼與幀間隔碼出現(xiàn)的位置不固定。對這些靈活多變的幀格式,很難區(qū)分各種脈沖流的含義。
    (2)碼型多樣,如圖1所示。


    (3)載波頻率誤差大:標準載波頻率為38 kHz,誤差范圍±2 kHz。
    (4)編碼長短不一致:彩電類產品一般只有幾十位,而空調遙控器編碼長達上百位。
    (5)發(fā)送方式不同:最常用的發(fā)送方式有:完整幀如圖2(a)只發(fā)送1次、完整幀如圖2(b)重復發(fā)送2次、如圖2(c)先發(fā)1個完整幀,后重復發(fā)送1個幀頭和1個脈沖。


    本系統(tǒng)避開了各種形式的碼型和幀格式,不考慮其實際意義,只檢測脈沖的時間寬度[1],再對測量的數(shù)據進行壓縮,即可存儲遙控命令,發(fā)送時進行解壓來重構命令數(shù)據。
2 遙控器硬件結構
    學習型紅外遙控器由紅外一體化接收電路、反相器、溫度傳感器、單片機、紅外發(fā)送電路、E2PROM存儲器、鍵盤及LED指示燈構成,如圖3所示。


    單片機AT89S52構成紅外遙控的處理器,其數(shù)據存儲器RAM(258B)用來存儲學習過程中編碼信號的脈沖寬度和編碼。
    (1)紅外發(fā)射電路:38 kHz方波直接由單片機模擬產生,經過三極管放大后,驅動紅外發(fā)光二極管(注意:38 kHz載波不能用AT89S52定時器產生,因為38 kHz載波信號的周期只有26 μs,考慮到有載波時的占空比為1/3,即定時器的最小中斷時間間隔只有8 μs,在執(zhí)行中斷時中斷處理過程(如保護現(xiàn)場等)實際運行時間根據中斷點的不同需要的時間也不同,有時會大于8 μs,這樣不能保證38 kHz信號的穩(wěn)定性),在軟件處理過程中應用延時程序模仿38 kHz的紅外載波信號。
    (2)紅外一體化接收頭:接收器選用一體化紅外接收器MK0038,該接收器是黑色環(huán)氧聚光透鏡,能夠濾除可見光的干擾,集紅外接收和放大于一體,內含紅外線PIN接收管、選頻放大器和解調器。不需任何外接元件,就能完成從紅外遙控信號(38 kHz的載波信號)中分離出基帶信號,輸出與TTL電平兼容的所有工作。在與單片機連接時,將接收來的紅外遙控信號反相,其正向信號接外部中斷0,反相信號接外部中斷1。通過記錄2個中斷間的間隔時間來測量紅外遙控信號的高低電平的脈寬值。
    (3)外接E2PROM存儲器:用于存放學習到的控制命令的編碼和高低電平信號的脈寬值。
    (4)按鍵盤:啟動一個學習過程。
    (5)溫度傳感器:用于測量室內溫度,根據已學習的溫度控制命令自動開啟或關閉空調。
    (6)LED指示燈:用于顯示遙控器的工作狀態(tài)。
3 系統(tǒng)軟件設計
    學習型遙控器的設計性能及實現(xiàn)與其軟件設計編寫具有密切的關系,在設計中采用內部定時器對信號高低電平計時的方法來采集數(shù)據并保存。當系統(tǒng)識別到起始碼的低電平時,系統(tǒng)啟動內部定時器對輸入低電平計時,當起始碼的低電平結束時保存定時器此時的值,記錄下起始碼的低電平信號脈沖寬度值;然后依次保存采集到的編碼信號脈沖寬度值,如果采集到編碼信號位數(shù)大于設定值M(程序中設定值),就認為編碼采集已經結束,即學習子程序結束。
    在軟件設計過程中,使用了2個外部中斷和2個內部定時器,外部中斷0啟動定時器0停止定時器1計數(shù)并保存定時器1的數(shù)據,外部中斷1啟動定時器1停止定時器0計數(shù)并保存定時器0的數(shù)據,用定時器0記錄紅外解調信號的高電平時長。用定時器1記錄紅外解調信號的低電平時長,本文采用12 MHz晶振,1個機器周期是1 μs,計數(shù)器采用16位計數(shù)器。如果在外部中斷0和外部中斷1之間不發(fā)生內部定時器中斷,可以記錄的最大時間間隔為65.5 ms;如果在外部中斷0和外部中斷1之間發(fā)生內部定時器中斷則可以記錄的最大時間間隔是n×65.5 ms,其中n為中斷次數(shù)。其值保存在設定的數(shù)據存儲器中,然后寫入到外部E2PROM存儲器中。發(fā)射過程再從外部的E2PROM存儲器讀出,通過用軟件模仿38 kHz載波信號發(fā)送編碼信息。
3.1 數(shù)據壓縮編碼
     在設計過程中研究發(fā)現(xiàn):盡管空調遙控器存在幀格式多樣、碼型多樣、編碼長短不同、發(fā)送方式不同等問題,但對于某一個獨立的空調遙控器還是有規(guī)律可依的。在系統(tǒng)設計方案時,選擇通用性好的就能解決這個問題。例如測得一款空調遙控器的1個命令碼如下:
    低電平(有紅外發(fā)送載波)信號碼時長數(shù)據是:
    0x7368 0x0578 0x0577 0x0563 0x0555 0x0584 0x0564 0x0545 0x0572 0x0554……
     高電平(無紅外發(fā)送載波)信號碼時長數(shù)據是:……0x0578 0x1377 0x0563 0x0555 0x1384 0x0564 0x0545 0x1382 0x0554 0x01345……
     盡管碼型有幀頭、系統(tǒng)碼、操作碼、同步碼、幀間隔碼、幀尾,但不論是低電平(有紅外發(fā)送載波)信號碼時長或是高電平(無紅外發(fā)送載波)信號碼時長其結構都相對簡單。但是1個幀如此多的數(shù)據占據了大量的內存空間,增加了硬件成本和程序運行時間,有必要在數(shù)據分析的基礎上采取數(shù)據壓縮。
     數(shù)據壓縮根據使用場合和要求的不同分有損和無損壓縮。為了在數(shù)據發(fā)送時準確再現(xiàn)接收到的紅外數(shù)據,本文采用無損壓縮的方法,使用的編碼方式是改進型的游程編碼,根據游程編碼的原理,游程長度(游程或游長)RL(Run-Length)指的是由信號采樣值構成的數(shù)據流中各個數(shù)據重復重現(xiàn)的長度,只要給出重復的數(shù)據、數(shù)據長度和位置就可以恢復原來的數(shù)據流[2-3]。其具體實現(xiàn)過程如下:
     (1)在接收紅外信號時分別按高電平和低電平不同的時間長度編號(時間長度規(guī)定一定的誤差范圍),每1次測得的數(shù)據根據電平持續(xù)時間記錄其編號,再將同編號的數(shù)據相加求平均值作為標準時間長度,根據紅外信號格式的不同,可以選擇4 bit壓縮方式和2 bit壓縮方式,即壓縮比達到1/4和1/8。在接收紅外數(shù)據時采用的是中斷方式,不占用過多的CPU時間,還可以一邊學習一邊存入E2PROM以達到節(jié)省內存空間的目的。
     將上述空調遙控器的1個命令碼(其中紅外編碼長度為150 bit,壓縮比為1/8)的數(shù)據存儲在E2PROM中的數(shù)據格式如下:
    01100101……(共10個字節(jié)低電平數(shù)據);
    11010101……(共10個字節(jié)高電平數(shù)據);
    0x96(字節(jié)總長度);
    0x1377 0x0560 0x0572 0x370(4個不同的時長);
    (2)發(fā)送紅外數(shù)據時,先從E2PROM中讀出字節(jié)總長度、4個不同的時長及部分高低電平數(shù)據,在發(fā)送高電平時(即不發(fā)送紅外載波信號)且時長大于1 ms,再讀E2PROM數(shù)據,這樣更可以節(jié)省內存空間。
3.2 軟件設計
     根據上述原理其軟件流程圖如圖4所示。


      本文提出的學習型紅外遙控器的設計方案。由于在數(shù)據處理和存儲時采用了無損壓縮的改進型游程編碼技術,簡化了數(shù)據結構,節(jié)省了存儲空間,存儲1個鍵碼(如150 個雙字節(jié)信息)僅需29 個字節(jié),壓縮比達7:1。同時采用均值算法,消除了載波頻率誤差大的影響,使發(fā)送的載波頻率誤差小于0.5 kHz。本設計能自動學習市面上流行的各種紅外遙控器的遙控指令,從而控制各種不同類型的紅外遙控設備。比較接收和發(fā)送的紅外波形結果是兩波形完全一致。通過對海爾、澳柯瑪、三星等紅外空調遙控器的測試,都達到了理想的準確率,有效的遙控距離可達8~10 m[4]。本設計作為一個節(jié)點再連接上通信模塊即可實現(xiàn)智能家居系統(tǒng)中空調的智能控制。
參考文獻
[1] 陳祖爵,王建毅.智能型紅外遙控器的設計[J].微計算機信息,2008,24(1-2):305-307.
[2] 徐志,何明華,林武,等.一類基于軟件載波的學習型遙控器的設計與實現(xiàn)[J].現(xiàn)代電子技術,2009(2):36-38.
[3] SALOMON D.數(shù)據壓縮原理與應用[M].吳樂南,譯.北京:電子工業(yè)出版社,2003.
[4] 丁躍華,陳艷峰,龍箏.紅外遙控系統(tǒng)的一種設計方法[J].現(xiàn)代電子技術,2007(7):71-75.

此內容為AET網站原創(chuàng),未經授權禁止轉載。