您好,歡迎進入深圳市穎特新科技有限公司官方網(wǎng)站!
紅外通訊,顧名思義,就是通過紅外線傳輸數(shù)據(jù)。在電腦技術(shù)發(fā)展早期,數(shù)據(jù)都是通過線纜傳輸?shù),線纜傳輸連線麻煩,需要特制接口,頗為不便。于是后來就有了紅外、藍牙、802.11等無線數(shù)據(jù)傳輸技術(shù)。在紅外通訊技術(shù)發(fā)展早期,存在好幾個紅外通訊標準,不同標準之間的紅外設備不能進行紅外通訊。為了使各種紅外設備能夠互聯(lián)互通,1993年,由二十多個大廠商發(fā)起成立了紅外數(shù)據(jù)協(xié)會(IrDA),統(tǒng)一了紅外通訊的標準,這就是目前被廣泛使用的IrDA紅外數(shù)據(jù)通訊協(xié)議及規(guī)范。
在某些場合,需要數(shù)據(jù)交換但又不是很大,且實時性要求又不是很高的情況下,可以使用紅外通訊方式,這樣既可以得到無繩化通信帶來的便利,又可以避開采用無線電高頻電路可能引發(fā)的一些問題。譬如用于家用電器的遙控器,計算機的遙控鍵盤和遙控鼠標以及便攜式數(shù)據(jù)收集裝置(煤水電表的登錄器、報稅機)與主機的數(shù)據(jù)交換等。
目前,利用紅外線進行無線數(shù)據(jù)通信,無論從小型化、輕量化,還是從安全性等方面考慮,其可行性都比較高,并且已經(jīng)在無線多信道室內(nèi)話音系統(tǒng),無繩電話以及鍵盤和終端間的短距離無線連接中得到了應用。所有這些應用中的工作帶寬遠低于WLAN需要的帶寬。
紅外接收頭的型號有很多HS0038 VS838等 功能大致相同,只是引腳封裝不同。
紅外接收有幾種統(tǒng)一的編碼方式,采樣哪種編碼方式取決于遙控器使用的芯片,接收頭收到的都是一樣的。
電視遙控器使用的是專用集成發(fā)射芯片來實現(xiàn)遙控碼的發(fā)射,如東芝TC9012,飛利浦AA3010T等,通常彩電遙控信號的發(fā)射,就是將某個按鍵所對應的控制指令和系統(tǒng)碼(由0和1組成的序列),調(diào)制在38KHz的載波上,然后經(jīng)放大、驅(qū)動紅外發(fā)射管將信號發(fā)射出去。不同公司的遙控芯片,采樣的遙控碼格式也不一樣,較普遍的有兩種,一種NEC標準,一種是PHILIPS標準。
NEC標準:遙控載波的頻率為38KHz(占空比1:3)當某個鍵按下時,系統(tǒng)首先發(fā)射一個完整的全碼,如果按鍵超過108ms仍未松開,接下來發(fā)射的代碼(連發(fā)代碼)將由起始碼(9ms)和結(jié)束碼(2.5ms)組成。
一個完整的全碼 = 引導碼 +用戶碼 +用戶碼 + 數(shù)據(jù)碼 + 數(shù)據(jù)碼 + 數(shù)據(jù)反碼。
其中,引導碼高電平9ms,低電平4.5ms;系統(tǒng)碼8位,數(shù)據(jù)碼8位,共32位;其中前16位為用戶識別碼,能區(qū)別不同的紅外遙控設備,以防止不同的機種遙控碼互相干擾。后16位為8位的操作碼和8位的操作反碼,用于核對數(shù)據(jù)是否接收準確。收端根據(jù)數(shù)據(jù)碼做出應該執(zhí)行上面動作的判斷。
連發(fā)代碼是在持續(xù)按鍵時發(fā)送的碼。它告知接收端。某鍵是在被連續(xù)的按著。
NEC標準下的發(fā)射碼表示
發(fā)射數(shù)據(jù)0時用”0.56ms高電平 + 0.565ms低電平 = 1.125ms”表示;
數(shù)據(jù)1用”高電平0.56ms + 1.69ms = 2.25ms”表示。
遙控器發(fā)射信號:
需要注意的是:當一體化接收頭收到38kHz紅外信號時,輸出端輸出低電平,否則為高電平。所以一體化接收頭輸出的波形和發(fā)射波形是反向的
在實際的通信領域,發(fā)出來的信號一般有較寬的頻譜,而且都是在比較低的頻率段分布大量的能量,所以稱之為基帶信號,這種信號是不適合直接在信道中傳輸?shù)。為便于傳輸、提高抗干擾能力和有效的利用帶寬,通常需要將信號調(diào)制到適合信道和噪聲特性的頻率范圍內(nèi)進行傳輸,這就叫做信號調(diào)制。在通信系統(tǒng)的接收端要對接收到的信號進行解調(diào),恢復出原來的基帶信號。這部分通信原理的內(nèi)容,大家了解一下即可。
我們平時用到的紅外遙控器里的紅外通信,通常是使用38K左右的載波進行調(diào)制的,下面我把原理大概給大家介紹一下,了解一下,先看發(fā)送部分原理。
調(diào)制:就是用待傳送信號去控制某個高頻信號的幅度、相位、頻率等參量變化的過程,即用一個信號去裝載另一個信號。比如我們的紅外遙控信號要發(fā)送的時候,先經(jīng)過38K調(diào)制,如圖1所示。
圖1 紅外信號調(diào)制
原始信號就是我們要發(fā)送的一個數(shù)據(jù)“0”位或者一位數(shù)據(jù)“1”位,而所謂38K載波就是頻率為38K的方波信號,調(diào)制后信號就是最終我們發(fā)射出去的波形。我們使用原始信號來控制38K載波,當信號是數(shù)據(jù)“0”的時候,38K載波毫無保留的全部發(fā)送出去,當信號是數(shù)據(jù)“1”的時候,不發(fā)送任何載波信號。
那在原理上,我們?nèi)绾螐碾娐返慕嵌热崿F(xiàn)這個功能呢?如圖2所示。
圖2 紅外發(fā)射原理圖
38K載波,我們可以用455K晶振,經(jīng)過12分頻得到37.91K,也可以由時基電路NE555來產(chǎn)生,或者使用單片機的PWM來產(chǎn)生。當信號輸出引腳輸出高電平時,Q2截止,不管38K載波信號如何控制Q1,右側(cè)的豎向支路都不會導通,紅外管L1不會發(fā)送任何信息。當信號輸出是低電平的時候,那么38K載波就會通過Q1釋放出來,在L1上產(chǎn)生38K的載波信號。這里要說明的是,大多數(shù)家電遙控器的38K的占空比是1/3,也有1/2的,但是相對少一些。
正常的通信來講,接收端要首先對信號通過監(jiān)測、放大、濾波、解調(diào)等等一系列電路處理,然后輸出基帶信號。但是紅外通信的一體化接收頭HS0038B,已經(jīng)把這些電路全部集成到一起了,我們只需要把這個電路接上去,就可以直接輸出我們所要的基帶信號了,如圖3所示。
圖3 紅外接收原理圖
由于紅外接收頭內(nèi)部放大器的增益很大,很容易引起干擾,因此在接收頭供電引腳上必須加上濾波電容,官方手冊給的值是4.7uF,我們這里直接用的10uF,手冊里還要求在供電引腳和電源之間串聯(lián)100歐的電阻,進一步降低干擾。
圖3所示的電路,用來接收圖16-5電路發(fā)送出來的波形,當HS0038監(jiān)測到有38K的紅外信號時,就會在OUT引腳輸出低電平,當沒有38K的時候,OUT引腳就會輸出高電平。那我們把OUT引腳接到單片機的IO口上,通過編程,就可以獲取紅外通信發(fā)過來的數(shù)據(jù)了。
大家想想,OUT引腳輸出的數(shù)據(jù)是不是又恢復成為基帶信號數(shù)據(jù)了呢?那我們單片機在接收這個基帶信號數(shù)據(jù)的時候,如何判斷接收到的是什么數(shù)據(jù),應該遵循什么協(xié)議呢?像我們前邊學到的UART、I2C、SPI等通信協(xié)議都是基帶通信的通信協(xié)議,而紅外的38K僅僅是對基帶信號進行調(diào)制解調(diào),讓信號更適合在信號中傳輸。
由于我們的紅外調(diào)制信號是半雙工的,而且同時空間只能允許一個信號源,所以我們紅外的基帶信號不適合在I2C或者SPI通信協(xié)議中進行的,我們前邊提到過UART雖然是2條線,但是通信的時候,實際上一條線即可,所以紅外可以在UART中進行通信。當然,這個通信也不是沒有限制的,比如在HS0038B的數(shù)據(jù)手冊中標明,要想讓HS0038B識別到38K的紅外信號,那么這個38K的載波必須要大于10個周期,這就限定了我們紅外通信的基帶信號的比特率必須不能高于3800,那如果把串口輸出的信號直接用38K調(diào)制的話,波特率也就不能高于3800。
一、 NEC 協(xié)議
特征:
8 位地址和 8 位命令長度為提高可靠性每次傳輸兩遍地址(用戶碼)和命令(按鍵值)通過脈沖串之間的時間間隔來實現(xiàn)信號的調(diào)制 38Khz 載波每位的周期為 1.12ms 或者 2.25ms
調(diào)制方式:
Note:對于測試紅外接收頭的信號來說,有脈沖信號的地方就是高電平。即邏輯“1” 為 0.56ms 高電平+1.69ms 低電平,邏輯“0”為 0.56ms 高電平+0.56ms 低電平。
協(xié)議:
上圖為典型的 NEC 協(xié)議傳輸格式,起始位(引導碼)為 9ms 高+4.5ms 低組成,有效數(shù)據(jù)為地址+地址反碼+命令+命令反碼。反碼的作用是用來校準前面的地址和命令,如果對可靠性不感興趣,也可以去掉取反的數(shù)據(jù),或者將地址和命令擴展到 16 位
上圖傳輸?shù)牡刂窋?shù)據(jù)為 10011010,需要注意的是先發(fā)低位地址再發(fā)高位地址,因此該波形的地址為 01011001=0X59,同理,命令為 00010110=0X16。
長按鍵時,如下圖所示,每隔 110ms 重復發(fā)送一次,但是命令只發(fā)送一次,重復發(fā)送的是 9ms 高電平+2.25ms 低電平+0.56ms 高電平+低電平
擴展協(xié)議:
擴展協(xié)議只是將地址改為 16 位,其他不變。
實測波形:
下面的波形是從紅外接收頭上得到的波形:(調(diào)制脈沖信號轉(zhuǎn)變成高低電平了)
由于紅外接收頭在接收信號時(或者是發(fā)送的時候)將波形反向了,因此在讀數(shù)據(jù)時可以將示波器的反向功能打開,就能讀到有效數(shù)據(jù)了。
下面實例是已知 NEC 類型遙控器所截獲的波形:
遙控器的識別碼是 Address=0xDD20;其中一個鍵值是 Command=0x0E
最后一位是一個邏輯“1”。
二、 Philips RC5 協(xié)議
特征:
5 位地址和 6 位命令長度(擴展協(xié)議用 7 位)
雙向編碼或者叫曼徹斯特編碼(即電平的變化來表示邏輯 0 和 1)
36Khz 載波
每位的周期為 1.778ms(64 cycles of 36 kHz)
調(diào)制方式:
協(xié)議:
一段數(shù)據(jù)包含 14 位,周期長度為 25ms。
前兩位是起始位 S 通常都是邏輯 1。
在 RC5 擴展模式下第二位 S2 將 6 位命令代碼擴充到 7 位代碼(作為高位 MSB),這樣可以從 64 個鍵值擴充到 128 個鍵值。
第三位是控制位 C 它在每按下了一個鍵后翻轉(zhuǎn),這樣就可以區(qū)分一個鍵到底是一直按著沒松手還是松手后重復按。
長按鍵時,數(shù)據(jù)每隔 114ms 重復發(fā)送一次,第三位不發(fā)生翻轉(zhuǎn),即重復發(fā)送的信號是完全一致的。
實測波形:
連續(xù)按同一個鍵兩次時,只有第三位發(fā)生翻轉(zhuǎn),其他位不變
從上面波形可以讀出該段數(shù)據(jù)的值為 101 01010 010111,由于該協(xié)議為 RC5 擴展協(xié)議,即第二位作為命令的第七位,因此地址為 01010=0X0A,命令為 0010111=0X17。(實際遙控器廠商給出的命令為 57,可能是將第二位反相后作為命令的第七位)。
此外還有很多其他通信協(xié)議。再此不一一敘述。