溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Arduino與Android藍(lán)牙通信的方法是什么

發(fā)布時間:2022-01-12 16:06:14 來源:億速云 閱讀:157 作者:iii 欄目:互聯(lián)網(wǎng)科技

這篇文章主要介紹“Arduino與Android藍(lán)牙通信的方法是什么”,在日常操作中,相信很多人在Arduino與Android藍(lán)牙通信的方法是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Arduino與Android藍(lán)牙通信的方法是什么”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

關(guān)于藍(lán)牙模塊的一些基礎(chǔ)概念

藍(lán)牙主機(jī)和從機(jī)

主機(jī):能夠主動發(fā)起掃描并匹配從機(jī)模塊

從機(jī):只能被掃描和匹配

一個模塊可以即是主機(jī)也是從機(jī)

AT模式

藍(lán)牙的AT模式就理解為設(shè)置模式好了。在設(shè)置模式下,我們設(shè)置一個藍(lán)牙的以下重要參數(shù):

  • 藍(lán)牙模塊名稱。既你的藍(lán)牙設(shè)備被別的設(shè)備掃描到時所顯示的名字;

  • 如果是主從一體模塊,可在AT模式下設(shè)置其角色;

  • 設(shè)置密碼;

  • 通信波特率。需要注意,AT模式和工作模式下的波特率是不同的。

AT模式下,藍(lán)牙模塊無法被掃描并匹配。

工作模式

該模式下,藍(lán)牙可以掃描、被掃描,匹配、被匹配。這是與AT模式相對的一個模式,該模式下就無法再對藍(lán)牙模塊進(jìn)行設(shè)置了。

元件清單

Zduino UNO R3

OpenJumper Bluetooth V2.0

OpenJumper Bluetooth V2.0介紹

OpenJumper Bluetooth V2.0核心模塊屬于HC系列藍(lán)牙模塊中的HC-05主從模塊。即主從一體,通過AT設(shè)置可改變其角色;

該模塊僅支持SPP(Serial Port Profile,串行端口規(guī)范)規(guī)范,因此也只能實(shí)現(xiàn)“無線串口”通信功能,而無法支持像藍(lán)牙耳機(jī)或藍(lán)牙鍵盤那樣的功能;

為了正確連接該模塊,需要了解下面的重要參數(shù):

AT模式

串口波特率:38400bps,停止位:1位,校驗(yàn)位:無

工作模式

串口波特率:9600bps,停止位:1位,校驗(yàn)位:無

指示燈含義

該模塊有兩個LED:State,狀態(tài)指示燈,Link,連接指示燈。他們的閃爍定義如下:

State

快閃(0.5s間隔):搜索狀態(tài)或等待外部鏈接

慢閃(1s間隔):藍(lán)牙設(shè)置模式

雙閃(間隔0.5s亮2次,滅3s):配對成功,可以通信,需要補(bǔ)充

Link

常亮:配對成功,可以通信

AT設(shè)置

1. 編寫AT指令設(shè)置程序如下;

/*
 * OpenJumper Bluetooth v2.0 AT模式設(shè)置代碼
 * updated by madmatrix
 */
#define LED 13

void setup()
{
       pinMode(LED,OUTPUT);
       Serial.begin(38400); // AT模式下的波特率必須為該值,否則會設(shè)置失敗
       delay(100);
       Serial.println("AT");
       delay(100);
       Serial.println("AT+NAME=My Bluetooth Test");//命名模塊名
       delay(100);
       Serial.println("AT+ROLE=0");//設(shè)置主從模式:0從機(jī),1主機(jī)
       delay(100);
       Serial.println("AT+PSWD=1234");//設(shè)置配對密碼
       delay(100);
       Serial.println("AT+UART=9600,1,0");// 設(shè)置工作模式下的波特率為9600,停止位1,校驗(yàn)位無
       delay(100);
       Serial.println("AT+RMAAD");//清空配對列表
}
void loop()
{
       digitalWrite(LED, HIGH);
       // 可以在每次上傳該程序的時候調(diào)整一下這里的延時
       // 通過觀察LED閃爍間隔來確認(rèn)程序是否已經(jīng)完成上傳至arduino
       delay(1000); 
       digitalWrite(LED, LOW);
       delay(1000);
}

2. 在未連接藍(lán)牙模塊的情況下上傳程序至arduino;

  • 如果此時藍(lán)牙通電,并且串口線與arduino的串口相連,將占用arduino uno唯一的串口(0和1號引腳),程序?qū)o法上傳到arduino;

  • 雖然電腦與arduino是通過usb連接,但實(shí)際上usb通過arduino上的一塊轉(zhuǎn)換芯片連接至串口,所以本質(zhì)上仍然是電腦通過串口與arduino相連。

3. 連接藍(lán)牙與arduino,注意要將藍(lán)牙模塊的AT引腳連接至vcc(高電平),此時藍(lán)牙模塊的State燈慢閃(間隔1s),表示進(jìn)入AT模式。連接好后,按下Arduino復(fù)位鍵。等待arduino上的RX和TX指示燈不再閃爍,此時藍(lán)牙模塊已經(jīng)設(shè)置好。注意State指示燈閃爍頻率不變;

  • 也可以不按復(fù)位鍵,將usb拔了再插上。這個過程等于按下復(fù)位鍵。他們都會使arduino重新啟動,將已經(jīng)上傳至控制板中的程序再運(yùn)行一遍;

  • 此時由于藍(lán)牙模塊與arduino通過串口相連,那么程序中的Serial.println的輸出都通過串口發(fā)送至藍(lán)牙模塊,從而達(dá)到了設(shè)置藍(lán)牙的目的;

  • 在第一步中,我們設(shè)置的波特率為38400bps,此時的作用就是為了與處于AT設(shè)置模式下的藍(lán)牙模塊通信,如果設(shè)置為9600,設(shè)置將失敗。

4. 拔下藍(lán)牙模塊的AT引腳和VCC引腳線,此時上傳工作代碼至arduino。

  • 拔下AT引腳線,讓AT引腳置空,下次藍(lán)牙模塊上電時將進(jìn)入工作模式;

  • 此時工作代碼中的串口波特率應(yīng)該設(shè)置為9600bps,這是藍(lán)牙模塊工作狀態(tài)下的波特率,注意工作代碼中的串口通信波特率也應(yīng)該是9600bps。

5. 藍(lán)牙模塊上電(VCC引腳接通),但AT引腳保持懸空狀態(tài),此時藍(lán)牙模塊的State燈快閃(0.5s間隔),表示進(jìn)入搜索狀態(tài),可使用手機(jī)進(jìn)行配對。

測試

1. 隨便寫一段簡單的工作代碼

#define LED 13

void setup() {
  Serial.begin(9600);
  pinMode(LED, OUTPUT);
}

void loop() {
  char val;
  val = Serial.read();
  if (val != -1) {
    Serial.print("Arduino answer: Cogito Ergo Sum!");
  }

  digitalWrite(LED, HIGH);
  delay(2000);
  digitalWrite(LED, LOW);
  delay(2000);
}

2. 在Android手機(jī)上下載一個叫做“藍(lán)牙串口”的小軟件,裝好后,打開軟件,然后看到下面的界面:

Arduino與Android藍(lán)牙通信的方法是什么

修改模式為“會話模式”

點(diǎn)擊連接,在彈出的窗口中,點(diǎn)擊“掃描設(shè)備”,不出意外,會看到你設(shè)置的藍(lán)牙模塊的名字,然后選中:

Arduino與Android藍(lán)牙通信的方法是什么

等待軟件彈出“連接到xxx”的提示后,再看藍(lán)牙模塊的指示燈,此時Link等常亮,State燈進(jìn)入雙閃狀態(tài)。

這樣就可以開始“會話”了,隨便輸入一段文字,就可以得到我們代碼中預(yù)先設(shè)置好的答復(fù):

Arduino與Android藍(lán)牙通信的方法是什么

到此,關(guān)于“Arduino與Android藍(lán)牙通信的方法是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI