SparkFun Forums 

Where electronics enthusiasts find answers.

Have questions about a SparkFun product or board? This is the place to be.
I just bought the Sparkfun HRMI ( ... ts_id=8661) and I'd like to eventually interface it with my Arduino but I'm having trouble with just the basic setup from the board to my computer via USB.

I've been trying to get it to recognize my Polar T31 coded chest strap while powered over USB, hooked to my mac, but to no avail. Just to make sure it wasn't a problem with my strap, I bought a Polar watch with coded Wearlink strap and tested my strap with that. It worked fine so I tried using the including Wearlink with the HRMI and it didn't seem to recognize that either. I then used Quickterm and ran a "G 8" command while wearing each of the straps (one at a time) and got back "3 122 0 0 0 0 0 0 0 0", "3 1270 0 0 0 0 0 0 0" etc. I think the manual is saying that the 3 in the output means "Bad Data". All of the jumpers on the board are in the default positions and according to the manual the status light should be blinking if it was picking up a heart rate but it only shows a constant green. Is there something I'm missing here? Is it possible I have a faulty board?
By blort
I'm having the same problem brand new T31 coded strap. Windows XP VCP driver version 2.04.16 ( Terminal output is:

1 1

1 0

3 228 0

G 32
3 81 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
By beepscore
I just got an HRMI working and hope this info may help others.
(Note: After seeing danjulio's reply below, I edited this post. I thought that perhaps the Polar transmitter and HRMI required a watch to start communication. They don't.)
Chest transmitter: Polar T31 - doesn't say coded, I think it isn't.
Watch: Polar F4
Interface: Sparkfun HRMI
Computer: Mac
also tested: Polar WIND Wearlink transmitter with RS800SD watch

Procedure and Results:
Connected HRMI to computer USB port. Status LED lit.
Ran Quickterm, "G1" command, got two leading nonzero status numbers and heart rate 0.
Put T31 transmitter on chest. The HRMI picked up the transmitter. The status LED started blinking and the computer displayed heart rates.

I rebooted the computer and tested without using Quickterm. Again the HRMI picked up the transmitter.

The HRMI did not see the WIND transmitter.

@ebeth448 - Sound Sports in Seattle helped me test the T31 in their store.
Last edited by beepscore on Tue Jul 14, 2009 1:18 pm, edited 2 times in total.
By danjulio
Hi all. I'm the designer of the HRMI.

The HRMI is designed to work with the "traditional" style Polar heart rate transmitters such as the T31/T61 and T31C (coded). The transmitters communicate heart rate data using a low-frequency electromagnetic pulse that the Polar RMCM01 receiver module on the HRMI picks up.

There is a new transmitter technology such as the Polar WIND transmitter that uses a different technology to communicate. These transmitters use a 2.4 GHz digital radio running the ANT protocol (sparkfun sells some gadgets to communicate with these devices). The HRMI is not compatible with these transmitters.

When people are having trouble with the HRMI I always ask them to check the following things:

1. Can you communicate with the HRMI in the factory-default configuration connecting it to a USB port on a computer and sending commands via a terminal emulator.

2. Is the green status LED on

3. Can you verify that your transmitter is the correct type and is working properly (for example you can get HR data on a Polar wristwatch).

If you can get the HRMI to respond to commands such as formasfunction, ebeth448 and blort did then you know that the communication interface and on-board microcontroller are operating properly.

If you can verify your HR transmitter is also working then there is probably a fault with the Polar RMCM01 module on the HRMI and the device should be returned for replacement.

A note for beepscore. As you see above the HRMI won't work with your WIND transmitter. There should be no interaction between the watch and the HRMI with the T31 chest strap. The transmitters will begin to send a signal when they detect a certain impedance across their contacts (that's why Polar suggests sometimes wetting the transmitter before putting it on if you aren't sweating yet). There is no feedback from the watch to the transmitter. It can take several seconds, perhaps as many as 15, for the RMCM01 receiver to "lock-on" to a particular transmitter. Perhaps what you saw in your experimentation was just coincidence.
Last edited by danjulio on Tue Jul 14, 2009 5:13 pm, edited 1 time in total.
By beepscore
Thanks for the definitive info.
After reading your post I tried again and the HRMI communicated with the T31 without using a watch.
Then I edited my post above to not create superstitions!
By blort

Thanks for the update. FYI, I was able to get the same strap to recognize with the board on a Mac using the driver referenced in the documentation. At some point I may go back to the PC to see if I can get it to recognize, or maybe narrow down the issue to the PC driver/configuration.

By danjulio

I'm not sure I understand what is going wrong for you with the Windows computer. The output you posted indicates that the computer (and FTDI driver) are successfully communicating with the HRMI. The HRMI receives commands and returns response data. For the data you posted the HRMI hadn't recognized a Polar transmitter (the initial response byte for the 'G' command is 3 indicating "No Data" and "Average Mode").

Is it possible that the transmitter wasn't transmitting any data during the session you tested with the Windows XP box (for example it wasn't picking up your heart beat because the skin resistance was too high)? Sometimes the chest straps will not start transmitting any data if your skin is too dry. I would often moisten the chest strap electrodes before putting it on.

If you have both the PC and Mac available at the same time I would try the following experiment. Verify the HRMI is successfully working with your T31 transmitter (you get non-zero HR data). Then immediately disconnect it from the Mac and connect it to the PC and use the terminal emulator as you did in your first example.

By Gabrielle
thanks danjulio for this informative thread. I am using Sigma Sport Onyx Pro heart rate monitor and I will recommend it to everyone who is facing problem in their HRM.
By kerryLin
hi, i’m working on the HRMI & Arduino at the moment as well. but i tried to use the sample coding from dan’s web. but seems it didn’t work. so confuse with the sample code now. i used AnalogIn pin on Arduino to connect the HRMI . i follow the instruction in the sample code, which install the OPO jumper & uninstall the SJ1. the status LED of HRMI is flashing to send signals. but Adruino still didn’t print any data. is it anything wrong in the sample code? Could you help? thanks
By danjulio
Hi kerryLin,

Can you provide a little more information? Did the Arduino code compile for you? If so, is the I2C address in the code 127? Without any jumpers in locations OP1-OP7 the HRMI defaults to the I2C address 127.

The sample code was tested when I released the product. However, the original sample code would no longer compile under later releases of the processing app. I released a new version on my website but it's possible that it's broken again since I'm not currently following Arduino releases.

Another thing to look at is if the communication program running on the PC is setup properly. Perhaps the Arduino is outputting serial data but the PC baud rate or something is set incorrectly? Can you test this path with a simple "Hello World" type of Arduino application?

Regards, Dan
By kerryLin
Thank you so much. Dan, i think it's the problem of the serial baud rate. i tried to install the OP1 jumper & uninstall the SJ1, changed the "#define HRMI_HOST_BAUDRATE 9600 " to "38400", and "#define HRMI_I2C_ADDR 127 " to "126". this caused the trouble. Arduino did not respond to the HRMI. i followed the HRMI instruction pdf file to set it up. but don't know what's wrong.

now i changed back to install the OP0 jumper & uninstall the SJ1, and set the I2C address as 126, didn't change anything in the sample coding, it worked. at the moment, i got the data print from the Arduino serial output like this:

Request 16 => 1 106 79 80 81 81 80 80 80 82 82 83 83 83 81 78 76 73
Request 17 => 1 107 77 79 80 81 81 80 80 80 82 82 83 83 83 81 78 76 73
Request 18 => 1 108 76 77 79 80 81 81 80 80 80 82 82 83 83 83 81 78 76 73

Is this the normal data output? lucky i'm alive, i got my heart rate.


Kerry Lin
By danjulio
I'm glad it's working! This is the expected output. This demo program commanded the HRMI to output increasing numbers of values from the HR history buffer. The first byte is the STATUS byte, the second byte is the COUNT and the remaining bytes are HR values from the history buffer with the most recent value first.