//Logo Image
作者:張凱維(2011-11-23);推薦:徐業良(2011-11-23)
附註:本文為元智大學機械系大三機械設計課程Arduino使用教材。

使用紅外線遙控器搭配Arduino UNO發送控制訊號

Arduino 簡介與軟體安裝」一文中,使用者的Arduino開發環境已經準備完成,本文接續說明如何利用紅外線遙控器發送訊號至連接在Arduino UNO的紅外線接收器,Arduino再將接收到的訊號解碼,使用者即可設定特定的紅外線編碼做出特定的輸出,控制機械設計課程中介紹的自動門電路。

1.       軟硬體設定

本文使用的器材如下:

(1)  Arduino UNO開發板,USB傳輸線,以及Arduino IDE軟體開發環境。

(2)  38 kHz的紅外線接收器(Infrared Receiver)。紅外線接收器的接法如圖1所示,紅外線接收器中的Vout腳接至pin 2腳位,GND(地線)腳接至GND腳位,Vcc腳接至5V輸出腳位。

(3)  紅外線遙控器(電視遙控器或者冷氣遙控器皆可)。

(4)  IRremote函式庫(請至portal教材下載區下載)。如圖2所示,將下載的IRremote函式庫壓縮檔解開,放至libraries資料夾底下即可。資料夾位置為「arduino-0023 > libraries」。

(5)  IRcode(請至portal教材下載區下載)。

1. 紅外線接收器接法

2. IRremote函式庫存放位置

2.       接收紅外線訊號

首先利用IRreceiver這支程式把自行設定好的幾個遙控器按鍵解碼出來。在Arduino開發環境中,打開IRcode資料夾裡的IRreceiver這支程式(如圖3)後,上傳至Arduino板上,即可拿起遙控器對著紅外線接收器按按鍵(如圖4)。在收到不同按鍵的紅外線訊號的時候,程式會順便把收到的紅外線編碼以及編碼長度(位元數)列印到Serial Port上,所以在發射紅外線訊號的時候就可以用Serial Monitor來讀取解碼結果,如圖5所示。解碼後可得到遙控器上每一個按鍵的紅外線編碼,但不須把每一個按鍵都解碼出來,只要把自己所需的按鍵解碼,再把紅外線編碼複製至記事本中暫存即可。

3. IRreceiver Code

4. 接收紅外線訊號

5. Serial Monitor讀取遙控器按鍵解碼結果

3.       設定Arduino輸出腳位

Arduino開發環境中,打開IRcode資料夾裡的IRcontrol這支程式,可看到程式碼中已預先設定4 ~1310支腳位為輸出腳位,可供使用者使用(如圖6)。使用者可在void loop()裡找到預設的6if迴圈,如圖7所示,把上述步驟找出的紅外線編碼填寫至最後4if迴圈(前後左右)旁邊的括號中:if (results.value == 紅外線編碼)。填好紅外線編碼後,使用者可在if迴圈中設定特定紅外線編碼要使哪些腳位(A~J)作輸出控制,只需修改腳位指令,由LOW改為HIGH即可(如圖8)。

編寫完畢後,接著按下Verify 這個按鈕編譯程式,檢查程式有無錯誤。最後按下Upload *這個按鈕,將程式上傳至Arduino。這時已準備就緒,就可以開始把線路接好與機器人作結合囉!

6. 設定Digital Pin

7. 填入紅外線編碼

8. 設定腳位輸出

4.       自動門電路範例

由於Arduino開發板的輸出電流很小,無法直接驅動直流馬達,僅能作為直流馬達控制訊號,不能將直流馬達直接接上Arduino UNO的輸出腳位。圖9修改自機械設計課程中的自動門電路,將5V繼電器接上Arduino UNO的腳位,一端接上輸出腳位,另一端接上GND腳位(地線),使用者即可設定輸出腳位的HighLow控制繼電器的開關。加上外部電源驅動直流馬達,便可以紅外線遙控器使直流馬達做出正轉、逆轉動作。

9為修改自動門電路範例的初始狀態電路,將DIGITAL 45腳位各接上五腳繼電器與八腳繼電器的線圈接腳,當使用者以遙控器發送訊號將DIGITAL 4腳位轉成HIGH,使五腳繼電器保持通電,此時五腳繼電器開始動作將接點切換,八腳繼電器不運作,直流馬達開始正轉。而當使用者以遙控器發送訊號將DIGITAL 5腳位轉成HIGH,使八腳繼電器保持通電,此時八腳繼電器開始動作將接點切換,五腳繼電器不運作,則直流馬達開始逆轉。當使用者放開遙控器按鍵,馬達則靜止不動。

9. 修改自動門電路範例

參考資料

[1]  Arduino 官方網站,http://arduino.cc/

[2]  Arduino.TW樂園,http://www.arduino.tw/index.php

[3]  Cooper Maahttp://coopermaa2nd.blogspot.com/