Is anyone interested in a plugin to control RR from a newer BMW using the K-CAN bus?
I have been developing a plug-in and external hardware to interface between RR and the K-CAN of a BMW. This is still in development but it is working very well.
I am using an Arduino and Canbus interface to passively listen to the BMW K-Can bus. (In layman's terms, the K-Can is a 100Khz interface that carries a plethora of car info and controls). For more info see :-_http://www.loopybunny.co.uk/CarPC/k_can.html
Functions of the Arduino:-
1) Read the Can-bus information and stream it out over a USB Com-port.
2) Turn the PC and amplifiers on and off when the Lock and Unlock commands are seen.
3) Replaces the Gong that sounds for the PDC, temperature and seat-belt's (Needed as I have removed the head-unit).
I am also in the situation where I have added a Bluetooth module and I can stream the data to my Symbian Nokia N8. I guess it is only a small amount of work to create an Android plug-in or Windows phone app.
The RR plug-in reads the data from the Com-port and parses the data into RR. The control and function is very similar to iBusRR and
The plug-in had been tested and developed on an E84 BMW, but from what I have seen the E90 also works. If I was to have access to more logs I could probably extend it to other models (given time)
A list of the Sliders, labels and Indicators that I have working are :-
KCanBusRR. Version 0.1 (Alpha)
E84_LEFTIND ; Left Indicator
E84_RIGHTIND ; Right Indicator
E84_FOOT_BRAKE ; Foot brake pressed
E84_CLUTCH ; Clutch depressed
E84_REVERSE_SEL ; Reverse Gear Selected
E84_WINDOW_FD ; Front Driver Window Open
E84_WINDOW_RD ; Rear Driver Window Open
E84_WINDOW_FP ; Front Passenger Window Open
E84_WINDOW_RP ; Rear Passenger Window Open
E84_DOOR_FD ; Front Driver door Open
E84_DOOR_RD ; Rear Driver door Open
E84_DOOR_FP ; Front Passenger door Open
E84_DOOR_RP ; Rear Passenger door Open
E84_LIGHTS ; Generic Indicator set if lights are on. (Side, Dip or Main)
E84_HANDBRAKE ; Handbrake (Parking brake)
E84_LIGHTS_SIDE ; Side Light Status
E84_LIGHTS_DIP ; Dip Beam Status
E84_LIGHTS_MAIN ; Main Beam Status
E84_LIGHTS_FFOG ; Front Fog Light Status
E84_LIGHTS_RFOG ; Rear Fog Light Status
E84_CRUISE ; Cruise control on / off (See label E84_CRUSE_SPD for cruise control speed setting)
E84_WIPERS ; Windscreen Wipers on / off (Set regardless of Wiper speed Int. / const or fast)
E84_RPM ; Engine RPM (0 - 9999)
E84_SPEED ; Engine Speed (MPH,As per Speedometer, 0-160)
E84_ENGTEMP ; Engine Temperature (Engine, Water Temp, typ 92 DegC)
E84_EXTTEMP ; External Temperature (As shown on instrument cluster)
E84_THROTTLE ; Throttle position (0 - 100%)
E84_VIN ; Displays the last 7 digits of the Vehicle VIN number. (Not sent very often)
E84_PDC1 ; Rear outer Left Sensor (0 - 255). Hint: Use Reverse gear indicator to signal the need to display these.
E84_PDC2 ; Rear inner Left Sensor (0 - 255) 255 = nothing close, 0 = obstruction
E84_PDC3 ; Rear inner right Sensor (0 - 255)
E84_PDC4 ; Rear outer right Sensor (0 - 255)
E84_RANGE_MI ; Range (Miles)
E84_RANGE_KM ; Range (KM)
E84_ODO_MI ; ODOMETER (Miles)
E84_ODO_KM ; ODOMETER (KM)
E84_Date ; Car Date (European format, d,m,yyyy)
E84_Time ; Car Time
E84_BATTERY ; Battery Voltage
E84_FUEL_L ; Left Fuel tank sensor level
E84_FUEL_R ; Right Fuel tank sensor level
E84_PROD_DATE ; Production date of the car
E84_SECONDS_PROD; Seconds elapsed since production.
E84_AMB_LIGHT ; Ambient Light Sensor reading (0 - xxx), The dimple on the top of the dashboard!
E84_SOLAR ; Solar Sensor reading (0 - xxx).changes air-con depending on heat of the sun.
E84_WHEEL_POS ; Steering wheel angle in Degrees (- is right hand down, + is left hand down)
E84_CUSTOM1 ; Display the CANBUS data from the ID of custom1 as defined in the ini file.
E84_CUSTOM2 ; Display the CANBUS data from the ID of custom2 as defined in the ini file.
E84_INT_TEMP ; Internal cabin temperature
E84_CRUISE_SPEED; Cruise control speed setting. (Indicator E84_CRUISE shows status)
E84_CL_FAN ; Climate control fans speed
E84_CL_TEMP ; Master (Driver) Climate control temperature setting.
E84_WHEEL_SPDFD ; Front Driver individual Wheel speed (Used by DSC / ABS / Run flat detection)
E84_WHEEL_SPDFP ; Front Passenger individual Wheel speed
E84_WHEEL_SPDRD ; Rear Driver individual Wheel speed
E84_WHEEL_SPDRP ; Rear Passenger individual Wheel speed
E84_SLD_SPEED ; Speed Slider, 0 - 140MPH
E84_SLD_RPM ; REV Slider 0 - 5500RPM (Low values as its Diesel!) Should I add a Higher Petrol version?
E84_SLD_THROTTLE; Throttle Slider 0 - 100%
E84_SLD_PDC1 ; Rear outer Left Sensor (0 - 255). 255 = nothing close, 0 = obstruction. Raw value indicators also available.
E84_SLD_PDC2 ; Rear inner Left Sensor (0 - 255)
E84_SLD_PDC3 ; Rear inner right Sensor (0 - 255)
E84_SLD_PDC4 ; Rear outer right Sensor (0 - 255)
#add a slider for steering wheel?
[Steering Wheel Control]
Vol+ Button ; Master Volume +
Vol- Button ; Master Volume -
Up Button ; Next playlist item
Down Button ; Previous playlist item
Rotate Button ; Play / Pause
Phone Button ; Next screen (as defined in the KCanBusRR.ini file)
Voice Button ; Previous screen (as defined in the KCanBusRR.ini file)
Press and hold functions not yet implemented
Automatic Reverse Skin Select:
To automatically select the REVERSE.SKIN when reverse gear is selected, set Auto_Reverse to 1 in the ini file.
Automatic Night Gamma:
To automatically switch on night gamma when the lights are turned on set Auto_Gamma to 1 in the ini file.
To log all incoming CANBUS data to file set logging to 1 in the ini file.
Note that logs for long journeys will be big. This should only be used for debugging .
My main question is:- Is this of use or interest to anyone?
I am thinking of developing my own little Arduino board (Processor, USB, Canbus and Bluetooth?). This would be more specific to the car environment and be a much more compact board.
At the moment I am using the Arduino Uno with a Can-Bus shield, 12V switched supply etc. This costs about £45 or $70. I could make an application specific version for about £35 / $55 + shipping.
*Note that I have not released the plug-in in any form (Alpha or release) as I still have a small amount of tidying up to do with the code. Also I still have to work out how to create an installer....
Edit: Jan/2013. An alpha version of the code is available in post #15