ESP32读取蓝牙键盘鼠标信息并用USB转发给电脑,做蓝牙接收器
前言(可跳过):
最近买了个蓝牙鼠标,但是电脑的蓝牙连接了其他的设备,也就是电脑的蓝牙不能给蓝牙鼠标独占,现象就是鼠标移动的时候感觉会有卡顿,不流畅。
网上的解决办法大致分为两类:改电脑设置,关掉省电模式 ;使用独立的蓝牙模块。
这两种办法都不管用,因为一个电脑最多只能同时启用一个蓝牙模块,这两种办法无法从根本上解决蓝牙卡顿的问题,尤其是蓝牙听歌的时候,卡顿最明显。
本文主要解决的问题:
1.解决蓝牙BLE键盘鼠标卡顿问题 -> 用ESP32的蓝牙给蓝牙键鼠独占。
2.让蓝牙鼠标在电脑BIOS界面可用 -> ESP32做成HID键盘鼠标
3.也可以用蓝牙手柄连接esp32控制小车或者小飞机
目前已知的局限性:
1.当连接多个蓝牙键鼠时,如果已配对设备没能全部连接成功(如:配对了键盘和鼠标两个设备,但是只连接了键盘或者鼠标),不同开发板表现不同 :
ESP32c3:未全部连接成功时,有一定概率导致已连接设备无法使用
ESP32S3:未全部连接成功时,无法使用蓝牙功能
注:只配对一个设备时,无这个限制!
正文
开发软件:IDF6.0.1
开发板:ESP32S3(带蓝牙和USB功能)
使用方法:
1.开机后将会根据配对顺序自动重新连接已配对且开机的蓝牙设备
2.串口或者调试终端输入(在vscode下,设备终端输入一个字符后会自动发送,建议在其他地方复制好再粘贴发送,或者使用汉字输入法连续拼打字)
“扫描” 设备将扫描并自动连接已进入配对模式的键盘或者鼠标,上限为3个(S3最多支持8个)
“清空设备” 设备将清空已配对的蓝牙设备
程序流程:
void app_main(void) { // 全局变量初始化 input_device_data_init(); usb_serial_echo_main(); // usb串口调试 key_mov_cl_main(); // 键鼠数据处理 tusb_hid_app_main(); // usb键鼠模拟实现 BLE_esp_hid_host_main(); // 蓝牙hid host //后续会加入ch9350的支持 }注意是 IDF6.0.1 ,若是IDF5.5以上的版本,简单修改下也行,我这里用的最新版本
完整压缩包已上传,免费下载,不要积分
https://download.csdn.net/download/qq_36871160/93054982
