2024艾迈斯欧司朗竞赛 - 基于TMF8821实现手势多媒体键盘
该项目使用了TMF8821传感器和CH582F单片机,实现了一个手势识别多媒体键盘的设计,它的主要功能为:通过识别手势运动,实现对电脑或手机的多媒体进行播放和切歌控制,可有线或蓝牙无线连接。
标签
嵌入式系统
键盘
ToF传感器
小小洋洋
更新2025-03-06
同济大学
109

一、项目介绍

image.png

本项目基于 TMF8821 dToF 传感器3x3 多区域高精度测距数据,开发了轻量化手势识别算法,通过阈值滤波、空间轨迹建模及模式匹配技术,实现了对挥手方向(左/右/接近)的毫秒级实时识别;结合 CH582F 单片机的双模通信能力(蓝牙 5.3/USB 2.0),设计低功耗多媒体键盘控制协议,将手势映射为系统级媒体指令(切歌、暂停、播放),支持跨平台免驱兼容(Windows/macOS/Android)。经测试,识别准确率在95%以上,极速响应并触发多媒体控制。


二、硬件介绍

  1. TMF8821 dToF模块

image.png

dToF模块是基于 TMF8821 设计的直接飞行时间 (dToF) 传感器模块,TMF8821采用单个模块化封装,带有相关的 VCSEL(垂直腔面发射激光器)。dToF 设备基于 SPAD、TDC 和直方图技术,可实现 5000 mm 的检测范围。由于它的镜头位于 SPAD 上,它支持 3x3、4x4 和 3x6 多区域输出数据以及宽广的、动态可调的视野。VCSEL 上方的封装内的多透镜阵列 (MLA) 拓宽了 FoI(照明场)。原始数据的所有处理都在片上进行,TMF8821在其 I2C 接口上提供距离信息和置信度值。TMF8821 具有如下特点:

  • 具有高灵敏度SPAD检测的Direct ToF技术
  • 4x4 可配置的多区域配置,具有多目标检测功能
  • 可调视野(最大63°对角线)
  • 快速时间数字转换器(TDC)架构
  • 亚纳秒级光脉冲
  • 10 – 5000mm 距离感应 @30Hz
  • 片上直方图处理
  • 940nm VCSEL 1类人眼安全
  • 高性能片上阳光阻隔滤波器和算法
  • 小型模块化OLGA 2.0mm x 4.6mm x 1.4mm封装

项目中基于该dToF模块,通过IIC方式进行配置和数据读取,获得 3x3 区域的距离数据,用于后续的手势检测。


  1. CH582 单片机

image.png

CH582 是南京沁恒微电子推出的高性能 32 位 RISC-V 单片机,专为物联网设备设计。其核心搭载青稞 V4F 内核(主频 40MHz),集成 蓝牙 5.3(BLE/BR/EDR) 和 Zigbee 3.0 双模无线通信,支持百米级射频传输,并内置硬件浮点单元(FPU)加速复杂运算。芯片配备 448KB Flash 和 32KB SRAM,支持 USB 2.0、12 位 ADC、多路 PWM 及电容触摸检测,外设资源丰富;通过超低功耗设计(待机电流低至 1μA)和高度集成化架构,可显著降低系统成本与功耗,适用于智能家居、穿戴设备及工业无线控制等场景。


  1. TMF8821 dToF模块原理图

image.png

TMF8821模块采用了本次活动主办方推荐的模块,其原理图中包含了LDO稳压、TMF8821传感器和排针。

其中传感器的供电需要稳定,因此使用了多个电容进行抗干扰。

传感器通信方式为IIC,并引出了中断引脚和使能引脚。

通过排针与其他模块连接。


  1. CH582底板硬件介绍

{F962AF9F-7954-4774-86A8-7ED91713998C}.png

所设计的CH582F模块,使用了相同大小的PCB,可以完美与传感器模块适配。

其中电源电路中,包含了LDO稳压电路锂电池充电电路双电源切换电路

CH582F单片机的蓝牙馈线进行了阻抗匹配,在PCB制作时,选择双面板、1.2mm厚度

排针用于串口通信,在校准时需要通过排针读取校准数据。

按键,既是进入BL模式的按键,也是进行USB/蓝牙模式切换的按键。

指示灯用户交互,很有用。


三、设计思路介绍

  1. TMF8821传感器校准

TMF8821的出厂校准是必要的,官方程序的校准数据不适配每个传感器,需要自己进行校准获得校准数据,校准依照教程进行

在校准过程中,开启程序中的校准宏定义,即可进行校准。

校准可使用所打印的3D外壳,贴上透明胶带作为滤波薄膜。

完成校准后将校准数组放置在cali.c文件中。

通过放置平板来判断校准是否成功。

image.png

  1. 矩阵数据读取

TMF8821在使能、烧录固件、启动测量后,可周期读取距离数据和置信度。通过对数据进行处理,转换成矩阵分布,方便后续处理。

TMF8821的功能强大, 可以根据不同的需求,烧录相应的固件来实现。【没想到除了单片机能够烧录,连传感器也可以烧录。】

对于本项目,将基础固件进行烧录,输出3x3距离数据,单位mm,测量范围在11-3000mm之间。


  1. 手势识别

考虑到单片机的性能,不采用机器学习和深度学习,使用基础的算法。滤波是最最重要的,影响着识别准确度。

CH582单片机通过IIC读取3x3的距离数据,手掌在前方挥动、接近时会导致距离矩阵发生变化,通过滤波和模式匹配,对不同的手势动作进行识别。其中,有以下几点特点注意:

  • 距离滤波:考虑到挥动的范围和防止其他移动物体的影响,对检测到的距离数据,在30mm到200mm之间的数据为有效数据,会用于触发手势识别并进行模式匹配。
  • 模式匹配:TMF8821在连续读取时,频率为30Hz,满足挥动的检测。在模式匹配算法中,主要利用平均值、方差和差值进行计算。当平均值和方差满足特定要求时,则会开始记录,并在后续1s内进行数据判断,从而实现了对挥手方向(左/右/接近)的毫秒级实时识别。
  • 冷却时间:为防止重复识别,会有1s的识别冷却时间。


  1. 多媒体控制

双模控制能够为电脑、手机和平板提供多媒体控制。通过按键进行模式切换,并通过Flash进行存储。

CH582单片机具有双模通信能力(蓝牙 5.3/USB 2.0),无需安装驱动,可以通过侧面按键进行切换。其中蓝牙连接,可以连接多系统,包括电脑和手机。


  1. 交互体验提升

考虑到识别并非100%,用户需要一种直观方式判断是否手势识别成功。

通过一个小小的LED,进行亮灯指示,当识别到手势后,会亮LED 1s。


四、 软件代码

  1. 软件流程图

在程序运行中,通过TMOS这类轻量化RTOS进行程序控制,主要完成如下三个功能的协同工作。

矩阵距离数据:在使能TMF8821并烧录固件后,启动测量读取矩阵距离数据,同时进行数据滤波,对于错误值0和超过范围的距离数据进行筛除。

手势识别:考虑到单片机的性能,手势识别并没有采用机器学习或者神经网络方式,而是通过基础算法对数据进行滤波和模式匹配。滤波算法用到了平均值滤波、方差滤波等。模式匹配实现手势的识别,并映射至所需的多媒体控制功能中。

多媒体控制:模式数据存放在Flash中,以USB或蓝牙的方式进行控制,开机自动载入模式。然后基于手势识别的映射数据,发送多媒体指令给主机,实现切歌和播放等功能。指示灯进一步实现用户交互。

算法重点在于手势识别,虽然所采用的算法看似简单,但是能够准确识别手势,准确率达95%以上,并且控制基本无延时。

image.png

image.png

image.png


  1. 关键代码

关键代码包括两个部分,一个是TMF8821驱动的移植,一个是USB/蓝牙多媒体的实现。

TMF8821驱动:所参考的驱动为官方Arduino驱动,对途中几个部分进行了修改和补充。其中特别注意的是接口的改写,需要对包括IIC接口、中断接口、和串口进行改写,并映射到shim.c文件中。

USB/蓝牙:将USB HID和蓝牙HID进行移植,实现双模功能,可通过按键进行模式切换。


image.png

image.png


五、功能展示

  1. 外观展示

TMF8821传感器模块和CH582F底板通过排针连接,并设计严丝合缝的3D外壳,可作为一个桌面小摆搭

内部还可放置一块小锂电池,实现无需USB连接,用蓝牙的方式进行多媒体控制。

image.png

image.png


  1. 交互指示灯

为了方便用户对手势识别结果的快速掌握,内部的LED指示灯会在识别到手势后,进行亮灯提示

3D打印的半透明外壳可以将亮光透出。

此设计虽然简单,但在交互上起到了重要作用。

image.png


  1. USB多媒体控制

程序中启用了三种主要手势的识别,分别为左挥手、右挥手和接近,分别映射至多媒体控制的上一曲、下一曲和播放

基于USB HID开发,无需安装驱动。

用户需要在20cm范围内进行上述操作,在博主一段时间的使用来看,基本可以做到随手挥动即可控制。

在所设计手势识别算法中,可做到95%以上的识别准确率,并做到ms级别的响应,挥手即可控制多媒体。

图片展示了挥手切歌和按压暂停的多媒体控制。

image.png

image.png


  1. 蓝牙多媒体控制

通过TYPE-C接口旁边的按键,即可切换USB/蓝牙模式,模式保存在Flash中,下次开机自动加载模式

蓝牙模式下,支持电脑和手机

通过添加蓝牙设备,找到一个名为“TMF Consumer”的设备,连接后即可。

蓝牙模式下,上传周期虽然提高到了10ms,但基本无感。

image.png

image.png

六、难题与解决方法

  1. TMF8821传感器距离错误问题

问题:依照手册子在程序中进行TMF8821初始化,然而矩阵距离数据误差大,其左下角的距离数据误差超过3cm。

过程:通过多次查看开发手册,了解到TMF8821需要进行出场校准,得到校准数据并复制到cali.c文件中,才能在测量中获取到准确的矩阵距离。然而在多测校准中,发现校准后的数据仍不佳,继续查看手册,发现最好在传感器前方放置薄膜以减少外部干扰。

解决:在所设计的3D外壳开孔中,贴上透明胶带,实现校准所需的滤波薄膜功能。之后进行校准,距离数据基本准确。


  1. 手势识别准确率不高难题

问题:初期尝试过多种手势识别的算法和方案,然而会出现误触发、难触发和错误触发的问题,基本无法使用。

过程:观察数据输出,了解到手势识别准确率不高的原因,主要是TMF8821检测周期不足、算法缺乏有效滤波算法导致,需要从这两方面进行解决。

解决:将TMF8821的输出速率提高到了30Hz,添加距离范围滤波、方差滤波和平均值滤波等手段,对数据进行处理,并优化逻辑为先触发再识别接下来1S数据,大幅提高识别准确率到95%以上。


七、复刻教程

  1. PCB制作

由于使用了蓝牙天线,要阻抗匹配。使用1.2mm厚度的双层板进行制作。


  1. 程序烧录

底板没有供电时,按住按键后插入USB,通过软件WCHISPTOOL进行烧录。


  1. 3D打印外壳

推荐透明PETG材料,可以清楚看到LED指示灯。


八、心得体会

  1. TMF8821传感器虽然配置过程复杂,但这也带来了其功能的多样性。在初始化时,通过烧录不同的固件来实现不同的功能,其热烧录的方法令人印象深刻。
  2. 在算法开发过程中,不要对基础函数进行忽视,在本项目中利用了基础公式如平均值、方差对手势识别的准确性和实时性提供了重要支撑。
  3. 项目开发前期,就需要大致规划好开发路程。
附件下载
3D外壳.STEP
程序工程-CH582-TMF8821-BLE-KEYBOARD.zip
程序源码
PCB_Gerber.zip
团队介绍
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号