Table of Contents
The RS485/Wireless/IPv6 Hybrid System
The idea is to run several small and cheap wired or wireless networks connected to a small, embedded and IPv6
capable computer like a Fonera running OpenWRT or a Dockstar running Debian. These computers then provide an
IPv6 capable interface to the nodes attached to them. Every node gets at least one unique address in the sub net
associated with this master computer.
The wired network is based on a RS485 bus. It is a single master bus. The node at the master acts as the bus
master which periodically polls other nodes for new messages.
Nodes can set a preferred polling interval which is submitted when they send their discovery packet. The bus master then
tries to poll the node at the given interval. This is useful to lower the load on the bus which is used to poll the nodes
for new messages. A node which handles user input like a light switch should request a lower polling interval than
nodes which just gather sensor data like temperature sensors or actuators like lamps or power outlets.
The current implementation reserves 10% of the time for polling other nodes. The nodes can request a polling interval in
multiples of 30ms which is the minimum polling interval supported.
Compare with implementation by jolly:
http://home.eversberg.eu/simp.txt Jolly does not have source dest mac, as he thinks of a single master, which sets
a master-flag so the slave knows if he has to listen (master flag set)
Maybe, we can combine the ideas.
The wireless part is done using cheap RFM12 modules operating at 433MHz. The system uses a CSMA/CD approach using
random back offs when the medium is busy. In general the wireless network is less reliable than the wired network.
The current implementation can be found in the svn repository in the uberbus project.
trunk/firmware/lib contains the current implementation if the uberbus library for avr devices. It supports a single master
RS485 bus and a CSMA/CD wireless network. The firmware is capable of switching from a slave mode to a master mode to
pose as the bus master. The code can be compiled to include either one or both of these modes.
trunk/firmware/moodlamp-rf contains a sample application which can run as a slave on the wireless or wired bus and can
switch to the master role to control the bus when attached to a host computer.