隔空手势操控器 [BlueGo]
简介
隔空手势操控+空鼠+键盘宏+功能自定义的低功耗蓝牙外设,基于EPS32开发。
简介:隔空手势操控+空鼠+键盘宏+功能自定义的低功耗蓝牙外设,基于EPS32开发。开源协议
:CERN Open Hardware License
(未经作者授权,禁止转载)描述
更新日志:
- 日期:23-10-20, 内容:1. 上传了最新的固件(固件烧录(2023-10-20).zip), 最新固件能够支持更多的手机设备,同时修复了一些Bug; 2. 添加一些使用注意事项(见文末)。
- 日期:23-10-24, 内容:1. 上传了最新的固件(固件烧录(2023-10-24).zip),修复了一些Bug,并更新了操作指南;2. 上传了最新的BlueGO APP,修复了一些兼容性问题和Bug。
- 日期:23-11-17, 内容:项目介绍中添加QQ交流群:690317122。
- 日期:23-11-20, 内容:项目介绍正文添加,芯片选型和电路原理介绍。
- 日期:24-03-07, 内容:添加BlueGo V2项目连接。
- 日期:24-03-12, 内容:添加了最新的固件,修复了一些Bug。
项目介绍:
BlueGo是一款BLE(低功耗蓝牙)HID外设,它基于ESP32芯片开发,集成了手势识别模块 (PAJ7620U2) 、惯性传感芯片 (MPU6500) 和五向按钮。此外,它还配备了锂电池管理芯片和锂电池,具备便携性。通过低功耗蓝牙,BlueGo可以与手机、平板、电视或电脑进行连接,提供空鼠,手势交互和键盘宏等多种功能。通过配套的Android App,用户可以自定义手势和按键的功能。此项目基本功能已完成,敬请等待功能扩充和优化~~
此项目的增强版本已完成:万能蓝牙外设[BlueGo v2]
在BlueGo的复刻过程中,如果遇到任何软硬件问题,可以加QQ群交流,QQ群:690317122
该项目项目已在无线电2023-9期发布,有杂志的朋友可以看到更详细的内容。
视频介绍:
功能介绍:
1. 空鼠 Air Mouse, 设备利用MPU6500陀螺仪,通过计算Z/X轴角速度的积分来获得角度变化,并将其转化为鼠标的X/Y坐标变化,实现光标移动。同时,五向按钮中的3个键被映射为空鼠的左键、中键和右键。效果如下。
设备没有集成滚轮,但是我用了一个取巧的方法,把Y轴的转动映射成鼠滚轮。使用时,你需要左右转动手腕来实现滚轮的前后滚动。为了避免误触发,在设置中设定了较高的触发阈值,只有手腕转动速度超过该阈值时才会触发滚轮。效果如下,就是有点费手腕(手动滑稽)。
2. 手势交互, 设备使用了PAJ7620的7个手势,将其映射为手机的上下左右滑动、手指点击和返回等操作,从而可以手势操控手机。这在吃饭、烹饪、清洗等不便触摸手机的情景下非常方便。其中,短视频软件的隔空操作是一个典型的应用,效果如下。
3. 键盘宏,设备还支持简单的键盘宏功能,并预设了多种键盘按键和组合键操作。这些操作可以映射到五向按钮或8种手势上,作为外设操作手机或电脑。常见的应用场景包括PPT遥控操作、手势控制虚拟桌面、遥控手机拍照等。
4. 自定义功能,我为该设备开发了一款Android App(见文末附件“bluego.apk”),设备通过蓝牙连接App后,可以实现各种功能模式的自由切换和功能模式的自定义。手势和按钮可以映射到各种预设的操作上,实现更多的玩法。现在设备里只预设了一部分手机触摸手势、键盘按键、快捷键组合和电子设备操作。有能力的用户可以自行设计更多的触摸手势,添加更多快捷键,来实现更多有趣的功能,见下图。打开想象力,它会有无限种用法。
模块架构:
硬件部分主要包括主控板,GY-PAJ7620模块和锂电池。主控板为自己设计,包含了主控MCU ESP32-PICO-V3-02、惯性导航单元MPU6500、五向按钮和充电管理芯片TP4056。GY-PAJ7620模块为自购模块,与主模块通过IIC总线通信。供电采用3.7V 200mah单节锂电池。详细见下图。
芯片选型:
首先从主控芯片入手,我希望选择一款主流且功能丰富的芯片,这样市面上可以找到更多的参考资料和代码,而且最好还集成了低功耗蓝牙。因此,ESP32 系列芯片似乎成为了不二的选择。ESP32 系列芯片经过几年的发展已经非常成熟和丰富。经过仔细筛选,我最终选择了 ESP32-PICO-V3-02。这款芯片基于 ESP32 (ECO V3)设计,是一款系统级封装 (SiP) 产品,提供了完整的 Wi-Fi 和蓝牙功能。它在一个封装内集成了晶振、Flash、PSRAM、滤波电容、RF 匹配链路等所有外围器件,无需额外的外围元器件即可工作。这种设计省去了很多电路设计和测试的麻烦,对于我作为第一次设计电路的人来说,这绝对是最保险和可靠的选择。
对于手势识别传感器,市面上的选择相对较少,而 PAJ762U2 是其中比较出众一款。PAJ7620U2 是由原相科技公司开发的一款手势识别芯片,内部集成了光学数组式传感器单元,可以快速准确的对输入信号进行感应和输出处理。内置光源和环境光抑制,能在黑暗或低光环境下工作。它支持上、下、左、右、前、后、顺时针旋转、逆时针旋转和挥动的手势动作识别,以及支持物体接近检测等功能。用户可以通过 I2C 接口获取目标原始数据和手势识别的结果。PAJ762U2 的功能非常强大,其灵敏度和准确性都能满足我们隔空操控设备的要求。
要实现飞鼠功能,需要选用高精度的陀螺仪芯片,经过比较,我选择了 MPU6500。它集成了 3 轴 MEMS 陀螺仪、3 轴 MEMS 加速度计,以及一个可编程的数字运动处理器 DMP。该芯片的陀螺仪拥有可编程感测范围为±250、±500、±1000 与±2000° /sec,噪声率低至0.01 dps/√Hz。它通过 IIC 接口与 MCU 通信,时钟高达 400KHz。这完全能满足飞鼠对精度和响应速率的需求。
电路原理:
1. 供电电路:
本设备采用单个 3.7V 锂电池作为电源,经过 LDO 芯片(U4RT9013-33GB)降压至 3.3V 后给各个模块供电。锂电池正极连接 BAT+引脚,通过一个滑动开关跟 LDO 的电流输入引脚VIN 和芯片使能 EN 引脚连接,滑动开关可控制电流输入和芯片的使能状态。降压后的3.3V 电流经 VOUT 输出,经过 C8 滤波后供给各模块。电池的负极可连接至任意 GND 引脚。锂电池的充电使用了 TP4056,一款性能优异的单节锂离子电池恒流/恒压线性充电芯片。通过 USB 接口输入的 5V 电流,经过 R2 和 C1 滤波后输入芯片的 VCC 引脚,同时连接芯片的使能引脚 CE。当 USB 接口插入后,充电即可自动开始。芯片输出 4.2V 恒压电流,通过BAT 引脚输出,经过 C2 滤波后流入电池的正极。PROG 引脚用来控制充电电流,此处使用1.2KΩ 电阻接地,使芯片可输出1000mA 电流。TEMP 引脚用来检测电池温度,此处没有使用,直接接地。CHRG 和 STDBY 是两个漏极开路状态指示输出端。当充电器处于充电状态时,CHRG 引脚被拉到低电平,LED1 亮,在其他状态下 CHRG 为高阻态, LED1 灭;当电池充电结束后,STDBY 引脚被拉到低电平,LED2 亮,在其他状态下 STDBY 为高阻态,LED2 灭。
2. MCU 主控电路:
由于 ESP32-PICO-V3-03 芯片已经高度集成了晶振、Flash、PSRAM 和 RF 匹配电路,其外部电路设计可以非常简洁高效。以下是供电部分和天线部分的具体设计:
供电部分:
LDO 输出的 3.3V 电流经过两个滤波电容(C3,C9)后分别连接到 VDDA、VDDA3P3、VDD3P3_CPU 和 VDD3P3_RTC 引脚,从而满足芯片的供电需求。为了确保芯片在上电时供电正常,EN 管脚处采用了 RC 延迟电路。根据官方文档的建议值,使用了 R = 10 kΩ 和C = 1 µF 的元件。这样的设计可以稳定地使芯片上电后启动。
天线部分:
虽然芯片内部已经集成了 RF 匹配链路,可以直接连接各种天线,但为了增强稳定性,我额外添加了一个 π 型匹配电路,将其连接至一片陶瓷天线。这样的设计在保证天线性能的同时,有效节省了 PCB 空间。其他功能引脚用于连接外围芯片或引出,方便后续功能扩展。通过以上简洁高效的电路设计,确保了 ESP32-PICO-V3-03 芯片的供电稳定和天线性能,使整个设备的性能得到了优化。
3. IMU 电路:
LDO 输出的 3.3V 电流连接到 MPU6500 的供电引脚 VDDIO,同时也通过连接至 nCS 片选引脚来使能芯片。另外,AD0 引脚用于设置芯片的地址最低位,这里将其接地,将芯片的IIC 地址设置为 1101000。为了满足芯片的要求,要在 REGOUT 引脚附加一个旁路电容,这里选择 100nF 的容值。最后,SDA/SDI 和 SCL/SCLK 引脚需要与主芯片的 SDA 和 SCL 引脚相连,用于 IIC 通信。通过这些连接,MPU6500 可以与主芯片进行稳定和高效的通信。
4. 手势识别电路:
手势识别采用了现成的模块 GY-PAJ7620,其与主模块的引脚连接如下:VIN(供电引脚):可直接接主模块的 VCC33 供电,为手势识别模块提供电源。I2C 通信引脚:SCL 和 SDA 分别连接至主模块的 SCL1 和 SDA1,实现与主模块之间的 IIC通信。INT(中断输出引脚):连接至 MCU 的 I37 引脚,在手势被识别时,输出低电平来触发中断,通知主模块有手势动作发生。
GND(地线): 连接至主模块的任意 GND 引脚即可。通过这样的连接方式,主模块能够通过 IIC 通信与手势识别模块进行交互,而中断引脚的连接则使得主模块能够实时感知手势的发生,从而对手势进行相应的操作和处理。
5. 五向按钮电路:
按钮电路采用 ADC 方案,仅使用了 MCU 的一个引脚。通过采样按钮按下时的电压,设备可以识别出5个按键的状态。按钮的公共引脚(COMM)连接到MCU的IO27引脚,作为ADC采样输入。五个方向的按钮引脚分别连接到 6 个等值串联电阻的不同节点。当不同的按键按下时,MCU 可以通过采样到的电压值来判断按键状态。没有按键时,IO27 通过 R13 接地。这种简单的分压电路,既实现了 5 键的区分,又可节省 IO 资源,布线简单而且有效。
6. 外部接口电路:
设备采用 Type-C 型的 USB 接口,由于 Type-C 接口无需区分接口方向,充电更加方便。USB口只使用 VBUS 和 GND 两个引脚用于供电功能,其他引脚则并未使用。另外,主芯片的所有引脚都通过两个 15pin 的排针引出,便于连接外设。排针的设计使得设备可以扩展更多功能,连接各种外部模块或传感器,从而增加设备的灵活性和可扩展性。
设备代码:
- ESP32代码(基于ESP-IDF):Geek Fantasy/bluego-esp32 (gitee.com), GeekFantasy/bluego-esp32 (github.com)
- Android代码(安装APK见附件):Geek Fantasy/bluego-android (gitee.com) , GeekFantasy/bluego-android (github.com)
设备材料及组装:
- 手势识别模块GY-PAJ7620可以从淘宝购买。
- 设备PAJ7620前安装的镜片和红色的镜框是苹果11Pro/Max 的同款,可以从这里购买。
- 锂电池200 mah,尺寸:长*宽*厚:30*20*4(单位:mm)可以从淘宝购买。
- 按钮帽使用的是Thinkpad上经典的红点导航键(手感很好),可以从这里买。
- 组装需要使用5个M1.6 * 8mm的内六角螺丝,可以从这里买。
- 如果需要同款挂绳,可以从这里买。
- 设备的外壳是自己使用3D FDM打印的,如果使用0.12mm打印,安装精度还不错,其他精度应该也可以。外壳使用solidworks设计,相关文件见文末附件。
- 设备接线图如下。
- 模块安装顺序,如下图。
固件烧录:
- 程序烧录需要一个USB转UART的设备,因为主板空间有限,没有集成USB转UART的芯片。USB转UART的设备淘宝很多,我用的是这款(USB转UART)。
- 使用VSCode + ESP-IDF开发的同学可以下载源码编译并烧录。
- 也可以使用ESP32官方的烧录工具,固件以及具体步骤,详见附件最新版固件烧录。
注意事项:
- 复刻时,PCB建议使用 1mm厚度,这样可以与外壳完美匹配。
- 设备开机后需要立刻把设备静止放置几秒钟,让MPU6500自行校准,不然空鼠会出现指针漂移。
- 设备切换工作模式后,如果新模式不能立刻起效,可尝试重启BlueGo,并在主设备上取消BlueGo的蓝牙配对,再重新连接。
------------------------------------------------------------------------------------------------
如果你觉得这个项目还不错,请不吝点赞和收藏,谢谢~~
------------------------------------------------------------------------------------
评论