3
\$\begingroup\$

I'd like to write a desktop app that would be able to automatically read all measurements off my treadmill, and to fully control the treadmill instead of the native dashboard.

Unfortunately I know next to nothing about electrical engineering, and I was hoping that someone could point me in the right direction as to how to go about building the interface between my computer and the treadmill.

Let me first describe the setup. The treadmill has two major parts -- the dashboard, and the mechanical part with the running surface. They are joined together via 8-pin connector shown here:

Link to the image of my treadmill's 8-pin connector

The dashboard has various controls that can set the speed and the incline of the running surface. It also has the handles that measure heart rate.

I was hoping to perform an analog of a "man-in-the-middle attack" on the connection between the dashboard and the mechanical part, and insert my own controller between them that would be able to both read the measurements and control the running surface.

I'd imagine that one could buy a some sort of 8-pin splitter and connect it into Arduino that would in turn connect to my desktop. Is that a reasonable approach?

If I can "intercept" the communication between the dashboard and the running surface, I'd probably be able to reverse-engineer the communication protocol, and would then be able to fake the dashboard commands from my app.

At this point I don't know if the communication between the dashboard and the running surface is one-way or not. It might be the case that the speed and the incline that are displayed on the dashboard are the "target" values, rather than the values directly measured on the mechanical part and communicated back to the dashboard. However it might also conceivably be the case that the speed is actually directly measured on the running surface, communicated to the dashboard, the dashboard compares it to the target value and in case of mismatch send a correcting speed-up or the speed-down command to the running surface.

I've found this Youtube video where some guy seems to have been able to connect Arduino to his treadmill, and control the treadmill's speed from his laptop. Unfortunately the video provides no details on how exactly this was accomplished.

\$\endgroup\$
  • 2
    \$\begingroup\$ Are there any brains on the other side of the connector? Can you draw out a schematic of both sides? \$\endgroup\$ – Ignacio Vazquez-Abrams Aug 19 '13 at 8:25
  • 2
    \$\begingroup\$ Or even post good-quality pictures of the electronics at each end of the cables. \$\endgroup\$ – Connor Wolf Aug 19 '13 at 8:31
  • 2
    \$\begingroup\$ Knowing next to nothing about electrical engineering will make this a lot harder, especially if you have to reverse engineer the interface. I would search the manufacturer's site for maintenance manuals or any documentation that describes the electronics. Since the video originated at Arizona State U, you should be able to contact the people involved or at least download any research reports or other papers associated with the project. Universities are usually pretty good at writing up their work. \$\endgroup\$ – RedGrittyBrick Aug 19 '13 at 9:22
  • \$\begingroup\$ As much as I love to encourage people to get in and learn something new. If you have no experience in the field I would strongly recommend against starting something involving mains voltage and high power electric motors. From personal experience I have done a lot of damage before I learned to respect electricity and do my research long before physically working on a project. A cool starting project for something along these lines, go pick up a dollar store RC car and try to make your own controller. \$\endgroup\$ – Kris Bahnsen Aug 21 '13 at 22:56
  • \$\begingroup\$ youtube.com/watch?v=rAZ8FCzOuxE you could always look for the pwm signals though replacing the interface is a problem and maybe using a current sensor to set the speed to 0 when the safety feature is pulled? \$\endgroup\$ – user90158 Oct 27 '15 at 15:59
4
\$\begingroup\$

If you know little or nothing about electrical engineering then don't do it. The Arduino is a platform for hobby purposes, not for systems which require a minimum of safety. If the Arduino (software or hardware) goes haywire accidents may happen and you could get injured.

Reverse engineering isn't the safest way to do things either. Again, if you don't do it correctly you may do things wrong and get injured.

But not all is lost. The treadmill is a rather simple device to control: you set the speed via the dashboard, either fixed or following a program. That's the output. Inputs are the heartbeat reading and the dashboard buttons, including the emergency stop. Choose a reliable industrial SBC for the hardware and connect I/Os to it. Note: the emergency stop should stop the motor in hardware, not software.

\$\endgroup\$
4
\$\begingroup\$

This project is going to need lots of reverse engineering, and maybe even a scope. It may also be very hard to do without making the control panel useless, or hacking that too.


WARNING: Do this at your own risk. If handled improperly, you could fry both your Arduino and your treadmill. Proceed with caution. When reverse engineering, make sure to change the circuit as little as possible to prevent a surge in voltage or a drop that can damage your equipment. Be safe. Use common sense. If you're not sure, ask. Unplug everything before you modify electronic. Triple check your connections. Redo anything if you're not certain that it's fine. Safety should be your first priority.

[I feel like a lawyer now... :P]


Reverse Engineering:

This may be one of the hardest steps, especially if you don't have a oscilloscope, since you'll need one or similar devices. They're useful, but expensive. I've never needed one, so I don't have one, and I'm guessing. Any corrections welcome.

If you're lucky, your scope will have a feature that you can record it and "freeze" the screen, and maybe even edit it on the computer.

So, unplug the treadmill. Detach the cord. I would personally cut off the connectors and solder some wires on them, probably the same size of wire so you know it can handle the amperage, with the least amount of resistance. Then, I would also somehow connect the wires firmly, so the can conduct, and use a little masking tape so someone doesn't touch the wires accidentally. However, you'll need one uncovered at all times. Which one it is will vary by which line you want to test. You'll need to attach the clips to each wire. (You'll just have to figure out a similar solution with tape or clothes pin if you have a probe.)

Turn on the scope. Enjoy. I would study the patterns of each one, and push all the buttons. Some will and some won't respond. Test both amps and voltage. You might be able to imitate this with an Arduino.

If it looks like gibberish: doing some pulsing that is proportional to the speed the motor is running, then it may be harder. It's probably a stepper motor.


A simpler way is this; it is a coffee maker, but the information is good. It shows you how to modify the buttons to "push" them with Arduino.

Other than that, without any more information, I can't really help you without making a whole book. If you need help with simpler problems in the future when you've discovered more, feel free to post a new question. The "pushing" would be ideal, and I think that you could still use the control panel and the computer could push the buttons too, although if you push it to 3 and it wants it at 5 and thinks it is at 0, you'd be on speed 8. It's almost like backlash in a CNC machine. (Skip that if you don't know what that is.)

I think this is enough to get you started. Good luck.

\$\endgroup\$
  • \$\begingroup\$ Please don't post large blocks of text in a large font. It hurts my eyes. \$\endgroup\$ – Mels Aug 21 '13 at 12:52
  • 1
    \$\begingroup\$ @Mels Fixed it. \$\endgroup\$ – Anonymous Penguin Aug 21 '13 at 22:44
0
\$\begingroup\$

I realize this is a rather late response, but I work for a company involved with fitness equipment. There is a decent chance this is RS-485 or some other serial. Try to find data + and data - using a scope and then start getting data captures and you'll begin to see the different commands and their values going between the user interface and the motor controller. I would suggest you first capture exactly what the user interface sends the motor controller and then have your app or whatever do the same. Once this works, you can modify the commands to get what you want. Perhaps most crucial, there will probably be a series of startup commands that you will need to mimic or it won't work. Good luck!

\$\endgroup\$
0
\$\begingroup\$

From a safety standpoint, if I were designing a treadmill for sale to the public, I would have the command signal to the motor in a normally off state and it would need to be forced to an on state. (I would not design it such that it was normally on and held off.)
Since this is the way I would design it, I would look for a similar design to be implemented in a treadmill I was hacking and once verified that this was the design intent by the manufacturer, I would ensure that my hack met the same requirements. I would also note that there may be other safety features they thought of that I did not - and with that bit of self doubt I would triple check my logic and have someone who had a background in electrical engineering check my workplan before beginning the hack. Regarding machines that operate on higher voltage (e.g., 110VAC) a real potential hazzard is accidentally making the treadmill's touchable components electrically "live" which could result in death.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.