[教學]WinLIRC 紅外線遙控電腦教學

探討「內嵌」以及「腳本化」這兩個主題的技術-版主XO老師(熟悉的目前是 Tcl,討論內容也會環繞在 Tcl 四周,但是本版還是歡迎其他 Scripting 語言以及任何「內嵌」技術的討論。)

版主: b80203, ghost3401, XO, maa

分享到: Facebook

[教學]WinLIRC 紅外線遙控電腦教學

文章maa » 週四 4月 14, 2011 9:35 am

全文網址: http://coopermaa2nd.blogspot.com/2011/04/winlirc.html

LIRC 與 WinLIRC 簡介

你想用紅外線遙控器遙控電腦嗎? 不用起身或下床,只要坐在沙發或躺在床上,
拿起遙控器就可以遙控電腦,叫 Winamp 換歌、操作 KMPlayer 或 PPS 播放
想看的電影或電視節目、把電腦當成數位相框來遙控,用遙控器操作 Powerpoint
簡報的播放,或者用遙控器命令電腦做任何你想做的事...,你想過這種舒服的日子嗎?
有了 LIRC/WinLIRC 這個套件,就可以讓你美夢成真用遙控器來遙控電腦。

LIRC (Linux Infrared Remote Control)是一個 Linux 紅外線遙控套件,它可以
用來為遙控器進行紅外線解碼與發射紅外線。LIRC 支援大部份的遙控器。那什麼是
WinLIRC 呢? 沒錯,正如你所猜想的,WinLIRC 就是 Windows 版的 LIRC。

這一系列的教學,將教你使用 WinLIRC 來遙控電腦。

你需要準備什麼器材?

1) 首先,你需要一個電腦紅外線接收器

你可以自己製作一個電腦紅外線接收器,製作方法很簡單,而且成本才幾 10 塊台幣。
最簡單的製作方法有兩種,一種是 Serial 介面的接收器,另一種是 Audio 介面的接
收器,前者把接收器接在 Serial 介面,也就是 COM Port/RS232 上,後者則是把
接收器接到麥克風輸入埠中。底下這張圖是 Serial 介面紅外線接收器的外觀:

圖檔
▲ Serial 介面紅外線接收器

其電路圖如下:

圖檔

所需材料:

* IC1: TSOP1738 紅外線接收器。建議用 38 kHz 的紅外線接收器,如 TSOP1738,
TSOP2438,TSOP4438, PNA4602, FM-8038TM2-5DN 等
* IC2: 78L05 100mA 穩壓器
* C1: 4.7uF 電解電容 (optional)
* D1: 1N4148 二極體
* R1: 4.7K 歐姆電阻
* D9 母頭

底下是一張用電腦繒製的線路圖,這張圖比較清楚易懂,圖上有各個零件的外觀:

圖檔

這系列的教學將著重在軟體的操作方法,不在製作硬體上,關於硬體的製作辦法,網路
上其實已經有很多教學,這方面請你參閱後面的參考資料。

2) WinLIRC 軟體

WinLIRC 可以在底下的網址中取得。WinLIRC 不用安裝,下載之後把壓縮檔解開即可:

http://winlirc.sourceforge.net/

我用的版本是 WinLIRC 0.8.7a 版,底下是 WinLIRC 的目錄結構:

圖檔

教學目錄

1) 遙控器紅外線解碼

2) 使用 WinLIRC Helper 遙控電腦

3) WinLIRC 工具簡介

4) 撰寫可以跟 WinLIRC TCP Server 溝通的程式

....
最後由 maa 於 週四 4月 14, 2011 9:42 am 編輯,總共編輯了 2 次。
maa
版面管理員
 
文章: 631
註冊時間: 週一 9月 13, 2004 10:16 am
來自: 縱橫資通能源

Re:[教學]WinLIRC 紅外線遙控電腦教學

文章maa » 週四 4月 14, 2011 9:40 am

WinLIRC 內部有一個 TCP Server,Listen 在 port 8765 上。
所以其實也可以自己寫程式跟 WinLIRC TCP Server 溝通,例如:

代碼: 選擇全部
#
# LIRC/WinLIRC Client for remote controls
#
 
namespace eval irc {
    variable socket 0
    variable port 8765
    variable host 127.0.0.1   
}
 
proc irc::client {args} {
    variable socket
    variable port
    variable host
   
    if {[string length [string trim $host]]==0} {
         set host [info hostname]
    }
   
    catch {close $socket} result
   
    if [catch {set socket [socket $host $port]} result] {
         puts "Error Establishing Server $::errorInfo"
    } else {
         fconfigure $socket -translation auto
         fileevent $socket readable [list irc::handleRead $socket]
         puts "IRC Server Established on port $port"
    }
}
 
# irc::handleRead -
#                    Called from filevent on a readable input from LIRC/WinLIRC server
#
#  Arguments:
#          sock   The socket connection to the server
#
proc irc::handleRead {sock} {
    variable socket
       
    if {[eof $sock] || [catch {gets $sock line}]} {
        # end of file or abnormal connection drop
        close $sock       
        irc::client      ;# reconnect
    } else {                     
        # Just print the received line
        puts $line
    } ;#end line
}
 
# start of the program
irc::client


詳情請參考這篇:

4) 撰寫可以跟 WinLIRC TCP Server 溝通的程式
maa
版面管理員
 
文章: 631
註冊時間: 週一 9月 13, 2004 10:16 am
來自: 縱橫資通能源

Re:[教學]WinLIRC 紅外線遙控電腦教學

文章XO » 週四 4月 14, 2011 10:08 am

怪怪!
15屆 小馬學長 硬 起來囉!

軟、軔、硬體 一把抓!
Software、Firmware & Hardware 盡收手底,佩服!

這些年來... 玩的本來就是嵌入式系統設計,腳本化功夫也不遑多讓...
再要加入個虛擬化技術 (雲端 幕後 炒手) ...

我看 倫家 康熙 這 十全老人 稱號 + 1 後,封給 小馬 「十一全可畏後生」
eXtra Old 的是我「不是酒」哦!
제 이름은 오조휘 입니다

臉書裡依舊是 Extra.Old: http://www.facebook.com/extra.old
頭像
XO
資管系教師
 
文章: 5319
註冊時間: 週二 4月 27, 2004 12:20 pm
來自: CQ Inc.

Re:[教學]WinLIRC 紅外線遙控電腦教學

文章maa » 週四 4月 14, 2011 2:16 pm

這個 WinLIRC 是 PC 端的紅外線解碼程式...

早上寫了一支簡單的 Tcl 程式,結合 WinLIRC TCP Server 與 CQiKit,
現在已經可以用遙控器來控制 CQiController 的 DO ports 的開關了,
完全不用動到 CQiController 的韌體!
maa
版面管理員
 
文章: 631
註冊時間: 週一 9月 13, 2004 10:16 am
來自: 縱橫資通能源

Re:[教學]WinLIRC 紅外線遙控電腦教學

文章XO » 週四 4月 14, 2011 6:22 pm

讚啦!不過... 沒圖沒真相...

若能畫張鳥瞰圖,標示出控制端、受控端及中間途經元件各部,想必
能讓大家一目了然! ^o^

挺有趣的... 居然是透過麥克風輸入孔接收遙控器輸出的紅外線類比訊號...
eXtra Old 的是我「不是酒」哦!
제 이름은 오조휘 입니다

臉書裡依舊是 Extra.Old: http://www.facebook.com/extra.old
頭像
XO
資管系教師
 
文章: 5319
註冊時間: 週二 4月 27, 2004 12:20 pm
來自: CQ Inc.

Re:[教學]WinLIRC 紅外線遙控電腦教學

文章maa » 週五 4月 15, 2011 9:10 am

XO 寫:讚啦!不過... 沒圖沒真相...

若能畫張鳥瞰圖,標示出控制端、受控端及中間途經元件各部,想必
能讓大家一目了然! ^o^

挺有趣的... 居然是透過麥克風輸入孔接收遙控器輸出的紅外線類比訊號...


說明文件跟程式碼我貼在公司 Wiki 網站裏,待會發信跟研發同仁分享。
maa
版面管理員
 
文章: 631
註冊時間: 週一 9月 13, 2004 10:16 am
來自: 縱橫資通能源

Re:[教學]WinLIRC 紅外線遙控電腦教學

文章jimmy » 週六 8月 06, 2011 10:39 am

這個東西真有趣
灌了WIN7之後一直很想玩玩MCE
前幾天看到XBMC這個軟體後就想要弄隻遙控器來玩
剛好又翻到這一篇,馬上準備好零件
我的主機板RS232沒有拉出來,但是機殼有前置麥克風和USB
就做了一組利用麥克風輸入的,搭配TCL後,一般遙控器也能像萬能遙控器一樣控制多個軟體了
下一步想把接收器塞進機殼裡面,利用前面板的USB供電我覺得有點浪費,塞到機殼裡也比較好看
jimmy
問題很多的小學生
 
文章: 10
註冊時間: 週四 12月 23, 2010 8:28 am

Re:[教學]WinLIRC 紅外線遙控電腦教學

文章maa » 週一 8月 08, 2011 10:15 am

所以你做的是 Audio Receiver 囉?是吃 usb 的電嗎?還是另外供電?

搭配 TCL 是指?願聞其詳
maa
版面管理員
 
文章: 631
註冊時間: 週一 9月 13, 2004 10:16 am
來自: 縱橫資通能源

Re:[教學]WinLIRC 紅外線遙控電腦教學

文章jimmy » 週二 8月 09, 2011 1:48 am

我直接吃USB的電,機殼前面板很方便什麼都有,今天想試著把麥克風的phone jack移除,把接收器塞進機殼裡,不過卻失敗了,可能是有幾條線沒接,所以不從前置的麥克風讀資料,家裡沒工具真不方便,想焊個幾條線又要等明天了...
TCL方面直接套用版主的範例再加以修改就可以了
1.我把按鍵分成2類,允許重複和不允許重複,當fileevent觸發後就檢查按鍵類型和重複次數來決定動作
以我的習慣來說,數字鍵不重複,方向鍵可重複
2.為了達到類似萬能遙控器的功能,例如:按DVD控player,再按TV選到AV,又按amp調聲音
因為遙控器按鍵有限,我定義某個按鍵為function,按了function後再輸入自定的號碼便可執行相對應的事件
這樣的話不用太複雜的遙控器也可以做很多事了,只是要辛苦一點針對每個不同的應用去定義遙控觸發的事件
jimmy
問題很多的小學生
 
文章: 10
註冊時間: 週四 12月 23, 2010 8:28 am

Re:[教學]WinLIRC 紅外線遙控電腦教學

文章maa » 週二 8月 09, 2011 6:10 pm

推一個!

有些時候用紅外線是一個既簡單又便宜的解決方案。
maa
版面管理員
 
文章: 631
註冊時間: 週一 9月 13, 2004 10:16 am
來自: 縱橫資通能源


回到 內嵌與腳本化(Embedding & Scripting)

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客