The network is half duplex RS-485 network that uses stereo audio cables to connect the nodes. The Web Server computer is connected to the network via USB->Serial adapter and a modified node card. The network looks like this:
<center><img src="doc/tip/Docs/Images/nodes.png" width="300" height="300"/></center>
The laptop/Web Server is the master on the network and all communication is from master -> node and from node -> master. In this system there is no need to talk between nodes. The Network Interface (which is a modified Arduino/node) manages the transmit/receive line. With the RS-485 interfaces you must assert TRANSMIT on the node before you send and drop it to receive data.
<center><img src="doc/tip/Docs/Images/TEK00011.png" /></center>
The top trace shows the TRANSMIT line and the middle shows the master transmitted data, the bottom purple trace shows the received data at a node.
The data packets on the network are ASCII characters/HEX data and the packets look like:
<center><img src="doc/tip/Docs/Images/packet.png" /></center>
There can be up to 32 nodes on the network (RS-485 limitation) and we can run up to 300' of network length. Address 0 is the broadcast address. Any packet sent to 0 will be acted on by all the nodes. (Very handy for arming all of them simultaneously). The nodes have fixed addresses programmed into their EEPROM's and when replying from a broadcast will backoff sending the reply a time based on their address value. (Prevents packet collisions, unfortunately the RS-485 chips don't allow you to do carrier sense like ethernet).
[Firenet | back]