开源墨水屏骑行码表

查看原文 HN 讨论

文章摘要

一个跑在现成开发板上的 DIY 电子纸码表

OpenTrailPaper 是一套开源固件,目标硬件是 LilyGO T5S3 4.7 吋 E-Paper PRO 开发板。它不卖硬件——板子要你自己买、自己做防护——它提供的是把这块板子变成骑行码表的全部软件。核心规格:960×540 电子纸屏、16 MB Flash、8 MB PSRAM、BLE 5、1 Hz 的 FIT 文件记录、基于 H3 的离线地图瓦片、以及一个通过 Web Serial 在桌面 Chromium 浏览器里就能刷固件的烧录页面。

在车上能做什么(不需要手机):GPS 轨迹记录,显示速度、距离和实时地图;每次骑行记录成 SD 卡上的 .fit 文件;沿已加载路线做逐向导航提示;运行 .erg 或 .mrc 格式的结构化训练课表;通过蓝牙配对心率计和功率计。地图和路线一旦下载好,整个骑行过程完全不需要手机或数据信号。

手机 App 负责准备和传输:iOS(App Store,免费,需 iOS 17+)和 Android(APK 侧载,Beta,需 Android 8+)配套应用可以规划路线并把 GPX 传到设备、为新区域构建离线地图、创建训练课表并排列设备屏幕、把骑行记录拷回手机查看地图/距离/功率/心率/估算爬升、以及通过蓝牙改设置和升级固件。没有账号,没有订阅。

作者主动列出的六项短板

项目页面上有一节把缺点摊开讲,这在 Show HN 里相当少见,也是评论区多人称赞的一点:

  1. 没有气压计:没有气压高度计,爬升是从地图瓦片里烘焙的高程数据推算的,总爬升只是估算值。
  2. GPS 很基础:接收机能用,但现代多频模块锁星更快,在树冠下和楼宇间保持定位也更稳。
  3. 没有磁力计:没有罗盘,地图只能靠行进方向定向,停下时无法指向正确方位。
  4. 续航实测约八小时:1500 mAh 的配置在前灯关闭时跑了大约 7.4 小时可用时间,功耗优化还在进行中。
  5. 硬件按键弱:绝大部分交互靠触摸屏,戴冬季手套或下雨时很难用。
  6. 完全不防水:裸板出厂,没有任何密封或 IP 等级,湿天骑行前必须自己做外壳或塞进包里。

页面上还专门开了一个「招募更好的目标板」板块:理想的板子应当包含气压高度计、多频 GPS、磁力计、更大电池、好用的实体按键和防水外壳;欢迎开 issue 推荐,也欢迎向仓库提交其他板子的移植。

作者在 HN 自述里埋的彩蛋

比网站正文更有信息量的是作者 stingrae 在 Show HN 里补的一句:在 AI 干过的疯狂事情里,它帮忙通过折腾未公开的寄存器,为 ESP32 实现了 ANT 协议(ANT+ 是运动健身设备普遍使用的传感器无线协议),代码开源在 RaemondBW/esp32-ant。这句话后来成了整个评论区技术含量最高的一条线索。

HN 评论精华

帖子拿到 422 分、133 条评论。讨论集中在三件事上:ANT+ 的实现是怎么做到的、电子纸到底适不适合码表、以及「专用设备 vs 手机」这个骑行圈的经典之争。

ANT+ 跑在 BLE 硬件上:全场最受震动的点

kccqzy 的反应代表了大多数人:「哇,你居然用 BLE 硬件收到了 ANT+?我不知道这两个协议这么像。」作者 stingrae 解释说,幸运的是它们的物理层相同,都是 1 Mbit/s GFSK 调制;他还补充破解的关键工具是一台 HackRF One。woodgala 补充说协议并不相同,但物理链路是同一套,802.15.4 / Thread / Zigbee 也是这个关系。

围绕 ANT+ 的未来,jeffbee 甩出一句「它被欧洲监管者从轨道上核平了——生态装机量巨大但没有未来」。__d 解释了原委:欧盟要求个人信息必须加密,导致 ANT+ 基本已死,新设备都得转向 BLE;他为这个曾经极其丰富的生态惋惜——速度踏频传感器、心率带、功率计、车灯、雷达,过去二十年极其流行。jeffbee 进一步说,两者虽共用物理层,但 ANT+ 的协议方案比 BLE 更适合超低功耗实现,「欧洲人认为我的车轮转速传感器需要加密来保护隐私」,实际上等于把未来硬件上 ANT+ 的低功耗特性给取缔了。这里作者 stingrae 给出了全串最有反讽意味的一条实测观察:疯狂的是现代 BLE 实现基本上是不设防的——他测试时不断收到周围所有人的 Whoop 和各种 BLE 设备向任何愿意连接的人广播心率数据。

consp 泼了盆冷水:解码这些协议不需要 AI,人们早就做过了,LS、KT、Bafang 的 UART 协议都有大量开源代码;不过他也建议尽量避开这些协议,CAN 可靠得多。

电子纸值不值:一场长达十五层的对线

wiether 写了一份逐条否定的清单——低功耗?现在的 GPS 码表已有 30 小时以上续航,不重要;低眼疲劳?你不会盯着屏幕看几小时,不重要;可视性?现有设备会自适应环境光,不重要;可视角度?屏幕就在你正前方,不重要。而缺点(刷新率、黑暗中不可见、没有颜色)却是实打实的。mattlutze 反驳说这台设备有实体按键控制的背光,导航刷新率不重要因为你在骑车而不是盯着看,1 Hz 足够当参考。作者 stingrae 亲自下场澄清了几个事实性误解:刷新率我可以推到 20 Hz,对这个项目来说完全不必要;背光基本等同于 Kindle;颜色一般,但我不想念它;我最爱的是它在直射阳光下的可读性(而那正是我骑车的时候)。itsdesmond 和 schiffern 分别提醒双方注意语气。

真正的技术硬仗发生在 carlosjobim 和 pandaman 之间,主题是「电子纸的对比度到底好不好」。pandaman 搬出面板规格:本项目这块电子纸的对比度是 12:1,商用电子纸最好的约 20:1,而最垃圾的 LCD 也有 500:1。carlosjobim 坚持认为测量屏幕内部的对比度在户外几乎没有意义,重要的是它在真实环境(阳光下)中的对比度;所有自发光屏幕在阳光下都工作在一个极窄且极暗的动态范围里,而电子纸不发光,所以明暗分离更清晰。他举了个反例:烛光下桌上的印刷纸比全亮度 LCD 难读,但在阳光下纸的对比度会比任何 LCD 好上百倍。pandaman 反驳说 carlosjobim 混淆了对比度和亮度:对于非自发光显示,环境光强度对对比度毫无影响,白色颜料反射的光是黑色颜料的约 15 倍,这个比值在烛光、太阳还是超新星下都一样;电子纸的「黑」只是更浅的灰,反射率更高即反照率更高,这是亮度不是对比度。他还指出,正因为你看屏幕前刚看过更亮的场景,低对比度屏幕在户外反而更难分辨细微亮度变化。旁观者 tucosan 评价这一串「极其有娱乐性」,并特别感谢 pandaman 的耐心。

ianburrell 提出了一个实际替代方案:大多数骑行码表用的是半透反射式 LCD,同样靠反射但对比度比电子纸好。flutas 举了初代 Pebble 手表的例子,v1ne 建议用夏普 MIP 屏。有意思的是 scottbez1 的一手对照:他刚买了 Waveshare 的 RLCD 想试试阳光可读 + 高刷新率,结果和本项目用的那块电子纸并排一比就后悔了——LCD 的对比度差太多了,「亲眼见到实物之后我被说服了」。kccqzy 则给出了朴素的理由:我现在的量产码表已经有半透反射屏了,没必要再做一个;而我从没见过电子纸的,这才是这个项目真正的创新点。

耐久性方面有两条重要警告。zsoltkacsandi 说电子纸在这个场景下非常脆弱,轻微跌落甚至持续震动都会碎。orbital-decay 和 dinan 都提到长时间阳光直射会损坏甚至杀死电子纸面板,户外用至少需要 UV 滤片,而热量无法避免;Waveshare 面板在阳光下刷新会显得很褪色。作者的回应是:他已经用这台机器骑了五百多英里没出问题,不过湾区的夏天不算严苛。carlosjobim 在这里贡献了全串最好的玩笑:「也许你蹬得够快它们就被风冷了?」

专用码表 vs 手机:老问题,新数据

mholt(Caddy 作者)说自己正在做一个 iPhone 骑行码表 App,理由是不想多带一个设备。他描述了相当细的设计:多种骑行模式(3D 地图、高对比度线框地图、仪表盘、以及带大触摸区的纯语音模式),App 会根据机身温度自动切换模式以保住续航;即便调暗的 iPhone 屏幕在高海拔阳光下也够用。但他结尾还是承认:「那块电子纸看起来太干净太漂亮了,显然是更优的显示技术。」

反对手机方案的理由被列得很全。作者 stingrae 给出了一条很多人不知道的:把手机装在自行车或摩托车上,长期震动会损坏相机模组,尤其是光学防抖用的马达。raudette 贴出了苹果官方支持文档(承认高功率摩托车引擎的震动可能影响 iPhone 摄像头),并说自己 iPhone 7 的相机坏掉就是因为装在车上;asdff 说自己公路车的车把杀死了 iPhone 相机,现在只放车座包。alabut 说手机当码表只适合短途城市骑行,长一点就会被晒到降亮度、停止充电,所以他的 bikepacking 车队都用带太阳能的头显单元(Coros Dura 最流行)。woodgala 的理由是安全:手机是我生活的信任根,绝不会放在车把上让人在解锁状态下顺手抢走。opello 贡献了一条昂贵的教训:他把手机放在防水车包里用了多年,最后 Pixel 7a 上被 Wahoo App 状态屏烧屏了——不带功率计时显示的那个「n/a」永久留在了屏幕上。KennyBlanken 的说法最不客气:「这不是偏好问题……我看到把手机放车把上的,只有新手。」

续航与其他产品对照

jeffbee 认为要做到 Garmin 的续航水平会很磨人:只有这个尺寸四分之一大的 Edge 550 用自发光屏也能跑一天多,而更大的 Edge 1050 反而更久——更大的设备里更大的电池不止补偿了屏幕功耗。kccqzy 说「才一天?COROS 有 100+ 小时的 GPS 骑行续航」,并指出功耗大头其实是 GPS,你需要整个 GPS 栈跑在省电处理器上,而不是手机的应用处理器上。prmoustache 补充说 COROS 的代价是只能用专有 App 同步、数据大概率都传回原厂。__d 给出了专用设备无法被取代的场景:多日野外 bikepacking、超长距离比赛——手机太费电,而你可能一两天都没法充电。

功能请求与生态建议

雷达支持是呼声最高的功能。insane_dreamer 和 lostlogin 都说 Garmin Varia 雷达(提示后方来车)是真正的救命装置,没有它就不骑车了,这是他们换用开源方案的唯一阻碍。_kb 建议既然 ANT+ 已经跑通,下一步顺理成章是支持轮速传感器——精度比 GPS 高得多、功耗也更低;他推荐 Garmin Speed Sensor 2,绑在花鼓上的一个纽扣电池加 MEMS 转动传感器,除了做 ANT+ 外设还能独立记录最近 300 小时的骑行时间。shrinks99 和 steve_adams_86 推荐改用 Protomaps / PMTiles 作为地图瓦片格式,把所有东西存在单个文件里,存取都很高效。godelski 给了一条很实际的建议:这类项目应该把 BOM 和价格估算放在最显眼的位置,即使价格会变,它能让人快速判断「我要不要在这上面花时间」。neoCrimeLabs 说他十秒内就被说服要试,而他想要的下一步是把所有传感器数据导入自己拥有、自己控制、不绑定在别人利润上的健身数据库;rfonseca 推荐 intervals.icu,但 neoCrimeLabs 指出那还是 SaaS,不是自托管的。jbj 建议和 Gadgetbridge、Endurain 配合使用。

Ninn 代表了一类潜在贡献者的态度:喜欢这个项目也喜欢 ESP32 ANT 的成果,但要更深度参与,需要它跑在一块真正有防水能力的板子上。StrLght 希望硬件按键更大、整机更小(4.7 吋几乎是一部手机了),作者 stingrae 回了一句意味深长的「我可能正在做点什么……」。Rebelgecko 夸了官网上那个半交互式的设备演示是展示 UX 的好方式,并提到自己一直想把迷你码表塞进车头碗组盖里;pandaman 随即从机械角度指出这行不通——顶盖和穿过它的螺栓要负责预紧碗组,18650 电池塞不进去。