If you enjoy the articles in this web site, please consider supporting it by ordering the items you want by clicking on the recommended Amazon product links in the articles, which will just add those products to your Amazon shopping cart.

The product links contain a referral tag that allows me to earn a small commission on the sale of the products from Amazon.  This doesn't cost you anything extra but will help to offset the cost of running this web site and writing new articles.

Around 2003, I acquired a surplus Schiller stress-test treadmill from the local hospital, which would have likely been equipped with an accompanying Schiller Exercise Stress ECG system.  The ECG console would have controlled the treadmill via a DB9 RS232 serial port.  This is a Trackmaster treadmill, which was originally manufactured by JAS Manufacturing, which has now been acquired by Full.Vision Inc.  Specifications on the electrical inspection label are:

  • Model: TM400/S
  • Serial: 10868
  • File: 20646-116
  • Electrical Service: 115VAC, 20A, single phase

This treadmill has a couple of Integrated Control Corp (ICC) TM4 control boards (TM4 control board and Power/Relay Driver board) and the support engineer with whom I had been corresponding with back then told me that it would be possible to control the treadmill with some simple switches and sent me schematics of the two boards.  I learned that there was possibility that there might be a surplus control panel that could be fitted to it and, while trying to find out more about a possible control panel, I dropped the ball and never learned about the simple switches.  DIY automation has come a long way and my plan was to build a control console based on the Raspberry Pi microcomputer. Luckily, although ICC no longer has any treadmill techs, I was able to reach this support engineer again and he has been very helpful.

The simplest way to operate my treadmill would be with a computer via the RS232 port but this would require knowing the treadmill's serial protocol.  It did not occur to me back when I got the treadmill that I could possibly use a computer and I just wanted to find a compatible treadmill console.  Unfortunately, with the obsolescence of the treadmill and the change in factory ownership, the TM400/S treadmill serial protocol documentation is lost. Since so many treadmill brands use the Schiller Exercise ECG system, I suspect that treadmill serial protocol may be an industry standard.  Full Vision did send their RS232 treadmill serial protocol and a TM400AC Owner's/Service Manual, which was also very helpful.

Although my original plan was to use an Arduino Uno to directly interface with the TM400/S via a RS232 shield, the support engineer suggested that I instead connect the Raspberry Pi directly via a USB to RS232 interface cable.

I will need run a 20amp, 115V line to a suitable location in my basement before I can power up my treadmill.  In the meantime, I can power it up for testing purposes with a NEMA 5-20 pigtail plugged into a regular 15 amp outlet. I can start writing some Python code to control the TM400/S.  To start building the control system, I have obtained the following items:



The first step in the getting my treadmill back into operation is to determine whether control via the RS232 serial port is viable.  Although I have a TM400/S, the TM400AC Manual appears to be close enough and it included a RS232 Test Plug procedure.  I was thrilled to see that the treadmill is equipped with a RS232 Test Plug that cycles the treadmill through a variety of tests to verify treadmill operation.  Basically, you insert the test plug into the RS232 port and press a button on the plug to initiate each test.  I was pleased to see that my treadmill (including RS232 port) appears to be fully operational.

I should have gotten the Trackmaster TM400 RS232 Serial Protocol as soon as I got the treadmill but, since I didn't, I'll have to make do with the TMX425 RS232 Serial Protocol, which appears to be Section 9 of the Trackmaster FVX-TMX Series Field Service Manual.  With luck, the Trackmaster serial protocol is enough of an industry standard that it has remained the same over the years.

Some basic TrackmasterRS232 requirements

  • DB9 Connector 9 pin PC/AT Style
    • Pin 2 - Transmit Data
    • Pin 3 - Receive Data
    • Pin 5 - Signal Ground - RS232 (+/- 10V)
  • 4800 Baud
  • No Parity
  • 8 Data Bits
  • 1 Stop Bit
  • Full Duplex

Now that I have the Trackmaster series protocol, I need to figure out the correct syntax to send and receive serial port data with Python.  More to follow later. 

Since the Raspberry Pi only has digital I/O, adding analog inputs (like potentiometers) requires the addition of an analog to digital converter chip, such as the MCP3008 (10 bit resolution) or MCP3208 (12 bit resolution).  Another option is to use a microcontroller, which natively supports analog inputs.  Rather using an Arduino, a much cheaper option is to use a Raspberry Pi Pico, which allows 3 analog inputs and 23 digital inputs/outputs.