1、背景
? ? ? ? 目前很多通信方式都需要外附手柄,控制器,接收器,體積比較大,用起來(lái)不夠方便。那么,對(duì)于距離要求不高的控制小項(xiàng)目,藍(lán)牙通信一定是不二之選。
2、需要預(yù)備了解的內(nèi)容
? ? ? ? 基礎(chǔ)的編程思想和基礎(chǔ)的C語(yǔ)言或Python語(yǔ)言知識(shí),單片機(jī)原理的基礎(chǔ)知識(shí)。
3、藍(lán)牙模塊與arduino nano的連線
? ? ? ? 一般藍(lán)牙模塊需要連接Vcc,GND,TXD,RXD四個(gè)引腳。那么連接方式為:
藍(lán)牙模塊:Vcc? ? ? ? ? ? ? ? ? ? ?arduino:5V
? ? ? ? ? ? ? ? ? GND? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?GND
? ? ? ? ? ? ? ? ? TXD? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? RX(0)
? ? ? ? ? ? ? ? ? RXD? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TX(1)
? ? ? ? 藍(lán)牙模塊與arduino nano 的連接按照以上對(duì)應(yīng)關(guān)系相對(duì)應(yīng)連接即可。
4、藍(lán)牙模塊與手機(jī)藍(lán)牙的連接
? ? ? ? 首先,連接好電路后,給開(kāi)發(fā)板供電,可以看到藍(lán)牙模塊的指示燈在閃爍(表示沒(méi)有連接)。
? ? ? ? 在這里,老牛也進(jìn)行了簡(jiǎn)單的嘗試,發(fā)現(xiàn)直接通過(guò)手機(jī)藍(lán)牙是無(wú)法進(jìn)行串口通信的,也是連接失敗了。那怎么辦嫩,就建議小伙伴們?nèi)ハ螺d一個(gè)支持藍(lán)牙通信的小軟件,經(jīng)過(guò)嘗試,也是成功連接上了,而且效果也比較好。
? ? ? ? 下載好軟件之后,打開(kāi)手機(jī)藍(lán)牙,打開(kāi)藍(lán)牙串口軟件,檢測(cè)藍(lán)牙信號(hào),找到藍(lán)牙模塊的信號(hào),點(diǎn)擊配對(duì),一般密碼是:0000或者1234,大家可以自己嘗試一下,查一下也行。連接成功后,藍(lán)牙模塊指示燈停止閃爍,保持常亮狀態(tài)。這個(gè)時(shí)候就連接上了。
5、arduino nano內(nèi)部程序的撰寫(xiě)
? ? ? ? 首先,定義一個(gè)變量(LanYa(這里老牛定義的是char型))用來(lái)存放我們所發(fā)送的數(shù)據(jù)。
然后對(duì)串口進(jìn)行初始化,初始化波特率為9600,LED燈復(fù)用引腳為輸出模式。至此就基本完成了,廢話不多說(shuō),直接上程序,注釋詳細(xì),小伙伴們自己看就行。
/*****************************************
This program just belong to Niu Lao.
Don't spread it on website casually.
Auther: Niu Lao
Function:1、實(shí)現(xiàn)手機(jī)藍(lán)牙與arduino nano通信
2、實(shí)現(xiàn)手機(jī)藍(lán)牙連接藍(lán)牙模塊與arduino nano實(shí)現(xiàn)數(shù)據(jù)收發(fā)
3、實(shí)現(xiàn)LED燈的亮滅控制
******************************************/
char LanYa;
void setup()
{
Serial.begin(9600); //藍(lán)牙模塊默認(rèn)波特率為9600(有的小伙伴的模塊可能有型號(hào)差別,如果沒(méi)有收到消息,建議試一試115200,38400等等)
pinMode(13, OUTPUT);//板載LED燈引腳
}
void loop()
{
LanYa = Serial.read();//讀取串口緩沖區(qū)的數(shù)據(jù)
if ( LanYa == 'l') //當(dāng)接收到的數(shù)據(jù)為n時(shí)
{
digitalWrite(13, HIGH); //點(diǎn)亮LED燈
Serial.println("LED ON!"); //串口輸出“LED ON!”(懵懂小新記得打開(kāi)串口監(jiān)視器哦!(記得串口波特率與初始化波特率也要一致哦?。? }
else if (LanYa == 'm') {//當(dāng)接收到的數(shù)據(jù)為f時(shí)
digitalWrite(13, LOW);//熄滅LED燈
Serial.println("LED OFF!");//串口輸出“LED OFF!”
}
}
6、總結(jié)
? ? ? ? 使用藍(lán)牙模塊可以使整個(gè)硬件系統(tǒng)的控制變得簡(jiǎn)化,在老牛沒(méi)有使用藍(lán)牙模塊之前,是一直在使用Ps2手柄進(jìn)行通信控制的(老牛之前已經(jīng)寫(xiě)過(guò)Ps2手柄與arduino的通訊實(shí)例,有需要的小伙伴可以自行到老牛的主頁(yè)去找)。
? ? ? ? 整個(gè)過(guò)程也只用到了串口初始化函數(shù),實(shí)現(xiàn)通信比較簡(jiǎn)單,主要是幫助新手小白理解,為大家創(chuàng)造例程模板,方便大家開(kāi)發(fā)。
????????最后,藍(lán)牙模塊雖然方便,四根線一塊板就可以通信了,但是控制的距離比較受限制,想要遠(yuǎn)距離的控制的小伙伴可以參考Ps2手柄通信和航模遙控器控制。老牛也會(huì)繼續(xù)為大家開(kāi)發(fā)模塊例程。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-405260.html
? ? ? ? 新手小白記得關(guān)注老牛哦!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-405260.html
到了這里,關(guān)于arduino nano 簡(jiǎn)單實(shí)現(xiàn)藍(lán)牙模塊與手機(jī)進(jìn)行通信的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!