您好,登錄后才能下訂單哦!
這篇文章主要介紹“Arduino與Android藍(lán)牙通信的方法是什么”,在日常操作中,相信很多人在Arduino與Android藍(lán)牙通信的方法是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Arduino與Android藍(lán)牙通信的方法是什么”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
主機(jī):能夠主動發(fā)起掃描并匹配從機(jī)模塊
從機(jī):只能被掃描和匹配
一個模塊可以即是主機(jī)也是從機(jī)
藍(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核心模塊屬于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
常亮:配對成功,可以通信
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)牙串口”的小軟件,裝好后,打開軟件,然后看到下面的界面:
修改模式為“會話模式”
點(diǎn)擊連接,在彈出的窗口中,點(diǎn)擊“掃描設(shè)備”,不出意外,會看到你設(shè)置的藍(lán)牙模塊的名字,然后選中:
等待軟件彈出“連接到xxx”的提示后,再看藍(lán)牙模塊的指示燈,此時Link等常亮,State燈進(jìn)入雙閃狀態(tài)。
這樣就可以開始“會話”了,隨便輸入一段文字,就可以得到我們代碼中預(yù)先設(shè)置好的答復(fù):
到此,關(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í)用的文章!
免責(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)容。