玩硬件和軟件最大的不同,就是需要零件設備。這次的目標是要實現arduino通過藍牙和PC通訊,arduino mega 1280必須要連接一個藍牙無線串口設備才能實現。所以要添加下面的東西:
1. 藍牙無線串口模塊。
2. 面板的連接線,這個便宜,8塊就長的短的,花花綠綠一大把。
藍牙串口模塊有4個接線口,分別是 5v, GND, TX, RX,非常簡單,對應電源,以及收發端。原理上,這個模塊相當於一個串口的中轉站,一端和PC間通過藍牙協議無線連接PC的藍牙串口,另一端和arduino的串口設備UART通過連線直接相連,這樣,就相當於在PC和arduino之間搭建了一個通訊橋樑,使兩者能夠通過串口設備進行通訊。那麼,USB線呢?我們寫好程序通過USB線把代碼上載後,USB線就可以去掉了,以後的通訊,直接通過無線藍牙就能完成。當然,這個通訊是指PC的程序和arduino的程序之間,要想重新上載新的程序,還得通過USB連線來完成。
接下來開始連線。前面有說過,arduino mega 1280有4個UART,也就是4個串口,接口0,1;14,15;16,17;18,19兩兩對應於這4個串口的收,發端。另外,板上還有3.3v, 5v, GND,和Vin接口,提供各種電壓的輸出,其中,Vin代表的是arduino的輸入電壓。不過要注意,輸出的負載電流都不能超過50mA,否則就有燒掉的危險。連線如下圖:
紅線連接arduino的5v和藍牙串口模塊的5v;黑線連接arduino和藍牙串口模塊的GND;黃線連接arduino的Rx和藍牙模塊的Tx;綠線連接arduino的Tx和藍牙模塊的Rx。Ok,大功告成。
接下來就是寫程序了。爲了測試通訊,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,這個對象對應於0,1接口的串口設備;當然,其他3個串口也有對應的串口對象,名字分別爲Serial1, Serial2, Serial3。編程參考可以看這個鏈接:http://arduino.cc/en/Reference/Serial。這裏使用的對象接口函數很簡單,Serial.begin(波特率),用於初始化串口並指定通訊的波特率;Serial.read()是從串口的接收緩衝區中讀出一個字符,如果沒有,返回-1;Serial.println(字符串)用於輸出一個帶回車符的字符串。需要提一下的是,arduino的第一個串口和FTDI USB-to-TTL串口芯片相接,也就是說這個串口設備可以通過USB線連接PC。
程序寫完,就可以上傳運行了。藍牙模塊背面有2個燈,分別是power和state,通電後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 位,只需更改一次,掉電保存。