欢迎光临散文网 会员登陆 & 注册

树莓派 3B+ 原生蓝牙与手机通讯(BlueTooth SPP)方法和步骤

2021-07-30 11:20 作者:javaisone  | 我要投稿

本笔记基于树莓派 3B+(同事买的,拿来玩玩的)的原生蓝牙,实现与手机之间的SPP服务的通讯功能,截至本笔记,未发现同类的笔记/文章。本人主要参考了后面的两个链接,经过大半天(严格说不到一周,主要一开始一直使用苹果手机的蓝牙,苹果比较封闭,耽误了太多的时间)的摸索链路上基本OK,草做个笔记以备查阅。


调试的手机也是借同事的 嘿嘿


**主要参考链接:**

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

主要相关的依赖库库,网上的介绍的方法还是比较多,就不记录在此列;另外,树莓派和手机(android)上的调试助手/工具,请自行安装/下载,都比较简单。


下面是本人的详细的操作记录,希望对大家有所帮助。


**启动/增加SPP:**

修改在文件内修改如下:

图1

第二句有错,懒的再截图啦,正确的应该如下:


```

ExecStartPost=/usr/bin/sdptool add SP

```


重启树莓派



**查看蓝牙服务:**

#hciconfig

结果如下:

图2

# Sdptool browse local

**结果如下:**


```

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

**结果如下:**

图3

至此,可以用串口调试工具进行测试,手机上的SPP测试工具也可以通过蓝牙连接树莓派板子了。


首先,树莓派上启动调试串口助手,该工具可以参考其安装方法的笔记。

新打开一个控制台,并做如下操作:

查看虚拟蓝牙串口:

#ls /dev

**结果如下:**

图4

注:在手机和树莓派建立连接后,才能查看到虚拟串口的标识”rfcomm0”,后续用串口调试助手打开上图中红圈里的rfcomm0即可,看后面的详细# xgcom开一个图形界面的调试窗口,如下所示:

图5

配置参数:

点击配置,弹出一个配置参数对话框,在对话框输入树莓派蓝牙虚拟出来的串口,即:


```

/dev/rfcomm0

```


图6

保存,对话框关闭。


**打开串口:**

接上一步,点击”open com“(该按钮功能复用),即可看到最下面的状态栏提示的相关信息。

图7


**数据双向收发:**

树莓派发数据到手机,如上图所示,在发送文本框输入”2222“,输入内容随意。

然后点击”send Data“

此时手机上的助手软件就可以收到树莓派发出的数据啦,手机端内容如下:

图8

注:手机是同事淘汰的ANDROID机,主要苹果手机应用的圈相对封闭,尝试了建立连接,但是一直未成功连接;调试助手是安卓应用市场下的,调试助手里面还带了广告...



同样,手机端发送数据”hello\r\n“,此时树莓派的串口助手截图如下:

图9

手机端发送界面如下所示:

图10


至此,树莓派和手机之家通过蓝牙建立通讯的功能基本完成,都是用的第三方的调试工具,物理链路上打通了,在开发、调试软件时,就可以用第三方的工具来助力排查bug。

首发地址:https://blog.csdn.net/wanyeye/article/details/52909869,截图不显示的话可以到这里浏览。

树莓派 3B+ 原生蓝牙与手机通讯(BlueTooth SPP)方法和步骤的评论 (共 条)

分享到微博请遵守国家法律