发作品签到
专业版

隔空手势操控器 [BlueGo]

工程标签

3.7w
0
0
221

简介

隔空手势操控+空鼠+键盘宏+功能自定义的低功耗蓝牙外设,基于EPS32开发。

简介:隔空手势操控+空鼠+键盘宏+功能自定义的低功耗蓝牙外设,基于EPS32开发。
星火计划2023

开源协议

CERN Open Hardware License

(未经作者授权,禁止转载)
创建时间:2023-07-04 10:32:37更新时间:2024-03-12 11:56:16

描述

更新日志:


  • 日期: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 的排针引出,便于连接外设。排针的设计使得设备可以扩展更多功能,连接各种外部模块或传感器,从而增加设备的灵活性和可扩展性。

 

设备代码:


  

设备材料及组装:


  • 手势识别模块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的蓝牙配对,再重新连接。

   

------------------------------------------------------------------------------------------------

             如果你觉得这个项目还不错,请不吝点赞收藏,谢谢~~

------------------------------------------------------------------------------------

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
外壳3D模型文件-solidworks.zip
940
2
Android App配置截图.zip
532
3
外壳3D模型文件-step格式.zip
317
4
电路原理.pdf
397
5
固件烧录(2023-10-20).zip
481
6
固件烧录(2023-10-24).zip
1320
7
BlueGo-v1.0.0.apk
722
8
固件烧录(2014-03-12).zip
367
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航