找回密码
 立即注册
首页 业界区 业界 ESP32S3 BLE_HID的编程实现

ESP32S3 BLE_HID的编程实现

卓卞恻 2025-6-3 10:37:38
ESP32S3  BLE_HID的编程实现

BLE是低功耗蓝牙,HID是Human Interface Device,也就是人机接口设备。
主要用于无线连接并传输用户输入数据(如按键、触控、手势等)。
核心概念


  • BLE(Bluetooth Low Energy)

    • 蓝牙4.0及以上版本引入的技术,专为低功耗设计,适合电池供电设备(如键盘、鼠标)。
    • 传输数据量小、连接速度快,功耗仅为传统蓝牙的1/10~1/100。

  • HID(Human Interface Device)

    • 源自USB HID标准,定义了键盘、鼠标、游戏手柄等设备的通用通信协议。
    • BLE HID将这一协议无线化,无需物理线缆即可实现设备交互。

与传统蓝牙HID的区别

特性传统蓝牙HIDBLE HID功耗较高极低连接速度较慢快(毫秒级)兼容性依赖传统HID协议基于GATT,更现代适用设备需较高数据速率(如音频)低频输入设备(按键、点击)协议实现


  • HID Service
    通过GATT(通用属性协议)定义服务,包含以下关键特性:

    • Report Map:描述设备功能(如按键映射)。
    • Input/Output Report:传输实际输入/输出数据。
    • Protocol Mode:切换Boot Protocol(兼容BIOS)或Report Protocol(标准模式)。

代码源自esp-idf例程ble_hidd_demo
执行流程

1
1.png
初始化NVS:(Non-Volatile Storage,非易失性存储)是 ESP-IDF 提供的一种存储机制,用于在设备的闪存中保存数据,即使设备断电后数据也不会丢失。nvs 通常用于存储配置信息、蓝牙配对信息等。释放经典蓝牙模式的内存2
2.png
初始化BLE控制器->启用蓝牙控制器,设置为BLE模式->初始化Bluedroid协议栈->启用Bluedroid协议栈->初始化HID(Human Interface Device)配置文件3
3.png
注册回调函数到GAP(Generic Access Profile)模块->注册回调函数到GAP(Generic Access Profile)模块-> 注册回调函数到HID模块->设置BLE安全参数->创建HID任务(用户或自动执行)4
4.png
BLE广播(等待设备连接esp32s3的低功耗蓝牙)->设备连接BLE->触发连接事件 ->开始配对BLE5
5.png
设备成功配对BLE ->设置连接成功标志位 ->进入人机交互任务6
6.png
HID任务循环 ->判断连接状态 -> 发送指令(操作)+数据配置项目

ble_hidd_demo_main.c:此文件是演示如何使用 HID 的示例(您可以使用它连接到智能手机作为消费者设备,然后使用按钮来增加或减少音量等,或者连接到 Windows 10 PC 作为键盘或鼠标)
hidd_le_prf_int.h:此头文件包含一些与 HID 配置文件相关的定义。
esp_hidd_prf_api.h & esp_hidd_prf_api.c:这些文件包含 HID 配置文件的 API
当您使用 HID 配置文件时,只需添加 esp_hidd_prf_api.h 包含文件,并使用 esp_hidd_prf_api.c 文件中定义的函数发送 HID 数据。
hid_dev.h & hid_dev.c:这些文件定义了 HID 规范相关的定义
hid_device_le_prf.c:此文件是 HID 配置文件的定义文件,它包含 HID 配置文件的主要功能。它主要包含如何创建 HID 服务。如果您发送和接收 HID 数据并将数据转换为键盘键、鼠标和消费者值,则将其转发到应用程序。
整体执行流程

蓝牙初始化:
在主函数中,会初始化蓝牙堆栈并注册 GAP 事件回调函数。
事件处理:
当蓝牙事件发生时,回调函数会根据事件类型执行相应的逻辑。
HID 功能演示:
hid_demo_task 任务会在系统初始化完成后运行,可能会模拟键盘、鼠标或其他 HID 设备的行为。
如果文章对你有所帮助,可以帮我点一下左下角推荐该文,万分感谢
博主目前在广州,深圳找实习。
如有大佬(HR,BOSS)能推荐实习,恳请私信小弟,给个机会,帮帮小弟,万分感谢!!!

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册