新DiFi第17課紅外線遙控(機器人)
市面上很多遙控器都是紅外線遙控器,就是從遙控器端(紅外線發射器)透過紅外線通訊技術發出特定的編碼,然後由紅外線接收器(電視機)接收,進行解碼並執行相關功能,例如:開啟電視機的電源、加大或減少音量、切換頻道等。常見的載波頻率為38kHz,因為生活周遭的物品都會散發出不定程度的紅外線,為了避免干擾,設計紅外線接收器時便讓它只對特定載波頻率有反應。不同廠牌的遙控器可能會使用不同的載波頻率。(註1)
要檢查遙控器(紅外線發射器)是否有發出訊號,請將遙控器對準手機鏡頭,然後按下按鍵,觀察手機螢幕,就會看到螢幕上顯示閃爍的微弱紅光(註2)
注意:請先將DiFi板子連接電腦後,再接杜邦線。
如果先將[IR_R]和數位腳接在一起後,再將DiFi板子連接電腦,會造成WFduino無法使用(韌體版本空白)
新DiFi板子上已經有發射器和接收器,只要使用WFduino的遙控器積木就可以操作設計程式。
1.紅外線讀取在腳位(…)
設定用第…腳位當接收器來讀取紅外線的編碼
2.讀取感測器(IR)參數(Value)
讀取接收器收到的編碼數據
3.發射紅外線碼(…)在腳位(..)
將已知的紅外線碼從第(..)腳位發射出去,達到遙控的目的。
注意:學習板非專供紅外線遙控使用,沒有過濾雜訊功能,測試時可能會遇到電腦及環境雜訊干擾。
接線圖:
1.使用母-母杜邦線將[IR_R]和D2連接,[IR_E]和D3連接。
2.使用Jump直接將D5和LEDB、D6和LEDR、D7和LEDG兩兩接上。
注意:請先將DiFi板子連接電腦後,再接杜邦線。
一、擷取(接收)紅外線編碼
(下面測試使用投影機的紅外線遙控器,您可以視您的設備來改變,例如:電視遙控器)
1.製作變數[紅外線碼]來儲存要擷取的紅外線編碼
2.[腳位2模式設為INPUT],設定腳位2為輸入。
3.等待1秒,原來預設腳位2是輸出,需要在設定之後加一個等待時間,讓程式有時間設定為輸入。
4.[紅外線讀取在腳位(2)],設定擷取紅外線編碼的接收器在第2腳位
5.設定變數(紅外線碼)為 [ 讀取感測器(IR)參數(Value) ],擷取接收器收到的編碼數據。
6.重複執行擷取編碼的動作。
按下綠旗開始執行擷取編碼,同時按下遙控器上的按鍵,看到變數已經有填上編碼,就可以按紅色停止圖示。
程式下載:擷取編碼測試.sb2
二、傳密碼遊戲(紅外線發射、接收測試)
2組同學操作程式,互相發射與接收紅外線碼,傳送密碼。
注意:
記得要切換[輸入法]為[英],當輸入法不對時,鍵盤按鍵對應的值是錯的,無法正確反應動作。
甲隊(電腦A)、發射
填上密碼後,按下鍵盤上的[空白鍵],就會發射訊號
乙隊(電腦B)、接收
執行上面擷取編碼程式,看看是否收到編碼(密碼)。
程式下載:紅外線互傳.sb2
延伸:
1.使用投影機的紅外線遙控器或電視遙控器,發射編碼成為密碼,互相發射與接收。
2.使用電視遙控器對著新DIFI板子上的紅外線接收器發射,上面程式做儲存編碼,再將新DIFI板子上的紅外線發射器直接對著電視發射儲存的編碼,看看電視的反應結果是否正確。
3.收到編碼後做程式控制,例如:按下遙控器上的[左]按鍵,讓小貓往左走,按下遙控器上的[右]按鍵,讓小貓往右走。
三、擷取遙控器編碼存檔
將遙控器的紅外線碼儲存成文字檔,方便使用。
注意:
輸入按鍵名稱後記得要切換[輸入法]為[英],當輸入法不對時,鍵盤按鍵對應的值是錯的,無法正確反應動作。
1.製作變數及清單儲存資料,方便檢視。
2.[delete(…)of(…)],先清空清單內容。
3.[提問(請輸入遙控器讀取後存檔的檔名)並等待],輸入要儲存的檔案名稱。
4.[設定變數(檔名)為…..],預設將檔案存在D槽根目錄。
5.[提問(請輸入按鍵名稱)並等待],輸入要儲存編碼的按鍵名稱。
6.[說(請將遙控器對準紅外線接收器,按下按鍵直到看到[紅外線碼]變數改變,再按[空白鍵]換讀取下一個,結束讀取請按[向上鍵]) ],說明操作方式。
7.接收到紅外線編碼後,按[空白鍵],將紅外線編碼存到清單及文字檔。
注意:
1.輸入按鍵名稱後記得要切換[輸入法]為[英],當輸入法不對時,鍵盤按鍵對應的值是錯的,無法正確反應動作。
2.最後結束前還是要先輸入按鍵名,才可以按[向上鍵],結束。最後一筆資料是錯的 。
程式下載:擷取遙控器(編碼存檔).sb2
四、讀取編碼檔
讀取儲存紅外線編碼檔案裡面的編碼資料。
讀取檔案裡面的編碼資料,用清單列表顯示。
對於比較長的編碼(含有[,])就不適用。
程式下載:讀取編碼檔.sb2
五、遙控器控制LED
使用遙控器控制新DiFi學習板上的RGB LED。
按下[5]亮藍色、[1]藍色熄滅、[6]亮紅色、[2]紅色熄滅、[7]亮綠色、[3]綠色熄滅、[0]全部顏色燈熄滅
A、執行前面 [ 讀取遙控器(編碼存檔) ]程式,將遙控器編碼存成文字檔案。
B、控制亮燈
1.製作變數[紅外線碼]來儲存要讀取的紅外線編碼
2.[腳位2模式設為INPUT],設定腳位2為輸入。
3.等待1秒,原來預設腳位2是輸出,需要在設定之後加一個等待時間,讓程式有時間設定為輸入。
4.[紅外線讀取在腳位(2)],設定讀取紅外線編碼的接收器在第2腳位
5.設定變數(紅外線碼)為 [ 讀取感測器(IR)參數(Value) ],讀取接收器收到的編碼數據。
6.重複執行讀取編碼並判斷收到的編碼是否相符然後做動作(LED亮燈或熄滅)。
7.可以直接打開編碼文字檔,找到對應按鍵的編碼,直接複製貼上。
程式下載:遙控器控制LED.sb2
六、遙控電視
使用新DiFi學習板的紅外線發射器來控制電視。
範例為使用電腦鍵盤的上、下、左、右鍵控制頻道往上、下,音量減少、增加
A、執行前面 [ 擷取遙控器(編碼存檔) ]程式,將電視遙控器的指令編碼存成文字檔案。
B、使用編碼來控制電視
1.使用[WiFi通訊位址……],電腦使用WiFi無線連接新DiFi學習板。
2.設定指令變數為[電視遙控器的指令編碼],可以直接打開前面儲存的編碼文字檔,找到對應按鍵的編碼,直接複製貼上。例如:設定變數(頻道往上)為20DF00FF
3.當按下[向上鍵]就從數位腳3發射[頻道往上]的紅外線編碼,讓電視頻道往上。
4.其他指令也是以此類推。
程式下載:遙控電視.sb2
延伸:
1.錄製更多電視遙控器的紅外線編碼,增加更多功能。
2.參考新DiFi第13課繼電器(http://blog.ilc.edu.tw/blog/blog/868/post/104089/678442)中計時器單元,將控制繼電器部分改成控制發射紅外線發射器,設定時間讓電視自動開機、關機。
3.擷取冷氣機、音響的紅外線編碼,設定時間讓冷氣機、音響自動開機、關機。
七、遠端遙控機器人
使用新DiFi學習板來控制[羅本艾特]機器人。
[羅本艾特]機器人就是使用紅外線遙控器來控制動作,所以也可以用新DiFi學習板的紅外線發射器來遙控。
因為可以使用WiFi無線連接,也可以透過遠端的攝影機監看,遠端無線控制機器人的動作。
範例為使用上、下、左、右鍵控制前進、後退、左轉、右轉
A、執行前面 [ 擷取遙控器(編碼存檔) ]程式,將機器人遙控器的指令編碼存成文字檔案。
B、使用編碼來控制動作
1.使用[WiFi通訊位址……],電腦使用WiFi無線連接新DiFi學習板。
2.設定指令變數為[機器人遙控器的指令編碼],可以直接打開前面儲存的編碼文字檔,找到對應按鍵的編碼,直接複製貼上。
3.當按下[向上鍵]就從數位腳3發射[前進]的紅外線編碼,讓機器人往前走。
4.其他指令也是以此類推。
5.因為網路傳輸訊號,怕有中斷時,機器人不受控制,所以每個指令都執行3秒,就停止。怕沒收到停止訊號,所以重複發射止訊號。
程式下載:遙控機器人.sb2
延伸:
錄製更多紅外線編碼,增加更多功能
八、避障自走人
機器人遇到障礙物自動會後退、轉彎,再前進。
在新DiFi學習板上加上超音波感測器線路,然後安置到[羅本艾特]機器人身上,超音波感測器的Vcc接5V,Gnd接地,Echo接腳位5,Trig接腳位6
1.先點一下[WiFi通訊位址……],確定可以電腦可以使用WiFi無線連接到新DiFi學習板。
2.設定指令變數為[機器人遙控器的指令編碼],可以直接打開前面儲存的編碼文字檔,找到對應按鍵的編碼,直接複製貼上。
3.重複執行超音波偵測,如果超音波偵測值小於40(前面有撞到障礙)就停止、後退、右轉,再繼續前進。
注意:
1.超音波感測器位置請適當調整。
2.指令中間需要有等待時間,不可以密集下達指令,會造成機器人當機。
3.程式的參數部分可以視偵測結果自由發揮。
程式下載:避障自走人.sb2
九、冰山美人
當有人靠近時機器人時,機器人就往後退。
1.先點一下[WiFi通訊位址……],確定可以電腦可以使用WiFi無線連接到新DiFi學習板。
2.設定指令變數為[機器人遙控器的指令編碼],可以直接打開前面儲存的編碼文字檔,找到對應按鍵的編碼,直接複製貼上。
3.重複執行超音波偵測,如果超音波偵測值小於40(前面有人)就後退。
注意:
1.超音波感測器位置請適當調整。
2.指令中間需要有等待時間,不可以密集下達指令,會造成機器人當機。
3.程式的參數部分可以視偵測結果自由發揮。
程式下載:冰山美人.sb2
十、跟屁蟲
機器人跟在主人後面,主人往前走,機器人就往前走,主人停止,機器人就停止。
1.先點一下[WiFi通訊位址……],確定可以電腦可以使用WiFi無線連接到新DiFi學習板。
2.設定指令變數為[機器人遙控器的指令編碼],可以直接打開前面儲存的編碼文字檔,找到對應按鍵的編碼,直接複製貼上。
3.重複執行超音波偵測,如果超音波偵測值大於40(主人往前走了),就前進跟上。
注意:
1.超音波感測器位置請適當調整。
2.指令中間需要有等待時間,不可以密集下達指令,會造成機器人當機。
3.程式的參數部分可以視偵測結果自由發揮。
延伸:
設計讓主人後退時,機器人也會後退走
程式下載:跟屁蟲.sb2
十一、進京趕考機器人
當燈暗時,機器人停止不動,燈亮時,機器人往前走。
使用Jump直接將A0和[PhotoR](光敏電阻)接上。
1.先點一下[WiFi通訊位址……],確定可以電腦可以使用WiFi無線連接到新DiFi學習板。
2.[腳位A0模式設為INPUT]:設定類比腳位A0模式為輸入。
3.設定指令變數為[機器人遙控器的指令編碼],可以直接打開前面儲存的編碼文字檔,找到對應按鍵的編碼,直接複製貼上。
4.重複執行,讀取A0的值,如果A0的值大於900,就發送前進指令。
注意:
1.程式的參數部分可以視偵測結果自由發揮。
2.指令中間需要有等待時間,不可以密集下達指令,會造成機器人當機。
程式下載:進京趕考機器人.sb2
十二、123木頭人(玩具總動員)
夜深時,機器人偷偷跑出來玩囉。
當燈暗時,機器人往前走,燈亮時,機器人停止不動。
1.先點一下[WiFi通訊位址……],確定可以電腦可以使用WiFi無線連接到新DiFi學習板。
2.[腳位A0模式設為INPUT]:設定類比腳位A0模式為輸入。
3.設定指令變數為[機器人遙控器的指令編碼],可以直接打開前面儲存的編碼文字檔,找到對應按鍵的編碼,直接複製貼上。
4.重複執行,讀取A0的值,如果A0的值小於900,就發送前進指令,如果A0的值大於900,就發送停止指令。
注意:
1.程式的參數部分可以視偵測結果自由發揮。
2.指令中間需要有等待時間,不可以密集下達指令,會造成機器人當機。
程式下載:123木頭人.sb2
十三、溫度感應機器人
使用在新DiFi學習板上內建的,DHT11溫溼度感測器,偵測環境溫度。溫度太高時,機器人就逃走,溫度降到舒適溫度,機器人就停下來休息一下。
使用Jump直接將D1和[DHT](DHT11溫溼度感測器)接上。
1.先點一下[WiFi通訊位址……],確定可以電腦可以使用WiFi無線連接到新DiFi學習板。
2.[腳位1模式設為INPUT],設定數位腳D1為輸入訊號。
3.設定指令變數為[機器人遙控器的指令編碼],可以直接打開前面儲存的編碼文字檔,找到對應按鍵的編碼,直接複製貼上。
3.重複執行下面的動作。
4.[溫溼度感測器(11)在腳位(1)],設定數位腳D1接收來自DHT11的訊號
5.[等待1秒],因為DHT11需要做資料轉換,每筆資料的抓取時間不能太快。
6.如果溫度大於28度,就發送前進指令,如果溫度小於28度,就發送停止指令。
注意:
1.指令中間需要有等待時間,不可以密集下達指令,會造成機器人當機。
2.程式的參數部分可以自由發揮。
程式下載:溫度感應機器人.sb2
十四、溫度測量機器人
不用出門就可以知道家裡外面的溫溼度,使用DiFi內建的DHT11溫溼度感測器,偵測外面環境溫度。
讓機器人帶著新DiFi學習板走到戶外,就可以透過無線WiFi連線在室內監看戶外的溫溼度。
1.先點一下[WiFi通訊位址……],確定可以電腦可以使用WiFi無線連接到新DiFi學習板。
2.[腳位1模式設為INPUT],設定數位腳D1為輸入訊號。
3.設定指令變數為[機器人遙控器的指令編碼],可以直接打開前面儲存的編碼文字檔,找到對應按鍵的編碼,直接複製貼上。
3.重複執行下面的動作。
4.[溫溼度感測器(11)在腳位(1)],設定數位腳D1接收來自DHT11的訊號
5.[等待1秒],因為DHT11需要做資料轉換,每筆資料的抓取時間不能太快。
6.搭配監視器,用鍵盤操控機器人走到戶外,就可以在螢幕上看到戶外的溫溼度。
程式下載:溫度測量(機器人).sb2
十五、機器人祝您生日快樂
當燈暗時,機器人停止不動,燈亮時,機器人往前走,唱生日快樂,再跳舞表演。
使用光敏電阻感應光線變化,蜂鳴器發出音樂。
使用Jump直接將A0和[PhotoR](光敏電阻)、D8和BEEP(蜂鳴器)兩兩接上。
1.先點一下[WiFi通訊位址……],確定可以電腦可以使用WiFi無線連接到新DiFi學習板。
2.[腳位A0模式設為INPUT]:設定類比腳位A0模式為輸入。
3.設定指令變數為[機器人遙控器的指令編碼],可以直接打開前面儲存的編碼文字檔,找到對應按鍵的編碼,直接複製貼上。
4.重複執行,讀取A0的值,如果A0的值大於900(光敏電阻感應到亮光),就發送前進指令,然後唱生日快樂歌(新DiFi板子上的蜂鳴器),然後再跳舞。
程式下載:生日快樂(機器人).sb2
———————————–
註1:
http://yehnan.blogspot.tw/2013/05/arduino.html
每家廠商都有其一套專屬的紅外線通訊協定(protocol),知名的有NEC、SONY、Philips的RC5與RC6、Toshiba、Sharp等,這也就是為什麼這一家的遙控器不能控制那一家的電視機。還好WFduino已經幫我們準備好了,一般常見的紅外線協定都有支援。
註2:
http://www.masters.tw/138811/night-vision
若將遙控器對準手機鏡頭來發射紅外線時,手機螢幕上通常能顯示閃爍的微弱紅光(註:iPhone無此現象),這是因為手機鏡頭中的紅外線濾鏡濾除的不夠徹底所致。
註3:
關於紅外線控制的那些事
————————-
相關連結:
新DiFi課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/104089/678192
WFduino(Arduino)課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/97509/641433