瑞芯微RV1126B开发板(EASY-EAI-PI2) 蓝牙

发布时间:2026/6/30 4:42:43
瑞芯微RV1126B开发板(EASY-EAI-PI2) 蓝牙 1.蓝牙简介在蓝牙协议栈中有两种协议用作蓝牙数据传输它们分别是SPP经典蓝牙串口协议和BLE低功耗蓝牙协议。单模蓝牙模组仅支持SPP或BLE的其中一种。双模蓝牙模组既支持SPP同时又支持BLE。而EASY-EAI-PI2采用的蓝牙模组为DB37它是【仅支持BLE协议】的【单模】蓝牙模组。1.1bluezBluez作为当前最成熟的开源蓝牙协议栈它是一个基于GNU General Public License (GPL)发布的开源项目已成为linux官方的蓝牙协议栈从Linux2.4.6开始便成为Linux 内核的一部分在Linux的各大发行版中已经得到了广泛的应用。可以这么理解如何在Linux上使用蓝牙如何使用bluezBluez具体就是一套Linux官方支持的开源的蓝牙协议栈处理工具集具体包含了以下几个工具bccmd、bluemoon、bluetoothctl、bluetoothd、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 -a2.bluetooth工具hci*系列的工具一般用于直接操作蓝牙协议栈的HCI层在新版的bluez工具集里逐渐不维护。而主流用于操作蓝牙设备的是bluetooth工具bluetoothd和bluetoothctl。2.1bluetoothd是一个用于管理蓝牙驱动的【应用层】服务一般把它启动起来就行。可以通过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.2bluetoothctl一个通过D-Bus与bluetoothd交互的工具相当于bluetoothd服务的客户端。bluetoothctl通过bluetoothd简介去操作蓝牙硬件。bluetoothctl内部集成了一个shell交互功能直接在命令行运行bluetoothctl工具即可进入该工具的内部shell。输入help可以查看该工具支持的命令。给蓝牙芯片上电命令power on进入advertise子菜单给芯片改名并让芯片可以给其他蓝牙主机扫描发现。menu advertise name EASY-EAI-Nano-TB然后back命令返回上级菜单back3.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_9A_97_9A_3E_1D/service0109/char010a 0000fff1-0000-1000-8000-00805f9b34fb Unknown从机接收特征属性为Characteristic (Handle 0x0000) /org/bluez/hci0/dev_78_9A_97_9A_3E_1D/service0109/char010e 0000fff2-0000-1000-8000-00805f9b34fb Unknown3.1.1主机接收从机发送首先要选择fff1select-attribute /org/bluez/hci0/dev_78_9A_97_9A_3E_1D/service0109/char010a然后打开通知notify on然后操作app发送1Byte的hex数据过去开发板。3.1.2主机发送从机接收属性要改选fff2select-attribute /org/bluez/hci0/dev_78_9A_97_9A_3E_1D/service0109/char010e然后执行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就会收到如下信息