BLE蓝牙广播

BLE是什么?

        BLE是蓝牙低功耗技术的缩写,全称是Bluetooth Low Energy。它是一种无线传输小数据的超低功耗蓝牙技术¹。BLE模块和芯片组成本低,与其他类似技术相比,BLE通过尽可能保持射频关闭并以低传输速度发送少量数据来实现优化和低功耗²。BLE的主要特点是低功耗,让那些在功耗方面有比较高要求的可穿戴设备能够长时间保持在电状态³。---回答源自newbing搜索。

知识补充:BLE源自蓝牙4.0协议,与BT配合使用,传输速度最大为2Mbps,传输距离一般为10左右,连接速度大约在几毫秒。

        BLE蓝牙一共有四十个信道,从2402开始到2480MHz每隔2MHz有一个信道,其中有三个信道是用于广播数据分别是37(2402MHz)、38(2426MHz)、39(2480MHz)。单个广播数据包最长37个字节,MAC地址为前6个字节,剩下的为数据。在数据段又会分为若干个AD Structure,每个结构体中又分为三个部分,第一个字节跟着的是这个结构体的长度,第二个字节跟的是结构体的类型,后面跟着的就是结构体的内容。由MAC地址与若干个结构体组成一个蓝牙广播包,共37个字节,其中数据不足的会自动补0;目前常用的数据类型有

蓝牙广播的数据长度最长只有37字节,如果超出了37个字节的话,还可以通过使用扫描响应数据来将超出长度的数据广播出去。

动手实操:将会以esp32s3芯片为例子,烧录例程后进行分析。

将例程中的ancs工程编译后烧录到板子上,等待板子重新上电运行后,打开手机的nrf connect软件,查看当前的BLE广播,发现一个蓝牙名为ESP_BLE_ANCS的设备,正好对应的就是代码里的EXAMPLE_DEVICE_NAME,可以选择工具里的RAW按钮,查看广播的源数据。

此设备的广播原始数据如下对比上面的解析方法,第一个结构体以0x02开头,表示有两个字节的长度,类型为0x01,代表的是此结构体为设备标识结构体,紧跟着的一个字节数据为0x06,对照下面的设备标识定义图片,可以知道此设备为LE普通可发现模式,并且不支持经典蓝牙;第二个结构体的长度为3,类型为16bit的UUID;第三个结构体长度为5个字节,类型为128Bit的UUID。最后一个结构体,长度为0x0D ,表示长度为13个字节,后一个字节为0x09标识这个结构体为完整设备名称,紧接着的12个字节为名字,通过转化可以知道该名称为ESP_BLE_ANCS。

设备标识定义
十六进制转UTF-8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Android 设备上发送蓝牙低功耗(BLE广播,你需要执行以下步骤: 1. 获取 BluetoothAdapter 对象并检查是否支持 BLE。可以使用以下代码获取 BluetoothAdapter 对象: ``` BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE); BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter(); ``` 2. 创建一个 AdvertiseSettings 对象,用于配置广播的参数。你可以使用以下代码创建 AdvertiseSettings 对象: ``` AdvertiseSettings settings = new AdvertiseSettings.Builder() .setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_BALANCED) .setConnectable(false) .setTimeout(0) .setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM) .build(); ``` 在这个示例中,我们将广播模式设置为平衡模式,使广播更加稳定。我们还将广播设置为不可连接,并将超时设置为 0。 3. 创建一个 AdvertiseData 对象,用于在广播中包含数据。你可以使用以下代码创建 AdvertiseData 对象: ``` AdvertiseData data = new AdvertiseData.Builder() .setIncludeDeviceName(true) .setIncludeTxPowerLevel(false) .addManufacturerData(0x1234, new byte[] { 0x01, 0x02, 0x03 }) .build(); ``` 在这个示例中,我们将设备名称包含在广播中,并添加了一个制造商数据字段。 4. 开始广播。你可以使用以下代码开始广播: ``` bluetoothAdapter.getBluetoothLeAdvertiser().startAdvertising(settings, data, advertisingCallback); ``` 在这个示例中,我们将 AdvertiseSettings 和 AdvertiseData 对象传递给 startAdvertising() 方法,并提供了一个广告回调函数 advertisingCallback。 这些步骤将使你的 Android 设备开始发送 BLE 广播
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值