**【整理與體驗】 一克拉**
* * * * *
1、藍牙串口是基于SPP協議(Serial Port Profile)。能在有藍牙的設備之間創建串口,進行數據傳輸的一種設備。
2、藍牙串口的目的是在兩個不同設備上保證一條完整的通信路徑。
3、藍牙核心模塊一般使用HC系列,本案例使用【BT04-A】模塊,引出接口包括VCC,GND,TXD,RXD,預留LED狀態輸出腳,單片機可通過該腳狀態判斷藍牙是否已經連接。
4、led指示藍牙連接狀態:閃爍表示藍牙沒有連接,常亮表示藍牙已連接并打開了端口。
5、輸入電壓3.6~6V,未配對時電流約30mA,配對后約10mA,輸入電壓禁止超過7V!
6、可以直接連接各種單片機(51,AVR,PIC,ARM,MSP430等),5V單片機也可直接連接
7、在未建立藍牙連接時支持通過**AT指令設置**波特率、名稱、配對密碼,設置的參數掉電保存。藍牙連接以后自動切換到**透傳模式**
8、Arduino 與藍牙模塊連接方法
VCC:接Arduino的5V。
GND:接Arduino的GND。
TXD:發送端,接Arduino的RX。
RXD:接收端,接Arduino的TX。

* * * * *
### 一、 調試源代碼 先測通。
**1、若UNO-->發送端,PC-->接收端,燒錄以下代碼**
void setup()
{
Serial.begin(9600); //初始化串口并設置波特率為9600
}
void loop()
{
Serial.print("Hello!"); //串口向外發送字符串
Serial.println(" lqzx"); //串口向外發送字符串 ,并帶回車
delay(1000); //延時
}
* * * * *
**2、若UNO-->接收端,PC-->發送端,燒錄以下代碼**
void setup(){
Serial.begin(9600); //初始化串口并設置波特率為9600
}
void loop(){
char val;
val = Serial.read(); //讀串口
if(val!=-1){
Serial.print(val); //將收到是數據再通過串口發送出去
}
}
將上面代碼復制粘貼到IDE,燒錄程序到Arduino,燒錄完成后,從IDE自帶的串口助手觀察結果:輸入內容,發送時出現

### 二、測通后,進一步實現Arduino 藍牙與安卓手機的通信
1、首先下載Android手機的藍牙管理軟件 [千月串口](https://pan.baidu.com/s/1oAggO58) 或掃描二維碼下載:

2、打開手機上藍牙,打開千月串口,找到目標藍牙配對,在手機端輸入,則有返回數據。手機能返回數據

3、打開arduino串口監視器,輸入數據,有數據返回。藍牙能返回數據

由2、3測試,表明手機與arduino的通訊已建立。
* * * * *
* * * * *
### 三、其它實例展示
Arduino 藍牙與手機APP 通信的實現(手機控制小車案例LED演示)
1、下載手機APP:手機控制 在手機上安裝好。或掃描二維碼安裝

打開手機控制arduino,界面如下:

溫馨提示:點擊“前”發送文本為“q”,點擊“后”發送文本為“h”......
* * * * *
2、將下面代碼用arduino IDE下載(上傳或者叫燒錄)到arduino即可聯調:
// 手機控制小車案例LED演示
void setup(){
Serial.begin(9600); //初始化串口并設置波特率為9600
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
}
void loop(){
char val;
val = Serial.read(); //讀串口
if (String(val).equals(String("q"))) { //前
digitalWrite(13,HIGH);
} else if (String(val).equals(String("h"))) { //后
digitalWrite(12,HIGH);
} else if (String(val).equals(String("z"))) { //左
digitalWrite(11,HIGH);
} else if (String(val).equals(String("y"))) { //右
digitalWrite(10,HIGH);
} else if (String(val).equals(String("t"))) { //停止
digitalWrite(9,HIGH);
} else if (val!=-1) {
Serial.print(val); //將收到是數據再通過串口發送出去
}
}
3、實際情況可不是這樣的!先自己用LED發光二極管演示看看接到對應數字引腳上,用手機控制的邏輯對不對。修改完善你自己的arduino程序,來達到你的要求。
* * * * *
### Arduino 藍牙與手機APP 通信的實現
(藍牙-門鎖手機鑰匙)
1、代碼
int pxq; // 定義整數型全局變量為pxq,用來保存接收的數據。
void setup() {
Serial.begin(9600); // 打開串口(藍牙)
pinMode(9,OUTPUT); // 定義9腳為輸出。(數字或PWM)
pinMode(10,OUTPUT); // 定義10腳為輸出。
pinMode(11,OUTPUT); // 定義11腳為輸出。
pinMode(12,OUTPUT); // 定義12腳為輸出。
pinMode(13,OUTPUT); // 定義13腳為輸出。
}
void loop() {
while (Serial.available() > 0) { // 串口收到字符數大于零。
pxq = Serial.parseInt(); // 在串口數據流中查找一個有效整數。
if (Serial.read() == 'X') { // 收到結束符后開始處理數據。
switch (pxq) { // 判斷數據內容。
case 1001:
digitalWrite(10,HIGH); // 點亮10腳LED。
Serial.println(pxq); // 回傳數據并帶回車。
break;
case 1002:
digitalWrite(10,LOW); // 熄滅10腳LED。
Serial.println(pxq); // 回傳數據并帶回車。
break;
case 2001:
digitalWrite(11,HIGH); // 點亮11腳LED。
Serial.println(pxq); // 回傳數據并帶回車。
break;
case 2002:
digitalWrite(11,LOW); // 熄滅11腳LED。
Serial.println(pxq); // 回傳數據并帶回車。
break;
case 3001:
digitalWrite(12,HIGH); // 點亮12腳LED。
Serial.println(pxq); // 回傳數據并帶回車。
break;
case 3002:
digitalWrite(12,LOW); // 熄滅12腳LED。
Serial.println(pxq); // 回傳數據并帶回車。
break;
case 4001:
digitalWrite(13,HIGH); // 點亮13腳LED。
Serial.println(pxq); // 回傳數據并帶回車。
break;
case 4002:
digitalWrite(13,LOW); // 熄滅13腳LED。
Serial.println(pxq); // 回傳數據并帶回車。
break;
default:
pxq = map(pxq,0,100,0,100); // 轉換數據范圍到PWM輸出值。
analogWrite(9,pxq); // 調整LED亮度。(PWM)
}
}
}
}
2、下載手機APP:[藍牙-門鎖手機鑰匙.apk](https://pan.baidu.com/s/1nwlYoM9) 在手機上安裝好。或掃描二維碼安裝

打開藍牙-門鎖手機鑰匙手機APP,如下圖:

3、聯調看效果(這里用LED發光二極管模擬)
* * * * *
### 藍牙AT設置
用于開鎖具有保密級別的項目,藍牙配對密碼一定要修改,最后把名稱也改一改,這就需要利用AT命令來設置。BT04-A 只需連接四根線,上電就自動進入AT模式。不需置高AT功能端!!
AT+NAME //查詢:返回查看藍牙名稱
AT+NAMEcklm07 //設置:設置藍牙名稱為cklm07
AT+ROLE //設置/ 查詢:返回查看藍牙模式為0從模式
AT+CMODE //設置/ 查詢:藍牙連接模式1為任意地址連接模式
AT+PIN //設置/ 查詢:藍牙配對密碼出廠值為1234
AT+DEFAULT //恢復出廠設置
AT+LADDR //設置/ 查詢: MAC 地址
AT+RESET //復位
例子:設置配置密碼為 1111
發送:AT+PIN1111\r\n
返回:+PIN=1111
此時表示配對密碼已經配置成 1111
AT+BAUD ////設置/ 查詢: 波特率
返回:波特率
1:1200
2:2400
3:4800
4:9600
5:19200
6:38400
7:57600
8:115200
9:230400
A:460800
B:921600
C:1382400
默認波特率:9600
- 第 1 節 【基礎】認識Arduino
- 電子知識
- Arduino與圖形編程軟件結合使用
- 第 2 節 【基礎】串口類串口并口
- 第 3 節 【基礎】認識傳感器
- 認識舵機
- 超聲波傳感器
- 認識藍牙
- LCD1602屏顯
- 光敏電阻傳感器
- 第 4 節 【教程】Arduino示例教程模塊版
- 第 5 節 【概述】電腦控制UNO板組件
- 第 6 節 【實例】光敏傳感器與LED燈結合用(自控節能燈)
- 第 7 節 【實例】超聲波測距及調試
- 第 8 節 【實例】點亮LED燈
- 第 9 節 【實例】可控舵機-電位器控制舵機
- 第 10 節 【實例】安卓手機控制Arduino單片機-藍牙串口通訊
- 第 11 節 【實例】WIFI物聯-貝殼物聯網控制LED燈