PROBLEM
I'm building a robot control board to attach to a Raspberry Pi as an hobby. I like to have specialized boards for various functions, and I'm exploring solutions for the communication bus. In the past I tried:
- 5V UART: problems with noise
- I2C: just doesn't work with noise
- POF Plastic Optic Fibers: Cool but expensive and large
- RS485 over audio cables with 3.5mm jack connectors with custom protocol: Works like a charm. I like how inexpensive the connectors and the cables are.
Below an image for reference of one of the robot I made in the past using a RS485 bus with custom protocol over audio cables with 3.5mm jack.
Below an image for reference of my latest iteration of the Raspberry Pi robot hat. I want to add display and connectors for a communication bus, add a better power regulator and move motor and servo controls over to slave boards.
IDEAS
I'm thinking of either implementing a CAN bus or a RS485 bus with a less custom protocol that has some use in the market.
Here an example of a slave that uses CAN bus
Here an example of a slave that uses RS485 bus with their custom protocols.
Specifications:
- Three wires (two data + one shield), so I can use audio cables and 3.5mm jacks for my slaves
- I want the bus to be less custom, so that I can attach it to existing add on boards
- 1Mb/s bandwidth
- Resilient to noise
QUESTION
I'd like suggestions on which bus you would use in this application, in particular if there is a bus that I have not taken into consideration, suggestion on a standard protocol over the RS485 bus or your reasons you would choose a CAN bus. Thanks for your inputs!
SOLUTION
There are no dominant protocols used with RS485 and CAN has a large data frame overhead.
I decided to implement two 3 pins 3.5mm Jack connectors with a RS485 transceiver connected to an AT4809 for the hardware. Over the RS485 bus I will reuse my custom master-slave protocol.