這東西是藍芽模組HC-05,而市面上有另一種叫HC-06的藍芽模組。
HC-05和HC-06不一樣的地方是HC-05多一個Enable-PIN,
可以進入AT模式設定Master或Slave,HC-06只能是Slave。
所以我直接用兩個HC-05比較方便。
首先先來進入AT模式,RX、TX、GND接好,Enable接3.3V,重要的是5VDC供電先不接,
還有要先灌"設定AT"的Code(如下)。
#include <SoftwareSerial.h>
SoftwareSerial BT(8, 9);
// TX, RX (軟體RX要接硬體TX、硬體TX要接軟體RX)。
char val;
void setup() {
Serial.begin(9600);
Serial.println("BT is ready!");
BT.begin(38400);
}
void loop() {
if (Serial.available()) {
val = Serial.read();
BT.print(val);
}
if (BT.available()) {
val = BT.read();
Serial.print(val);
}
//程式LOOP主要功能就是收到什麼""指令""做什麼事。
}
按住板子上唯一的按鈕,然後插入DC5V供電,放掉按鈕,板子上的燈會呈現慢速閃動,
這樣就表示已進入AT,這時開啟序列阜就OK了。
後來有幾個程序要做,
1、輸入指令AT--確認AT連線。
2、輸入指令AT+ADDR?--回傳位置(Slave就好)。
3、輸入指令AT+ROLE=1 (Master)、輸入指令AT+ROLE=0 (Slave)。
4、輸入指令AT+BIND=儲存連線Slave藍芽位置。
Master端的Code如下:
#include <SoftwareSerial.h>
SoftwareSerial BT(8, 9);
char val;
void setup() {
Serial.begin(9600);
Serial.println("BT is ready!");
BT.begin(38400);
//Baud Rate記得都要設38400。
}
void loop() {
if (Serial.available()) {
val = Serial.read();
BT.print(val);
}
if (BT.available()) {
val = BT.read();
Serial.print(val);
}
//這一樣是使用序列阜輸入訊息給Slave端。
}
接下來Slave端的Code如下:。
#include <SoftwareSerial.h>
SoftwareSerial BT(8, 9);
char val;
void setup() {
BT.begin(38400);
pinMode(10, OUTPUT);
//輸出定義在I/O 第10PIN。
}
void loop() {
if (BT.available()) {
val = BT.read();
if (val == '1') {
digitalWrite(10, 1);
BT.println("ON");
// Master端輸入字元"1",10PIN輸出HIGH。
} else if (val == '0') {
digitalWrite(10, 0);
BT.println("OFF");
// Master端輸入字元"0",10PIN輸出LOW。
}
}
}
成果像影片這樣,序列阜也會顯示開關。
這東西比較複雜點,細心點弄還是弄得出來的。
沒有留言:
張貼留言