TERRA触觉反馈设计:用DRV2605L震动马达无声传达"快到了"的信号
【免费下载链接】terra项目地址: https://gitcode.com/gh_mirrors/terra2/terra
TERRA 是一款掌心大小的开源徒步导航设备,最特别的设计之一,是它不靠屏幕、不靠声音,而是用触觉反馈告诉你"快到了"。当 GPS 判断你距离下一个检查点越来越近时,设备会开始轻柔、有节奏地震动——手心的每一次"嗡",都是一次无声的导航提示。
为什么导航信号要"摸"到,而不是"看"到?
TERRA 的产品理念是"mindful wandering"(正念漫步):把你从手机里解放出来,重新感受周围的风景。它的屏幕只有一块 1.28 英寸的圆形小 LCD,平时只显示一根安静的指南针箭头。
如果每靠近检查点就要低头看屏幕,"放下手机"的设计初衷就落空了。TERRA 的解法是:方向交给屏幕,"快到了"交给指尖🖐️
这样,走路的人可以专注于脚下的小径,仅凭手掌传来的震动节奏,就知道自己离目的地还有多远。
核心硬件:DRV2605L 震动马达驱动板
TERRA 的触觉反馈由一块Adafruit DRV2605L 触觉控制器扩展板实现,它与主控 ESP32 Feather 通过 I²C 总线通信。
DRV2605L 的巧妙之处在于:
- 内置效果库:芯片里预置了几十种震动波形(渐强、正弦、脉冲等),MCU 只需发送一个编号即可播放,无需自己合成波形;
- 触发简单:设置好"内部触发"模式后,一条
go()命令就能播放震动效果; - 不占 CPU 资源:震动由驱动芯片独立完成,ESP32 可以放心继续处理 GPS 数据。
想单独验证这块板子是否工作,可以参考项目自带的最小示例:VibrationMotor.ino。
"快到了"是怎么触发的?三组关键参数
TERRA 的震动逻辑在 Terra.ino 中由三个参数共同定义:
| 参数 | 数值 | 作用 |
|---|---|---|
vibrationTrigger | 20 米 | 距离下一检查点 ≤20 米时,开始震动 |
checkpointTrigger | 10 米 | 距离 ≤10 米时,判定"已到达" |
proximityVibrationDelayMs | 500 毫秒 | 震动之间的间隔,形成"脉冲式"节奏 |
20米触发:震动的"提前量"
在导航状态机里,只要 GPS 计算出的距离进入 20 米范围,proximityVibrationTriggered标志位就会打开(Terra.ino)。20 米大约就是两三个身位的步行距离——刚好给你留出"确认一下方向"的反应时间。
500毫秒一次:震动的"心跳节奏"
震动不是一直嗡嗡响,而是在主循环中每隔 500ms 播放一次 DRV2605L 效果库的58 号预设——一段平稳的正弦震动(见 Terra.ino):
drv.setWaveform(0, effectNumber); // 播放 58 号效果 drv.setWaveform(1, 0); // 结束波形 drv.go(); // 开始震动这种"一抖一停"的节奏设计很贴心:既不会像持续震动那样让人烦躁,又比单次震动更能传递"你正在接近"的渐进感——就像远行时听到的、越来越密集的心跳。
到达即静默:震动的"收尾"
当距离进入 10 米、判定到达检查点后,设备会切换到AT_CHECKPOINT状态并展示对应编号的检查点图案,震动随即停止。5 秒后状态机回到NAVIGATING,震动标志位复位,静候下一个检查点。整个"震动—安静"的闭环,让每一次提示都干净利落。
想上手体验?三步跑起来
- 安装库:在 Arduino IDE 中安装
TinyGPSPlus、TFT_eSPI、Adafruit_DRV2605三个库; - 配置路线:TERRA App 会生成一份 config.h(起点 + 9 个检查点的 GPS 坐标),替换进固件目录即可;
- 上传测试:把 Terra.ino 上传 ESP32。把顶部的
debugMode置为true,就能在串口监视器里手动输入坐标,无需走到野外也能看到 20 米震动触发生效。
需要的话,还可以 3D 打印外壳(项目内含 STL 文件),把震动马达真正装进口袋大小的设备里。
小结:好的提示音,是让提示"消失"
TERRA 的触觉反馈设计给出了一条对智能硬件很有启发的思路:触觉不是声音的替代品,而是信息的另一种模态。20 米开震、500 毫秒一抖、10 米收震——三个简单的参数,就完成了从"提示接近"到"确认到达"的完整叙事,全程无需一次抬腕、一次低头。
下次设计可穿戴或便携导航设备时,不妨问问自己:这个信息,用户"摸"得到吗?
【免费下载链接】terra项目地址: https://gitcode.com/gh_mirrors/terra2/terra
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考