当前位置: 首页 > news >正文

瑞芯微(EASY EAI)RV1126B 蓝牙使用

1. 蓝牙简介

在蓝牙协议栈中,有两种协议用作蓝牙数据传输,它们分别是:SPP(经典蓝牙串口协议)和BLE(低功耗蓝牙协议)。

单模蓝牙模组:仅支持SPP或BLE的其中一种。

双模蓝牙模组:既支持SPP,同时又支持BLE。

而EASY-EAI-Nano-TB采用的蓝牙模组为DB37,它是【仅支持BLE协议】的【单模】蓝牙模组。

1.1 bluez

Bluez作为当前最成熟的开源蓝牙协议栈,它是一个基于GNU General Public License (GPL)发布的开源项目,已成为linux官方的蓝牙协议栈(从Linux2.4.6开始便成为Linux 内核的一部分),在Linux的各大发行版中已经得到了广泛的应用。

可以这么理解:如何在Linux上使用蓝牙?=如何使用bluez?

Bluez具体就是一套Linux官方支持的开源的蓝牙协议栈处理工具集,具体包含了以下几个工具:bccmd、bluemoon、bluetoothctlbluetoothd、btattach、btmon、ciptool、hciattach、hciconfig、hcidump、hcitool、hex2hcd、l2ping、l2test、mpris-proxy、rctest、rfcomm、sdptool。

1.2 前期准备

首先安装bluez。

apt-get install bluez

确认bluez已经成功安装:

bluetoothctl -v

能够如下输出版本号,说明bluez已经成功安装。

利用hciconfig工具可以确认蓝牙设备已可以正常工作。

hciconfig -a

2. bluetooth工具

hci*系列的工具一般用于直接操作蓝牙协议栈的HCI层,在新版的bluez工具集里逐渐不维护。而主流用于操作蓝牙设备的是bluetooth工具:bluetoothd和bluetoothctl。

2.1 bluetoothd

是一个用于管理蓝牙驱动的【应用层】服务,一般把它启动起来就行。可以通过ps命令查看它是否已在后台启用:

sudo ps -ef | grep -i bluetoothd

在ubuntu系统中,不需要手动对此进程进行启停。而是通过systemctl服务对bluetoothd进行管理,以下是关于bluetoothd服务启/停和状态查看的命令:

sudo systemctl status bluetooth.service ##查看bluetoothd服务状态 sudo systemctl start bluetooth.service ##启动bluetoothd服务,状态重启后不会保存 sudo systemctl stop bluetooth.service ##停止bluetoothd服务,状态重启后不会保存 sudo systemctl enable bluetooth.service ##使能服务,重启设备后bluetoothd自动启动 sudo systemctl disable bluetooth.service ##禁能服务,重启设备后bluetoothd不会启动

2.2 bluetoothctl

一个通过D-Bus与bluetoothd交互的工具,相当于bluetoothd服务的客户端。bluetoothctl通过bluetoothd简介去操作蓝牙硬件。bluetoothctl内部集成了一个shell交互功能,直接在命令行运行bluetoothctl工具即可进入该工具的内部shell。

输入help可以查看该工具支持的命令。

给蓝牙芯片上电命令:

power on

进入advertise子菜单:给芯片改名,并让芯片可以给其他蓝牙主机扫描发现。

menu advertise name EASY-EAI-Nano-TB

然后back命令,返回上级菜单:

back

3. BLE协议通讯

BLE低功耗蓝牙基于GATT。

3.1 开发板作为主机

首先把【手机】的蓝牙调试助手【配置成从机】:开启从机模式,开启广播。

然后再在开发板中(bluetoothctl这里)进行【开启扫描】、【关闭扫描】、【连接设备】

开启扫描:

scan on

发现目标设备后停止扫描:

scan off

列出扫描到的设备(找到MAC地址):

devices

与目标设备配对、信任、连接:

pair xx:xx:xx:xx:xx:xx trust xx:xx:xx:xx:xx:xx connect xx:xx:xx:xx:xx:xx

蓝牙连接成功后,蓝牙主机(开发板)进入gatt子菜单:

menu gatt

查看特征属性:

list-attributes

(可以通过【BLE调试助手app】得知:fff1用于【从机发送】,fff2用于【从机接收】)

从机发送特征属性为:

Characteristic (Handle 0x0000) /org/bluez/hci0/dev_78_C3_C4_C4_94_8D/service002f/char0030 0000fff1-0000-1000-8000-00805f9b34fb Unknown

从机接收特征属性为:

Characteristic (Handle 0x0000) /org/bluez/hci0/dev_78_C3_C4_C4_94_8D/service002f/char0034 0000fff2-0000-1000-8000-00805f9b34fb Unknown

3.1.1 主机接收,从机发送

首先要选择fff1

select-attribute /org/bluez/hci0/dev_78_C3_C4_C4_94_8D/service002f/char0030

然后打开通知

notify on

然后操作app,发送1Byte的hex数据过去开发板。

3.1.2 主机发送,从机接收

属性要改选fff2

select-attribute /org/bluez/hci0/dev_78_C3_C4_C4_94_8D/service002f/char0034

然后执行write操作

write 0x67

最后app上就能收到了从开发板发过来的数据

3.2 开发板作为从机

先在开发板打开一个新的终端,编译并运行gatt-server服务(一个用于与【主机】通信的应用程序):

再回到bluetoothctl执行以下命令,开启蓝牙广播:

advertise on

采用【BLE调试助手app】,扫描并连接开发板蓝牙。

3.2.1 主机接收,从机发送

【BLE调试助手app】向开发板读取数据:

执行上诉操作以后,开发板上的gatt-server就会打印下方信息:

3.2.2 主机发送,从机接收

【BLE调试助手app】向开发板发送数据:

开发板上的gatt-server就会收到如下信息:

http://www.jsqmd.com/news/580519/

相关文章:

  • OpenClaw性能对比:千问3.5-9B与其他模型实测
  • 【花雕学编程】从零落地嵌入式AI智能体:MimiClaw + 飞书全指南(含终端问题解决+实战实验)
  • javaweb鲜花商城管理系统gok6tz5i
  • 旺店通·旗舰奇门数据集成到金蝶云星空
  • web后端
  • LodePNG嵌入式PNG编解码:零依赖C语言图像处理方案
  • Pixel Aurora Engine效果分享:物理反馈+像素渲染双重沉浸体验
  • BBDown终极指南:如何快速下载B站视频进行离线观看
  • MedGemma-X效果展示:对‘双侧胸腔积液’程度分级(少量/中量/大量)
  • 3步彻底掌控Windows Defender:开源管理工具完全指南
  • 突破网易云音乐格式限制:ncmdump的音频格式转换方案
  • AI代理网关Clawdbot快速上手:5分钟部署Qwen3:32B,开箱即用
  • 找seo057是否值得信赖
  • DownKyi深度解析:B站视频下载的5个效率倍增技巧
  • C++的std--chrono--round时间舍入函数与时间点周期的对齐处理
  • WorkshopDL:突破Steam限制的跨平台模组高效获取工具
  • Qwen2.5-VL-7B-Instruct模型量化实战:减小体积提升速度
  • WeChatExporter深度解析:iOS微信聊天记录导出与可视化的技术实现
  • ai赋能安装调试:让快马智能诊断并解决ubuntu安装openclaw的疑难杂症
  • 微信单向好友检测终极指南:告别被删除却不知情的社交尴尬
  • OpenClaw+Qwen3-14B法律助手:合同关键条款自动审查
  • Go的reflect.MakeFunc:运行时创建函数实现
  • Qwen3.5-2B模型Android Studio插件开发:移动端AI功能原型设计
  • OpenClaw+Qwen3-14B智能客服:电商咨询自动回复系统
  • 百度网盘提取码智能解析工具:效率革命的技术突破与场景落地
  • 如何让扫描PDF变得可搜索:OCRmyPDF终极指南
  • Qwen3-14B API服务压测报告:QPS 23+,P99延迟<1.2s高并发表现
  • 3分钟掌握免费离线OCR:Umi-OCR让你的文字识别效率翻倍
  • 将公共数据挂在 Vue 原型上(简单、适合 CDN)
  • Qwen3-0.6B完整教程:Jupyter环境下一键部署与调用详解