android 蓝牙 发送字符串,Android向TLSR8266蓝牙mesh发送指令
硬件環(huán)境:Mac,ArduinoUNO板,JDY-10M模塊(核心為TLSR8266)*2。
軟件環(huán)境:arduino-1.8.12-macosx,AndroidStudio。
需求:將兩個TLSR8266組成藍牙m(xù)esh網(wǎng)絡,通過安卓app向其發(fā)送指令,間接實現(xiàn)遠程控制led燈的開關(guān)。
TLSR8266初始化
根據(jù)商家提供的資料看,當兩個模塊的NAME和NETID相同且MAC不同時,它們就在同一個mesh網(wǎng)絡內(nèi)。所以先設置這3個參數(shù)。
首先根據(jù)JDY-10M的相關(guān)引腳和ArduinoUNO板連接,通過串口發(fā)送AT指令設置藍牙芯片。如下圖連接,圖示也是本例測試的連接方式,每個芯片控制一個led燈。
分別連接兩個芯片,使用ArduinoIDE的串口
1).發(fā)送“AT+NAMEmeshok”將兩個芯片的NAME 都 設置為“meshok”,
2).發(fā)送“AT+NETID202001170257”將兩個芯片的NETID 都 設置為“202001170257”,NETID長度為12位,字母數(shù)字均可。
3).連接芯片1,發(fā)送“AT+MACAA”將其MAC地址的最后一字節(jié)設為“AA”,兩個芯片的其它字節(jié)如果不相同則可以忽略。
.連接芯片2,發(fā)送“AT+MACBB”將其MAC地址的最后一字節(jié)設為“BB”,
4).設置完三個參數(shù),須要發(fā)送“AT+REST”重啟芯片。
這一步操作可以參考 http://www.gaohaiyan.com/2525.html 。
安卓控制mesh
兩個模塊都通電,此時即在同一mesh網(wǎng)絡內(nèi)了。連接某個藍牙,既可以發(fā)送mesh指令。
注意本例,JDY-10M模塊的6個針腳不足以能驗證mesh功能。須要手動將核心板的OUT口引出接一個LED。參考前面2張圖片。通過其它口測試也是可以的,具體可以參考相關(guān)文檔,TLSR8266文檔對專業(yè)人士來講很容易閱讀,但新手可能就需要此文這種范例做個引導。文檔在文末提供下載鏈接,也可以到某寶搜關(guān)鍵字查看商品詳情頁,很多商家都提供網(wǎng)盤下載。
安卓上藍牙的操作參考 http://www.gaohaiyan.com/2554.html 。這里只貼出部分不同的代碼。
首先,指令為字符串,格式為16進制表示的,須要轉(zhuǎn)為字節(jié)數(shù)組發(fā)送:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* tlsr8266接收16進制的字符串指令
* args cmd 16進制的字符串指令,如FBFFE7F000
*/
publicstaticbyte[]hexStringToByteArray(Stringcmd){
if(cmd==null||cmd.equals("")){
returnnull;
}
cmd=cmd.toUpperCase();
intlen=cmd.length();
byte[]bytes=newbyte[len/2];
for(inti=0;i
bytes[i/2]=(byte)((Character.digit(cmd.charAt(i),16)<<4)+Character.digit(cmd.charAt(i+1),16));
}
returnbytes;
}
然后,就是各種指令:
Java
1
2
3
4
5
6
7
8
9
10
11
/**
* 向藍牙模塊發(fā)消息
*
* @param listener
* @param msg
*/
publicvoidsendMsgToBlueTooth(OnCharacteristicWritedListenerlistener,Stringmsg){
onCharacteristicWritedListener=listener;
bluetoothHandlerCharacteristic.setValue(hexStringToByteArray(msg));
currentBluetoothGatt.writeCharacteristic(bluetoothHandlerCharacteristic);// 回調(diào)BluetoothGattCallback的onCharacteristicWrite方法
}
幾個簡單指令說明:
“FBFFE7F000”表示操作mesh中全部的芯片,關(guān)閉全部的IO口,此時全部的led燈關(guān)閉;
“FBFFE7FFFF”表示操作mesh中全部的芯片,打開全部的IO口,此時全部的led燈點亮。
“FBAAE7F000”表示操作mesh中,MAC最后一字節(jié)為AA的芯片,關(guān)閉其全部的IO口;
“FBAAE7FFFF”表示操作mesh中,MAC最后一字節(jié)為AA的芯片,打開其全部的IO口。
“FBAAE7F101”表示操作mesh中,MAC最后一字節(jié)為AA的芯片,打開其OUT1口,這樣操作只有OUT1到OUT4,具體看文檔。
“FBAAE7F100”表示操作mesh中,MAC最后一字節(jié)為AA的芯片,關(guān)閉其OUT1口,這樣操作只有OUT1到OUT4,具體看文檔。
無論app藍牙連接是芯片1(AA)還是芯片2(BB),已連接芯片會將指令無差別廣播到mesh網(wǎng)絡,每個芯片收到后根據(jù)自身屬性匹配;FBFFE7F000和FBFFE7FFFF指令則都響應。
芯片文檔:https://download.csdn.net/download/Vigiles/12332754
app代碼:https://gitee.com/vigiles/BluetoothMesh
Arduino端參考代碼
Arduino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include
// 10進制數(shù)字轉(zhuǎn)16進制表示的字符
StringtenToHex(intn){
if(n==0){
return"00";//n為0
}
Stringresult="";
char_16[]={
'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
};
constintradix=16;
while(n){
inti=n%radix;// 余數(shù)
result=_16[i]+result;// 將余數(shù)對應的十六進制數(shù)字加入結(jié)果
n/=radix;// 除以16獲得商,最為下一輪的被除數(shù)
}
if(result.length()<2){
result='0'+result;//不足兩位補零
}
returnresult;
}
// (參數(shù)pin1-Arduino的RXD,參數(shù)pin2-Arduino的TXD)
SoftwareSerialBT(7,6);// 創(chuàng)建藍牙模塊控制對象。第一個pin接模塊的TX腳,第二個接藍牙的RX腳
Stringstring="";
voidsetup(){
Serial.begin(115200);
Serial.println("Arduino好了");
BT.begin(115200);
Serial.println("Bluetooth好了");
}
voidloop(){
string="";
if(Serial.available()){
while(Serial.available()){
chardata=Serial.read();
delay(5);
//BT.write(data); // 如果向esr8266寫AT無反應,注釋此行
string+=data;
}
BT.println(string);// 如果向esr8266寫AT無反應,打開此行
Serial.println("Arduino:"+string);
}
string="";
if(BT.available()){
while(BT.available()){
chardata=BT.read();// 查看Android發(fā)來的指令信息,數(shù)據(jù)類型使用int
delay(5);
//string += tenToHex(data);??// 查看Android發(fā)來的指令信息打開此行
string+=data;// 查看Android發(fā)來的指令信息注釋此行
}
Serial.println("Bluetooth:"+string);
}
}
-end
承接App定制、企業(yè)web站點、辦公系統(tǒng)軟件 設計開發(fā),外包項目,畢設
總結(jié)
以上是生活随笔為你收集整理的android 蓝牙 发送字符串,Android向TLSR8266蓝牙mesh发送指令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 给cad文件加密的软件,CAD文件加密软
- 下一篇: 萨默尔机器人_助力产业发展 西安市人工智