Reading data from 3.5mm jack

Hello everyone,

Pretty new to the world of Arduino. I have had some experience with electronics in the past but I'm starting from scratch again.

My current project is to read the data from remote control (physical) that's intended for a Sony Marine Head Unit. This is the remote http://www.rcjoycon.com/default/menu_11.php?com_board_basic=read_form&com_board_idx=57&menu=11&&com_board_search_code=&com_board_search_value1=&com_board_search_value2=&com_board_page=&.

What I want to be able to do is to connect the remote to my Arduino and be able to read the data that the remote is sending. As you can see from the pictures, the remote has a 3.5mm audio jack that it uses to connect.

Does anybody have any recommendations or tips on how to proceed? Is this feasible?

Thanks in advance, I'm super excited!

You need to know what type of signal you're getting on that jack plug. Since it appears to be designed to control a music system, perhaps it's a standard format. For example, it might be a serial data stream. In that case, once you know the signal levels you could connect it to a serial port and look for the serial settings that are needed to receive the signal. Once you manage that, you can try to figure out how the button presses are encoded on the serial stream. Perhaps it works like a keyboard, sending a sequence of scancodes. But it could be completely different, and it may not be a serial device at all.

so all resistance type remote controller works. (0~100k ohm resistance output remote controller do not need adjustment.)

This is usual resistance-output steering wheel handle remote controller's circuit. You can put additional buttons like green box below by DIY, if you want. http://www.rcjoycon.com/base_3/menu_10.php?com_board_basic=read_form&menu=10&com_board_idx=9

you can read by using the ADC pin.

BillHo: so all resistance type remote controller works. (0~100k ohm resistance output remote controller do not need adjustment.)

This is usual resistance-output steering wheel handle remote controller's circuit. You can put additional buttons like green box below by DIY, if you want. http://www.rcjoycon.com/base_3/menu_10.php?com_board_basic=read_form&menu=10&com_board_idx=9

you can read by using the ADC pin.

Bill, thanks a lot for your help and information. What do you mean by an ADC pin?

So all I would need to do is hook up the GND to GND on the arduino and then the Data port to one of the inputs on the Arduino, using a ~10k Ohm resistor?

After that, I should see values for each button press?

Thanks for the info!

I think you'll find the resistance values are cleverly chosen so that each combination of buttons produces a unique overall resistance. You would need to have a way to measure the resistance of that input. The simplest way would be to use it as one side of a voltage divider i.e. you connect one wire to ground, connect the other to an analogue pin, also connect that analogue pin to a pullup resister to 5V. Hence the voltage at the analogue pin would change as the resistance of your remote control changed.

You would need to choose the pullup resistance so that you got enough of a voltage change to be clearly distinguishable for all button presses.

Well, this worked like a charm. Thanks for the help guys.

I’m using a 10kOhm resistor and I’m getting good values for all buttons.

It’s funny that they send values on the ring connector ONLY for two buttons (GP/ALBM±). For every other button, the values of the tip connector are what’s important.

Now on to the other part of my project!

Thanks guys!!!