前言

在這篇文章中,我們將介紹如何在 Scratch 3 中使用 DiFi 內建的紅外線接收器與發射器,並取代遙控器直接對家電進行遙控。

紅外線接收器與發射器

從國小就做過的實驗中,我們知道我們看到的光其實是由許多顏色的光所組成,而這些光各自有不同的波長。人類眼睛可以看到的光,波長範圍大約在 390nm 到 700nm。nm 的中文是奈米,也就是 0.000000001 公尺,是一個很小的長度單位。我們常說髮細如絲,但是一般頭髮的直徑約為 30,000nm ~ 50,000nm,跟可見光的波長一比,頭髮不只稱不上細,甚至是粗的可怕。

而在可見光範圍之外的光線,就分別稱為紅外線 (IR,波長大於可見光範圍) 與紫外線 (UV,波長小於可見光範圍)。至於在紅外線跟紫外線之外呢?當然還有其他波長的能量。包含光在內,這些不同波長的能量,都屬於電磁波的一種。如下圖所示:

EM spectrum.svg
CC BY-SA 3.0, 链接

雖然我們人類的眼睛看不到紅外線,但是可透過相機或其他方式看到紅外線的存在。好家在的是使用紅外線時並不需要這麼麻煩,因為不是靠我們的眼睛來辨識,而是使用紅外線接收器。

紅外線的應用相當廣泛,像是家中常見的家電遙控器以及遙控玩具,幾乎都是利用了紅外線的原理。簡單來說,遙控器發射出紅外線,而電視或其他被遙控的東西則接收紅外線。也就是說通常紅外線發射器與接收器分別安裝在遙控器與電視上,而不是兩邊同時都有發射與接收的功能。

使用紅外線時有幾個需要注意的地方。首先紅外線跟一般的可見光一樣,都是直線前進,所以使用時發射器跟接收器必須面對面。這也是為什麼我們在使用遙控器遙控電視時,必須先 “對準” 電視的原因。此外,其實自然界本身就有很多紅外線的存在,像是我們身上就隨時散發出許多的紅外線。這些自然界的紅外線,都有可能干擾我們的紅外線接收器,造成接收到錯誤、甚至是無意義的訊息。所以使用紅外線接收器時最好具備過濾的功能,只可惜 DiFi 在這方面的處理並不是很好,因此容易受到干擾。

幾乎每個遙控器都有多個按鈕,接收器要怎麼知道按下的是哪個按鈕呢?當我們按下遙控器的按鈕時,遙控器會先把每個按鈕轉換成各自的代碼 (如 A032),然後通知發射器把這個代碼利用紅外線的機制發射出去。如此一來,接收器就可以根據收到的代碼知道是那個按鈕被按下了。不過不同遙控器的代碼通常都不一樣,所以我們不能拿電視遙控器來遙控冷氣機,甚至也不能拿來遙控其他品牌或型號的電視機。

DiFi 實驗板上的紅外線接收器與發射器實際所在位置請參考下圖:

DiFi V51 紅外線接收與發射器

DiFi V51 紅外線接收與發射器

開發環境建置

如果你還沒有建置 WFduino + Scratch 3 的開發環境,請參考這篇文章

線路圖

紅外線接收器與發射器的元件接腳名稱分別為 IR_R 與 IR_E,兩個接腳排在一起,所以無法使用跳線帽連結 GPIO,而必須使用杜邦線。在這個範例中,我們將 IR_R 連接至 WFduino 編號 2 的腳位,而 IR_E 則連接至 WFduino 編號 1 的腳位。實際接線請參考下圖:

DiFi V51 紅外線接收與發射器連結 GPIO

DiFi V51 紅外線接收與發射器連結 GPIO

如果對腳位如何配對有不清楚的地方,可參考這裡的說明

範例程式

WFduino 控制 DiFi 內建紅外線接收器 (Scratch 3)

WFduino 控制 DiFi 內建紅外線接收器 (Scratch 3)

  1. 在這個範例程式中,首先我們將讀取遙控器所發出的代碼。之後則利用紅外線發射功能模擬遙控器,達到遙控電器的功能。
  2. 紅外線接收器使用編號 2 的腳位,程式一開始設定為輸入的模式並等待一秒鐘。
  3. 程式不斷地讀取紅外線接收器所接收到的訊息。之前提到 DiFi 紅外線接收器容易受到干擾,所以程式先將接收到的訊息存放在 “接收數值” 這個暫存用的變數。因為干擾訊息通常是一大串無意義的符號,所以程式判斷訊息長度小於 10 時才是正確的訊息。10 這個數字只是預估,有可能遙控器原本的代碼就超過 10 個字元,此時就必須調整比較的指令積木。
  4. 程式將正確的代碼指定到 “紅外線碼” 這個變數,而變數 “紅外線碼” 則顯示在舞台上。
  5. 我們拿一個遙控器對準 DiFi 後開始按鈕,應該可以看到紅外線碼出現數值。如果一直無法出現數值,可以換個遙控器重新嘗試。
  6. 我所測試的藍芽喇叭遙控器,電源按鈕的代碼為 “40BF00FF”。
  7. 當我們將 DiFi 對準藍芽喇叭後,使用下列積木就可以開啟或關閉藍芽喇叭了。

    WFduino 控制 DiFi 內建紅外線發射器 (Scratch 3)

    WFduino 控制 DiFi 內建紅外線發射器 (Scratch 3)

  8. 如果我們找出全部按鈕的代碼,就可以把遙控器的功能複製到 Scratch 3/DiFi 上。甚至,我們可以把多個遙控器的代碼都加進來,成為一機萬用的超級遙控器。
Facebook 留言
Print Friendly, PDF & Email
Summary
WFduino + Scratch 3 + DiFi 使用紅外線接收器與發射器
Article Name
WFduino + Scratch 3 + DiFi 使用紅外線接收器與發射器
Description
在這篇文章中,我們將介紹如何在 Scratch 3 中使用 DiFi 內建的紅外線接收器與發射器,並取代遙控器直接對家電進行遙控。
Author
Publisher Name
Everlearn Studio
Publisher Logo