Page 1 of 3

Serial data?

Posted: Sat Mar 01, 2014 9:05 pm
by 0100
I plan on running a hondata kpro in my track car, and it looks like it can output a serial stream. http://www.hondata.com/help/kmanager/in ... output.htm

Can the race capture pro accept serial data from the kpro?

Posted: Sat Mar 01, 2014 11:51 pm
by brentp
Hi,

The firmware could be modified to read the serial data, but you would lose either GPS or telemetry / bluetooth capability in the process.

Is there a way for the hondata to output on the CAN bus?

Regards,
Brent

Posted: Mon Mar 03, 2014 5:58 pm
by andylaurence
I, for one, would happily trade the telemetry/Bluetooth port for a serial input if it could be configured appropriately to read data from my Suzuki GSXR ECU. For those of us without the telemetry option, could serial data be enabled when logging starts and Bluetooth enabled when no longer logging? I'm guessing that this would allow logging of serial data on track and Bluetooth configuration/log download in the pits.

Posted: Tue Mar 04, 2014 2:32 am
by brentp
after reading this I had a tangential thought. We're working on a way to CAN-enable old style OBD2 (non CAN bus). The work in progress will be centered around a small microcontroller that can read serial data from an ELM327 compatible interface chip and present the information on the CAN bus.
https://github.com/autosportlabs/OBD2CAN

I was thinking, it would be neat if something similar could be made to "CAN enable" the Hondata ECU and the Suzuki GSXR ECU and others - by getting them onto the CAN bus you'll be able to integrate them with a variety of other devices in a much more standard way.

Just a thought.

Posted: Tue Mar 04, 2014 8:39 am
by andylaurence
I'll order a CANx and a serial adapter if you can do it!

Posted: Wed Mar 05, 2014 3:43 am
by 0100
Yeah if you guys can get this to work I think it would be huge.

I know AIM makes a Kpro hondata ecu interface. http://www.aim-sportline.com/download/e ... 02_eng.pdf (pdf install instructions of the AIM unit)

Race technology has also developed a serial interface for a bunch of stand alone ECUs. http://www.race-technology.com/ecu_inte ... _7550.html

These guys are also developing a Kpro transmitter and if you look on the 3rd page of the thread I think they plan on using the USB port of the Kpro ecu http://www.s2ki.com/s2000/topic/1065638 ... ems-k-pro/

So hopefully it's possible.

If the Race Capture Pro can get data from a Kpro this is perfect for me.

Keep up the good work guys!!

Posted: Mon Mar 10, 2014 6:04 am
by brentp
Thank you! Is the hondata protocol well documented? If you have any links / info we'd love to see it.

Posted: Fri Jul 03, 2015 9:54 pm
by crxkswap
The Kpro4 supports CAN and the protocol is well documented on the hondata website and kpro help file. Below is a script that implements logging of most of the KPro CAN output. I left a few out that i don't need, but it is trivial to add to the script. You can upgrade your older Kpro to the new Kpro4 for $250, well worth it. This works like a champ!

Code: Select all

--This example configured for E46 CAN, adopted to Hondata KPro4 CAN output

--how frequently we poll for CAN messages, 30Hz is the max
tickRate = 30
--the CAN baud rate
CAN_baud = 250000
--CAN channel to listen on. 0=first CAN channel, 1=second
CAN_chan = 0
--1 for Big Endian (MSB) mode; 0 for Little Endian mode (LSB)
be_mode = 1

--add your virtual channels here
rpmId = addChannel("RPM", 10, 0, 0, 9000, "RPM")
vltId = addChannel("VLT", 10, 1, 0, 20, "volts")
iatId = addChannel("IAT", 1, 0, 0, 100, "C")
ectId = addChannel("ECT", 1, 0, 0, 150, "C")
tpsId = addChannel("TPS", 10, 0, 0, 100, "%")
mapId = addChannel("MAP", 10, 1, 0, 15, "PSI")
injId = addChannel("INJ", 10, 3, 0, 100, "ms")
ignId = addChannel("IGN", 10, 0, -20, 20, "D")
lmdId = addChannel("LMD", 10, 3, 0, 2, "lambda")
knkId = addChannel("KNK", 1, 0, 0, 15, "count")
camId = addChannel("CAM", 10, 0, -20, 20, "D")

--customize here for CAN channel mapping
--offset/length in bytes?
--format is&#58; &#91;CAN Id&#93; = function&#40;data&#41; map_chan&#40;<channel id>, data, <CAN offset>, <CAN length>, <multiplier>, <adder>&#41;
CAN_map = &#123;
--did not bother logging gear speed and target cam angle
&#91;1632&#93; = function&#40;data&#41; map_chan&#40;rpmId, data, 0, 2, 1, 0&#41; map_chan&#40;vltId, data, 5, 1, 0.1, 0&#41; end,
&#91;1633&#93; = function&#40;data&#41; map_chan&#40;iatId, data, 0, 2, 1, 0&#41; map_chan&#40;ectId, data, 2, 2, 1, 0&#41; end,
&#91;1634&#93; = function&#40;data&#41; map_chan&#40;tpsId, data, 0, 2, 1, 0&#41; map_chan&#40;mapId, data, 2, 2, 0.0145037738, 0&#41; end,
&#91;1635&#93; = function&#40;data&#41; map_chan&#40;injId, data, 0, 2, 0.001, 0&#41; map_chan&#40;ignId, data, 2, 2, 1, 0&#41; end,
&#91;1636&#93; = function&#40;data&#41; map_chan&#40;lmdId, data, 0, 2, 0.00003051757, 0&#41; end,
&#91;1637&#93; = function&#40;data&#41; map_chan&#40;knkId, data, 0, 2, 1, 0&#41; end,
&#91;1638&#93; = function&#40;data&#41; map_chan&#40;camId, data, 2, 2, 1, 0&#41; end
&#125;

function onTick&#40;&#41;
    processCAN&#40;CAN_chan&#41;
end

--===========do not edit below===========
function processCAN&#40;chan&#41;
    repeat
        local id, e, data = rxCAN&#40;chan&#41;
        if id ~= nil then
            local map = CAN_map&#91;id&#93;
            if map ~= nil then
                map&#40;data&#41;         
            end
        end
    until id == nil
end

--Map CAN channel, little endian format
function map_chan_le&#40;cid, data, offset, len, mult, add&#41;
    offset = offset + 1
    local value = 0
    local shift = 1
    while len > 0 do
        value = value + &#40;data&#91;offset&#93; * shift&#41;
        shift = shift * 256
        offset = offset + 1
        len = len - 1
    end
    setChannel&#40;cid, &#40;value * mult&#41; + add&#41;
end

--Map CAN channel, big endian format
function map_chan_be&#40;cid, data, offset, len, mult, add&#41;
    offset = offset + 1
    local value = 0
    while len > 0 do
        value = &#40;value * 256&#41; + data&#91;offset&#93;
        offset = offset + 1
        len = len - 1
    end
    setChannel&#40;cid, &#40;value * mult&#41; + add&#41;
end

map_chan = &#40;be_mode == 1&#41; and map_chan_be or map_chan_le
initCAN&#40;CAN_chan, CAN_baud&#41;
setTickRate&#40;tickRate&#41;
[/code]

Posted: Sat Jul 04, 2015 7:30 pm
by brentp
Wow, this is fantastic! So many people have been waiting for Hondata support; we'll get this in our wiki ASAP!

thank you for your help bringing this to life.

Posted: Tue Jul 14, 2015 10:34 pm
by brentp
Thanks again!

Added to the wiki here: http://autosportlabs.net/Hondata_KPro4

Posted: Thu Apr 21, 2016 3:24 pm
by PopKorn78
Hi guys, I'm building a new car with a older kpro. Can RCP work with the usb connection of the KPro? If not, if I upgrade to KPro4, will the bluetooth will work with the KPro and the tablet at the same time?

Thanks

Posted: Thu Apr 21, 2016 3:54 pm
by brentp
Hi - Sorry, your KPro won't won't work with the USB connction.

But, with some Lua scripting you can connect an RS232 serial device to the aux serial port of the MK2 (next to the bluetooth port) you would have to translate the KPro data format, extract data and map them to virtual channels like one would typically do with the CAN bus mapping.

This would be a project, but definitely doable. See the lua scripting examples in our wiki to see how that might work.

Posted: Thu Apr 21, 2016 3:59 pm
by stieg
Can RCP work with the usb connection of the KPro?
Unfortunately no. RCP's USB is a client device, meaning it must be connected to an active host controller (like your computer) to work.
if I upgrade to KPro4, will the bluetooth will work with the KPro and the tablet at the same time
Also no I'm afraid. Our Bluetooth device is only capable of connecting to one device at a time, and our firmware expects it to be a device running RaceCapture app to work properly.

Posted: Fri Jul 08, 2016 11:35 pm
by PopKorn78
Restart old thread here. I just finished building a new car and it runs with a kpro v2. Can I get the data from the kpro to the rcp?

Posted: Fri Jul 08, 2016 11:51 pm
by brentp