學習目標 : 認識faya繼電器插座模組的功能及使用方式
學習時間 : 25min
示範模組 : (1) faya brickNano
(2) faya繼電器模組
(3) faya搖頭開關模組
工具 : (1) 樂高積木底板 (相容)
====================功能介紹====================
faya繼電器插座模組內建了一個繼電器,透過Arduino的數位訊號,就能控制插在電源座上的交流電器(110/220V)的開關狀態。
模組圖如下所示,分為三個部分:
(1) 模組左方為輸入埠RY,用來接收控制器的訊號 (HIGH/LOW)
(2) 模組右方為萬用插座,將受控電器的電源線插在此插座上
(3) 模組後方為一條電源線,插在牆壁市電插座上
- 當接收端RY埠收到HIGH訊號時,繼電器導通,AC電源供電至插座上的電器
- 當接收端RY埠收到LOW訊號時,繼電器斷路,AC電源停止供電
====================原理知識====================
以下解釋提供給有需要知道背後原理的人,首先看一下電路圖:
這個模組利用一個電晶體接受MCU的訊號,當輸入為HIGH時,電晶體Q1導通,Q1集極為LOW,D2燈會亮起,集極上方的5V電壓則會推動繼電器,導通AC電源,讓AC電源傳送至電器,這邊注意到由接到牆壁上的電源和電器的電源要一致,也就是當電器電源為110V時,連接到牆壁的電源也要110V,就和一般家電的連法一樣。
====================範例實作====================
了解模組功能(原理)後,我們用以下範例來展示模組的功能:
目標:
(1)當搖頭開關撥到S0位置時(ON),啟動電風扇
(2)當搖頭開關撥到S1位置時(OFF),關閉電風扇
製作插座底板:
本模組由於會接觸到110/200V的AC電源,模組出廠前已預先用熱溶膠在接觸交流電電路的部分上膠隔離隔離,但為了安全起見,在接線前,我們還是先用隨附的積木將模組背面的電路和外界隔離,免除碰到電源電路的機會。首先利用兩片8x6平板積木和三片2x6平板積木,完成如下的結構。
接著將模組四個角落疊上三層積木柱子,上方再用積木蓋子扣上固定,完成後,我們除非刻意把手伸進去,不然不會有機會接觸到交流電源電路。
接線:
(1) 電源線連接
如下圖所示,連接的說明請看這篇文章 或簡易版
(2) 訊號線連接
Arduino_2 ===> 搖頭開關_S0
Arduino_3 ===> 搖頭開關_S1
Arduino_13 ===> 繼電器插座_RY
範例程式:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 2018/11/23 | |
// Faya-Nugget 範例程式 (relay_outlet_1.ino) | |
// 單元: 模組介紹-faya繼電器插座模組 | |
// 網址: https://fayalab.blogspot.com/2018/11/relay-outlet.html | |
// 目標: (1)當搖頭開關撥到S0位置時(ON),啟動電風扇 | |
// (2)當搖頭開關撥到S1位置時(OFF),關閉電風扇 | |
// 連線 : Arduino ==> faya 模組 | |
// D2 ==> S0 (搖頭開關模組) | |
// D3 ==> S1 (搖頭開關模組) | |
// D13 ==> RY (繼電器插座模組) | |
#define SW_S0_ON 2 | |
#define SW_S1_OFF 3 | |
#define toRelay 13 | |
void setup() { | |
pinMode(SW_S0_ON, INPUT); // 設定D2為輸入腳位 | |
pinMode(SW_S1_OFF, INPUT); // 設定D3為輸入腳位 | |
pinMode(toRelay, OUTPUT); // 設定D13為輸出腳位 | |
} | |
void loop() { | |
if (digitalRead(SW_S0_ON) == HIGH) //當偵測到搖頭開關在位置S0時 | |
{ | |
digitalWrite(13, HIGH); // 輸出HIGH至繼電器 | |
} | |
if (digitalRead(SW_S1_OFF) == HIGH) //當偵測到搖頭開關在位置S0時 | |
{ | |
digitalWrite(13, LOW); // 輸出LOW至繼電器 | |
} | |
} |
備注:
- L23/27 : 搖頭開關所在的位置會輸出HIGH,所以我們條件都用HIGH來判斷。
範例結果:
討論:
由影片中可以觀察到我們順利的用搖頭開關控制電風扇的狀態,乍看之下大家會想說為何要多此一舉? 何不直接用電風扇的開關控制就好了? 一點都沒錯,但是如果們我個加入了Arduino介面,就有機會加入定時器的功能,讓電器在設定的時間自動開機/關機,也可以在控制端加入藍芽模組,利用手機進行遠端遙控,類似智慧插座的功能,我們未來會用此範例開發一創意組合產品。
沒有留言:
張貼留言