AlterErgo 是一款开源手持式蓝牙控制器。基于为吉他手设计一款价值 5 美元的手指练习器, 通过添加电子设备以测量每个手指挤压的程度,并测量您握住设备的方向,根据这些信号通过蓝牙低功耗无线传输虚拟鼠标或键盘命令到计算机(Windows,Mac,Linux,Android 或 iOS 设备)。 您可以在沙发上使用它来控制智能电视 / HTPC / 媒体播放器,或者在床上懒洋洋地上下滚动网页冲浪。

 

 

相对于市面上大多数“符合人体工程学”的电脑鼠标,这款产品更有效。所有这些设备都适用于某些特定用途,有些仍然会导致 RSI 健康问题,或者难以执行常见操作,比如鼠标点击,滚动或选择项目。 例如,眼睛和头部跟踪器可以非常轻松地移动鼠标光标,但是当您想要实际点击某些内容或向下滚动网页时,通常需要停止并将其悬停到特殊位置 5 秒钟(选择左侧或单击鼠标右键,然后将鼠标悬停在所需的单击位置上。

 

作者找到了一个手指加强辅助设备吉他训练器(旨在降低吉他手和钢琴家的 RSI),并且可以轻松执行一些常见操作,例如鼠标点击,鼠标滚动或按下常用键。 它可以单独使用(例如从沙发上)或与头部跟踪器或眼睛注视跟踪器结合使用。 通过组合 4 个模拟手指输入,3D 加速度计,3D 陀螺仪和按钮,有很多不同的方法可以使用这个设备!

 

设备支持双手操作,你可以用你的左手或者右手使用,或者你可以同时使用 2 个,例如用左手执行键输入,用右手输入鼠标! 400mAh 电池可持续使用约 10 小时。

 

演示视频请访问:https://youtu.be/T4AdAVbuD3Y

 

制作流程:

如果您想自己制作,请按照下面的构建说明进行操作。 它需要 SMD 焊接,订购零件,以及使用 mbed(免费在线编译器)编程微控制器。

 

器件清单:

 

通常需要 1 或 2 个整个周末来构建它们,并且部分成本约为 50 美元。鼠标和键盘行为也是高度可定制的,例如发送空格键而不是 Backspace。 但是如果你想要它将手指位置与设备运动或方向结合起来,那么你将会需要了解 C / C ++代码。您还可以非常轻松地为此设备添加按钮输入。

 

第一步:取下吉他训练器的橡胶端并插入磁铁
当你第一次买它时,未经修改的吉他练习器看起来像这样:

 

 

只需将大灰色橡胶掌托拉下即可。

 

在 4 个黑色塑料孔的每一个中插入磁铁。 不要担心磁铁周围的方向,因为你稍后会测量它是否需要更换磁铁。

 

你不需要粘上磁铁,它会用磁力自行固定在金属杆上:-)

 

第二步:切割橡胶掌托
您需要将 Tiny BLE 板上的 6 根电线传送到 4 个传感器中,这些传感器将保留在橡胶掌托内。 因此,在橡胶边缘切出约 1.5mm 厚 x 8mm 长的切口,以允许电线穿过。

 


还要在每个内部橡胶凸缘上切割小切口(1mm 厚),以便从左侧到右侧,每根指板之间可以穿过几根导线。

 

布线最终会是什么样子:


第三步:拆下 4 个小型 SMD 适配器 PCB 的角


您需要 4 个足够小的 PCB,以适应橡胶片的现有间隙,同时仍然有足够的引脚来固定 3 针传感器和一些电线。 我使用剪线钳将 SOIC 缩小到 DIP 适配器 PCB 以适应。 引脚与传感器不完美对齐,因此您可以考虑构建定制 PCB,以便更容易焊接。

 


第四步:将 4 个传感器焊接到 PCB 上
这一步的接线在理论上非常简单,但是你需要相当稳定的手和眼睛,因为它需要 SMD 焊接。 这些 3 引脚 DRV5053 传感器只有一个接地,正极和信号引脚。

 

 

要将这些传感器中的 4 个连接到 TinyBLE,您只需要一条连接所有 4 个传感器的 GND 线,一个连接所有 4 个传感器的 VCC 线,然后是 4 个不同信号引脚的 4 根独立线。

 

(完整的 KiCad 原理图位于 https://github.com/shervinemami/AlterErgo/tree/master/Schematic )

 

使用 30 AWG 左右的细线代替普通的 24 AWG 连接线。 建议所有 GND 连接使用黑色,所有 VCC 连接使用红色,然后信号引脚使用 1 种颜色或 4 种颜色。并在其中一个传感器板的 VCC 和 GND 引脚之间连接一个 SMD 电容(例如:100nF)(如下图所示),以减少电气噪声问题。

 

 

橡胶间隙中没有足够的空间来容纳长线,因此请确保您的线都非常接近理想长度。

 

在这个阶段,您可能需要获取 3.3V 电源(例如 Tiny BLE 板上的 3V3 引脚)并使用万用表测量 1 或 2 指的输出电压,以确定前 2 个传感器是否在焊接前工作剩下的传感器。 在每块 PCB 背面涂上少量 Blutac 或双面胶带或热熔胶,使其粘在橡胶上。

 


小心地将橡胶掌托放回锻炼器上。 连接 3.3V 和 GND,确保在每个手指靠近时看到电压向上或向下移动。 如果在挤压手指时电压增加或减少,请不要担心,我们可以在测试软件时更换方向。 确认 2 个传感器正在工作后,将所有 4 个传感器连接到 TinyBLE 边缘的 6 个引脚。

 

连接好的效果如下:

 

第五步:把所有东西连在一起
使用双面胶带或热熔胶将 TinyBLE 连接到吉他训练器的侧面,在锻炼器的另一侧安装 LiPo 电池。

 

  • TinyBLE 在顶部,
  • 吉他练习器在中间,
  • 电池底部。

 


切断 LiPo 电池的默认连接器,并将一个小型滑动开关与 LiPo 电池串联(如果不清楚,请参阅完整电路原理图),然后在末端连接 JST SH 1.0mm 2 针电池连接器。 Tiny BLE 板上有 2 个微型电池连接器。 将电池连接器插入标有 CHRG(靠近 USB 端口)的插座中,以便使用典型的 micro-USB 电缆为其充电。

 

 

第六步:选择固件
现在我们准备将我们的固件上传到 Tiny BLE。 使用 micro-USB 线将 Tiny BLE 插入计算机,以便将代码上传到设备中。 (如果您的设备没有蓝牙也没有关系,它只需要 USB。例如,如果您没有计算机,您可以在任何 Raspberry Pi 上开发代码,使用 USB 将代码上传到 Tiny BLE ,然后让 Tiny BLE 控制你的 Android 或 iOS 手机或电视媒体播放器)。

 

我的代码可以充当无线键盘或无线鼠标,但不能同时充当两者。 因此,您需要确定您的设备是键盘还是鼠标。 (请记住,如果您构建了 2 个设备,那么您可以为另一只手构建一个键盘,另一只手可以构建一个鼠标,如果需要,可以同时将它们连接到同一台计算机或电话)。

 

如果您希望您的设备成为无线键盘:

按照标题为“上传无线键盘的固件”的步骤操作,然后跳过鼠标步骤。
或者,如果您希望您的设备是无线鼠标:

跳过键盘步骤并跳转到标题为“上传无线鼠标的固件”的步骤。

 

第七步:上传无线键盘的固件:
打开
https://os.mbed.com/users/shervinemami/code/Shervs_TestKeyboard_TinyBLE/ 上的代码(点击“导入编译器”,这样您就可以在您的 mbed 在线帐户中使用它)。

 

默认情况下,键盘代码提供以下操作:

 

挤压手指 1 发送 F8 键,
挤压手指 2 在挤压时发送 F4 键,在释放手指时发出 Numlock。
挤压手指 3 发送 Up 键。
挤压手指 4 发送向下键。

 

手指 2 在挤压与释放时发送不同按键的原因是为了显示只要你挤压手指就可以发出信号。 例如,您可以设置计算机在手指被挤压时处于静音状态,并在手指释放时取消静音。

 

您可以通过编辑“main.cpp”文件轻松更改这些键映射。 在第 53 行附近查找此代码:

 

const int FING1_KEYCODE = KEYCODE_F8;
一些常用的密钥代码放在该文件的顶部,但您也可以在“ https://github.com/jpbrucker/BLE_HID/blob/master/BLE_HID/Keyboard_types.h ”中找到更多密钥代码。

 

Tiny BLE 演示代码显示了如何测量设备方向,需要的话可以自行添加。

 

如果要在电池电量不足时禁用键盘消息的发送,请在“main.cpp”中查找代码行:

send_string(“RECHARGE BATTERY!”);
通过将其更改为:注释掉该行:

// send_string(“RECHARGE BATTERY!”);


准备好键映射后,单击“编译”,然后保存生成的 hex 文件,并将其复制到 Tiny BLE 虚拟驱动器上。

 

第八步:上传无线鼠标的固件
打开
https://os.mbed.com/users/shervinemami/code/Shervs_TestMouse_TinyBLE/ 上的代码
(单击“导入编译器”,以便在 mbed 在线帐户中使用它)。

 

默认情况下,鼠标代码提供以下行为:

 

挤压手指 1 发送鼠标左键。
挤压手指 2 发送鼠标右键。
挤压手指 3 向上发送鼠标滚轮。
挤压手指 4 发送鼠标滚轮向下滚动。


当电池电量不足时,LED 将保持蓝色,直到您关闭设备。
您可以通过编辑名为“main”的函数底部附近的“main.cpp”文件来更改这些行为。 两个重要的部分是手指被挤压时:

 

if(fing1> FINGER1_PRESS &&!press_keyup [1]){
当手指首次释放时:

if(press_keyup [1] && fing1 <FINGER1_RELEASE){
您可能还希望通过更改代码中的第 3 个数字,如果手指被挤压而不是轻轻挤压,则滚动鼠标滚动速度更快:

mouseServicePtr-> setSpeed(0,0,1);


可以根据个人喜好进行调整。

准备好鼠标映射后,单击“编译”,然后保存生成的 hex 文件,并将其复制到 Tiny BLE 虚拟驱动器上。

 

第九步:故障排除
启动期间 LED 呈蓝色,然后在等待蓝牙 BLE 连接时,每秒闪烁红色约两次。 然后在连接到 BLE 时切换到非常缓慢地闪烁绿色 LED。 如果您看到 LED 停止闪烁,那么您的代码可能存在错误!

 

如果遇到问题,可以使用 micro-USB 将设备插入计算机并运行 PuTTY 或 picocom 以 115200 速率显示日志消息。 当 Tiny BLE 启动时,您应该在串行端口上看到各种日志消息。 启动大约 1 秒后,您应该会看到偶尔打印一行数字,例如:

 

0.27 F1 = 0.38,F2 = 0.33,F3 = 0.31,F4 = 0.32


这意味着电池值为 0.27,手指 1 的值为 0.38 等。如果这些值中的任何一个正好为 0.00 或 1.00,则接线出现问题,因为它们通常都在 0.10 到 0.90 之间。 当您挤压手指时,手指值应该会增加,但是如果您发现某些手指值正在减小,那么您只需要打开灰色橡皮手掌并将手指的磁铁方向交换掉,这样就可以了导致相反的磁场。

 

如果要调整每个手指需要挤压以触发事件的量,或者您想要调整手指运动的范围,请编辑“main.cpp”中的值,例如 FINGER1_PRESS 和 FINGER1_RELEASE。

 

如果您遇到蓝牙 BLE 连接问题,请尝试从计算机上取消配对并关闭设备,然后重试。 在 Linux 上,我发现通过运行命令“sudo systemctl restart bluetooth.service”,重启蓝牙服务有时会有所帮助。
 

如果你对这个项目感兴趣,想获取更多信息请访问:
https://hackaday.io/project/160690-ergonomic-handheld-mouse-keyboard-alternative

 

与非网编译内容,未经许可,不得转载!
 

有人说硬件技术将很快达到极限,而在我们看来,硬件创新,尤其是中国硬件工程师的创新,还远未走到尽头,而只是刚刚开始。作为致力于为全球硬件开发者提供技术共享服务的平台,与非网母公司 SupplyFrame 旗下最大的全球硬件开发者社区 Hackaday.com 已连续五年举办全球硬件开发者大赛 Hackadayprize,有超过 3000 多个硬件团队在这个赛事中互动交流、切磋技艺。


这个《硬件改变世界》系列,我们挑选在前几届 Hackadayprize 大赛中获奖的优秀作品加以展示,硬件技术可以多有意思,硬件开发者可以多有创意,从这些作品中你可以看到。

2019 年 3 月,Hackadayprize 中国区赛事将隆重开启,我们很期待看到国内的硬件开发者大开脑洞、大展技艺。你准备好了没,与来自全球的硬件开发者同台 PK?