樹莓派 3B+ 原生藍牙與手機通訊(BlueTooth SPP)方法和步驟
本筆記基于樹莓派 3B+(同事買的,拿來玩玩的)的原生藍牙,實現(xiàn)與手機之間的SPP服務(wù)的通訊功能,截至本筆記,未發(fā)現(xiàn)同類的筆記/文章。本人主要參考了后面的兩個鏈接,經(jīng)過大半天(嚴格說不到一周,主要一開始一直使用蘋果手機的藍牙,蘋果比較封閉,耽誤了太多的時間)的摸索鏈路上基本OK,草做個筆記以備查閱。
調(diào)試的手機也是借同事的 嘿嘿
**主要參考鏈接:**
https://www.raspberrypi.org/forums/viewtopic.php?p=919420
http://jasiek.me/2014/10/04/bluetooth-console-on-a-raspberry-pi-using-a-usb-adapter.html
主要相關(guān)的依賴庫庫,網(wǎng)上的介紹的方法還是比較多,就不記錄在此列;另外,樹莓派和手機(android)上的調(diào)試助手/工具,請自行安裝/下載,都比較簡單。
下面是本人的詳細的操作記錄,希望對大家有所幫助。
**啟動/增加SPP:**
修改在文件內(nèi)修改如下:

圖1
第二句有錯,懶的再截圖啦,正確的應(yīng)該如下:
```
ExecStartPost=/usr/bin/sdptool add SP
```
重啟樹莓派
**查看藍牙服務(wù):**
#hciconfig
結(jié)果如下:

圖2
# Sdptool browse local
**結(jié)果如下:**
```
Browsing FF:FF:FF:00:00:00 ...
Service RecHandle: 0x10000
Service Class ID List:
? "PnP Information" (0x1200)
Profile Descriptor List:
? "PnP Information" (0x1200)
? ? Version: 0x0103
Browsing FF:FF:FF:00:00:00 ...
Service Search failed: Invalid argument
Service Name: Generic Access Profile
Service Provider: BlueZ
Service RecHandle: 0x10001
Service Class ID List:
? "Generic Access" (0x1800)
Protocol Descriptor List:
? "L2CAP" (0x0100)
? ? PSM: 31
? "ATT" (0x0007)
? ? uint16: 0x0001
? ? uint16: 0x0008
Service Name: Generic Attribute Profile
Service Provider: BlueZ
Service RecHandle: 0x10002
Service Class ID List:
? "Generic Attribute" (0x1801)
Protocol Descriptor List:
? "L2CAP" (0x0100)
? ? PSM: 31
? "ATT" (0x0007)
? ? uint16: 0x0010
? ? uint16: 0x0010
Service Name: AVRCP CT
Service RecHandle: 0x10003
Service Class ID List:
? "AV Remote" (0x110e)
? "AV Remote Controller" (0x110f)
Protocol Descriptor List:
? "L2CAP" (0x0100)
? ? PSM: 23
? "AVCTP" (0x0017)
? ? uint16: 0x0103
Profile Descriptor List:
? "AV Remote" (0x110e)
? ? Version: 0x0105
Service Name: AVRCP TG
Service RecHandle: 0x10004
Service Class ID List:
? "AV Remote Target" (0x110c)
Protocol Descriptor List:
? "L2CAP" (0x0100)
? ? PSM: 23
? "AVCTP" (0x0017)
? ? uint16: 0x0103
Profile Descriptor List:
? "AV Remote" (0x110e)
? ? Version: 0x0104
Service Name: Serial Port
Service Description: COM Port
Service Provider: BlueZ
Service RecHandle: 0x10005
Service Class ID List:
? "Serial Port" (0x1101)
Protocol Descriptor List:
? "L2CAP" (0x0100)
? "RFCOMM" (0x0003)
? ? Channel: 1
Language Base Attr List:
? code_ISO639: 0x656e
? encoding:? ? 0x6a
? base_offset: 0x100
Profile Descriptor List:
? "Serial Port" (0x1101)
? ? Version: 0x0100
Service Name: Serial Port
Service Description: COM Port
Service Provider: BlueZ
Service RecHandle: 0x10006
Service Class ID List:
? "Serial Port" (0x1101)
Protocol Descriptor List:
? "L2CAP" (0x0100)
? "RFCOMM" (0x0003)
? ? Channel: 1
Language Base Attr List:
? code_ISO639: 0x656e
? encoding:? ? 0x6a
? base_offset: 0x100
Profile Descriptor List:
? "Serial Port" (0x1101)
? ? Version: 0x0100
Service Name: Serial Port
Service Description: COM Port
Service Provider: BlueZ
Service RecHandle: 0x10007
Service Class ID List:
? "Serial Port" (0x1101)
Protocol Descriptor List:
? "L2CAP" (0x0100)
? "RFCOMM" (0x0003)
? ? Channel: 1
Language Base Attr List:
? code_ISO639: 0x656e
? encoding:? ? 0x6a
? base_offset: 0x100
Profile Descriptor List:
? "Serial Port" (0x1101)
? ? Version: 0x0100
Service Name: Serial Port
Service Description: COM Port
Service Provider: BlueZ
Service RecHandle: 0x10008
Service Class ID List:
? "Serial Port" (0x1101)
Protocol Descriptor List:
? "L2CAP" (0x0100)
? "RFCOMM" (0x0003)
? ? Channel: 3
Language Base Attr List:
? code_ISO639: 0x656e
? encoding:? ? 0x6a
? base_offset: 0x100
Profile Descriptor List:
? "Serial Port" (0x1101)
? ? Version: 0x0100
```
# rfcomm watch hci0
**結(jié)果如下:**

圖3
至此,可以用串口調(diào)試工具進行測試,手機上的SPP測試工具也可以通過藍牙連接樹莓派板子了。
首先,樹莓派上啟動調(diào)試串口助手,該工具可以參考其安裝方法的筆記。
新打開一個控制臺,并做如下操作:
查看虛擬藍牙串口:
#ls /dev
**結(jié)果如下:**

圖4
注:在手機和樹莓派建立連接后,才能查看到虛擬串口的標識”rfcomm0”,后續(xù)用串口調(diào)試助手打開上圖中紅圈里的rfcomm0即可,看后面的詳細# xgcom開一個圖形界面的調(diào)試窗口,如下所示:

圖5
配置參數(shù):
點擊配置,彈出一個配置參數(shù)對話框,在對話框輸入樹莓派藍牙虛擬出來的串口,即:
```
/dev/rfcomm0
```

圖6
保存,對話框關(guān)閉。
**打開串口:**
接上一步,點擊”open com“(該按鈕功能復(fù)用),即可看到最下面的狀態(tài)欄提示的相關(guān)信息。

圖7
**數(shù)據(jù)雙向收發(fā):**
樹莓派發(fā)數(shù)據(jù)到手機,如上圖所示,在發(fā)送文本框輸入”2222“,輸入內(nèi)容隨意。
然后點擊”send Data“
此時手機上的助手軟件就可以收到樹莓派發(fā)出的數(shù)據(jù)啦,手機端內(nèi)容如下:

圖8
注:手機是同事淘汰的ANDROID機,主要蘋果手機應(yīng)用的圈相對封閉,嘗試了建立連接,但是一直未成功連接;調(diào)試助手是安卓應(yīng)用市場下的,調(diào)試助手里面還帶了廣告...
同樣,手機端發(fā)送數(shù)據(jù)”hello\r\n“,此時樹莓派的串口助手截圖如下:

圖9
手機端發(fā)送界面如下所示:

圖10
至此,樹莓派和手機之家通過藍牙建立通訊的功能基本完成,都是用的第三方的調(diào)試工具,物理鏈路上打通了,在開發(fā)、調(diào)試軟件時,就可以用第三方的工具來助力排查bug。
首發(fā)地址:https://blog.csdn.net/wanyeye/article/details/52909869,截圖不顯示的話可以到這里瀏覽。
樹莓派 3B+ 原生藍牙與手機通訊(BlueTooth SPP)方法和步驟的評論 (共 條)
