25 个版本 (7 个破坏性更新)
0.7.0 | 2024年7月11日 |
---|---|
0.6.0 | 2024年3月7日 |
0.4.0 | 2023年12月1日 |
0.3.2 | 2023年11月18日 |
0.0.4 | 2022年12月21日 |
#96 in 嵌入式开发
每月166 次下载
用于 2 crates
190KB
4.5K SLoC
NimBLE Rust包装器用于ESP32
这是ESP32 NimBLE蓝牙堆栈的Rust包装器。受NimBLE-Arduino启发。
使用
将以下设置添加到项目中的 sdkconfig.defaults
。
CONFIG_BT_ENABLED=y
CONFIG_BT_BLE_ENABLED=y
CONFIG_BT_BLUEDROID_ENABLED=n
CONFIG_BT_NIMBLE_ENABLED=y
- 要启用扩展广告,另外追加
CONFIG_BT_NIMBLE_EXT_ADV=y
。
(仅适用于ESP32C3, ESP32S3, ESP32H2)
增加esp-ble任务堆栈大小以支持更重的计算负载
如果您通过蓝牙LE计算大量值或正在运行复杂/深层嵌套的代码,则可能需要增加 esp-ble
任务的堆栈大小。为此,请将以下设置添加到项目中的 sdconfig.defaults
CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=7000
默认值在ESP-IDf文档中定义,可能因设置而异,为4096或5120。
配置iOS自动重连
要启用与您的ESP32 BLE服务器无缝自动重连iOS设备,您需要调整 sdkconfig
文件和您的Rust代码中的设置。
更新 sdkconfig
在您的 sdkconfig
中包含此行
CONFIG_BT_NIMBLE_NVS_PERSIST=y
将 CONFIG_BT_NIMBLE_NVS_PERSIST
设置为 y
确保将绑定信息保存到设备的非易失性存储器(NVS)中。此步骤对于允许iOS设备在ESP32重置或关闭并重新打开后无需重新绑定即可自动重连至关重要。
在Rust代码中配置安全选项
在您的Rust实现中正确设置安全选项是关键
device
.security()
.set_auth(AuthReq::Bond) // Bonding enables key storage for reconnection
.set_passkey(123456) // Optional, sets the passkey for pairing
.set_io_cap(SecurityIOCap::NoInputNoOutput) // You can choose any IO capability
.resolve_rpa(); // Crucial for managing iOS's dynamic Bluetooth addresses
.set_auth(AuthReq::Bond)
设置绑定,这对于存储启用未来自动重连的安全密钥至关重要。.resolve_rpa()
:此函数对于适应iOS设备使用的不断变化的蓝牙地址至关重要,这是一个称为可解析私有地址(RPA)的功能。这对于保持与iOS设备的可靠和无缝连接至关重要,确保您的ESP32设备即使在蓝牙地址更改时也能识别并重新连接到iOS设备。- BLE Passkeys按照规范正好是6位数字,因此如果您设置了一个“1234”的密钥,实际上它是“001234”,因此要正确地向用户显示代码,您必须在左侧填充,即
format!("{:0>6}",pkey)
依赖关系
~6–16MB
~215K SLoC