More and more open-source projects in home automation these days are “connected” in some way. For example, you want to build a single wireless motion sensor based on Arduino. Or you want to build a full home automation system with many modules communicating together and with a central node. Or you just want a small temperature sensor that continuously send data on a web interface. It can be difficult to choose a wireless solution from all the modules that are available on the market. Indeed, many are easy to interface with Arduino: XBee, Bluetooth, radio, WiFi … the possibilities are huge. So how do you pick between these technologies for your project ? That’s what we are going to see in this article.
And I’ll start with an overview of the different solutions. For each of them, I will describe their features. I will also talk about their respective field of applications. Finally, I’ll tell you what ready-to-use solutions you can actually buy for your projects.
If you are a frequent reader of this blog, you know for sure that I am using WiFi for several home automation projects. What I like about WiFi solutions is that you can directly interface them with your computer. It means that you don’t need any additional module or antenna like with XBee. Therefore, you can easily interface sensors and control them remotely, for example by building a simple web server running on your computer. This is for example what was done in the article about a WiFi-connected weather station. The server-side part is usually written in standard languages like HTML & PHP. This means it is then easy to transfer your code to a smaller device like the Raspberry Pi.
The other cool thing about WiFi is that you can connect a project directly to a web service like Xively, thus connecting your project to the Internet of Things. From there, you can monitor the temperature in your home easily, without having your computer acting as a central server: it’s all online. If you want to have more details on the actual implementation of such system, check out our Arduino & Xively tutorial using the CC3000 WiFi chip.
To actually use WiFi for a platform like Arduino, you have several solutions. You can use one of the ready-to-use Arduino solutions, like the Arduino WiFi shield. You can also use the Arduino Yun which is an all-in-one solution to connect your projects to the web. It even comes with a small Linux machine onboard.
I would personally recommend using a board based on the CC3000 WiFi chip because this small chip is quite easy to use & you will find a lot of tutorials using it on the web. You can of course build your own boards using this chip, but you can also find already assembled solutions like the Adafruit CC3000 breakout board.
I would therefore recommend using WiFi for applications where you plan to use lots of different wireless modules connected to a central server. But only in the case where power consumption is not the main issue. I also recommend it when you plan to send the data coming from your sensors to a web platform like Xively. Also make sure to consider the price factor. Even if the cost of WiFi-based solutions has gone down during the past years, these modules are still expensive compared to other wireless solutions.
315-434 MHz radios
That’s probably one of the cheapest wireless solution you can pick (you can find some transmitter/receiver pairs at around $4). These radio modules work around the 300-400 MHz frequency range, and are usually only transmitting data in one direction. They are quite sensible to noise as well, so you will need some kind of error-correction functions in your code.
On this blog you can find one example of a project using such radios to build a wireless motion sensor with Arduino. There are lots of brands selling transmitter/receiver pairs using this kind of technology, you can find one by following this link.
So if you want to build a simple, low power & cheap project, you can definitely use this kind of technology. However because this system is so simple it won’t work well if you try to interface several sensors using these radios.
ZigBee & XBee
The ZigBee protocol is also very popular in the home automation & Arduino space. ZigBee devices are low-power, and can transmit data over long distances using other devices as relays. These kind of configuration is called a mesh network. They usually operate in the 2.4 GHz frequency range. Compared to the cheap radios solution, they are much easier to use and provide a reliable communication between the different modules.
I mentioned XBee in the title because that’s the most common brand of radios that use ZigBee. These XBees are low-power modules that are easy to use with Arduino. Several manufacturers designed shields & interface boards so you can use these modules with Arduino. However, price can be an issue here, as each of these modules are usually in the $20 price range.
There are lots of different XBee modules, so if you want a complete in-depth review of the different XBees I recommend this excellent guide from SparkFun. For home automation applications, I used these simple XBee modules with an integrated antenna. To interface them with an Arduino board, you can use the XBee shield for Arduino by SparkFun, and the XBee explorer board to connect an XBee module to your computer. You can also buy a full XBee development kit that includes all these components. You can also read the book Building Wireless Sensor Networks: with ZigBee, XBee, Arduino, and Processing which is an excellent reference on the topic.
ZigBee and XBee modules are so popular because it allows you to build a complete home automation system with low-power modules. As a result, these modules can be powered by batteries and last for years! However, cost can be an issue as XBee boards are quite pricey.
Still on the 2.4 GHz radio solutions, I needed to mention the nRF24L01+ chip from Nordic. It is a low-power transceiver that can be interfaced with Arduino, it’s cheap (about $8 for a pair), and can transmit data reliably at up to 100 meters. I haven’t tried these modules myself yet, but it seems like an ideal solution for home automation purposes. If you tried these modules yourself, please share in the comments section !
You can find a pair of these modules for $8 on Amazon.
Finally, I wanted to mention Bluetooth even if it’s not (yet !) used a lot for home automation applications. Bluetooth evolved a lot during the past years. It’s last evolution to date (Bluetooth 4.0 Low Energy) is low-power and has a huge bandwidth. It can cover your whole house wirelessly without problems. Like WiFi, one advantage of Bluetooth is that it doesn’t require to have external components to connect to your computer. Indeed, all modern laptops are equipped with Bluetooth.
Some of them like the Adafruit Bluefruit EZ-Link module also interface with the serial pins of your Arduino board. This means that you can directly see your Bluetooth module acting as a serial port on your Arduino IDE. And this allows you to upload a new sketch to your Arduino board wirelessly ! Let’s say you have many of these modules in your home. If you decide to update the sketch running on your Arduinos, you can do that without having to plug any cable!
To actually use Bluetooth in your projects, you have several options to choose from. I recommend using the Adafruit EZ-Link board because I know it works as I am using it for my projects, and there is a nice documentation about it on their website. There were also some Kickstarter projects like the BLEduino board that is an integrated Arduino + Bluetooth board.
So, which solution should I choose for my project?
We just saw it: there isn’t one-fits-all solution to make your home automation project communicate wirelessly. To summarise, you should use WiFi if you plan to connect your project directly to the web at some point, or if power consumption is not an issue in your project. If you’re concerned about power, you can use cheap radios for simple projects, and solutions like Xbee for larger home automation projects.
Finally, I definitely think we’ll see more and more projects using Bluetooth or the nRF24L01+ chip in the upcoming months, and of course also on this website! What about you ? Are you considering building a connected home automation project using open-source hardware ? Or you already have one based on the wireless technologies described in this article ? Please share in the comments section below !