That is really cool, as an industrial electrical tech I am familiar with the usage of CAN Bus and other comm types, but I DO NOT understand it... I am curious what you are going to do with it. I've wondered about it in this vehicle, but never toyed with it, mainly due to fear of breaking it. (Put another way, I know just enough to be dangerous.) I am toying with the idea of using a Raspberry Pi and/or an Arduino to put sensor data onto a screen in my TJ since the gauge cluster is such a POS.
edit: Did you by chance post this on the Raspberry Pi site? This seems like a pretty sweet project that could use some publicity.
I did yep. Lots of folks doing similar things there for different vehicles.
UPDATE: this guy's post has one of the most reasonable explanations of CAN bus data in a vehicle, from the electrical aspects to the software aspects of it: http://fabiobaltieri.com/2013/07/23/...and-socketcan/
But it's deceptively simple, really. It's a network that allows nodes (computers!) to broadcast messages on the bus using specific message identifiers. That's different from a network like TCP/IP (Internet!) where the messages contains source and destinations ids - in the CAN world the message has an identifier that means something, such as "this is my current sirius station." It is up to all the nodes in the system to decide what messages they broadcast and which ones they receive.
It was designed-for and works-well in vehicle applications because the electrical characteristics are very robust, and it allows for very loose coupling between the various computers in the cars.
The audio/video stuff is a great example... the UConnect module broadcast messages about what's playing via the USB control, and it doesn't matter what radio is installed in the vehicle. All the radio (or some other display system) has to do is listen for those messages and do what it wants to do. Electrically, it's all over the same twisted-pair of wires no matter who is involved.
What varies a lot between vehicles is what is a CAN node, what is a LIN (local interconnect network) node, and how many different buses there are.
As another example, in the JK, we've got the cab compartment node (CCN) - effectively the big dash system. That talks to a bunch of different switches over LIN, such as the window switches, the heated switch switches, the control stalks, etc. It may do something with the commands from those switches entirely internally, or decide to broadcast a message out on the CAN bus for someone else to do something. Lights are a great example here:
- Turn on your lights via the control stalk, which sends a LIN message to the CCN
- The CCN changes its own displays appropriately.
- The CCN broadcasts that command over the CAN-IHS bus
- The TIPM receives that message and turns on the appropriate light circuits
- The Radio receives that same message and changes its display appropriately