PCA9698 - 30In/10Out

Hello Everyone,

I have some knowledge on electronics, but no more than basic programming - so I hope you will be pacient and I understand how can I implement the project.

However, the project basically consists of 30 momentary push buttons and 10 relays.
The use case of that is: creating a buttons panel that is linked to an xbox controller pcb. so for example if I press the push button 1, this will close the relay linked to button "A" of xbox PCB. Another example, if I push the button 2 on the panel this will close the relay linked to button "RB", keep it closed, wait xms, close the relay linked to button "A" of xbox, wait xms, release "A", wait xms, release "RB" - so key combinations but in certain order.

So, after some research, this is the solution: Arduino with PCA9698.

Could you please advise if this is feasable?
Also, can you provide a simple code for example for the second example that I gave, so I see if I can understand and further develor?

Many thanks in advance!

Just to mention:

  • Hardware-wise, I think I'm able to put everything together.
  • I will use relays, so Arduino circuit will be isolated from Xbox circuit. The relay closing will simulate the push of the button on the actual controller.
  • I'm flexible with the entire circuit supply (5 or 12V).
  • I'm aware that there's the risk that the PCA output will not provide enough power to close the relays, therefore I consider to control some transistors that can actually supply the relays.
  • I was looking initially for some hardware solutions, and I came up with one using 555 timers but it's getting really complicated for this amount of inputs/outputs.

If you have any other question or suggestion, please feel free to comment.
Many thanks guys!

Looks feasible, with additional components to energize the relay coils.
Maybe you can find a breakout board similar to this

Maybe use two ULN2803A as current buffers. Use them to sink current thru the relay (relay connects to 12V or 5V, ULN2803A makes the Gnd connection).

Using relays for this sounds overkill, slow, noisy and bulky. Have you tried opto-isolators?
s-l300 (36).jpg

s-l300 (36).jpg