Git Product home page Git Product logo

steering-wheel-interface's Introduction

Steering Wheel Interface

Android application for interfacing with the steering wheel radio control buttons in certain Jeep/Chrysler/Dodge vehicles.

Purpose

This project exists primarily as an example of how to interface an Android device with a vehicle bus using an inexpensive ELM327 based OBDII scan tool.

This is NOT an OBDII or "code reader" type application! A scan tool is used only to provide the interface to other vehicle buses that happen to also use OBDII standard protocols (SAE J1850 PWM, SAE J1850 VPW, ISO 9141-2, ISO 14230-4 KWP, ISO 15765-4 CAN, SAE J1939 CAN).

The application is not likely useful to many people exactly as-is, but is designed to be extended to work with your specific vehicle/scenario. Note that only USB scan tools are currently supported, though adding support for BlueTooth should be relatively simple.

Getting Started

To test the application as-is requires:

  • An Android device with USB Host support running Android 4.1 (Jelly Bean) or newer.

    Note: The majority of the functionality only requires Android 3.1 (Honeycomb). If you remove or refactor the "settings screen" functionality, you should be able to compile and deploy to Honeycomb devices.

    Root access is required for some functionality.

  • An ELM 327 based USB scan tool

    Note: Many of the cheap eBay clones do not implement every protocol correctly and therefore may not work. This one is known to work: http://www.amazon.com/ScanTool-423001-ElmScan-Diagnostic-Software/dp/B002PYBZJO/

  • A USB OTG cable (or an Android device with a native USB Host port)

  • A Jeep/Chrysler/Dodge vehicle with a SAE J1850 VPW base PCI Bus (many late 90's through mid 2000's models)

Compile and deploy the application. Plug the scan tool into the vehicle via the OBDII diagnostic port and into the Android device through the USB OTG cable.

Respond to the Android prompt regarding USB device being attached by selecting this app to launch. It is recommended you select the "always" option. (Note: if you already have a default application for USB-Serial devices, you will need to clear that setting.)

A notification should be seen saying the Steering Wheel Interface started. Click the notification for the settings screen where you can adjust the baud rate for your particular scan tool. You will need to restart the app for the new baud rate to take effect.

Press your steering wheel radio control buttons. By default, play/pause, next/prev track, volume up/down, and go-to-home-screen actions are supported. Only the volume actions do not require root, the other actions will fail silently on non-rooted devices.

Tested and confirmed working on a Motorola XOOM 4G running the CyanogenMod 10 ROM with a 2003 Jeep Grand Cherokee.

Using with other vehicle makes:

(documentation pending)

Copyright and License

Copyright 2013 Kristoffer Smith and other contributors

Except for external references, this project is licensed under the MIT License.

http://opensource.org/licenses/MIT

Contributing

Pull requests are welcome! Please contact me if you'd like to do a major re-work or extension of the project.

https://github.com/theksmith/Steering-Wheel-Interface

Credits

Authors

Contributors

  • none yet

References & Dependencies

steering-wheel-interface's People

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.