当前位置: 首页 > news >正文

TERRA触觉反馈设计:用DRV2605L震动马达无声传达“快到了“的信号

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 中由三个参数共同定义:

参数数值作用
vibrationTrigger20 米距离下一检查点 ≤20 米时,开始震动
checkpointTrigger10 米距离 ≤10 米时,判定"已到达"
proximityVibrationDelayMs500 毫秒震动之间的间隔,形成"脉冲式"节奏

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,震动标志位复位,静候下一个检查点。整个"震动—安静"的闭环,让每一次提示都干净利落。

想上手体验?三步跑起来

  1. 安装库:在 Arduino IDE 中安装TinyGPSPlusTFT_eSPIAdafruit_DRV2605三个库;
  2. 配置路线:TERRA App 会生成一份 config.h(起点 + 9 个检查点的 GPS 坐标),替换进固件目录即可;
  3. 上传测试:把 Terra.ino 上传 ESP32。把顶部的debugMode置为true,就能在串口监视器里手动输入坐标,无需走到野外也能看到 20 米震动触发生效。

需要的话,还可以 3D 打印外壳(项目内含 STL 文件),把震动马达真正装进口袋大小的设备里。

小结:好的提示音,是让提示"消失"

TERRA 的触觉反馈设计给出了一条对智能硬件很有启发的思路:触觉不是声音的替代品,而是信息的另一种模态。20 米开震、500 毫秒一抖、10 米收震——三个简单的参数,就完成了从"提示接近"到"确认到达"的完整叙事,全程无需一次抬腕、一次低头。

下次设计可穿戴或便携导航设备时,不妨问问自己:这个信息,用户"摸"得到吗?

【免费下载链接】terra项目地址: https://gitcode.com/gh_mirrors/terra2/terra

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4173856.html

相关文章:

  • thinkfan守护进程与信号机制深度剖析:SIGHUP配置热重载、fork双次启动与PID文件防重入设计
  • AI全栈开发实战:LangChain.js与Nuxt.js构建智能应用
  • 大模型自学路线与求职实战经验分享
  • CP-SAT Primer快速入门教程:从pip install ortools到10分钟求解100件物品背包问题(附完整代码与详解)
  • 如何从 Git 自动构建多版本 Modpack?SKCraft Launcher × CI 实战完整指南
  • 技术招聘实战:精准定位与高效评估策略
  • 为什么Rails应用越做越烂?Ruby Science揭秘代码腐化背后的Bug与变更定律
  • 多对多、自关联都能审计:EntityAuditBundle复杂关系版本化实现机制全解析
  • RC马术仿真项目本地部署指南:从环境搭建到批量测试
  • P4实战:从零构建ARP代理,掌握数据平面可编程核心
  • postgresql_cursor vs find_in_batches:深扒批量读取的4大致命缺陷,find_each为何不够用
  • 远程桌面与AI Agent开发实战:将高性能台式机变为便携云电脑
  • 编程思维四大核心与八种实战方法:从代码搬运工到系统设计者
  • Windows平台AI大模型本地部署:轻量化桌面应用开发实战
  • 协方差与相关矩阵:从概念到PCA与投资组合的实战应用
  • 多智能体系统中时序与结构信用分配的统一优化框架解析
  • 数学建模论文写作指南:从模型构建到高效表达的实战技巧
  • fastapi-permissions 进阶技巧:自定义403异常、All 通配权限与 ACL 归一化的6个关键点
  • 认识Pink:面向关节机器人的Python逆运动学库完全入门指南
  • 确定性AI:实现可复现输出的工程实践与CIYA项目解析
  • FlexLabs.Upsert 排错清单:InvalidMatchColumnsException 与 UnsupportedExpressionException 全解
  • Core Data与CollectionView UI实时同步:CompositionalDiffablePlayground Jokes示例收藏、上下文菜单与骨架屏动画完整实现
  • BreezeJS快速上手指南:在CustomerManagerStandard中掌握EntityManager、元数据获取与saveChanges完整工作流
  • 嵌入式学习路线全解析:从51单片机到STM32,新手避坑指南与核心技能构建
  • 数学建模实战:线性回归的核心假设、特征工程与模型诊断全解析
  • Vortigern 样式方案拆解:CSS Modules + PostCSS-Assets 完整配置指南
  • 深入react-native-app-tour源码:findNodeHandle与NativeModules如何打通JS与原生App Tour视图
  • 为什么DebugKit是Android开发者必备的悬浮调试神器?完整概览与功能解析
  • noteForOpenGL PBO像素缓冲对象:Pack/Unpack机制与CPU-GPU数据通道完整指南
  • 函数设计四大核心特性:从内置函数到模板重载的工程实践