用紅外線遙控器遙控 LED

本專題結合紅外線遙控器 (Car MP3)和傳感器 (TSOP38238),來控制紅黃綠三個 LEDs

紅外線傳感器(接收器) IR Receiver (decoder)。

左圖型號為 TSOP38238 。

右圖型號為 FM-6038 TM2-5AN 。

皆會將所收到的紅外線遙控器訊號,透過程式,轉成16進位數碼(HEX codes)。兩種傳感器,敏感的紅外線載波範圍為38 kHz。

大部分的遙控器,發射的紅外線載波頻率是 38kHz。不同的按鈕,載波攜帶不同的訊息數碼。本專題用到的遙控器,每一個按鈕的16進位數碼,如左圖所示。紅外線遙控,有其距離、角度、障礙物的限制。有時遙控器要對準傳感器,多按幾次,傳感器才能把訊號轉成正確的16進位數碼。

先看看成果影片:

打開 Arduino 序列埠監視器,可看到傳感器所收到的訊息數嗎。程式的設計是:

當收到訊號數碼為 “FF30CF”,即表示遙控器按鍵 ”1” 被按下,點亮紅色的 LED。

當收到訊號數碼為”FF18E7”,即表示遙控器按鍵 “2” 被按下,關閉紅色 LED。

當遙控器按鍵 “3” 被按下,點亮黃色 LED。

當遙控器按鍵 “4” 被按下,關閉黃色 LED。

當遙控器按鍵 “5” 被按下,點亮綠色 LED。

當遙控器按鍵 ”6” 被按下,關閉綠色 LED。

其他的按鍵,僅在序列埠監視器上,印出訊息數碼,不做其他動作。

序列埠監視器,有時會顯示亂碼 “FFFFFFFF”,不要管他。

材料和接線圖

Arduino UNO x1

紅外線傳感器 x1 ( TSOP38238 或者是 FM-6038 TM2-5AN 皆可)

紅外線遙控器 (Car MP3) x1

LED 紅黃綠 各一

電阻 (220-330 歐姆 均可) x3

麵包板 x1

電線數條

紅色 LED 長腳連接 Arduino pin 8。

黃色 LED 長腳連接 Arduino pin 9。

綠色 LED 長腳連接 Arduino pin 10。

三個 LED 短腳接電阻,電阻的另外一端連接GND。

傳感器 OUT 連接 Arduino pin 6,GND 及 VCC 則分別連接 Arduino GND 和 5V。

分享 Arduino GND 和 5V 到麵包板上。

匯入程式庫

主程式需要程式庫 (Library) “IRremote.h” 。程式庫內提供很多額外指令,供主程式使用。不僅擴充主程式功能,並能保持主程式的清淅和簡短。

步驟一:

打開 Arduino 》點擊 草稿碼 》匯入程式庫 》管理程式庫 》螢幕上即出現程式管理員視窗

步驟二:

在搜尋框內鍵入程式庫名稱 IRremote,視窗內會出現所有含 該名稱的程式庫,選擇 IRremote by shirriff 並按安裝。

步驟三:

查看程式庫有沒有安裝成功。點擊 草稿碼 》匯入程式庫 》游標往下搜尋,看有沒有 IRremote 的程式庫在系統內。

上傳主程式

確認程式庫已安裝後,複製下列程式於 Arduino IDE中,點擊 ”工具”,確認開發板是 Arduino/Genuino Uno, 序列埠 Port COM已接上,再點擊 ”上傳”,大功告成。

創客點子 1

把 LED 改成伺服馬達、蜂鳴器、5V 風扇、5V雷射頭、或者是 Arduino 小車。用紅外線遙控器,來操縱這些設備儀器。

創客點子 2

用家用的冷氣機或電視機遙控器,來操控 LED。

遙控器同一按鍵多按幾次,以確認傳感器所收到的訊號數碼。把數碼記下來,用於修改程式,以操控 LED。

注意,不是所有廠牌的遙控器都發射載波為 38kHz 的紅外線。本專題所用的傳感器,無法判讀少數廠牌遙控器的訊號。