2020-02-20

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

最近有個需求,有兩位美女需要能夠遠端控制RGB彩色燈條,讓他們閃爍及調整顏色。由於一般市面上RGB幻彩燈條都需要由控制器來控制,但常見的控制器一次都只能控制一條,而我們需要的效果要由兩條燈條來完成:兩條不同顏色、其中一條要有呼吸效果、兩條需要同時開和關,這樣就必須有兩個控制器、兩台手機來連接,而且控制器上的效果又不符合我想要的,剛好我喜歡在油管看看DIY的影片,現在蠻紅的Arduino是個很棒的東西,可以自訂各個接腳的功用,也可以連接各種外接設備,實在是太符合我的要求啦!!覺得自己硬幹一台好像也不是問題,於是這個專案就誕生了...


需求:

  1. 由一台手機操控兩條不同的RGB燈條
  2. 效果由自己設定(很簡單,一條固定單色,另一條也固定單色但要有滑順穩定的呼吸效果)
  3. 同時開關


第一步,我們必須先讓Arduino和藍芽接收器結合,所以就準備了一台Arduino Micro、一台HC-06藍芽接收器,趕快來讓他們合體吧!!

介紹一下為什麼我會選Arduino Micro和HC-06。因為我要體積小,所以只能選Micro(其實還有Nano,但他的USB接頭是Mini USB,現在已經快淘汰了,而且我絕對不會說蝦皮上買到的Nano不是原廠出的,而Micro可以買到原廠的,用IDE燒錄程式比較順利)。藍芽接收設備有HC-05和HC-06,HC-05功能較多,但我只需要單純的接收由手機傳來的資料,所以買便宜一些些的HC-06就好了。

好了之後就來看一下接線圖:

由於Arduino Micro提供了另外一組獨立的Serial Tx/Rx,所以我們可以不用插在Digital Pin,直接將HC-06的Tx接在Arduino的Rx,HC-06的Rx接在Arduino的Tx。
注意!!有看到那顆1k電阻嗎?因為HC-06的Tx/Rx最高只接受3.3V的電壓,而Arduino的輸出可能會達5V,為了怕燒壞HC-06,所以我們接了顆1k的限流電阻,意義跟LED的限流電阻一樣避免高電壓直接進入元件。

接好了之後就可以開啟Arduino IDE來編寫簡單的程式連線到HC-06,看看功能是否正常了!
底下是程式碼:

//使用Arduino Micro,Serial1使用獨立街口RX/TX
//上傳程式到Arduino時,請斷開與HC-06的連線

void setup() {
  Serial.begin(9600);
  while(!Serial){
    //(重要)等待開啟Serial Port才可繼續下一步
  }
  Serial.println("Serial準備好了");

  // 設定藍牙模組的連線速率(Arduino Micro提供另一組名為Serial1的序列埠,可直接使用Tx/Rx接腳
  // 如果是HC-05,請改成38400
  Serial1.begin(9600);
  while(!Serial1){
    //(重要)等待開啟Serial1 Port才可繼續下一步
  }
  Serial.println("Serial1準備好了");
}

void loop() {
  // 若收到「序列埠監控視窗」的資料,則送到藍牙模組
  if (Serial.available()){
    Serial1.print(Serial.read());
  }
 
  // 若收到藍牙模組的資料,則送到「序列埠監控視窗」
  if (Serial1.available()) {
    Serial.print(Serial1.read());
  }
}

好了之後就可以上傳到Arduino內,注意在上傳前,先把Arduino上連接到HC-06的Tx/Rx接線拔掉,等上傳完成之後再插上,避免HC-06損壞。

上傳完成之後,Reset Arduino,接著打開IDE上的「序列埠監控視窗」,若連接正確,應該可看到底下畫面:

兩個序列埠都正常開啟的話就會顯示Serial is ready與Serial1 is ready。接著我們就可以輸入AT指令看看HC-06功能是否正常,但在對HC-06輸入指令前須注意底下兩者必須選擇正確:

接著就可在上方文字框輸入AT,再按下enter或是右邊傳送鈕,沒意外的話應該可以看到下方會回應OK:

這樣就代表我們Arduino與HC-06連接正常啦!!!還有一些AT指令也可以使用:

  • AT+NAMEXYZ:將HC-06名稱改為XYZ
  • AT+PIN8787:將連線密碼改為8787

注意上面指令和參數是要連在一起的

還有一點,HC-06在通電之後,但還未被藍芽連線之前,狀態燈是會快速閃爍,要在此狀態下才能執行AT指令。

Arduino與HC-06連接沒問題之後,接著就準備增加我們需要的電路囉!

註:這篇文章只是我對這個控燈專案的一個筆記,所以只會介紹重點部分,對於各硬體的介紹網路有很多文章可以參考~

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


--
參考資料:
HC-05與HC-06藍牙模組補充說明(一)
HC-05與HC-06藍牙模組補充說明(二):連接電路
HC-05與HC-06藍牙模組補充說明(三):使用Arduino設定AT命令


沒有留言:

張貼留言