arduino蓝牙通讯代码_arduino蓝牙通讯
玩硬件和軟件最大的不同,就是需要零件設(shè)備。這次的目標(biāo)是要實(shí)現(xiàn)arduino通過藍(lán)牙和PC通訊,arduino mega 1280必須要連接一個(gè)藍(lán)牙無線串口設(shè)備才能實(shí)現(xiàn)。所以要添加下面的東西:
1.藍(lán)牙無線串口模塊。
2.面板的連接線,這個(gè)便宜,8塊就長的短的,花花綠綠一大把。
藍(lán)牙串口模塊有4個(gè)接線口,分別是5v, GND, TX, RX,非常簡單,對(duì)應(yīng)電源,以及收發(fā)端。原理上,這個(gè)模塊相當(dāng)于一個(gè)串口的中轉(zhuǎn)站,一端和PC間通過藍(lán)牙協(xié)議無線連接PC的藍(lán)牙串口,另一端和arduino的串口設(shè)備UART通過連線直接相連,這樣,就相當(dāng)于在PC和arduino之間搭建了一個(gè)通訊橋梁,使兩者能夠通過串口設(shè)備進(jìn)行通訊。那么,USB線呢?我們寫好程序通過USB線把代碼上載后,USB線就可以去掉了,以后的通訊,直接通過無線藍(lán)牙就能完成。當(dāng)然,這個(gè)通訊是指PC的程序和arduino的程序之間,要想重新上載新的程序,還得通過USB連線來完成。
接下來開始連線。前面有說過,arduino mega 1280有4個(gè)UART,也就是4個(gè)串口,接口0,1;14,15;16,17;18,19兩兩對(duì)應(yīng)于這4個(gè)串口的收,發(fā)端。另外,板上還有3.3v, 5v, GND,和Vin接口,提供各種電壓的輸出,其中,Vin代表的是arduino的輸入電壓。不過要注意,輸出的負(fù)載電流都不能超過50mA,否則就有燒掉的危險(xiǎn)。連線如下圖:
紅線連接arduino的5v和藍(lán)牙串口模塊的5v;黑線連接arduino和藍(lán)牙串口模塊的GND;黃線連接arduino的Rx和藍(lán)牙模塊的Tx;綠線連接arduino的Tx和藍(lán)牙模塊的Rx。Ok,大功告成。
接下來就是寫程序了。為了測試通訊,PC通過無線連接向arduino發(fā)送一個(gè)字符't',arduino收到后閃一下燈,并向PC反饋一個(gè)字符串"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");
}
}
相對(duì)上一個(gè)程序,這里面有些新的東西,就是串口對(duì)象Serial,這個(gè)對(duì)象對(duì)應(yīng)于0,1接口的串口設(shè)備;當(dāng)然,其他3個(gè)串口也有對(duì)應(yīng)的串口對(duì)象,名字分別為Serial1, Serial2, Serial3。編程參考可以看這個(gè)鏈接:Serial.begin(波特率),用于初始化串口并指定通訊的波特率;Serial.read()是從串口的接收緩沖區(qū)中讀出一個(gè)字符,如果沒有,返回-1;Serial.println(字符串)用于輸出一個(gè)帶回車符的字符串。需要提一下的是,arduino的第一個(gè)串口和FTDI USB-to-TTL串口芯片相接,也就是說這個(gè)串口設(shè)備可以通過USB線連接PC。
程序?qū)懲?#xff0c;就可以上傳運(yùn)行了。藍(lán)牙模塊背面有2個(gè)燈,分別是power和state,通電后power就亮了,state燈卻一直閃爍,這是因?yàn)樗{(lán)牙還沒有連接。PC端這時(shí)需打開藍(lán)牙管理,然后搜尋新的設(shè)備,會(huì)找到一個(gè)叫l(wèi)invor的藍(lán)牙設(shè)備。打開,這個(gè)設(shè)備只有一個(gè)藍(lán)牙串口。點(diǎn)右鍵連接,跳出配對(duì)密碼輸入框,輸入密碼"1234"即可。連接完成后,可以看到藍(lán)牙模塊上的state燈長亮了,這表明連接正常,就可以進(jìn)行通訊了。
既然是通訊,PC端也要有個(gè)基于串口的通訊程序。除了使用arduino開發(fā)環(huán)境自帶的Serial Monitor,自己也可以找一個(gè)流行的。咱是懶人,就用開發(fā)環(huán)境自帶的好了,反正應(yīng)用很簡單,這個(gè)程序也夠用了。點(diǎn)擊開發(fā)環(huán)境最右面Serial Monitor那個(gè)圖標(biāo),就跳出下面這個(gè)界面。不過要注意,在TOOL菜單下的COM選擇,應(yīng)該是對(duì)應(yīng)藍(lán)牙串口所用的那個(gè)串口編號(hào),而不是USB的,否則,呵呵,就不是藍(lán)牙無線通訊而是USB串口通訊了。
最后補(bǔ)充一下,藍(lán)牙模塊的信息是可以通過AT命令來進(jìn)行改動(dòng)的,缺省情況下,藍(lán)牙設(shè)備名是"linvor",通訊波特率為9600,配對(duì)密碼為"1234"。具體說明如下:
通過串口與電腦連接,再通過串口調(diào)試助手給模塊發(fā)送命令可以配置模塊的一些參數(shù),
具體的配置方式如下:
1)、測試通訊:發(fā)送AT命令,返回ok
2) 更改波特率
模塊默認(rèn)的波特率是9600
發(fā)送AT BAUD1返回OK1200
發(fā)送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的波特率,因?yàn)榇蠖嘞到y(tǒng)都沒有提供高
于115200的波特率,PC機(jī)也是如此,波特率設(shè)置超過115200以后,
電腦無法使用,要使用波特率高于115200的系統(tǒng)才能重新發(fā)AT命令
設(shè)置低的波特率,否則無法恢復(fù)低波特率了。
用AT命令設(shè)置好波特率后,下次上電不需要再設(shè)置,掉電可以
保存波特率。
3)更改藍(lán)牙名字
發(fā)送:AT NAMEname
返回:OKname
參數(shù)name:你所要設(shè)置的名字,也就是藍(lán)牙被搜索到的名字,
20個(gè)字符以內(nèi)。
例:發(fā)送AT NAMEJYOO
返回返回JYOO
參數(shù)可以掉電保存,只需設(shè)置一次
4)更改藍(lán)牙配對(duì)密碼
發(fā)送:AT PINXXXX
返回:OKsetpin
參數(shù)XXXX:所需設(shè)置的密碼4位,只需更改一次,掉電保存。
總結(jié)
以上是生活随笔為你收集整理的arduino蓝牙通讯代码_arduino蓝牙通讯的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 河北工业大学c语言寻宝游戏,计算机技术基
- 下一篇: 老鼠的旅行