Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

How to debug $RC3 recording?


I have used to check my checksum and it seems to be correct. I have let Race Chrono Pro sit gathering data on my test bench but when I export the session I only get GPS data.

Example output if I connect using a serial app over bluetooth:
$RC3,332195.8,, 0.00, 0.00,-1.00,0.00, 0.05,-0.03,16413,-999,83.87,1317,27.37,0.00,0.00,1735,0.00,1.00,0.00,71.54,-0.05,179.95,-999,-999,-999*39
$RC3,332196.0,, 0.00, 0.000,-1.00, 0.02,0.12,-0.02,16441,-999,83.87,1317,27.37,0.00,0.00,1789,0.00,1.00,0.00,71.54,-0.05,179.95,-999,-999,-999*07
$RC3,332196.2,,-0.00,-0.000,-1.01,0.00, 0.08,-0.01,16413,-999,84.16,1317,27.47,0.00,0.00,1789,0.00,1.00,0.00,71.54,-0.05,179.95,-999,-999,-999*01
$RC3,332196.4,, 0.00,-0.000,-1.00,-0.03, 0.01,0.00,11327,-999,83.87,1317,27.37,0.00,0.00,1768,0.00,1.00,0.00,71.54,-0.05,179.95,-999,-999,-999*00
$RC3,332196.6,,-0.000,-0.00,-1.00,-0.05, 0.08,-0.00,16201,-999,84.07,1317,27.47,0.00,0.00,1735,0.00,1.00,0.00,71.54,-0.05,179.96,-999,-999,-999*2C
$RC3,332196.8,, 0.00,0.00,-1.01,-0.05,0.14, 0.01,16446,-999,15.25,1317,78.01,0.00,0.00,1735,0.00,0.00,0.00,71.54, -0.0,179.96,-999,-999,-999*03
$RC3,332197.0,, 0.00, 0.00,-1.01,-0.06, 0.06,-0.04,16413,-999,15.25,1317,78.01,0.00,0.00,1735,0.00,0.00,0.00,71.54, -0.0,179.96,-999,-999,-999*22
$RC3,332197.2,,0.00, 0.00,-1.01,-0.01, 0.06,-0.04,16413,-999,15.35,1317,78.01,0.00,0.00,1735,0.00,0.00,0.00,71.54,-0.06,179.95,-999,-999,-999*33
$RC3,332197.4,, 0.00, 0.00,-1.00, 0.06, 0.08, 0.01,16441,-999,15.35,1317,78.20,0.00,0.00,1789,0.00,0.00,0.00,71.54,-0.06,179.95,-999,-999,-999*1B
$RC3,332197.6,, 0.00,-0.00,-1.00,-0.04, 0.07,-0.02,16174,-999,15.25,1317,78.01,0.00,0.00,1768,0.00,0.00,0.00,71.54,-0.06,179.95,-999,-999,-999*14

I have an Arduino outputting data to emulate the outputs of my motorcycle. The data is:
$RC3,[time],[count],[xacc],[yacc],[zacc],[gyrox],[gyroy],[gyroz],[rpm] , , [tps],[front_speed],[front_susp],[front_brake],[front_temp],[rear_speed],[rear_susp],[rear_brake],[rear_temp],[yaw],[pitch],[roll],[a13],[a14],[a15]*checksum

Some sensors are reading 0 and I put the empty ones to -999 so I knew what I was looking at. The details screen in RC shows the GPS Receiver information and shows it update rate (50Hz) and data rate around 60 kbit/s. For the Data Logger it shows 58kbit/s but the bar always shows 'Waiting for data...'

When I export the CSV file there is no data from the $RC3 lines.

Thanks, jeff


  • aolaol
    edited January 24

    Once the format looks OK, and the format is verified, I can run it through my debugger. But first couple of issues:

    1) The time stamp needs to be in NMEA 0183 format. Also if you run at 50 Hz, you need more than one decimal.

    2) Do not use spaces in front of numbers

    3) If you run with timestamp instead of the count field, you need to have NMEA $GPxxx sentences mixed with the data, and use "RaceDac with GPS" option. If you want to test without the GPS, use the running count field instead of the timestamp.

    Check format from
  • aolaol
    edited January 24
    Also check the device status screen for gauges (green/red button at bottom left corner) while recording. The gauges will show you readings even when no GPS lock.
  • Perfect, thanks. I didn't know if I would see gauges or not.

    I am sending GPS over another channel from the same logger so I thought I could do without the count as RC would merge the 2 streams. To get best timing I probably want to move into 1 stream. I'll have to rework my logic as right now I manage the GPS input and output per character where as I generate full lines of $RC3.

    Have some code to change and optimize...

    Thanks, Jeff
  • J_D_W

    Any progress? I was thinking on doing the same project with an Arduino101
  • My project is working rather well. 25Hz GPS and 50Hz sensors. Microcontroller is a Teensy 3.6 and I use a RN42 bluetooth module to RC.

    The only tricky part is you need to make sure that you send the complete RC3 or GPS string before allowing the opposite to send anything. So you need to make sure you get the full GPS line into a buffer then send it to BT while you buffer anything for the RC3 string and then send it.

    Also have SD card logging with the on-board SD slot of the Teensy 3.6

    Nice weather has recently returned (Toronto Canada) so now I need to start to put the sensors etc onto the track bike

  • Just curious, why a Teensy board instead of a Arduino?
  • Re Teensy vs Arduino...

    I was using an Arduino Mega2560 last season before the move to Teensy and all I was handling then was the GPS and BT. I'm not sure if the power in it would have handled everything I am doing but some of the reasons for the change were:

    - has real floating point calculations and back then I thought I was going to need them for pitch, roll calculations
    - a CAN bus built in. Right now I am using I2C around the bike for sensors but its not really made for that. If I get too much noise etc I will switch to CAN bus and put a smaller controller at the front and rear as 'hubs'. CAN bus is made for the automotive environment
    - multiple I2C channels. Since the bandiwdth and timing of I2C is based on the wire length etc having more than 1 channel is letting me have some additional control over how I communicate with sensors. Also lets me have older slow sensors (100Mhz) and faster (400) on a different channel
    - built in SDIO SD Card. Using SPI on the Arduino to send data to SD Crd is not as fast. The Teensy has an onboard card and it uses SDIO
    - and besides all of that there is the CPU speed itself. I am running it at 240Mhz (overclocked). I don't know how much CPU time I am using but if I can up my sensor timing it would be good and therefore I think the more CPU I can have the better

    The Arduino Mega worked fine last year as a test version just handling GPS and started being OK for adding a few I2C sensors before I started to expand the capabilities I wanted.

Sign In or Register to comment.