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:
- Raspberry Pi 4, 8GB RAM: CanaKit, custom kit with power supply, heat sinks & cooling, cables
- Raspberry Pi: USB Type-C power supply, min 3.5A @ 5VDC (15W)
- Raspberry Pi: 7" touch screen
- SmartiPi Touch 2 - Raspberry Pi 7" Official Display case with Cooling Fan
- Sabrent USB 2.0 to Serial (9-Pin) DB-9 RS-232 Adapter Cable 6ft Cable [FTDI Chipset] (CB-FTDI)
- 64GB micro SDXC card, (Class 6 recommended for overall performance)
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.
- Raspberry Pi Pico
- Raspberry Pi Pico Mounting Plate
- Grove Shield for Pi Pico v1.0
- MicroUSB cable
- 3 x 5 kohm potentiometers with 0-100% dials (speed, elevation, time)
- 1 x 1.5" momentary push button (start/stop)