如果急需使用可直接用如下程序不用看文章
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10, 11);
void setup() {
Serial.begin(9600);
Serial.println("Enter AT commands:");
BTSerial.begin(38400);
}
void loop() {
if(Serial.available()){
? BTSerial.write(Serial.read());
? }
? if(BTSerial.available()){?
? ? Serial.write(BTSerial.read());
? ? }
}
一.定義
藍(lán)牙模塊米罚,是一種集成藍(lán)牙功能的PCBA板铡俐,可用于數(shù)據(jù)傳輸翅阵。
二.預(yù)備知識(shí)
1.軟件模擬串口通信-SoftwareSerial庫(kù)使用
在arduino主板上除了硬件串口外贩幻,還可以通過(guò)調(diào)用軟件庫(kù)尊剔,將普通數(shù)字引腳模擬為串口通信引腳。其功能主要如下:
1)在多硬件串口有限情況下使用更多的串口通信設(shè)備
2)當(dāng)需要通過(guò)串口對(duì)藍(lán)牙等進(jìn)行調(diào)試時(shí)避免串口沖突爱致,燒錄程序時(shí)無(wú)需斷開(kāi)連接
SoftwareSerial類(lèi)的構(gòu)造函數(shù),通過(guò)它可指定軟串口RX、TX引腳嘱么。
語(yǔ)法:
SoftwareSerial mySerial= SoftwareSerial(rxPin, txPin)
SoftwareSerial mySerial(RxPin, TxPin)
參數(shù):
mySerial:用戶(hù)自定義軟件串口對(duì)象
rxPin:軟串口接收引腳
txPin:軟串口發(fā)送引腳
2.藍(lán)牙模塊AT模式設(shè)置
AT模式存在的意義:藍(lán)牙模塊要有自己的名字,連接密碼等顽悼,這些會(huì)有一個(gè)默認(rèn)值如名字默認(rèn)為HC-05曼振,密碼默認(rèn)為1234几迄,我們?nèi)绻胍淖兯{(lán)牙被搜索到時(shí)的名字和連接密碼就需要進(jìn)入AT模式進(jìn)行設(shè)置。
在通電前按住黑色復(fù)位鍵冰评,然后接通電源,此時(shí)藍(lán)牙模塊上LED等每隔2秒閃爍一次集索,表示成功進(jìn)入AT模式;
圖2箭頭所指按鈕即為hc-05復(fù)位按鈕
進(jìn)入AT模式后妆距,通過(guò)藍(lán)牙模塊的串口寫(xiě)入對(duì)應(yīng)指令可以完成這些屬性的修改,常見(jiàn)指令如下:
AT //輸入AT確認(rèn)是否進(jìn)入AT模式函匕,如果進(jìn)入娱据,則會(huì)返回OK
AT+NAME=chenhongbo-Bluetooth //設(shè)置藍(lán)牙名稱(chēng)為chenhongbo-Bluetooth
AT+ROLE=0 //設(shè)置主從模式:0從機(jī)盅惜,1主機(jī)
AT+PSWD=1234 //設(shè)置配對(duì)密碼,如1234
三.連線
只需要連接4個(gè)引腳
VCC連arduino主板的5V
GND連arduino主板的GND
Tx 連arduino主板上我們?cè)O(shè)置的軟件模擬RX引腳抒寂,下面程序選的是數(shù)字引腳D10
RX連arduino主板上我們?cè)O(shè)置的軟件模擬TX引腳结啼,下面程序選的是數(shù)字引腳D11
按住藍(lán)牙模塊上黑色REST鍵,給藍(lán)牙模塊通電屈芜,然后藍(lán)牙模塊每隔2秒閃爍一次郊愧,然后松開(kāi)按住的Rest鍵井佑,開(kāi)始寫(xiě)程序
四.程序
程序如下
#include <SoftwateSerial.h>
SoftwareSerial BTSerial(10, 11);
void setup() {
?Serial.begin(9600);
?Serial.println("Enter AT commands:");
?BTSerial.begin(38400);
}
void loop() {
?if(Serial.available()){
???BTSerial.write(Serial.read());
? }
? if(BTSerial.available()){???
?????Serial.write(BTSerial.read());
??? }?
}
程序注釋如下:
#include //調(diào)用軟件模擬串口庫(kù)
SoftwareSerial BTSerial(10, 11); //設(shè)置軟件模擬串口,名字為BTSerial躬翁,并設(shè)置數(shù)字口10,11分別為該串口的RX,TX引腳
void setup() {
?Serial.begin(9600); //設(shè)置電腦和arduino主板串口通信波特率為9600
?Serial.println("Enter AT commands:");//在電腦串口監(jiān)視器上顯示Enter AT commands例嘱,若串口監(jiān)視器輸出此句話則表示電腦與arduino主板成功以9600波特率建立通信關(guān)系
?BTSerial.begin(38400);//設(shè)置arduino主板的軟件模擬串口與藍(lán)牙模塊之間通信的波特率為
}
void loop() {
?if(Serial.available()){
???BTSerial.write(Serial.read());
? } //將從電腦串口讀取到的值通過(guò)軟件模擬串口寫(xiě)入藍(lán)牙模塊宁舰,從而實(shí)現(xiàn)對(duì)藍(lán)牙模塊屬性的修改
??if (BTSerial.available()){???
?????Serial.write(BTSerial.read());
??? }//如果輸入的AT代碼設(shè)置成功那么藍(lán)牙模塊默認(rèn)會(huì)返回OK蝶防,這一行程序把a(bǔ)rduino從藍(lán)牙接收到的信息通過(guò)硬件串口發(fā)送給電腦明吩,主要起監(jiān)測(cè)作用
}