2011年3月30日 星期三

IRRemote 紅外線遙控教學

IRRemote 函式庫簡介

你想用 Arduino 做紅外線遙控嗎? 你想用 Arduino 控制你的電視、音響、冷氣機、DVD、MP3 Player、玩具遙控車或其它設備嗎? 用 Ken Shirriff 寫的 IRRemote 這個函式庫,會讓你的 Arduino 既可發射又可以接收紅外線訊號,它支援許多種紅外線協定,包括 NEC, Sony SIRC, Philips RC5, Philips RC6 和原始資料 (raw) 等紅外線協定。

這一系列的教學,將教你使用 IRRemote 函式庫來接收與發射紅外線訊號。 image
▲ 用 Arduino 與 IRRemote 函式庫的紅外線遙控電路。(圖片來源: Ken Shirriff’s blog)

你需要準備什麼器材?

1) 首先,你需要一張 Arduino 板子,一條 USB 傳輸線,以及 Arduino IDE 軟體開發環境:
imageimage
▲ Arduino UNO 與 USB 傳輸線


image
▲ Arduino IDE

如果你沒有接觸過 Arduino,建議先看「Arduino 筆記 – 認識 Arduino」和「Arduino 筆記 - 準備開發環境」,從這兩篇開始。

2) 一顆 38 kHz 的紅外線接收器 (Infrared Receiver),例如 TSOP2438,TSOP4438, PNA4602, FM-8038TM2-5DN 等。
image 
▲ 紅外線接收器(Infrared Receiver)

3) 一顆發射波長為 940nm (nanometer, 奈米) 的紅外線發射器 (Infrared LED 或稱 Infrared Emitter)
 irLEDblue
▲ 紅外線發射器(Infrared LED)

紅外線接收器和發射器單價都很便宜,幾十塊台幣就可以搞定。

4) 最後,你必須安裝 IRRemote 函式庫,見後文說明。

安裝 IRRemote 函式庫

Ken Shirriff 的部落格到這裏下載 IRRemote 函式庫,然後把檔案解壓縮放到 Arduino 速寫簿 (Sketchbook) 資料夾的 Libraries 資料夾底下即可。Arduino 速寫簿 (Sketchbook) 資料夾的預設位置是在「我的文件 > Arduino」這個地方:

image
▲ 把 IRRemote 資料夾放在「我的文件 > Arduino > Libraries」底下即可

注意!如果你用的是 Arduino 1.0,請接著參考「如何讓 IRRemote 相容於 Arduino 1.0 ?」一文設定環境。

IRRemote 教學目錄
1) 接收紅外線:
1.1) 接收紅外線訊號
1.2) 顯示紅外線協定種類
1.3) 增加紅外線訊號指示燈
1.4) 自製 LCD 介面的紅外線解碼器 (IR Decoder)
1.5) 兩個取得遙控器紅外線資料的方法
2) 發射紅外線:

2.1) 發射紅外線訊號
2.1) 發射紅外線訊號 part 2
2.2) 自製電視紅外線遙控器 (使用 Keypad)
2.3) 用光敏電阻切換電視頻道

3) 應用

3.1) 使用 Arduino 遙控家電

你需要知道紅外線協定嗎?
有了 IRRemote 函式庫,就算你不知道紅外線協定原理,也可以做紅外線遙控。不過,既知其然,如果能夠進一步知其所以然,會是更好的一件事。這系列的教學沒有打算講解紅外線協定原理,如果你想知道紅外線遙控原理以及各種紅外線協定,可以到底下這個網站:
http://www.sbprojects.com/knowledge/ir/index.php
延伸閱讀

6 意見:

l21019 提到...

你好,雖然有下載irRemote函式庫,但想要了解每個指令怎麼用,有這個函市庫的指令表跟說明怎麼使用嗎?

Cooper Maa 提到...

hi, IRRemote 函式庫沒有提供說明文件喔。
不過,其實我「1.1 接收紅外線訊號」跟「2.1 發射紅外線」這兩篇就幾乎已經把 IRRemote 大部份函式的用法都介紹一遍了,所以看這兩篇應該就夠了。或者你也可以直接看 IRRemote.h,裏面有 class 跟 function 的 prototypes.

宇仔 提到...

要提高台灣的IT技術就得像大大一樣多多發表此類的文章及內容,但最好能Total solution的Kits或parts,當然這或許是一種商機.

Cooper Maa 提到...

你說的對,如果有 Total solution 或 kits,對很多人尤其是學生來說,一定很有幫助,可以讓學生學習的更順利。唉呀,可惜我沒有商業頭腦,應該找個人來搭配才對。哈。

說到IT技術文章,其實台灣高手如林,像蔡學鏞、.NET Walker, 董大偉、黑暗執行緒、Jserv, XDite, Huan-lin 這些前輩都很厲害,而且也都不斷在發表文章、精進能力,所以對此我還蠻樂觀的。

Richard`s Blog 提到...

您寫的文章都很清楚明瞭,希望繼續寫好文章
請問為什麼接收器選 38kHz,發射器選 950nm,我知道還有很多不同選擇
是否有其計算公式,或是特殊原因?

Cooper Maa 提到...

Hi Richard,
謝謝您。Wiki (http://en.wikipedia.org/wiki/Consumer_IR)上說,一般消費性電子用的是 30 - 60kHz
像 NEC 用的是 38 kHz, 而 Philips RC-5, RC-6 則是使用 36 kHz...
我想用什麼頻率可能跟所用的 IR Protocol 有關。

至於發射器為什麼選 950nm,這是個好問題,我也想知道 :)
我只知道紅外線還可以分成近紅外線 (700 ~ 4000 nm), 中紅外線 (4 - 40 um) 跟遠紅外線 (40 um~ 1 mm)
紅外線遙控 950nm 應該是屬於近紅外線,但為什麼選 950 nm,我就不懂了。
我在猜可能跟適用環境有關,在不同的環境下 (白天、陰天或夜間),也許波長不一樣會有不同的效果
也有可能是大家長久下來得到的共識,約定成俗。