Serial comms over 3m cable, shared with USB
My advice is to use a UART and RS485.

If you try to use any non-differential signalling protocol on a lead that long, you will get a terrible BER at useful data rates.  Differential half-duplex async is the way to go.

Your concerns about sharing the bus with USB are valid, but RS485 drivers can (generally) be put in a high-impedance mode that might be willing to co-exist with USB.