多年前刷到电视剧《纸牌屋》里有一幕是某人边看新闻边用划船机健身,于是这个想法就深深烙在我脑海里了,以至于直至今日,我虽没完整看过一集纸牌屋,也忘了当初场景里出现的是哪个角色,还是在年初购入了某品牌的磁阻划船机(刚好夹在两次健身器材享受国补之间不是,哥们)。
不过,除了边划船边看新闻和讲座,要是能更身临其境一点就好了,比如我已经关注 Kayak VR: Mirage 的 Roadmap: Rowing machine support 这个议题很久了。
厂商倒是做了个手机 APP ,用户运动时会播放预先录制好的视频……还有一种就是 3D 游戏,一打开宣传视频就能回到塞班时代……
那么有没有开放自己动手的选项呢?迪卡侬倒是有 SDK,不过他们家划船机的价格大概是我这款的 3 倍。
鉴于厂商的网站根本打不开(明明他们 5 月又发布了一款跑步机新品),也不知道有没有支持 FTMS 协议。
另外有个侵入式的方案 Open Rowing Monitor,通过磁性传感器捕获飞轮的转动情况,推算桨频、速度、功率等数据,我这还没过保修期,只能作罢。
由于划船机是通过蓝牙与 iOS App 通信的,在 App 里删除配对,再试着用 bleak 扫描蓝牙设备,果然看到了个熟悉的名字。
成功建立连接后监听所有 notify
消息,收到了来自某个主题持续不断的报文,长度固定为 20 个字节。摆弄下划船机,发现报文有变化,停止摆弄过一会后又不变了,但是与初始报文有所不同。
那么,如果厂商只是把数据简单拼接起来传输,没有对报文进行二次加密或混淆的话,是不是可以解读出原始数据?试着将每个字节按小端字节序转换为无符号整型,再用 matplotlib 绘制跟踪曲线。20 个数据指标着实有点看花眼,于是设置当一个数据项 10 次报文都相同时,就不再绘制,直到数值发生变化。
果然世界上确实有这等好事,经过一段时间的运动观察,得出结论:
byte[4]
似乎和桨频一致byte[9]
应该是某种计数器,每划一次就会加一byte[11]
似乎和里程有着 10 m 为单位的换算关系还有一些曲线和做功有明显对应关系,但是机器没有对应的仪表盘,不好判断是什么含义(要不等周一问问客服好了)。
接下来就等哪位大佬做个支持输入数据的 3A 划船游戏了(不是)。
1
siknet 71 天前
往复式的好像都可以用自行车的里程表来计数,不知道你玩过没有,玩过应该知道我说什么
|
![]() |
2
abcde51111 71 天前 via iPhone
@siknet 里程表没用,里程表是获取的 GPS 数据好像,可以试试踏频器,获取到频率就可以了
|
3
hanguofu 70 天前
有意思:) 我觉得 可以把 这些 原始数据 收集起来,在某个 github 上汇总,这样,大家就可以根据这些数据写一些 安卓、linux 的应用练起来~~~
|
![]() |
4
xyx0826 70 天前
手机 App 能连接机器蓝牙并显示数据吗?有这个功能的话,可以考虑逆向 App 获得蓝牙数据解析的算法。
|
5
siknet 70 天前
@abcde51111 普通的码表就是电磁感应啊,很简单的原理,轮胎每走一圈都经过一轮感应器,然后根据周长计数
|
![]() |
6
amet OP @siknet Open Rowing Monitor 这个项目就是这么做的,不过我看得拆机器才能摸着里面的结构,所以就没弄。而且我还没研究过不同阻力下飞轮的转动和距离是否维持线形关系。
|
![]() |
8
goodryb 70 天前
有点意思,如果是想玩玩技术可以,如果只是想用的话不如花钱买个成品
|
![]() |
10
korvin 69 天前
|