当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]我一直被 VR/AR 技术所吸引,而最近 Meta 镜子的发布让我意识到,只需用手就能与屏幕互动是多么酷的事。这让我联想到一个长久以来的梦想——拥有一个“全息”键盘。我一直想着如何实现这个想法,却始终没有找到具体方案。直到有一天,我想:如果能用双手(或者戒指)来操作鼠标呢?我觉得这是可行的,因为鼠标输入比键盘少得多,它只是移动光标并点击。两年前,我曾用 MPU6050 制作过跌倒检测装置,于是我想,或许可以利用手部的加速度和旋转来控制光标移动。就这样,我在一个随机的周六凌晨12点,开始了我的项目开发。

我一直被 VR/AR 技术所吸引,而最近 Meta 镜子的发布让我意识到,只需用手就能与屏幕互动是多么酷的事。这让我联想到一个长久以来的梦想——拥有一个“全息”键盘。我一直想着如何实现这个想法,却始终没有找到具体方案。直到有一天,我想:如果能用双手(或者戒指)来操作鼠标呢?我觉得这是可行的,因为鼠标输入比键盘少得多,它只是移动光标并点击。两年前,我曾用 MPU6050 制作过跌倒检测装置,于是我想,或许可以利用手部的加速度和旋转来控制光标移动。就这样,我在一个随机的周六凌晨12点,开始了我的项目开发。

启动

首先,我下载了 Arduino IDE,这是与 ESP32 沟通最简单的方式。然后连接 ESP32,并尝试运行一段简单的代码片段。一开始,我无法连接ESP32,我以为可能是硬件出了问题,于是尝试了多种方法。首先检查ESP32是否故障,通过按下BOOT和RESET按钮时观察其指示灯是否亮起,结果发现指示灯正常工作。接着怀疑是线缆的问题,我花了一段时间寻找USB微型数据线,将旧线更换为新线,结果发现确实是因为线缆问题。现在IDE上显示COM端口,接下来遇到的问题是驱动程序缺失。经过一段时间的调整,我也解决了这个问题。整个开发过程持续了30到40分钟。在成功让ESP32运行后,我开始着手编写代码。

I2C通信问题

我使用了一个MPU6050的示例代码来测试它是否能正常工作,但同样没有效果。经过长时间测试后,我发现必须按住MPU6050上的线缆才能正常工作,一旦松开或线缆短暂失去张力,设备就会停止工作。不过好在,现在我们终于有了一个能正常工作的ESP32和MPU6050。

将其变成鼠标

然后我开始尝试让ESP32控制鼠标移动。下载了一个名为ESP32-BLE-MOUSE的库,这个库可以让ESP32通过蓝牙充当鼠标设备。问题在于我的IDE版本太新,不兼容该库,因此我不得不使用同一库的一个分支版本。在成功让库运行并使ESP32能正常启动程序后,我才发现我的电脑没有蓝牙功能,于是现在我用手机作为鼠标测试设备。

组装经历

接下来的六个小时里,我一直在想办法如何将MPU6050和ESP32连接到我的手上,因为这是我第一个原型。提醒一下,当时大约凌晨一点,完全是我一个人在设计。首先,我打算用绳子把MPU6050绑在一个我拥有的纯银首饰上。但做完之后,我想到如果它导电的话会怎样,于是放弃了这个想法。

接着我找到了一个用来测量戒指尺寸的小塑料环,决定把它固定在MPU6050上。这方法效果不错,但太松了,导致MPU读数不准确。另外,忘了告诉你,我并不是擅长系东西的人,而且当时其他人还在睡觉。

于是我突然想到:为什么不直接把MPU绑在我的手指上,而不是绑在戒指上呢?于是我就这么做了,起初效果不错,但后来逐渐松动了。

最后,在凌晨六点左右,我干脆用胶带把MPU贴在手指上。虽然能暂时使用,但只是个临时解决方案。

同一天下午三点醒来,我跟妈妈聊了聊这个项目,她觉得挺不错的,还问我有没有试过用橡皮筋。这让我完全震惊了——我怎么没想到呢?用橡皮筋设置起来简单多了,而且对于概念验证来说看起来也还不错。所以我最终决定坚持这个想法。

校准(进行中)

现在MPU和ESP32都已经稳定地固定在我的手上,我就可以继续编程了。经过一番测试后,我遇到了一个问题:每次重启后,MPU在相同位置给出的数值都不同,而为了确保每次重启后的运动检测准确,必须让每次重启的结果保持一致。于是我想到:如果让用户静止不动两秒,这样我就能看到平均值,然后把这个值从读数中减去,从而让所有读数都变成零。这样一来,当读数为零时,我就可以根据这些数值来控制鼠标移动了。这将是理想的情况,但问题是目前的校准过程并不理想,性能也未达到我的期望。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭