Git Product home page Git Product logo

e46clusterdriver's Introduction

E46 Cluster Driver

An Arduino sketch and schematic for the hardware to drive a BMW instrument cluster over CAN-BUS, KBUS and general IO lines. The firmware has been designed to work with my DashboardSender application.

What Is Supported

Currently the board can interact with these parts of the instrument cluster, though some parts are not implemented in the software yet:

  • Speedometer
  • Tachometer
  • Parking Brake LED
  • Cruise Control LED
  • ABS Warning LED
  • Airbag Warning LED
  • Fog Light Status
  • Full Beam Status
  • Coolant Temperature Gauge
  • Indicators (Turn Signals) - Including Double Rate
  • Door open status
  • Bulb out warnings
  • Set Time

Not currently working:

  • Fuel Gauge
  • MPG Readout

Hardware

For ease of assembly onto standard strip board the design uses the Atmega328p in a DIP package. Two Atmels are used as the KBUS requires the hardware UART to send the data. The two chips are connected over the I2C bus. If using an variant with 2 or more UARTs it is entirely possible to roll the whole firmware into one chip.

CAN-BUS

To interface with the CAN-BUS the MCP2551 and MCP2515 ICs are used, these connect to the main processor over SPI.

KBUS

The KBUS connection is handled by a stripped down version of the driver circuitry designed by Thaniel, see Resources. Only the TX portion is used as the instrument cluster only sends a periodic status packet which can be ignored for the purposes of driving the cluster. An MCP2025 Linbus tranceiver could also be used.

General IO

Some of the functions (Such as the parking brake LED) require certain pins to be pulled to GND from 12V, these are handled using a 2N2222A on the outputs of a PCF8574. This IO Expander is used just incase I need the other Atmel pins for other uses later on (Fuel guage?)

Libraries

The main Arduino sketch requires these libraries:

Resources

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.