Wirelessly control your treadmill, replace the old lackluster dashboard with graphics and workout analytics! Replace the dashboard with a monitor and add a small computer and you have a Treadmill Workstation.
This project is implemented using hardware wired to a RaspberryPi, BeagleBoard or other Linux device running this nodejs project. A React web client provides the treadmill control interface and can be served from the same RPi or BBB using Apache or any simple web server or can also be served remotely and connect to the hardware node.
You may also find some deprecated projects in older branches such as Spark based hardware control, AngularJS based web interface, and MacOS widget control. These dont work well for one reason or another but they are there if you are bored.
I was inspired by the dial control of the Nest thermostat. I've encorporated the dial full screen into the center and then added enhanced indicators and controls around the circumference of the dial that include incline and autopace indicators as well as quick-speed buttons.
I've replaced my old treadmill dashboard with a 27" monitor and hooked it up to a Mac Mini. My keyboard, mouse and touchpad are all wireless. This is sweet! A workstation without the wires and controllable via a web page. This should help get me back to health. Already I feel more energy, and more creativity as I work a difficult day job that requires me to be at the computer long periods of time.
Refer to the README.md in each of these directories for more information.
Deprecated Code (found in old branches)
LOW PASS FILTERS: Let's talk about low pass filters. :) The treadmill controller generates a lot of noise on the signals, both the speed signal and the incline sense. It is important to filter out this noise if we are going to get nice clean signals into our spark. This is pretty easy since the noise is of a high frequency and our signals are all well under 1kHz. We could use complicated code to debounce the inputs, but why risk introducing bugs and make the code unreadable when a simple resistor and capacitor will do?
You need to add low pass filters on all input signals and the speed output signal. The speed output already has a 290ohm resistor as a current limit, so a 0.22uF capacitor will do here. For simplicity you can also use the same 290ohm and 0.22uF cap on the other lines. This will keep a good low-impedance connection between the signal transmitter and receiver.
I assume your spark controller and the MC2100 is seperated by a long cable, where possible put the filter closest to the input/receiver side. That means near the MC2100 for the speed output and at the spark for the sense inputs.
A good low-pass resistor-capacitor calculator can be found here: http://www.learningaboutelectronics.com/Articles/Low-pass-filter-calculator.php#answer1