2014年10月8日 星期三

Arduino之玩出名堂 - 延時大夜燈


在生活當中,小夜燈是很多人喜歡用的小電器,燈一關小夜燈就亮,可以提供一點點照明讓你不要摸黑走路。但是如果你想多要求一點功能,比如說調整小夜燈的亮度(換個燈泡),調整它在暗到什麼程度才要亮(有時燈還沒全關它就已經亮了),或者希望它亮一陣子就關掉(我都已經上床睡覺了,何必繼續亮著)等等,越來越複雜的功能好像不是市面上一兩百塊買到的小夜燈可以勝任的。

其實市面上有很多類似的「智慧家電」產品,比如說一對多紅外線遙控燈座,用一個紅外線遙控器可以遙控開關幾個E27標準燈座;或者聲響及紅外線感應燈,人經過或發出聲音時才會亮,過一陣子就熄滅,攝影機常常就搭配這種感應式的燈,以提供足夠的亮度讓攝影機工作。其他有光感應式插座,定時插座等等,還有近年來智慧家庭話題開始發燒,用手機藍牙遙控燈具也開始有大廠開始制定標準生產藍牙全彩LED燈泡,可以用App遙控所要的顏色跟亮度,不過這些都不能符合我想要的要求:

1. 關燈後自動開啟,不用操作手機或遙控器
2. 燈開了之後會自動關閉,全暗有助於睡眠
3. 夜燈亮度要足夠能從客廳走到房間裡




使用Arduino、連接光敏電阻及繼電器,再加上一些接線,應該就可以達到我想要的大夜燈功能。不過光敏電阻是要接一個10K歐姆左右的電阻,繼電器元件則要接單向二極體以及固定110V電源線的接頭,為了避免自己焊接PCB版,我就直接去買現成元件來組合比較方便。
材料清單 :

  • Arduino Nano v3.0一塊(體積較小)
  • 光敏電阻模塊(有些模塊含可變電阻可以調整靈敏度)
  • 一路繼電器模組(5V驅動,可承受10A/250V)
  • 60cm 一對一延長線一條
  • 含5V USB 充電插座的延長線(USB可供電至2A,用來供Arduino的電)
  • 塑膠盒一個
程式內容也很簡單,用 AnalogRead 指令讀取光敏電阻的值(讀數在 0 ~ 1023 之間),值越大表示光線越暗,值越小表示光線越亮,我取大約950為啟動值,當光線暗到比950還暗時就啟動繼電器, 然後 delay 30秒鐘。這裡用了個布林變數來記錄夜燈啟動的情況,啟動後就將該變數設為False (初始是Ture),如果光線持續比950更暗並且啟動狀態為False的話,就不會啟動夜燈,意思是說亮30秒之後繼續保持關閉,不這樣做的話燈就會持續亮不停。

另外一個條件式就是當燈光亮到800以上就重新將布林變數設為Ture,這樣天亮或者半夜重新開燈之後,夜燈就會恢復到原先狀態。至於為何設950跟800這兩個數字,除了在家裡實測亮度決定之外,這兩個數字如果設太接近,會因為光敏電阻回傳值震盪不穩定而造成燈熄了又亮的現象,實際的數字還是要在環境中實測才會比較準。

關於繼電器與延長線的接法,如圖將火線剪開,接到繼電器「常斷」的兩端,你可以看到繼電器上接頭有三個,中間的是共用接點,兩邊一端是「常斷」(也就是NO - Nornal Open),另一端是「常接」(NC - Normal Close),所以他就像個開關一樣,如果你是要常斷偶爾開啟,那就接常斷與共用接頭,如果是常開啟接收指令才關閉,那就接常接與共用端。地線不需要剪斷。


有了這個「延時大夜燈」,晚上燈一關就點亮客廳沙發旁的閱讀燈(20W省電燈泡,電流頂多0.2A吧),30秒鐘足夠從客廳走到臥室,躺上床喬好枕頭拉好被子,燈滅剛好進入全暗適合睡眠的情境。做成盒子也有個好處,你可以接任何你想接的燈具,只要插上插頭即可,所以你可以去選各種你喜歡的燈具來使用。另外如果加上藍牙模組,配合簡單的App也可以用手機來遙控開關燈呢。

大夜燈的Arduino Sketch可由此下載

沒有留言:

張貼留言