(上圖是在網路上找的)上次利用藍牙遙捍來模擬智慧居家的無向性控制器,不過一般在家庭中所用於電器上的遙控器,例如電視、音響、錄放影機、冷氣機、DVD、MP3 Player、遙控車等都是使用有方向性的紅外線。那在進入真正物聯網前的過渡時期裡,要如何將這些家電設備也納入智慧居家範圍之內呢?想像一個情境,假設早上匆忙出門,到了辦公室才發現忘了關冷氣機,這時假如能從網路上直接下指令關冷氣就很方便了。今天這個範例就是由這樣的一個想法,利用一個物聯網架構下的紅外線發射器,去控制各式的家庭電器。
既然是要用紅外線來控制家電,那當然要有紅外線接收器 (Receiver)來複製家電的控制信號,與紅外線發射器 (Transmitter 或稱 IR LED)來發射控制信號。(下圖左是發射器,右是接收器)
由於我辦公室並沒有任何紅外線的電器可以測試,所以我就拿美麗蓮陳老闆送給我玩的一套關於電力線通信應用的Silacs燈光控制系統來完成今天的範例,在這套系統中可使用藍牙與紅外線遙控器進行控制,關於藍牙控制的部分在智慧居家中電力線通信的應用這一篇文章中已經有介紹過了
首先進行蒐集控制訊號的動作,利用Arduino加上一棵紅外線接收器,準備來接收、解碼與複製Silacs燈光控制系統的控制信號
在Arduino端的程式碼是使用IRremote這個library中的範例直接修改來用,僅改動了用來接收訊號的針腳位置值
拿出Silacs燈光控制系統的遙控器,向著Arduino上的接收器發送訊號
遙控器上的功能很多,不過因為只是個範例,所以我只解出燈全關與全開的訊號
接下來再用另一塊Arduino接上紅外線發射器,以便來發射訊號控制設備,原本我是要使用cc3000 WiFi Shield連結,不過後來發現手邊的紅外線發射器與cc3000 WiFi Shield都很有個性,一定要使用Pin 3才能正常運作,還不給我改,真是傷腦筋!
最後只好用Arduino Ethernet Shield來連結有線網路了
在Arduino端程式碼的基本概念與WiFi版簡單的物聯網架構這一篇文章裡面所提到的想法相同,利用網路來控制Arduino的方式,其實就是在Arduino上建立簡易的Web Server,接下來就是以HTTP傳輸的方式來傳送或接收資料就可以了,此範例中只要Arduino接收到"/?ALLOFF"就由紅外線發射器發出燈全關的訊號,接收到"/?ALLON"就由紅外線發射器發出燈全開的訊號
搬出燈光控制系統測試(上面有兩個紅外線接收器都是可用的)
由於在控制上是透過HTTP來進行的,所以不用特別寫Client端的程式碼,不管是使用一般電腦或行動裝置,只要直接用瀏覽器連上Arduino的網址,就會出現我設計的簡單頁面(本來用中文,但Arduino上用中文好像會變亂碼),可進行燈光控制系統控制
若是要更專業一點,可寫一個行動裝置APP包裝的漂漂亮亮,在APP中安排了一個隱藏的WebView,利用其GoToUrl下達控制指令(詳見WiFi版簡單的物聯網架構)
或是寫個WindowsForm(一般電腦用的程式),利用WebClient物件來傳送控制的網址指令(類似底下的程式,詳見感測器節點、控制中心與伺服器間資料的傳遞)
當然也可以架站,給他寫個超華麗的網頁給使用者來使用,哈哈哈!
有空應該要來弄過萬向的物聯網紅外線遙控器,一下子把房間中的所有的電器都Hold住!