紅外遙控技術是一種結(jié)合紅外技術、紅外通信技術和遙控技術實現(xiàn)的無線控制技術。由于紅外波長短,對障礙物的衍射能力差,不能穿透墻壁,紅外遙控技術更適合短距離直線控制樣,放置在不同房間的家用電器可以使用通用遙控器而不會相互干擾。
紅外遙控所需傳輸?shù)臄?shù)據(jù)量較小,一般只有幾到幾十個字節(jié),傳輸距離一般小于 10 由于功耗低、成本低、易實現(xiàn)等諸多優(yōu)點,米廣泛應用于電視機、機頂盒、DVD 家用電器的遙控器,如播放器、功放、空調(diào)等。
一些智能手機配備了紅外遙控功能(即安裝紅外發(fā)射器)。然后,安裝紅外發(fā)射器的智能手機可以用作遙控器,也可以用手機遙控許多家用電器。在具有紅外功能的智能手機的頂部,有些鑲嵌著一個或多個小燈泡,有些是一個小黑色的蓋子,這個黑色的蓋子對紅外線是透明的,只是肉眼 ** 它。帶燈泡的紅外遙控器就像一個手電筒。紅外光照射到哪里,電器將接收響應,這決定了紅外遙控器的三個特點:
配備紅外發(fā)射器的手機,可作為遙控器使用,還可作為手機遙控許多家電,這就需要破解電器的信號編碼。
通用紅外遙控系統(tǒng)主要由發(fā)射和接收兩部分組成。發(fā)射部分包括單片機芯片或紅外遙控發(fā)射專用芯片的編碼和調(diào)制,紅外發(fā)射電路的發(fā)射;接收部分包括一體化紅外接收頭電路的接收和解調(diào),單片機芯片的解碼。紅外遙控發(fā)射專用芯片很多,編碼和調(diào)制頻率也不完全一樣。實現(xiàn)紅外遙控功能的手機主要是發(fā)射紅外信號,需要了解紅外信號的編碼和調(diào)制原理。
紅外遙控器發(fā)出的信號由一串信號發(fā)出「0」和「1」由不同芯片組成的二進制代碼「0」和「1」通常有曼徹斯特 (Manchester) 脈沖寬度編碼 (PWM)。大多數(shù)家用電器使用的紅外遙控器都是脈沖寬度編碼,如下圖所示:
二進制信號的調(diào)制由送單片機芯片或紅外遙控發(fā)射專用芯片完成,編碼后的二進制信號調(diào)制為頻率 38kHz 間斷脈沖串相當于乘以頻率為38的二進制信號編碼kHz 脈沖信號獲得的間斷脈沖串是紅外發(fā)射二極管調(diào)制后發(fā)送的信號。通用紅外遙控器常用的紅外遙控發(fā)射 38kHz,這是由發(fā)射機使用的 455kHz 決定陶瓷晶振。晶振在發(fā)射端整數(shù)分頻,分頻系數(shù)一般取 12 所以 455kHz ÷ 12 ≈ 37.9kHz ≈ 38kHz。
在紅外開發(fā)中,最重要的可能是發(fā)送二進制信號的編碼協(xié)議。每個制造商使用不同的編碼協(xié)議,因此遙控器無法相互控制。即使編碼協(xié)議相同,不同的用戶代碼也不能被接收端接受。因此,首先要解決的問題是各種家用電器、各種制造商使用的編碼協(xié)議和用戶代碼。然而,電器種類繁多,這種應用難以兼容。一些大型制造商將在互聯(lián)網(wǎng)上發(fā)布自己產(chǎn)品的編碼和相應功能鍵的數(shù)據(jù)序列,以促進其他開發(fā)人員的開發(fā)。至于其他未發(fā)布的,可能需要使用紅外解碼器來破解其使用的協(xié)議和每個功能鍵對應的數(shù)據(jù)代碼。
在日常家用電器中,NEC 編碼是一種常見的編碼協(xié)議, 通用紅外遙控器發(fā)出的一串二進制代碼可分為功能「引導碼,用戶碼 16 位、數(shù)據(jù)碼 8 位,數(shù)據(jù)反碼 8 位和結(jié)束位」,編碼共占 32 位置如下圖2所示:
其中一個是導碼 9ms 的 38kHz 至少和一個載波 4.5ms 由無載波低電平結(jié)果碼組成。用戶碼由低 8 位和高 8 位組成 (用戶代碼高八位和低八位可以用原碼和反碼來糾正錯誤,但也可以直接使用 16 不同的遙控器有不同的用戶代碼,以避免不同設備的干擾,用戶代碼也稱為地址代碼或系統(tǒng)代碼。數(shù)據(jù)代碼通過原碼和反碼重復發(fā)送,碼時用于糾正數(shù)據(jù)。遙控器發(fā)射編碼時,低位在前,高位在后。結(jié)束位是 0.56ms 的 38kHz 載波。而其中的「0」碼由 0.56ms 的 38kHz 載波和 0.56ms 脈沖寬度由無載波低電平組成 1.125ms,「1」碼由 0.56ms 的 38kHz 載波和 1.69ms 脈沖寬度由無載波低電平組成 2.25ms,如下圖所示:
紅外遙控器的解碼器可以分析普通家用電器的紅外遙控信號,除以下兩種信號外:1??照{(diào)遙控器,空調(diào)控制比較復雜,光溫可調(diào)整十次以上,難以破解。2、照明遙控器,燈本身發(fā)光發(fā)熱,但也會發(fā)出大量的紅外線,必然會對外部紅外線信號造成嚴重干擾;只能使用射頻遙控器。
紅外解碼器是家電維修人員必備的儀器,常用于檢測遙控器是否能正常工作。為了使手機實現(xiàn)遙控功能,開發(fā)人員還應使用解碼器捕每個按鈕對應的紅外信號。紅外信號由三部分組成:
例如,電路61212表示NEC6121協(xié)議的紅外信號編碼格式為:引導碼 用戶碼 數(shù)據(jù)碼 數(shù)據(jù)反碼 引導碼和結(jié)束碼是固定的,數(shù)據(jù)反碼是由數(shù)據(jù)碼取反的,只有用戶碼和數(shù)據(jù)碼才能真正改變。
在App工程的AndroidManifest.xml紅外權限配置補充
紅外遙控功能Android4.4之后開始支持,相應的管理名稱ConsumerIrManager,常用的三種方法是:
下面是紅外遙控管理的包裝
正如上面提到的,一般家用電器遙控器的頻率是3.8萬,核心是tran ** it()上面第五部分提到了方法的信號編碼參數(shù),編碼由引導碼(9ms 4.5ms) 用戶編碼(高八位) 用戶編碼(低八位) 鍵數(shù)據(jù)碼 鍵數(shù)據(jù)反碼 結(jié)束結(jié)束碼,然后根據(jù)一定的編碼規(guī)則合成數(shù)組。以NEC以6122協(xié)議為例,引導碼固定(9000 4500),結(jié)束碼可以按(560,2000)停止。不同遙控器的區(qū)別主要在于用戶代碼和數(shù)據(jù)代碼。同一遙控器的用戶代碼相同。不同的按鈕有不同的代碼值,代碼值可以轉(zhuǎn)換相應的數(shù)據(jù)代碼和數(shù)據(jù)反向代碼。
用戶碼是0X08E6.按鈕2對應的碼值為0X41.代碼值由16進制表示,轉(zhuǎn)化為二進制,用戶碼高8位08為0001000,用戶碼低8位E6為1100110,數(shù)據(jù)碼41為0100001,數(shù)據(jù)反碼為10111110。
由于手機和遙控器的信號編碼不同,需要逆序編碼。逆序編碼后,用戶用戶代碼為0001000,8位用戶代碼為0110011,1,數(shù)據(jù)代碼為1萬,數(shù)據(jù)代碼為0111101。
但是編碼轉(zhuǎn)換已經(jīng)完成tran ** it方法,參數(shù)傳輸整形數(shù)組的信號,不是二進制數(shù),而是電平信號數(shù)據(jù)。電平是電路中某一點電壓的高低狀態(tài),數(shù)字電路中常用高電平表示1從上面第四部分圖3可以看出,當遙控器發(fā)射紅外信號時,通過560us低電平 1690us通過560代表1us低電平 565us低電平代表0。于是編寫Android使用560、1690代表二進制1,使用560、565代表二進制0,具體數(shù)組值如下:
這些轉(zhuǎn)換工作的具體代碼如下:
在需要發(fā)射紅外信號的地方調(diào)用如下: