現在我們收聽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中,包括協議,接口模式,定時選項,串行端口等。