【全志T113-S3_100ask】12-2 Linux蓝牙通信实战(BLE初窥)

这篇具有很好参考价值的文章主要介绍了【全志T113-S3_100ask】12-2 Linux蓝牙通信实战(BLE初窥)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

介绍完BLE之后,下面简单操作蓝牙

(一)初始化蓝牙

# 复位蓝牙
echo 0 > /sys/class/rfkill/rfkill0/state
sleep 1
echo 1 > /sys/class/rfkill/rfkill0/state
sleep 1

# 绑定蓝牙设备
hciattach -n ttyS1 xradio > /dev/null 2>&1 &
sleep 8

# 启用蓝牙设备
hciconfig hci0 up
hciconfig hci0 piscan

(二)Linux下蓝牙工具(bluez 工具集)

  • hcitool、bluetoothctl等工具,可以进行BLE设备的扫描、连接、配对、广播等操作
  • hcitool 可以发送HCI command,设置BLE的广播数据
  • bluetoothctl 可以新增蓝牙服务,返回回调等操作
  • sdptool 查看蓝牙信息和提供的服务
  • hciconfig 查看蓝牙信息
  • l2ping 测试蓝牙的连通性
  • gatttool :可以在GATT层面,完成GATT profile的连接、service attribute的读写等操作【更多】

(三)蓝牙扫描

hcitool scan 	#扫描经典蓝牙

hcitool lescan	 #扫描BL低功耗蓝牙

(四)使用Bluetoothctl创建蓝牙服务

1、先启动蓝牙,进入可搜索状态

# 复位蓝牙
echo 0 > /sys/class/rfkill/rfkill0/state
sleep 1
echo 1 > /sys/class/rfkill/rfkill0/state
sleep 1

# 绑定设备
hciattach -n ttyS1 xradio > /dev/null 2>&1 &
sleep 8

# 启用蓝牙设备
hciconfig hci0 up
hciconfig hci0 piscan

# 免认证
hciconfig hci0 auth
# 广播
hciconfig hci0 leadv

2、进入 bluetoothctl 交互界面

# bluetoothctl
Agent registered
[CHG] Controller 22:92:C9:8C:04:EA Pairable: yes
[bluetooth]#

3、手机使用BLE调试助手连接蓝牙,如下图所示
【全志T113-S3_100ask】12-2 Linux蓝牙通信实战(BLE初窥)

4、连接后,bluetoothctl会发生变化,此时已经进入交互界面

【全志T113-S3_100ask】12-2 Linux蓝牙通信实战(BLE初窥)

4、但是我们没有其他服务,只能做一些简单的操作,比如读取,因为现有的服务是 bluetoothctl 提供的

【全志T113-S3_100ask】12-2 Linux蓝牙通信实战(BLE初窥)

5、下面我们添加自己的服务
5.1 进入菜单

[6B-3C-BF-AD-2A-A8]# menu gatt
Menu gatt:
Available commands:
-------------------
list-attributes [dev/local]                       List attributes
select-attribute <attribute/UUID>                 Select attribute
attribute-info [attribute/UUID]                   Select attribute
read [offset]                                     Read attribute value
write <data=xx xx ...> [offset] [type]            Write attribute value
acquire-write                                     Acquire Write file descriptor
release-write                                     Release Write file descriptor
....

5.2 添加自己的service和characteristic

[bluetoothctl] register-service 0xFFFF # (Choose yes when asked if primary service)
[bluetoothctl] register-characteristic 0xAAAA read       # (Select a value of 1 when prompted)# 输入的值是初始值,每次读取,会加一
[bluetoothctl] register-characteristic 0xBBBB read,write # (Select a value of 0 when prompted)
[bluetoothctl] register-characteristic 0xCCCC read       # (Select a value of 2 when prompted)
[bluetoothctl] register-application # (This commits the services/characteristics and registers the profile)
[bluetoothctl] back
[bluetoothctl] advertise on 

通过 show 操作可以看到刚才添加的0xffff 服务
【全志T113-S3_100ask】12-2 Linux蓝牙通信实战(BLE初窥)

5.3 手机重新连接蓝牙
服务从 3 项变为 4 项,第 4 项即为我们刚才添加的服务。

【全志T113-S3_100ask】12-2 Linux蓝牙通信实战(BLE初窥)

5.4 读写操作
在有上传按钮的服务上传数据

【全志T113-S3_100ask】12-2 Linux蓝牙通信实战(BLE初窥) 此时收到:

【全志T113-S3_100ask】12-2 Linux蓝牙通信实战(BLE初窥)
读操作的话,直接读取就好了,值为刚才我们设置的值。
至此测试完毕

(五)其他操作

1、启动/关闭/重启蓝牙

hciconfig hci0 up  		#启动蓝牙设备
hciconfig hci0 off 		#关闭蓝牙设备
hciconfig hci0 reset 	#重启蓝牙设备

2、测试蓝牙是否可达 l2ping

l2ping -i hci0 -c 4 21:12:A3:C4:50:66

3、查看功能与服务

sdptool browse local    # local可以改成其它蓝牙的mac地址

4、查看蓝牙的状态和信息

 hciconfig -a 

5、查看蓝牙设备

hcitool dev
Devices:
        hci0    22:22:2A:B0:9C:3C

6、开启/关闭蓝牙广播

hciconfig hci0 leadv / noleadv

7、查看已经连接的BLE设备

(此时调试助手已经连接)

hcitool -i hci0 con
Connections:
        > LE 60:AB:D1:B5:A6:FB handle 0 state 1 lm PERIPHERAL

8、 蓝牙认证打开/关闭

直接体现在进行蓝牙连接时,是否输入连接PIN密码,用于PIN配对

hciconfig hci0 auth/noauth

9、 查看/改变蓝牙主从状态

hciconfig hci0 lm master、hciconfig hci0 lm slave

10、查看/设置蓝牙名称

hciconfig hci0 name 、hciconfig hci0 name BLXX

11、 查看支持的链路层状态

hciconfig hci0 lestates

12、列出低功耗蓝牙的服务

bluetoothctl --monitor gatt.list-attributes

其他操作自己慢慢摸索哈,我一个人只能啃成这样了,如有写得不对的地方大佬指正。文章来源地址https://www.toymoban.com/news/detail-401830.html

(六)入门推荐阅读

  • 【蓝牙】蓝牙,调试 hcitool与gatttool实例
  • Android蓝牙开发—经典蓝牙和BLE(低功耗)蓝牙的区别

到了这里,关于【全志T113-S3_100ask】12-2 Linux蓝牙通信实战(BLE初窥)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ESP32+idf开发—蓝牙通信入门之ble数据收发(notify)

    esp32作为蓝牙从机,与手机端蓝牙调试助手(如LightBlue)主机进行通信,实现数据的收发功能: 1、收:蓝牙调试助手发送数据控制esp32开发板led灯的亮灭; 2、发(notify):esp32将传感器数据(如温度数据)主动每隔2s发送给蓝牙调试助手,实现通知(notify)功能; ​ 1、BLE(

    2024年02月08日
    浏览(65)
  • 物联网开发笔记(53)- 使用Micropython开发ESP32开发板之蓝牙BLE通信

    一、目的         这一节我们学习如何使用我们的ESP32开发板通过蓝牙和手机进行通信。 二、环境         ESP32 + 手机(笔者用的小米10) + Thonny IDE 三、蓝牙介绍         这个知识大家自行百度吧,这里不再赘述什么是蓝牙和蓝牙的历史,以及相关的专业知识。 四、

    2024年02月06日
    浏览(53)
  • 100天精通Python(实用脚本篇)——第113天:基于Tesseract-OCR实现OCR图片文字识别实战

    🔥🔥 本文已收录于 《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从0到100的不断进阶深入,后续还有实战项目,轻松应对面试,专栏订阅地址:https://blog.csdn.net/yuan2019035055/category_11466020.html 优点 : 订阅限时9.9付费专

    2024年01月22日
    浏览(50)
  • 全志 Tina Linux LCD显示屏调试指南 支持MIPI DSI RGB LVDS I8080 SPI等接口,开发板支持百问网T113 D1-H哪吒 DongshanPI-D1s V853

    编写目的 本文档将介绍sunxi 平台Display Engine 模块中LCD 的调试方法。 LCD 调试方法,调试手段。 LCD 驱动编写。 lcd0 节点下各个属性的解释。 典型LCD 接口配置。 适用范围:sunxi 平台DE1.0/DE2.0 中LCD 屏幕参数设置。 表2-1: LCD 相关术语 术语 解释说明 SUNXI Allwinner 一系列SoC 硬件平台

    2024年02月02日
    浏览(45)
  • 全志F1C100s主线linux入坑记录 (4)GT911触摸移植

    百度网站 在 drivers/input/touchscreen 路径下添加gt911.c文件 修改Makefile 添加gt911.c的文件编译 drivers/input/touchscreen/Makefile 添加obj-y += gt911.o 添加I2C属性定义 到soc节点下 添加I2C引脚定义 到pio节点下 修改LCD的引脚定义,因为有两个脚被I2C占用了 添加头文件 添加gt911设备树配置 编译文

    2023年04月14日
    浏览(83)
  • 全志F1C100s主线linux入坑记录 (7)GBA模拟器移植

    百度网站 gpsp源码 解压文件 gpsp需要SDL环境我们先在bulidroot中添加SDL包 我们全选SDL路径下的所有选项 打开之前解压的 gpsp 文件夹配置Makefile 添加 buildroot 的 gcc 编译器 告知 SDL.h 位置以及 SDL 元件库位置 其实很简单在buildroot文件夹搜索 sdl-config 位置在哪里,然后在Makfike里替换

    2024年02月16日
    浏览(30)
  • 全志F1C100s主线linux入坑记录 (6)音视频播放(视频播放软解)

    百度网站 (1)下载安装声卡补丁 参考挖坑网大神提供的声音驱动以及声音卡驱动补丁文件下载文件下载 全志F1C100s声卡补丁 解压文件打上补丁 (2)配置声卡 修改设备树文件添加声卡节点 内核配置 (3)linux内核编译烧录 可以看到声卡已经挂载了 (4)使用声卡 安装alsa-u

    2024年02月07日
    浏览(52)
  • Android蓝牙BLE开发

    最近正在研究Android的蓝牙BLE开发学习,以下是自己做的个人总结 首先得说明什么是低功耗蓝牙BLE,BLE的全称为Bluetooth low energy(或称Blooth LE,BLE),从英文全称便可以知晓其是一种低功耗的蓝牙技术,是蓝牙技术联盟设计和销售的一种个人局域网技术,旨在用于医疗保健、运

    2023年04月09日
    浏览(42)
  • 蓝牙协议栈&BLE

    这阵子用到蓝牙比较多,想写一个专栏专门讲解蓝牙协议及其应用,本篇是第一篇文章,讲解低功耗蓝牙和蓝牙协议栈。 参考网上各大神文章,及瑞萨的文章,参考GPT,并且加入了一些本人的理解。 图片部分源自网络,侵删。 有纰漏请指出,转载请说明。 学习交流请发邮件

    2024年02月09日
    浏览(44)
  • 蓝牙BLE学习-安全

    蓝牙标准规定了5种基本的安全服务 身份验证:根据通信设备的蓝牙地址验证其身份。蓝牙不提供本地用户身份验证。 保密性:确保只有授权的设备才能访问和查看传输的数据,防止窃听造成的信息泄露。 授权(Authorization):在允许设备使用某项服务之前,确保该设备已被授权,从

    2024年02月19日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包