Electronic – arduino – Hacking a treadmill with Arduino

arduinohacking

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.

Best Answer

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.