Home

Awesome

image

can0swc

<a href="https://testerpresent.com.au/"><img src="https://img.shields.io/badge/Tester Present -Specialist Automotive Solutions-blue" /></a>

<img align="center" src="https://raw.githubusercontent.com/jakka351/FG-Falcon/master/resources/can0swc.gif" />

image

Steering Wheel Controls adaptor for mk1 FG

Uses the python-can library to listen for pushes of steering wheel buttons, which are visible on the Falcon's mid-speed controller area network with CAN ID 0x2F2. Also listens for ICC button pushes on CAN ID 0x2FC and BEM functions on 0x307. When a button is pushed, the script emulates a keypress on the Raspberry Pi. This is used here with OpenDash's implementation of Android Auto emulator Openauto to control basic media functions. The Car used is an Ford FG mk1 Falcon. The factory display from the vehicle has been replaced with a Raspberry Pi 7 Inch Touchscreen.

Basic Breakdown of Steering Wheel Controls for FG Falcon

SWC are resistance based, all switches run on a single wire, pushing a button causes a specific resistance in the circuit. The Module sees a change in resistance, and accordingly sends data on to CAN-bus where it is recieved by the ACM/FDIM/ICC and acted upon.

-- Relevant ICC Diagrams + Pinouts

image

Hardware

Vehicle: FG Falcon mk1
Interface: SocketCAN can0 interface, MCP2515 chipset, Midspeed-CAN@125kbps
Software: Can-Utils, Python-Can, Openauto, Opendash, Raspbian
SBC: Raspberry Pi 4B - 8gb, PiCan2 Hat, i2s audio hat
Other: Modified OBD-DB9 Cable, 7" Official Touchscreen, 2 Metre DSI Ribbon Cable, heatsink case, fans, enclosure, 12vdc-5vdc converter

Unit Diagram

<p align="center"> <img src="https://raw.githubusercontent.com/jakka351/can0swc/main/falcon.png" width="500" height="500" /> </p> <br/>

Actual Unit

<p align="center"> <img src="https://raw.githubusercontent.com/jakka351/can0swc/main/canpii.jpg" width="300" height="425"> <br/><img src="https://raw.githubusercontent.com/jakka351/can0swc/main/test%20(1).jpg" width="325" height="425" /> </p><br/>

image

Installation, Dependencies & Config

Edit

Set Up CAN interface

image

Wiring Diagrams

<img src="https://github.com/jakka351/FG-Falcon/blob/master/resources/images/36042a635002807104849f240acc63e5.jpg" width="600" height="600" /> <img src="https://raw.githubusercontent.com/jakka351/FG-Falcon/master/resources/images/plug_dlc.png" width="600" height="600" />

image

CAN Data

AddressDataFunctionByte1Byte2Byte3Byte4Byte5Byte6Byte7Byte8
7548 bytesVolume Data0x00xxxxxxx
7548 bytesSeekxxxxxxx0x08*
7548 bytesVolume Upxxxxxxx0x10*
7548 bytesVolume Downxxxxxxx0x18*
7548 bytesPhonexxxxxx0x61**x
7488 bytesModexxxxxx0x10x

*+1 depending on audio mode
**65 or 68 depending on audio mode
image

Use in Different Vehicles

There is a templated version of the script that can be used to make your own version of can0swc, named as 'template.py'.

image

Based upon:

-- Python-CAN PiCAN2 Examples
-- Webjocke canbus to keypress

image