arduino藍牙通訊

玩硬件和軟件最大的不同,就是需要零件設備。這次的目標是要實現arduino通過藍牙和PC通訊,arduino mega 1280必須要連接一個藍牙無線串口設備才能實現。所以要添加下面的東西:

 

1. 藍牙無線串口模塊。

 

2. 面板的連接線,這個便宜,8塊就長的短的,花花綠綠一大把。

 

 

 

藍牙串口模塊有4個接線口,分別是 5v, GND, TX, RX,非常簡單,對應電源,以及收發端。原理上,這個模塊相當於一個串口的中轉站,一端和PC間通過藍牙協議無線連接PC的藍牙串口,另一端和arduino的串口設備UART通過連線直接相連,這樣,就相當於在PCarduino之間搭建了一個通訊橋樑,使兩者能夠通過串口設備進行通訊。那麼,USB線呢?我們寫好程序通過USB線把代碼上載後,USB線就可以去掉了,以後的通訊,直接通過無線藍牙就能完成。當然,這個通訊是指PC的程序和arduino的程序之間,要想重新上載新的程序,還得通過USB連線來完成。

接下來開始連線。前面有說過,arduino mega 12804UART,也就是4個串口,接口01141516171819兩兩對應於這4個串口的收,發端。另外,板上還有3.3v, 5v, GND,和Vin接口,提供各種電壓的輸出,其中,Vin代表的是arduino的輸入電壓。不過要注意,輸出的負載電流都不能超過50mA,否則就有燒掉的危險。連線如下圖:

 

 

紅線連接arduino5v和藍牙串口模塊的5v;黑線連接arduino和藍牙串口模塊的GND;黃線連接arduinoRx和藍牙模塊的Tx;綠線連接arduinoTx和藍牙模塊的RxOk,大功告成。

 

接下來就是寫程序了。爲了測試通訊,PC通過無線連接向arduino發送一個字符't'arduino收到後閃一下燈,並向PC反饋一個字符串"echo"。程序如下:

 

const int ledpin = 13;

const int pinRx = 0;

const int pinTx = 1;

 

void setup()

{

Serial.begin(9600);

pinMode(ledpin, OUTPUT);

}

void loop()

{

int val = Serial.read();

if (val == 't')

{

digitalWrite(ledPin, HIGH);   // set the LED on

delay(500);

digitalWrite(ledpin, LOW);

delay(500);

Serial.println("echo");

}

}

 

相對上一個程序,這裏面有些新的東西,就是串口對象Serial,這個對象對應於01接口的串口設備;當然,其他3個串口也有對應的串口對象,名字分別爲Serial1, Serial2, Serial3。編程參考可以看這個鏈接:http://arduino.cc/en/Reference/Serial。這裏使用的對象接口函數很簡單,Serial.begin(波特率),用於初始化串口並指定通訊的波特率;Serial.read()是從串口的接收緩衝區中讀出一個字符,如果沒有,返回-1Serial.println(字符串)用於輸出一個帶回車符的字符串。需要提一下的是,arduino的第一個串口和FTDI USB-to-TTL串口芯片相接,也就是說這個串口設備可以通過USB線連接PC

程序寫完,就可以上傳運行了。藍牙模塊背面有2個燈,分別是powerstate,通電後power就亮了,state燈卻一直閃爍,這是因爲藍牙還沒有連接。PC端這時需打開藍牙管理,然後搜尋新的設備,會找到一個叫linvor的藍牙設備。打開,這個設備只有一個藍牙串口。點右鍵連接,跳出配對密碼輸入框,輸入密碼"1234"即可。連接完成後,可以看到藍牙模塊上的state燈長亮了,這表明連接正常,就可以進行通訊了。

既然是通訊,PC端也要有個基於串口的通訊程序。除了使用arduino開發環境自帶的Serial Monitor,自己也可以找一個流行的。咱是懶人,就用開發環境自帶的好了,反正應用很簡單,這個程序也夠用了。點擊開發環境最右面Serial Monitor那個圖標,就跳出下面這個界面。不過要注意,在TOOL菜單下的COM選擇,應該是對應藍牙串口所用的那個串口編號,而不是USB的,否則,呵呵,就不是藍牙無線通訊而是USB串口通訊了。

 

 

最後補充一下,藍牙模塊的信息是可以通過AT命令來進行改動的,缺省情況下,藍牙設備名是"linvor", 通訊波特率爲9600,配對密碼爲"1234"。具體說明如下:

 

通過串口與電腦連接,再通過串口調試助手給模塊發送命令可以配置模塊的一些參數,

具體的配置方式如下:

1)、測試通訊:發送AT 命令,返回ok

2) 更改波特率

模塊默認的波特率是9600

發送AT BAUD1 返回OK1200

發送AT BAUD2 返回OK2400

……

BAUD1------------1200

BAUD2------------2400

BAUD3------------4800

BAUD4------------9600

BAUD5------------19200

BAUD6------------38400

BAUD7------------57600

BAUD8------------115200

BAUD9------------230400

A--------------------460800

B--------------------921600

C--------------------1382400

不建議使用超過115200 的波特率,因爲大多系統都沒有提供高

115200 的波特率,PC 機也是如此,波特率設置超過115200 以後,

電腦無法使用,要使用波特率高於115200 的系統才能重新發AT 命令

設置低的波特率,否則無法恢復低波特率了。

AT 命令設置好波特率後,下次上電不需要再設置,掉電可以

保存波特率。

3)更改藍牙名字

發送:AT NAMEname

返回:OKname

參數name:你所要設置的名字,也就是藍牙被搜索到的名字,

20 個字符以內。

例:發送AT NAMEJYOO

返回返回JYOO

參數可以掉電保存,只需設置一次

4)更改藍牙配對密碼

發送:AT PINXXXX

返回:OKsetpin

參數XXXX:所需設置的密碼4 位,只需更改一次,掉電保存。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章