HOW-TO:USB遙控接收器

現在我們收聽MP3,以及視圖XVIDS或X264S,計算機是許多房屋至少一個空間中的享受中心。除非您有一個特殊的HTPC,否則您最有可能使用鍵盤暫停,修​​改音量,以及通過白斑Mythbusters Recaps快進。 PC遠程控制從古代串口設計(誰有一個?)到不受影響軟件不支持的USB設備。在此操作中,我們可以使用USB紅外接收器,它模仿Windows,Linux軟件支持的典型協議以及Mac。我們有一個完整的協議和零件列表的指南。

設計概要

遠程控制在調製的紅外光束上傳輸數據。紅外接收器IC將調製光束分離成0S的清潔流以及1S。數據流由微控制器解碼,也通過USB連接發送到計算機。軟件處理代碼以及計算機上的觸發操作。

背景

計算機紅外接收器

最舊的PC紅外接收器風格使用接收器IC來切換串行端口引腳,通常是DCD。這種風格最有可能起源於Usenet,並且它仍然是網絡上最突出的:Engadget,Reguitables等。這些不是真正的串行設備,因為它們不會將數據發送到PC。相反,串行端口上的計算機程序時間脈衝,也可以解調信號。這是一個非常簡單的設計,但這取決於直接中斷進入以及Windows中不再提供的定時精度。如果您仍然有串行端口,Linux或Mac用戶可以嘗試此接收器。我們無法讓這種類型的接收器與當代Windows XP PC上的串行端口一起使用,並不希望通過USB->串行轉換器進行準確的時間來傳輸。

一些更高級的紅外接收器是真正的串行端口設備,可在向計算機發送數據之前確定或解碼紅外信號。 UIR / IRMAN以及UIR2集成了傳統的圖片16F84,但不提供固件和/或源代碼。如果需要,這些設備應該通過USB->串行轉換器在現代計算機上工作。互聯網以及usbirboy是本機USB設備,但缺乏廣泛的支持。

接收器軟件

無論接收器類型如何,計算機都需要一個程序來偵聽傳入的遠程命令,並將它們轉換為計算機上的操作。 Linux以及Mac用戶有Lirc,它支持大量不同的接收器類型。 Windows用戶有點不幸。 WinLirc是一個廢棄的Windows of Lirc,適用於簡單的中斷的串口接收器; Winlirc在2003年開始開發。梁最初是一個免費軟件PC自動化實用程序,但最終最終成本為30天的試用版。幸運的是,仍可為GiRder(3.2.9b)的最後一件免費軟件版本下載。

使用IR遠程協議

解碼IR信號

遠程控制在38kHz提供程序脈衝的間距或時序中的編碼命令,[SAN BERGMANS]對所涉及的校長進行解釋。紅外接收器IC將數據流與載波分開。我們的任務是使用微控制器解碼數據流。有幾十個遙控協議,但是Phillips的RC5是廣泛的,通常由業餘愛好者使用。

RC5是每比特時間精確為1.778ms的14個相等長度位的流。在比特時間的前半部分期間的脈衝表示0,下半部分的脈衝表示1.該計劃被稱為曼徹斯特編碼。

我們使用邏輯分析儀來看看Hoadaunge Wintv遙控器的輸出,這是一個已知的RC5遙控器。該圖顯示了1個按鈕的兩個壓力機,以及2按鈕的兩個按鈕;請注意,輸出逆向以及曼徹斯特編碼從上面的描述後退。

前兩個比特時間是開始位,然後是肘節點。每次按下按鈕時,切換位反轉,使接收器可以在保持和重複的壓力機之間辨別差異。接下來的5位是地址(0b11110 = 0x1e),後跟命令(0b000001 = 0x01,0b000010 = 0x02)。向RC5的向後兼容擴展將第二個開始位作為命令位7使用。

將遠程代碼代表到計算機

查看以前的設計,我們看到了三種將遙控命令傳送到計算機的一般方法:

協議特定接收器解碼一個協議,以及將實際解碼命令發送到PC

一種更多的一般類型的接收器步驟,每個脈衝的間隔以及將全波形發送到PC進行分析。

一些接收器產生信號的不同散列,但是真的不包括足夠的數據來完全重新創建波形。

雖然我們的偏好是朝向總哈希方法,但我們唯一的遙控器使用RC5開發RC5特定解碼器更加令人著迷。我們解釋了對固件部分中更多的常規版本的修改。

計算機接口協議

我們不想編寫自己的接收器軟件或驅動程序,因此我們尋找現有的,良好認可的通信協議來模仿。 UIR / IRMAN / IRA / CTINFRA / HOLLYWOOD +型接收器由GIRDER以及LIRC支持,以及使用帶有握手的簡單串行協議:

小工具由DTS初始化以及串口的DTR引腳。我們沒有這些並不在乎。

計算機發送“IR”,可選延遲。小工具回复“確定”。我們只會在每一個“r”上發送“確定”

遠程控制代碼作為不同的六個字節哈希發送。我們將解碼RC5信號以及發送實際值,但可以使用通用散列。

該協議用於串行端口設備,但是我們的USB接收器將顯示為虛擬串行端口以及程序將無法理解差異。

硬件

單擊此處以獲取全尺寸原理圖(PNG)。我們的接收器基於USB啟用的圖像18F2455微控制器,較小,較便宜的18F2550版本。如果二極管用於將VPP減少到無風險級別,則18F家庭可編程。圖像獲得了一個去耦電容器(C1),以及ICSP編程標題上的二極管(D1)以及電阻器(R1)。我們在引腳標頭上暴露了串行端口,用於使用MAX RS232收發器IC調試或混合USB /串行端口版本。

USB外設需要20MHz外鐘(Q1,C5,6),以及.220UF電容。我們使用2 x .1uf去耦電容器(C2,3)偽造電容器。 3mm LED(LED1)以及330歐姆目前限制電阻(R2)顯示USB連接狀態。

我們使用了TSOP-1738紅外接收器IC,該IC呼叫4.7UF去耦電容(C4)。如果您無法發現此特定IC,則在此註明的任何類型的接收器都應該工作。 TSOP-1738輸出是接收信號的倒數,當檢測到脈衝時,它會拉到地面,因此當沒有信號時,上拉電阻器(R3)保持銷高。檢查是否使用其他接收器,您可能要求使用下拉電阻以及反轉固件中的曼徹斯特解碼例程。

電路從USB總線汲取電源,因此我們不要求額外的電源。

零件清單

單擊此處的全尺寸放置圖(PNG)。 PCB風格為100%通孔以及單側。使用Cadsoft Eagle製作的原理圖以及PCB,為許多平台提供免費版本。所有文件都包含在作業存檔(zip)中。

部分

描述

IC1.

PIC 18F2455

28針.300插座

C1,2,3

0.1UF電容器

C4

4.7UF電容器

C5,6.

27pf電容器(15pf可能更好)

D1

1N4181二極管

Q1

20MHz水晶

R1,3

10K歐姆電阻

R2.

330歐姆電阻

TSOP.

TSOP1738(過時,嘗試TSOP1138)

USB

USB’B’插頭,女性

.1“PIN標題

ICSP.

.1“PIN標題

固件

使用Microchip的免費演示文稿C18編譯器,在C中寫入固件。固件以及源包含在作業存檔(zip)中。

我們使用了Microchip的USB堆棧中的2.3卷來生產USB串行端口,使用許多系統已經提供的默認司機。 USB堆棧具有易於枚舉USB小工具的功能,以及在小工具和主機之間傳輸數據。只需花幾個引腳更改,以獲取在我們的定制硬件上工作的CDC演示文稿。

我們的UIR / IRMAN / IRA / CTINFRA / HOLLYWOOD +協議的實施只是響應了“OK”的字母’R’。這應該滿足本協議的任何類型執行情況的握手要求。

我們選擇專門解碼RC5(和RC5X),因為它是一種廣泛使用的協議,以及我們必須使用的唯一遙控器。許多解碼是在中斷處理程序中完成的:

第一信號修改觸發了啟動889US(一半比特週期)計時器的中斷。

在每個定時器中斷,曼徹斯特編碼位的一半是採樣的。

對比較測量的每個其他中斷,以及比特值計算為0,1或錯誤。錯誤重置解碼路由。

在每個傳輸結束時,地址以及命令字節都被解碼,以及用4個緩衝字節(0)發送到主機。我們丟棄了切換位,因為它會使PC軟件混為思考,每個其他新聞界都是一個不同的代碼。我們將第二個開始位附加到RC5X合規性的命令位;這只是將0x40添加到非RC5x遠程代碼。

通過刪除曼徹斯特編碼步驟(3),以及向計算機發送48個樣本位(所有6個字節),可以進行更多的常規版本。

安裝USB紅外接收器

大多數操作系統已經有支持a的司機虛擬串行端口小工具如接收器。 Windows XP具有所需的驅動程序,但需要從.inf數據輔助以適當地將它們與我們的設備相關聯。

Windows將第一次插入接收器時顯示新硬件對話框。選擇使用定制的駕駛員以及指向作業存檔(zip)中包含的.inf數據。這將小工具鏈接到已包含在Windows中的駕駛員,以及將Receiver添加為COM端口。您可以檢查控制面板中的COM端口號。

MAC以及Linux用戶可以使用LIRC使用接收器,但是Windows用戶將面臨舊的,免費軟件梁或新的30天試用份額版本的選項。我們使用了樑的免費軟件版本,但希望你們可以建議我們忽略的偉大的開源交替。

無論您使用的計算機側控制軟件如何,為UIR / IRMAN / IRA / CTINFRA / HOLLYWOOD +樣式接收器配置它,以及進入分配給它的COM端口或串行地址。我們的接收器同樣與任何類型的協議選項兼容,如“快速UIR Init”以及“Skip UIR Init Check”,它縮短或擺脫“IR” – >“OK”握手。現在測試接收器,並根據軟件的文檔添加遠程。

手動終端接口以及調試

如果您對接收方有問題,或者您只是好奇,請嘗試從串行終端接口。我們真的像赫拉克勒斯的串行碼頭一樣。設置正確的COM端口,但USB串行端口驅動程序忽略速度以及配置設置。

一個資金’r’將及時接收者回复’確定’。 RC5代碼作為原始字節返回,因此請務必設置終端以顯示十六進制值,而不是將其轉換為ASCII文本。第一字節是RC5地址字節(0x1E),後跟命令字節(0x41),以及四個緩衝器0s粘附到UIR / IRMAN協議。圖片顯示握手,以及1,2的短按的輸出,以及3個按鈕。

一個名為portmon的免費實用程序記錄COM端口活動以進行評論。這對於間諜現有接收器協議以及調試我們的定制硬件以及關閉/專有軟件的交互是有用的。圖片顯示梁發送初始化字符串’IR’(0x49,0x52),以及接收器回复’OK’(0x4f,0x4b)。

進一步選擇

我們的RC5X兼容接收器遵循廣泛使用的接口協議。開源紅外接收器中的額外功能有很多可能性:

通過通用哈希生成器支持所有遙控器,如原始的UIR / IRMAN硬件。

添加額外的遠程協議解碼器,如RC6。

支持多種可配置的接口協議。

實現串口I / O.

將配置選項存儲在EEPROM中,包括協議,接口模式,定時選項,串行端口等。

Leave a Reply

Your email address will not be published. Required fields are marked *