**BLE(Bluetooth Low Energy,低功耗蓝牙)是蓝牙 4.0 引入的低功耗无线技术,专为电池供电的小设备设计:平时几乎不耗电,需要时短促通信。Ai-M6x(BL616/BL618)内置 BLE 5.x 控制器,可以当从机(Peripheral)广播数据、等服务端连接,也可以当主机(Central)**扫描并连接其他设备。
用大白话讲:BLE 设备平时“喊话”(广播),别人听到后可以来“对话”(连接)。广播不耗电,适合做信标(iBeacon);连接后可以读写数据,适合做遥控器、传感器、手机配网。
关键概念
角色:Central(主机,主动扫描/连接)与 Peripheral(从机,广播/等待连接);SDK 例程
central是主机、peripheral是从机。广播(Advertising):从机周期性地对外发广播包(含设备名、服务 UUID、厂商数据等);广播类型分可连接/不可连接、定向/非定向。
GATT:连接后双方按“服务-特征”模型交换数据;特征是数据的最小读写单位,有 UUID(128 位)标识。
MTU:单次可传输的最大数据长度,默认 23 字节,协商后可到 247 字节左右。
配对/绑定:加密连接的过程;广播和连接本身不需要配对。
SDK 的 BLE 架构
SDK 使用 Zephyr 风格 BLE 协议栈:控制器(Controller)负责射频收发,主机协议栈(Host)负责 GAP/GATT/L2CAP。例程的启动流程统一为:btble_controller_init 初始化控制器 → hci_driver_init 初始化 HCI → bt_enable(bt_enable_cb) 启动主机栈,回调里再注册连接回调、开始广播/扫描。
SDK 还提供低内存的 直接控制器 API(btble_adv_* 等,见 iBeacon 例程),绕开主机栈,只适合极简广播场景。
本栏目页面导航
按顺序阅读:BLE 从机(最简单)→ BLE 主机 → iBeacon → BLE 配网 → BLE 命令行调试:
| 页面 | 角色 | 作用 | 对应 SDK 例程 |
|---|---|---|---|
| BLE 从机 | Peripheral | 广播并开放读写/通知特征 | examples/btble/peripheral |
| BLE 主机 | Central | 扫描、连接、发现服务并读写 | examples/btble/central |
| iBeacon | 广播 | 周期广播 iBeacon 信标数据 | 自编示例(基于标准协议栈;SDK adv 例程仅 BL616CL) |
| BLE 配网 | Peripheral | 手机通过 BLE 给设备配 Wi-Fi | examples/wifi/sta/smartconfig_ble |
| BLE 命令行调试 | 调试工具 | 串口命令操作 BLE:扫描/广播/连接/GATT/吞吐 | examples/btble/btble_cli |
| BLE 低功耗 | 低功耗 | 广播/连接下的 BLE 低功耗与功耗统计 | examples/pmu/wl_ble_lp |
| WiFi 与 BLE 共存 | 共存 | WiFi 连接的同时保持 BLE 广播/连接 | examples/wifi/coex/wifi_ble |
| BLE HID 键鼠发送 | Peripheral(方案) | 文本/语音经 BLE 转 USB HID 键鼠 | examples/solution/TvBox/ble_hid_cli_sender(仅 BL616CL) |
FAQ
Q:BLE 和经典蓝牙有什么区别? 经典蓝牙面向音频/大流量(如耳机),功耗高;BLE 面向小数据、低功耗(传感器、遥控器),两者协议不互通。
Q:广播和连接能同时进行吗? 可以:连接建立后从机默认停止广播,断开后例程会自动重新广播(
peripheral例程断开回调里set_adv_enable(true))。Q:手机搜不到设备? 检查设备是否在广播(从机/广播例程)、手机蓝牙是否开启、距离是否太近(1 米内偶尔扫描不到属正常,稍移开再试);部分手机对 128 位 UUID 过滤,可用 nRF Connect 查看原始广播。
遇到问题?
如有其他问题,请到统一的提问与讨论区:Ai-Thinker Discussions

