All the electric signals in the van are going to be controlled by the TAS and all sensors have to be connected also. The signals and sensors are spread all over the van and it would be rather daunting to connect them all back to the central processor. One reduces the complexity of such an installation by building a network of nodes, which are processors handling local signals and being connected with each other for communication.

I am using Ethernet for some of the connections but with a larger amount of nodes in the network Ethernet is not really the best choice to connect these individual network nodes. The reason is that the Ethernet is not really a true bus system. One has to use switches to connect the network clients to the network and this leads also to a lot of cables running to those network switches and back to the main processor. A better choice of bus for this purpose is the CAN bus. For those interested in details about the CAN bus, please just Google it. There is plenty of information.

The CAN bus connects the nodes with 2 wires (twisted pair – best shielded) and in the picture above one can see three Arduinos with CAN bus shield to the left and bottom right is a bus connection board which allows the nodes to be connected to the bus via a drop cable (a connection from the main bus to the node). One can also run the bus through each node, but that is just a matter of where the node is located.

I run the Arduinos with 6V (less heat than 12V) because in production I do not use the USB port. Some connect 5V to the USB port but I am not doing that.

At the top left of the image one can see one wire connected to one of the digital input pins on the Arduino. This is the end of the one wire bus connecting temperature sensors (DS18b20 digital sensors).

onewire_bus

I also made a little board to connect 5 temperature sensors to the one wire bus or daisy chain these boards for more sensors. Each of the sensors has a unique ID and can be queried by the processor. The data is transmitted over the CAN bus to the gateway, which is an Arduino with CAN bus shield and Ethernet shield. The CAN bus ends at the gateway node and all data of the CAN bus is transfered to the central processor through this gateway.

can_gateway

The above image shows the CAN bus gateway with the Ethernet shield on top of the CAN bus shield . Todays prices for these components are really cheap, so one does not have to worry about cost too much and can use a few more processors rather than running too many signals into one. Cost for an Arduino is $4.95, a CAN bus shield is US$11.90 and an Ethernet shield is $8.60. One can bus not is the around A$18. One of the temperature sensors is $1.80 and there is nothing else required to connect the sensors to the Arduinos. It is really easy to place these temperature sensors everywhere and use the information for environmental monitoring and climate regulation. Cooling, heating , fridge and freezer and many other spots where temperature is of interest.

Below one can see the test output of data received by the gateway from each CAN bus client. The first column is different for each client. The next step now is to implement the protocol I am going to use to actively query the clients for specific signals.

can_print

 

One problem with the CAN bis in my application is that the node defines it’s id. There is no way to uniquely identify each node with a dynamic id from the gateway with 100% accuracy. It requires that each can node is flashed individually with its own unique id written into the memory. This is not really elegant because I would have to maintain several pieces of software with only one difference, the node id. The other approach is to uniquely mark each Arduino with some sort of hardware key. A dip switch would work, but one would waste some digital inputs. The most elegant solution I can think of is to use a DS2401 on the one wire bus. Since I use the one wire bus anyway this little chip will give a unique id to every node in the network. Through this I can keep the software the sme in all CAN bus nodes and even dynamically allocate and load sensor ids, ip address etc. At $1 a piece this is expensive compared to other components but considering that the manufacturer guarantees that there is no two chips with the same id in the world, it is a neat little thing. I will write a separate chapter on one wire temperature sensors and the id chip.