2020-02-21

[筆記]Arduino與HC-06藍芽遠端控制WS2812B - [2] 控制Relay

上一篇我們講到如何控制藍芽模組來接收資料,這一篇來講講如何利用Arduino發送信號來控制開關。

講到利用訊號控制開關,最簡單的就是Relay(繼電器)了,他是一個利用小電流去控制大電流的自動開關。

我們會想,怎麼不用Arduino的5V輸出提供給LED燈條就好了呢?

原因是Arduino能提供的電流實在太小了,每個輸出針腳最大只有20mA而已。



而RGB彩色LED,每種顏色就需要20mA,一顆燈包含RGB三色,總共就要60mA,而燈條上不會只有一顆LED燈而已,所以我們需要額外的供電,在需要的時候利用Arduino發出訊號讓她打開,接通外部電源,這也就是Relay派上用場的時機了。(關於Relay更多知識請參考維基百科-繼電器)

Relay基本工作與接線圖


了解為何要使用Relay和他的基本使用之後,我們可以利用手機發出開燈訊號,Arduino上的HC-06接收到訊號之後傳給Arduino,依據開和關讓數位針腳發出High或是Low的訊號給Relay控制腳,這樣就可以控制Relay要打開或是關閉。


接線圖,因為我要控制兩條燈條,她們使用各自的電源,所以會用到兩顆Relay分別做控制:

5V由Arduino提供(包含上一篇提到的HC-06),兩顆Relay的控制腳分別接在Arduino的D3與D5,這邊只專注在Arduino與Relay連接,其他部分之後再談。

電路圖中我用到兩顆Relay模組,因為軟體裡面找不到我用的,我實際上買的是這種雙路的Relay,5V和接地只要一組共用即可,然後是低電位觸發,也就是控制腳如果輸入5V,不會觸發動作,輸入0V(接地)就會觸發,讓常開端導通。

接著看看Arduino程式碼,全開或全關太單調了,我們讓他隔一秒交互開關:
#define PIN1  3
#define PIN2  5

void setup() {
  pinMode(PIN1, OUTPUT);
  pinMode(PIN2, OUTPUT);
}

int i;

void loop() {
  //使用的這顆relay是低電位觸發
  i++;
  if (i % 2 == 0) {
    digitalWrite(PIN1, HIGH); //設為high為關閉relay
    digitalWrite(PIN2, LOW);  //設為low為開啟relay
  }
  else {
    digitalWrite(PIN1, LOW); 
    digitalWrite(PIN2, HIGH);
  }
  delay(1000);
}


這樣就會像底下影片一樣兩顆Relay交互開關囉!!!




下期待續...

--
相關文章:
[筆記]Arduino與HC-06藍芽遠端控制WS2812B - [1] Arduino與HC-06

沒有留言:

張貼留言