一直想做無線傳感器,通過藍牙來接收數(shù)據(jù),無奈因為arduino接收串口數(shù)據(jù)的一些問題,一直擱到現(xiàn)在。因為學(xué)校里給學(xué)生開了選修課,所以手邊有一些nano和mega可以使用,所以就做了用兩個nano加上兩個藍牙模塊來發(fā)射數(shù)據(jù),用mega加兩個藍牙模塊來接收數(shù)據(jù)。因為mega可以同時使用4路串口,所以考慮用mega來作為主控機,用來接收來自傳感器的數(shù)據(jù),每個傳感器加一個nano和藍牙來無線發(fā)射數(shù)據(jù)。
因為是測試,所以在nano中寫了一個簡單的發(fā)射信號的語句。以下四nano中的程序:
————————————————我是分界線——————————————————————
int i=1;
void setup() {
————————————————我是分界線——————————————————————
以下是mega中的程序:
——————————————————我是分界線————————————————————————
String comdata = "";
String shuju="";
String shuju2="";
int i;
void setup()
void loop()
——————————————我是分界線————————————————————
上篇忘記介紹藍牙模塊的設(shè)置了,如果想要利用兩路藍牙來接收數(shù)據(jù),那么這兩路藍牙必須設(shè)置不同的密碼,以下是藍牙模塊的設(shè)置方法,可以將藍牙模塊接到串口模塊上,然后里喲你串口軟件發(fā)指令給藍牙模塊,以下設(shè)置是針對DFrobot的藍牙模塊的,它上面有開關(guān)可以設(shè)置接收命令狀態(tài)。如果不是DFrobot的藍牙模塊,只要將KEY針腳接高電平就是可以接受命令狀態(tài)。將兩個藍牙模塊設(shè)置為主,然后設(shè)置不同的密碼。再將另外兩個設(shè)置為從,設(shè)置對應(yīng)主藍牙的密碼。以下是具體的命令設(shè)置:
在發(fā)送欄中輸入AT(不分大小寫),然后點擊發(fā)送,可看見模塊返回OK,這表示AT指令通訊正常。當(dāng)AT指令設(shè)置完畢后,將2號開關(guān)AT Mode撥到2端退出AT命令模式,重新上電后設(shè)置才生效。
1.AT指令集如下:
指令 | 響應(yīng) | 參數(shù) |
AT | OK | 無 |
2.模塊重啟指令:
指令 | 響應(yīng) | 參數(shù) |
AT+RESET | OK | 無 |
3.設(shè)置和查詢模塊連接模式:
當(dāng)模塊無法被適配器、主機連接時,需配置該參數(shù),配置為AT+CMODE=1。
指令 | 響應(yīng) | 參數(shù) |
AT+CMODE=< Param > | OK | Param:
0 —— 指定藍牙地址連接模式 (指定藍牙地址由綁定指令設(shè)置) 1 —— 任意藍牙地址連接模式 (不受綁定指令設(shè)置地址的約束) 默認(rèn)連接模式:0 |
AT+CMODE? | +CMODE: < Param > OK |
4.設(shè)置和查詢模塊角色:
當(dāng)模塊無法被適配器、主機搜索到時,需配置該參數(shù),配置為從角色。
模塊角色說明:
Slave(從角色) ——被動連接,可以和任意藍牙適配器配對使用;
Master (主角色)——查詢周圍從設(shè)備,并主動發(fā)起連接,從而建立主、從藍牙設(shè)備間的透明數(shù)據(jù)傳輸通道。
Slave-Loop(回環(huán)角色) ———被動連接,接收遠程藍牙主設(shè)備數(shù)據(jù)并將數(shù)據(jù)原樣返回給遠程藍牙主設(shè)備;
5.設(shè)置和查詢配對碼:
6.設(shè)置和查詢串口參數(shù):
舉例:設(shè)置串口波特率:115200,1位停止位,無校驗
AT+ UART=115200,0,0\r\n
OK
AT+ UART?
+UART:115200,0,0
OK
注:在應(yīng)用中,選擇1位停止位,無校驗。