Retrofit Touch display in 3D-printed case for NOHRD WaterRower (incl. my config) #26
Replies: 7 comments 14 replies
-
Amazing work :) I found this in thingiverse. Thanks for uploading. Did you use the whole sensor from your link, or just the sensor part with 3 connectors? If you understand. I have quite the same rowing machine, and my ORM is actually quite close to reality with reed and one magnet, But I might just be lucky tho. I am still working with the setup and calibration to match the reality as close as possible, but settings feels like a mess sometimes. Thanks mate:) |
Beta Was this translation helpful? Give feedback.
-
Hi Tobi, I have this Waterrower Club model with S4 monitor but it's almost a decade old. From pictures it looks very similar to what you have so I am trying to replicate your setup somewhat My S4 monitor died more than a year ago so i rely solely on ORM (thanks also to authors and contributors for building this !) Currently i am experimenting with just the original sensor assembly. I fed it with 5v GPIO, a GND and then the trigger via the original connector that was connected to the S4 monitor. I then copied your config and changed numOfImpulsesPerRevolution: 4 -> 40 as i counted 40 gaps in the sensor disk Also changed these I must say I totally do not understand the math behind, just thinking the frequency is higher by 10x I have not really tested it in a full session but simply rowing seems to give acceptable reading As you have a lot of experience in this model i like to get your input
Many thanks Regards, |
Beta Was this translation helpful? Give feedback.
-
Thanks @Techtobi83 @JaapvanEkris for your quick reply I read a bit more into the rower settings and guess i need to first generate raw data & chart to have some inkling what to do next. But just want to also find out if the # of signals per revolution in my case make any sense before attempting any other parameters ? In my mind the original sensor assembly works like this so I counted the numOfImpulsesPerRevolution by the number of white spaces on the disk I also just realize that this setup differ from all in the supported rower list, from my understanding if magnetic sensing is used then this param value is way below 40. So in this context should i consider going magnets + hall sensor route, lower down the numOfImpulsesPerRevolution in config or physical or just stay on course ? |
Beta Was this translation helpful? Give feedback.
-
I'm interested in your results @ong228, as I have exactly the same setup as you - a Waterrower with no monitor. So if we can tap into the existing optical sensor it would be a more elegant solution. However if that doesn't work out then Tobi's magnet design looks like a great alternative. |
Beta Was this translation helpful? Give feedback.
-
Hi @pangit99 , i have the following config working in terms of correctly detecting strokes and distance seems fine to me. The SQM reading though looks jumping around a bit and I was going to tinker a bit more with DragFactor param when our little home reno is over. I had DragFactor:4300 for a full rowing session but was not quite happy, value 5000 is not tested in full session I try to keep rowerSettings with minimal changes as possible from default, found that tight minimumStrokeQuality value solved the stroke detection accuracy somehow. Since i am running Pi Zero 2 , it does not seem happy with high flankLength Maybe we can start a new topic to share our findings ;) 'use strict' export default { gpioPin: 21, createRawDataFiles: false, rowerSettings: { } |
Beta Was this translation helpful? Give feedback.
-
I was going to try using a Pi Zero (original) since that's what I have spare. With the original optical wheel having 40 slots it may overload the CPU, so one way around that may be to 3d print a new wheel with say only 4 slots. I'm not keen on just throwing more CPU horsepower at the problem if it can be resolved in other ways. Worth a bit of experimenting. |
Beta Was this translation helpful? Give feedback.
-
Hi @ong228 can you explain your hardware set up? I cannot get it to detect my strokes at all. I found this circuit diagram for the OPB365T55 phototransistor my Water Rower uses, with values of 270 Ohm and 10 KOhm for R1 and R2 respectively. I am assuming the clear plastic side of the phototransistor is the LED i.e. the red cable (right?), so I've connected red to 5V via the 270Ohm resistor, and the blue (Vout) connected to GPIO17 on my RPi. the 1K resistor bridges +5V and Vout. Green is connected to Gnd. Am I on the right track? |
Beta Was this translation helpful? Give feedback.
-
hereby i presenting my way, how I built this great project (with great help from Jaap - BIG thanks again!) on my WaterRower Classic from NOHRD:
This is an Raspberry Pi 4 PCB with an 4,3" Touchdisplay in an 3D-printed case. All detailed files and instructions can be read & downloaded here: Download here: https://www.thingiverse.com/thing:6421760
Version 2 of this case is online since 20th january 2024 with lots of improvements AND: all STEP-files can be downloaded too (so everyone with some 3D skills is able to modify this project for his own rower frame)
*** Note: I am happy to help if I can get some photos with measurements to design a bracket for your Rower ***
The deviation of the distance rowed after 10km between the original S4-Monitor and ORM was less than 1%.
I would like to thank all developers here once again for this great project. Your documentation is very valuable. Special thanks again to Jaap, who helped me a lot with the configuration via Discord.
I am now finally able to row online with you. Quick info why I didn't use factory options: the existing Bluetooth module "ComModule" , a bluetooth extension for the original S4-Monitor does not work for me technically. After communicating with the manufacturer support, the USB port of my original display is broken (replacement board: 150 EUR!). In addition, there are not many good reports about this thing (constant disconnections). The last option was the SmartRow, unfortunately extremely expensive. So now ORM is running :-)
My config.js:
'use strict'
/*
Open Rowing Monitor, https://github.com/laberning/openrowingmonitor
You can modify this file to configure Open Rowing Monitor to your needs.
This file should be placed in the 'config' folder of Open Rowing Monitor.
All available configuration parameters are visible in config/config.default.js
To modify a parameter, copy it to this file and modify the value.
Changes to this file are persisted when you update to new versions.
*/
// eslint-disable-next-line no-unused-vars
import rowerProfiles from './rowerProfiles.js'
export default {
// Available log levels: trace, debug, info, warn, error, silent
loglevel: {
// The default log level
default: 'info',
// The log level of of the rowing engine (stroke detection and physics model)
RowingEngine: 'info'
},
magicConstant: 2.0,
sprocketRadius: 9.0,
flankLength: 8,
minimumTimeBetweenImpulses: 0.005,
maximumTimeBetweenImpulses: 0.15,
minimumDriveTime: 0.40,
minimumRecoveryTime: 0.50
},
}
A few tips for beginners on how I finally realised the project (and also for me to read up on at some point):
I have not had good experiences using a reed switch (v1beta still ran with it, v1beta_updates did not --> switch bounce). I switched to an hall sensor (49e, https://www.amazon.de/dp/B07DPVTKBB?ref=ppx_yo2ov_dt_b_product_details&th=1 ).
The following 2 images shows the hugh difference:
Final notes:
The config.js is a "living" project, means: I'm still trying things out a bit.
Everything works as described above. But without using the "magicConstant" I was not able to set the rowed distance correctly.
Unfortunately, I can't increase the dragfactor very much. From 20000 fast strokes per minute (>24 spm) are no longer detected and from 22000 the stroke detection stops completely. Same problem with flyWheelInertia, which I can not reduce , otherwise stroke detection stops (at least the GUI).
Anyway, i am happy with the actual results, cause my goal was to get bluetooth support for my rower, to be able using EXR and rowing with other people worldwide. This goal was reached, i synchronised data with the original S4-Monitor so that my usual performance data also matches in ORM (EXR).
Greetings from germany
Tobi aka TechTobi
Beta Was this translation helpful? Give feedback.
All reactions