【觀念釐清】
1.藍芽可以設定主、從,二種角色,HC-05可以透過 AT 指令,指定角色,但是 HC-06 不行,一出廠就是從端喔。
2.連線距離:在無障礙之下,理論是 10 M
3.HC-05 在設定時,最好將 UART 設定為 :38400,比較不容失敗。
4.以下是藍芽設定完成之後,使用 Arduino IDE 進行測試的程式。主控端的程式,使用序列埠視窗,下達指令給接收端的藍芽;而在主控端這方,可從序列埠,看到接收端回傳的訊息。
/* 1.本程式為人體紅外線感測器 ( PIR Motion Sensor )針對HC-HR501型號,SR505也適用本程式 2.此程式,手機下載 bluetooth control APP , 進行測試。 */ #include <SoftwareSerial.h> // 引用程式庫 // 定義連接藍牙模組的序列埠 SoftwareSerial BT(8, 9); // (對方裝置的 TX | RX ) char val; // 儲存接收資料的變數 char input_temp; //暫存變數 String BT_return; //儲存回傳的訊息字串 int sensor = 5; //訊號線 HC-HR501 int LED_PIN = 4; // 定義LED腳位 void setup() { Serial.begin(9600); // 與電腦序列埠連線 Serial.println("BT is ready!"); pinMode(LED_PIN, OUTPUT); pinMode(sensor, INPUT); //測試LED digitalWrite(LED_PIN, HIGH); delay(200); digitalWrite(LED_PIN, LOW); // 藍牙透傳模式的預設連線速率。 BT.begin(38400); } void loop() { // 若收到「序列埠監控視窗」的資料,則送到藍牙模組 val = ' '; if (Serial.available()) { input_temp = Serial.read(); if(input_temp != '\r' && input_temp != '\n'){ val = input_temp; //傳入單一字元 Serial.println(" serial 輸入"); Serial.println(val); BT.print(val); } } // 若收到藍牙模組接受端回傳的資料,則送到主控端的「序列埠監控視窗」 if (BT.available()) { for (int i = 0; i <= 20; i++) { char c = BT.read(); if(c != '\r' && c != '\n'){ BT_return += c; } delay(4); } Serial.println("BT 回傳的BT值為"); Serial.print(BT_return); } }