Juraj's Blog

06 Jan 2021

Wiring car instruments for fun

Car accessories as game controllers?

I got inspired by the CAN BUS Gaming Simulator post on hackaday, where Leon Bataille connected a VW Polo dashboard and switches to Euro Truck Simulator 2.

I’d like to do something similar, but with with parts from a slightly different vehicle. In this article I’ll describe my initial findings - how the things are wired together.

Instrument cluster as output

Volkswagen group parts tend to be cheap around here, so I scored an instrument cluster from a VW Transporter T5 for 10 €, part number 7H0 920 850 R.

T5

The donor vehicle looked probably like this.

The cluster has two 32-pin connectors that happen to be compatible pitch-wise with the standard breadbord jumper wires. I suspected that it won’t be necessary to connect all 64 pins

I’ve found a pinout on a German forum and converted it into tabular form, as I wanted to do the wiring next.

connectors

Green connector with the pin numbering, blue connector after the wiring

BLUE GREEN
T32/17 Main beam warn 17 1 T32/1 Terminal 15, 12V ignition T32a/17 Immobilizer reader coil 17 1 T32a/1 Radio clock receiver, + 5 V
T32/18 vacant 18 2 T32/2 vacant T32a/18 Oil level and temp. 18 2 T32a/2 Immobilizer reader coil
T32/19 vacant 19 3 T32/3 Speed signal - out T32a/19 CAN-H (drivetrain) 19 3 T32a/3 Radio clock receiver, sender
T32/20 vacant 20 4 T32/4 vacant T32a/20 CAN-L (drivetrain) 20 4 T32a/4 CAN
T32/21 vacant 21 5 T32/5 Fuel gauge sender T32a/21 vacant 21 5 T3a2/5 vacant
T32/22 Coolang shortage warn 22 6 T32/6 Day lights warning T32a/22 vacant 22 6 T32a/6 Washer fluid level warn
T32/23 Terminal 30, 12V 23 7 T32/7 Terminal 31, GND T32a/23 MFA - up 23 7 T32a/7 Brake pad warn
T32/24 Terminal 31, GND 24 8 T32/8 vacant T32a/24 MFA - down 24 8 T32a/8 CAN-H (Komfort)
T32/25 Self diagnostics - K 25 9 T32/9 Terminal 31, GND T32a/25 MFA 1/2 - reset 25 9 T32a/9 CAN-L (Komfort)
T32/26 Right park. light - input 26 10 T32/10 Oil pressure switch T32a/26 Ambient temp sensor 26 10 T32a/10 Radio clock receiver, GND
T32/27 Left park. light - input 27 11 T32/11 vacant T32a/27 CAN-H (out) 27 11 T32a/11 vacant
T32/28 Speed signal - input 28 12 T32/12 vacant T32a/28 CAN-L (out) 28 12 T32a/12 vacant
T32/29 Brake system warn 29 13 T32/13 vacant T32a/29 vacant 29 13 T32a/13 Handbrake warning - input
T32/30 S-Kontakt 30 14 T32/14 Rear fog light warn T32a/30 vacant 30 14 T32a/14 vacant
T32/31 Belt switch warn 31 15 T32/15 vacant T32a/31 vacant 31 15 T32a/15 CAN-H (Info)
T32/32 vacant 32 16 T32/16 vacant T32a/32 vacant 32 16 T32a/16 CAN-I (Info)

I powered both 12V wires from an adapter and the cluster lit up - so at least that works :)

cluster

Steering column switches as input

To feed the simulator with external input I’d like to use a real steering column switches.

Again, to keep the project costs I’ve bought the steering column switches from Škoda Fabia for another 10 €, part numbers 8LO 953 513 G and 4BO 983 503 G for the left and right stalks. These parts are shared between Volkswagen, Audi, Seat and Škoda, so the pinout should also be well documented online.

I suspect this consists of passive components only - simple switches that should close a circuit / emit a signal whenever a button is pressed or a stalk is moved into a specific position. In that case we won’t need 12 volts, but whatever our microcontroller uses for the digital inputs.

The connectors are not the standard “needle” pins but some kind of flat pins, most probaly FASTON terminals .

I’ll buy some and update this article when they arrive.

As the left and right stalk are separate parts, they would be wired separately as well, so it makes sense to analyze them individually.

steering column stalks

The left stalk with turn indicators and beam switch, the right stalk with wiper controls and board computer buttons

Turn indicator stalk

The left stalk 8LO 953 513 G controls the turn indicators and the headlights. It has 11 pins with labels such as 56, 56b, PL, PR and so on.

It turns out these are standardized in DIN 72552 , which specifies the codes for many contacts in the automobiles.

The table with the signal listing:

Contact Description Contact Description
56 Spot light 30 12V Battery
56b Low beam 30 12V Battery
PL Parking lights left L Indicator lights left
PR Parking lights right P Parking lights
R Indicator lights right 49a Flasher unit out, indicator switch in
56a Headlamp high beam and indicator light 71 vacant

To actually decode which position the switches are in, we need to follow the logic of the wiring, as described in this blog post .

High/low beam and flash

Position State Comment
Low beam 56 -> 56b
High beam 56 -> 56a
Flash 30 -> 56a Flashing works even with lights switched off

Note that the terminal 56 will be powered when the lights are on.

This means that we can need to connect the pins 56 and 30 as digital output and 56a/56b as digital input in our microcontroller.

Turn indicator

Position State Comment
Left signal P -> PL
Right signal P -> PR

Summary of signals we need to connect

Inputs Outputs
PL 30
PR 56
56a P
56b

It seems that we don’t need to connect the pin 49a.

Wiper stalk

The right stalk 4BO 983 503 G controls the wiper and the board computer.

It has three connectors in total:

  • straight long connector with pins labeled 1 to 6
  • L shaped connector with pins HW, 53b, INT, 53a
  • L shaped connector with pins 53, 31, 53e, 53c.

Using DIN 72552 as a reference shows that the 53x are related to the window wiper/washer, 31 is ground.

INT should be related to the intermittent wiper mode. HW should be Front window cleaner.

Wiper connectors

Stalk positions:

Position Connection
Wiper off 53a -> none
Intermittent 53a -> INT
Normal 53a -> 53
Fast 53a -> 53b
Pulled 53a -> 53c
Down 53a -> 53

Board computer connectors

I guess the long connector is be related to the board computer buttons (up, down, reset).

According to a workshop manual they should be:

Contact Description
1 Rocker up
2 Rocker down
3 Ground (A)
4 Reset
5 Relay for wash/wipe interval system
6 Ground (B)

Probing the rocker up/down and reset buttons with the multimeter buzzer worked - I got a beep on the correct pin with the buttons pushed.

It also includes a 4-position rocker that controls the intermittent wiper speed. It acts as a potentiometer between the pins 5 and 6, with the values of approximately 1.95 kΩ, 4.53 kΩ, 7.77 kΩ and 15.5 kΩ.

So more connectors required are:

Inputs Outputs
1 3
2
4

Summary of the required connectors of the steering column switches

Overall, there are 17 signals to/from the switches. That’s still enough to handle with an Arduino Nano, which features analog and digital inputs.

Digital output Digital input Analog input
3 1 5
6 2
53a 4
30 INT
56 53
P 53b
53c
PL
PR
56a
56b

Getting the inputs to a computer

Reading the switches and buttons should be easy with an Arduino. However, to make the inputs usable in a game, I’ll probably need a board that can act as USB HID device (keyboard or a gamepad), so I’ll probably look into ATmega32u4 board (Arduino Micro).

Another option is to send the events to the PC over a serial port and write a utility to convert them into key press/release to use in a game/simulator.

What’s next

There are several follow-up activities:

  • Connecting an Arduino CAN bus shield to the CAN bus pins on the instrument cluster
  • Lighting individual warning lamps on the instrument cluster
  • Successfully processing the signals from the turn indicators with Arduino and communicating that back to the PC
  • Making it all work with a driving simulator :)