Skip to content

An ESP32 used to read voltage levels coming from steering wheel controls and send next and previous track commands over Bluetooth to an Android phone.

Notifications You must be signed in to change notification settings

ericmarciniak/esp32-swc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 

Repository files navigation

A personal project to find a solution to a niche problem. I drive a 2008 Infiniti G35 which has steering wheel controls for the radio and CD player but is too old for Bluetooth audio. I connect my phone with a USB-C to 3.5 adapter into the Aux input but had no way to quickly change songs. I had the idea to tap into the headunit and read the button presses and pass them along to an ESP32 connected to my phone over Bluetooth.

The steering wheel buttons are connected over a resistor ladder. Looking in the factory service manual I was able to find the voltage values when the UP and DOWN button are pressed. On my car UP was 0.7v and DOWN was 1.3v. After wiring everything up I got slighly different values but not too far off. The idle voltage was reading around 2.25v and DOWN was 1.5v.

I put together an op-amp circuit with some filtering to help stabilize the ADC readings from the buttons in the car. This way allows the buttons still function like normal in other modes and not load down the line. I am not a coder so I got ChatGPT to do a lot of the heavy lifting. The ESP32 connects to the phone as a HID and is able to map the incoming ADC values to next and previous track commands for Spotify (or any music app). When the button on the enclosure is held for 6 seconds all of the paired devices are cleared from the ESP32.

PXL_20251108_194223257

About

An ESP32 used to read voltage levels coming from steering wheel controls and send next and previous track commands over Bluetooth to an Android phone.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages