Comminication between Arduinos  - powerline or RF?

What do you think is the simplest and cheapest method for connecting two or more Arduinos? I am going to build a system for monitoring and controlling electric devices, say a coffee maker. The architecture is something like:

Coffee maker
     |
     |
current sensor
relay
arduino slave
    |
    |
    |
Arduino master
   |
   |
   |
 PC

Arduino slave monitors the coffee maker (or any other electric device). There can be many slaves. It sends the status of the device (does it draw current) to an Arduino master, which transmit it to a PC. PC is optional and meant for remote access. Arduino master has simple local user interface (lcd + some push buttons). The slave arduino controls a relay and it switches the power off/on if it receives a command from Arduino master to do so.

What do you think is the best (cheapest and simplest) way implement the communication between Arduinos? I thought that communication over power line would be natural choice because all the devices are connected to power lines. I know that X10 protocol implement some of the features I need, but the protocol is very limited, slow and X10 components a quite expensive in Europe.

Other alternatives that have crossed my mind include ethernet over powerline + ethernet shield and PLC UART http://www.sparkfun.com/commerce/product_info.php?products_id=9185, but they are all quite expensive and compilcated. If have started to doubt if power line communication is a viable alternative after all, and it would be better to go after RF communication like XBee.

Which would you prefer? Have you implemented power line communications between Arduinos and does it have any advantage over RF technologies like XBee?

The simplest, cheapest way of communicating between arduinos is to use direct wiring and serial.

The simplest, cheapest way of communicating between arduinos is to use direct wiring and serial.

That may be true if Arduinos are close of each other. But don't think that serial be practical if we have several Arduinos communicating with one master and they are located far a way from each other (say tens of meters of cable). Installing the cables is expensive and laborious (and what if I want to move the coffee maker to an other room?) and serial does not fit very well in one to many communication.

You could probably replace the slave Arduino with an XBee which has analog measurement and digital I/O capabilities.

Depending on how much control you are willing to do on the PC you may be able to replace the master with an XBee that plugs into the PC USB port.

(* jcl *)


www: http://www.wiblocks.com twitter: http://twitter.com/wiblocks blog: http://luciani.org

You mention "cheapest", so I'm going to say, eliminate the master arduino (just saved you $30) and use ethernet (wiznet) with the coffee maker arduino. You can run webduino for remote control. I would use an RBBB ($12) with a wiznet module from nkc electronics (~$20).

XBees are fine and good, but will cost you more (2*XBees + Arduino + shields/breakout) and while probably reliable enough, they're never as reliable as ethernet. X10 is just plain unreliable, and will cost you more as well.

(say tens of meters of cable)

I currently have 2 communicating quite happily over 50 meters at 9600 baud soft serial(one is powered from the other over the same cable too). Using soft serial its more than possible to have multiple arduinos hooked to one. The slave is an el cheapo RBBB - it doesn't get any cheaper, the cable was put in an afternoon.

Thank you all for excellent suggestions. I should have made more clear at the beginning that I don't want to add extra cables. One requirement is that the control/monitoring apparatus is easy to move from one place to another.

You could probably replace the slave Arduino with an XBee which has analog measurement and digital I/O capabilities.

I will definitely check that one.

I would look into using RF transmitters and receivers.

Here's some info http://www.glacialwanderer.com/hobbyrobotics/?p=291

The code looks pretty basic, as the hardest part is being handled by the existing serial library. I would suggest using the newSoftSerial library instead

Then it'd just be a matter of developing some arbitrary communication protocol (the site above has an example)

In terms of cost ($5 for a tx/rx pair is cheap) : http://www.seeedstudio.com/depot/315mhz-rf-link-kit-p-76.html

Opps. At first I thought you had ethernet at the coffer maker. Now I see you were talking about eth over powerline. I would consider a wifi router/access point to provide ethernet at the coffee maker. You can probably find a cheap used one on ebay. This of course assumes you have wifi already. If you can do this, you only need one arduino and don't need to leave your computer on all the time for monitoring/control. With an openwrt router, you could ditch the arduino eth and do serial interface with the arduino.

How does one send information via the AC wiring?

How does one send information via the AC wiring?

There are several ways to do that. One of the most widely used is X10 protocal. It sends a bit every time when AC voltage crosses zero, so it is very slow and has also quite limited functionality. More advanced solutions include ethernet over powerline (HomePlug) and PLC-UART (serial over powerline). Google will give you more info about those.

Opps. At first I thought you had ethernet at the coffer maker. Now I see you were talking about eth over powerline.

Ethernet over powerline was just one example of possible ways to communicate between Arduinos, although probably too expensive and compicated for my needs. I am just looking for simplest possible way (excluding additional cabling) to send the status of an electric device to the master and swich the device off/on by a command from the master.