OpenXC An open-source platform for rapid prototyping and do-it-yourself exploration Chris Peplin, Ford Motor Company May 13th, 2013 - Mobile Monday, Detroit, MI openxcplatform.com
Tinkerers Accessible Inaccessible 1966 Mustang, Inline 6 2013 Fusion Hybrid Accessible Inaccessible openxcplatform.com
Tinkerers Inaccessible Accessible openxcplatform.com
New Extensibility Accessible, read-only vehicle data Enriched mobile applications Vehicle diagnostics Data logging, behavior analysis Start-ups (car sharing, aftermarket additions) An open, standardized "home" for new era of extensibility openxcplatform.com
Vehicle Interface Piggyback on existing diagnostics port No vehicle modification required openxcplatform.com
Architecture openxcplatform.com
Vehicle Support Vehicles Vehicle Data 2011 - 2013 Focus (gas and electric) 2011 - 2012 Fusion (gas and hybrid) 2011 - 2012 Fiesta 2012 Mustang 2011 Figo 2009 F-150 2011 - 2012 E350 2008 S-MAX Untested: 2006 - 2010, 2013 Fusion 2006 - 2013 Lincoln MKZ 2010, 2011, 2013 Mustang 2011 - 2012 Explorer 2010 - 2013 F-150 2009 - 2013 Flex 2009 - 2013 Lincoln MKT 2012 Edge 2012 Lincoln MKX steering_wheel_angle torque_at_transmission engine_speed vehicle_speed accelerator_pedal_position parking_brake_status brake_pedal_status transmission_gear_position odometer fine_odometer_since_restart ignition_status fuel_level fuel_consumed_since_restart door_status headlamp_status high_beam_status windshield_wiper_status latitude longitude button_event openxcplatform.com
Controller Area Network openxcplatform.com
CAN Message 0x2415647382910293921 0x241 ID (11 bits) 0x5647382910293921 Data (64 bits) Two types Normal (multiplex) messages Diagnostic messages 0x73 Signal openxcplatform.com
On-board Diagnostics ELM327 OBD-II Adapter OBDMate Scantool OBDLink Scantool openxcplatform.com
Sports Car CAN Signals OpenXC Message steering_wheel_angle bits 18-29 in 0x242 Brake_Sensor_Data bit 42 in 0x102 Engine_Vehicle_Speed_Throttle bits 41-55 in 0x210 Torque_Data_Engine_Flags bits 15-30 in 0x341 Cluster_Information bits 8-15 in 0x240 steering_wheel_angle brake_pedal_status vehicle_speed torque_at_transmission fuel_level Example definitions for illustrative purposes only openxcplatform.com
Family Car CAN Signals OpenXC Message steering_wheel_angle SteeringAngle bits 29-43 in 0x21 BpedDrvAppl_D_Actl bits 32-33 in 0x183 Veh_V_ActlEng bits 51-65 in 0x310 EngAout2_Tq_Actl bits 42-58 in 0x51 FuelLevelIndicated bits 35-43 in 0x754 steering_wheel_angle brake_pedal_status vehicle_speed torque_at_transmission fuel_level Example definitions for illustrative purposes only openxcplatform.com
European Sedan CAN Signals OpenXC Message steering_wheel_angle SteeringAngle bits 2-21 in 0x40 BRAKE_PEDAL_SW_STATUS bit 23 in 0x240 Master_Vehicle_Speed bits 40-59 in 0x420 Actual_Torque_At_Transmission bits 15-22 in 0x231 Fuel_Level_Percentage bits 11-19 in 0x531 steering_wheel_angle brake_pedal_status vehicle_speed torque_at_transmission fuel_level Example definitions for illustrative purposes only openxcplatform.com
Architecture openxcplatform.com
Output Format JavaScript Object Notation (JSON) {"key": "value", "another_key": 42} OpenXC Messages are JSON {"vehicle_speed": 23.1} openxcplatform.com
Off-the-shelf Hardware Digilent chipKIT Max32 Microchip PIC32 Arduino-compatible Digilent chipKIT Network Shield Microchip MPC2551 CAN Transceivers USB Interface Cable connects to OBD-II Port ~$110 Total Cost openxcplatform.com
Open Assembly openxcplatform.com
Software Specifics openxcplatform.com
Architecture openxcplatform.com
Architecture openxcplatform.com
Android Evolution Supports OpenXC via Bluetooth 1.5, Cupcake 2009 2.2, Froyo 2010 2.3, Gingerbread 2011 3.1, Honeycomb 4.0+ ICS 2012 Galaxy Nexus 400 million activations as of June, 75% smartphone market share Nexus One Thrive 10.1" HTC Dream (G1) Motorola Droid Nexus 7 Supports OpenXC via Bluetooth Supports OpenXC via USB openxcplatform.com
On Demand VehicleSpeed measurement = (VehicleSpeed) vehicle.get(VehicleSpeed.class); openxcplatform.com
Asynchronous VehicleSpeed.Listener listener = new VehicleSpeed.Listener() { public void receive(Measurement measurement) { // do stuff with the measurement } }; vehicle.addListener(VehicleSpeed.class, listener); openxcplatform.com
Vehicle Dashboard openxcplatform.com
MPG Tracking openxcplatform.com
Trace File Output 2012-12-10.json 2012-12-11.json ... traces/ openxcplatform.com
Streaming Output HTTP openxcplatform.com
Other Platforms OpenXC Python Library MATLAB Interface, work-in-progress OpenXC WinRT Library, first community port in progress openxcplatform.com
Developer Requirements Required: Laptop Not Required: Smartphone Tablet Data plan Ford vehicle Any vehicle CAN interface Contract with Ford openxcplatform.com
Existing Projects http://openxcplatform.com Gracenote hack Trace analyzer HCL "running late" app http://openxcplatform.com openxcplatform.com
References Slide 4 Cathedral and the Bazaar, Version 3.0 Copyright (c) 2000 Eric S. Raymond. Permission is granted to copy, distribute and/or modify this document under the terms of the Open Publication License, version 2.0. Slide 5 1966 Mustang, Creative Commons, aresauburnphotos on flickr Slide 6 Punchcard, Creative Commons, BinaryApe on flickr Laptop Child, Creative Commons, stawarz on flickr Slide 13 ELM327 Adapter, Creative Commons, obdchina on flickr OBDMate Scantool, Creative Commons, topshoppingmall1 on flickr Scantool, ScanTool.net Slide 24 HTC Dream, HTC Motorola Droid, Motorola Nexus One, Google Toshiba Thrive, Toshiba Galaxy Nexus, Google / Samsung Nexus 7, Google / Asus Slide 31 Python Logo, python.org MATLAB / Simulink Logo, MathWorks Windows 8 Logo, Microsoft All other images Copyright Ford, from media.ford.com and openxcplatform.com openxcplatform.com