2016年2月13日 星期六

[Locationfree] 製作紅外線遙控轉換器 IR translator LF-BOX1 Panasonic CATV/DVD 轉 Tivo

上一篇 [Arduino] 製作紅外線遙控轉換器 IR translate Panasonic 電漿電視轉 Kbro 凱擘 , 最近用同樣的原理製作了 LF-BOX1 的紅外線遙控轉換器, 把 LF-BOX1 所發出的 Panasonic CATV(1)/DVD(1) 紅外線碼轉換為 Tivo 紅外線遙控碼, 這樣可以讓 LF-BOX1/LF-PK20 的組合遙控原本不支援的 Tivo.

首先簡單說明一下 Sony LF-BOX1 和 LF-PK20 日版之間的使用關係, Locationfree LF-PK20 是 server 端, 可以將 AV 端子輸出的器材轉換成為網路串流, 讓使用者透過 Intranet 或 Internet 看電視. 由於 LF-PK20 是 server 端, 所以需要一個 client 端, 通常是安裝在 Windows 上的 Locationfree player 軟體. 除此之外, 對於日版 LF-PK20 (只有日版)還有另一種選擇就是 LF-BOX1 這樣的專屬 client 端設備, 它可以透過網路連接遠端的 LF-PK20 server, 並且透過 AV 端子輸出到電視上, 達成遠端看電視的目的. LF-BOX1 也是在 LAN 下輸出畫質最好的一個 Locationfree client.

連接關係是這樣:

Video Output path:
set-top box (ex. Tivo or Kbro) ---[AV]---> LF-PK20 ---[LAN/WAN]---> LF-BOX1 ---> TV

User IR Input path:
User press remote ---> LF-BOX1 ---[LAN/WAN]---> LF-PK20 ---> set-top box (ex: Tivo or Kbro)

事實上, LF-BOX1 中內建有和 Tivo 很接近的遙控碼可以使用, 但有缺點就是上下鍵會吐兩次 IR code 造成 Tivo 選節目的時候一次跳兩格, 相當惱人. 而且也不支援 Tivo 的數字鍵選台. 所以想透過製作紅外線遙控轉換器把某個 LF-BOX1 內建發出的 IR code 轉換成為 Tivo 紅外線碼. 這樣在遠端就可以遙控 Tivo 選擇節目或者選台.

IR 遙控路徑變成這樣:
User press remote ---> LF-BOX1 ---[LAN/WAN]---> LF-PK20 ---> Arduino IR Translator  ---> set-top box (ex: Tivo or Kbro)

我製作的 Arduino 轉換器就是串接在 server 端的 LF-PK20 和 LF-PK20 附帶的 IR 發送器 (IR emitter) 之間. 它的構造就是 IR Detector + IR Emitter.

轉換作用像這樣:

LF-BOX1 ---> LF-PK20 --- [Panasonic DVD(1) code] ---> Arduino IR Translator ---> [Tivo code]

我在 LF-BOX1 上面選擇的遙控碼為 松下 CATV(1) 和 DVD(1), 我曾試過 Sony 的 IR code, 但發現 Arduino 的 IRremote library 讀取 Sony IR code 作出的 hash code 會有碰撞的狀況, 也就是數個按鈕可能會抓到同一個 hash code, 造成無法判斷使用者按了哪個鍵. 另外, 使用 Sony 的過程有發現當 IR detector 和 IR emitter 寫在同一支程式中, 像我現在的應用就是需要同時使用 detector 和 emitter, 則 IRremote 寫出來的程式所發出的 IR code 會失敗. 至於原因我並沒有探究, 總之改為抓 Panasonic code 就 OK 了.

下面就是把 LF-BOX1 中的遙控碼設定為 Panasonic (松下) CATV(1) 另外次遙控器設定為 DVD(1). 會 mapping 兩組的原因是因為有時候給家中其他人使用如果不需要太複雜太多的功能, 用 CATV(1) 就可以了, 如果需要遙控或者快轉等功能則 DVD(1) 的按鍵比較多:


先用麵包板測試一下 LF-BOX1 的 IR emitter 座的腳位定義, 也就是故意將 LF-BOX1 附贈的 IR emitter 接到 Arduino 上面, 利用 Arduino 透過它發送 IR code, 如果用數位像機看到 IR LED 有亮起來, 就代表可以控制:

OK, 透過數位像機可以看到紅光, 代表 IR LED 有亮起來:

立體聲腳座的定義, 靠外側黑色是接地, 內側紅色是供電:

知道腳位定義後, 以相同的腳位把一顆 IR LED 焊接到立體聲座上:

另外這此我使用的 IR detector 是 VS-1838B:

我的 IR detector 接到 Arduino pin 12, IR emitter 接到 pin 3 (IRremote 的預設). 並且用一個零件盒裝起來. 當然要記得開三個洞, 一個給 IR LED, 一個 IR emitter, 然後是供電的 USB:

IR LED, 這端接到 LF-BOX1 上的 IR emitter 座:

近照部分電路與 USB 取電座:

硬體這樣就完成了. 原始的 LF-PK20 配置像下圖. 它附帶的 IR emitter 直接接到 IR 座. 事實上它可以接兩個 emitter, emitter 也可以自己做:


改為把我做的 IR translator 接到 LF-PK20 上, 然後 IR emitter 接到自製的 IR translator 上. 別接錯孔, 接錯動不了:

近照:

另一個方向, USB還沒有接電:

IR LED 端近照:

整體:

硬體這樣就完成了. 軟體部分已上傳 github:
https://github.com/smallbeetw/arduinosketch/commit/75a61430bfcdfcc47470b8a4cee575e6e0c1d2cf

下面是另一個試作品, 這個試作品是沒有用黑盒子把電路裝起來, 直接做了一個 IR LED 和 立體聲公頭 焊接在一起的 IR emitter, 插到 LF-PK20 上發射 IR code, 然後用另一個裸露的電路板接收, 這個做法堪用但比較差, 原因是因為接收器可能會接收一般其他遙控器的 IR code, 這樣比較耗電.

下面組圖就不解釋了, 有需要就參考著做, 只要腳位弄對, 插到 LF-PK20 上就可以使用. 我沒有串電阻, 如果需要可以串上;

注意腳位, 黑的接 LED 短腳, 紅的接 LED 長腳:



完成後插到 LF-PK20 上, 用數位像機確認: