A simple overview to help choose your hardware for “Internet of Things” solutions

Posted on June 25, 2011


What is this post about?

  1. Starting point for tinkerers – When you are relatively new in the field of building smart stuff with electronics, it can hard to know what to choose and where to start. This post is intended to help you get started
  2. Finding the right solutions based on the right questions – It starts with “What do you want?” or “What do you need?”. As one project is different from another, and some solutions are more suited for specific problems than others, the outcome might differ.

A chart to help you choose your hardware: based on want/need

Start from the top. [Editors note: “Polulu Wixel” should be “Pololu Wixel”]

Click to enlarge

Brief explanation on how to read the chart

There are two points of entry to this chart:

  1. Wireless – Leading you to the options you have to find and build wireless solutions.
  2. Independent – Leading you to the options to build modules that can run independently form anything else, due to the use of micro controllers, Android devices or the use of a Netbook (which is relatively low on cost and energy use and offers you the most from capabilities to storage and connectivity).

Follow the arrows and check the comments like: “Arduino -> But wireless”  that represent branches in the options you have. Each choice will lead you closer to the solution that might work best for what you want or need.

Other factors:

  1. Smartness – An Arduino might already offer you some localized smartness in how it deals with data coming in to its ports. But if you need more smartness and more processing capacity, Android and a simple Netbook are ways to step up the game
  2. Compactness – Combining Arduino with XBee will take up some space. But if space (and dimensions) is an issue, you might want to move to very compact solutions like the Poluxu Wixel.
  3. Price – Combining Arduino with WiFly or XBee will cost you 50 USD and more. When your solution needs to be cost effective, you might want to use (again) the Pololu Wixels.


Further below you will find a summary of the various options.

Why Bluetooth is excluded

You will not find the bluetooth option in this overview for the following reasons:

  1. Cost – Bluetooth is not cost-effective when you build your own stuff. Compared to XBee and the Polulu Wixel, you get little value for money: starting with 40 USD for a bluetooth modem only.
  2. Relevance – Short and simple: it is old and underdeveloped for tinkerer use. If you want to do wireless IO stuff, XBee is a much better starting point.

What else is missing?

My overview is not complete. It takes the hardware most popular in my circles or the ones known to me.

These are the reasons for doing this:

  1. Keeping it simple – If I try to cramp each alternative in, the schematic will become over crowded without giving you really more info than it does now. Simply replace “Arduino” or “XBee” with another name if you look for different solutions.
  2. My own limited knowledge – This overview is my personal transcript of what I discover and learn.
  3. Budget – There might be more solutions in higher price ranges, but due to their price and the availability of cheaper alternatives with the same or more options I discarded them.
For each solution given in the overview below, there might be one or more alternatives. Here is an overview of what I can find.
  1. Arduino alternatives – Arduino is a programmable and re-programmable micro controller. Alternatives with a similar price range up to 60 USD are:
    1.  Fez Domino – A 59 USD  microcontroller programmable with a sub-set of .NET Micro Framework. Quote: “This allows you to more efficiently write code using Microsoft’s free Visual C# express and the C# programming language.”
    2. NetDuino – Similar to Fez Domino but available from 34 USD (if you want USB embedded). It comes with 14 digital and 6 analog ports. The Maple below might be more interesting as it is close to the same price, but with double the amount of ports.
    3. Maple – An 45 USD ARM based micro controller board with the same layout as Arduino. With 128 KB Flash memory and 72 MHz clock speed it is twice the price (44 USD)  of an Arduino board and more powerful. It has 39 digital and 16 analog ports.
    4. ARMite – An ARM7 based 29,95 USD micro controller with the same footprint (see a pattern here?) as the Arduino Pro. Running at 60 MHz and 32 KB Flash memory. It has 23 digital and 8 analog ports.
  2. WiFly alternatives – WiFly combines WiFi and IO. Unknown for now. I googled, but could not find alternative solutions.
  3. XBee alternatives – You can find many different XBee modules as the protocol is “open”. Except for the Pololu Wixel I did not do research on this yet.
  4. Pololu Wixel alternatives – Unknown.

Listing the options

Where the chart might give you a starting point, it does not explain all elements or limitaitons involved. So I wrote a short summary of all possibilities with a brief explanation. It assumes you are already familiar with the basics on Arduino, XBee, microcontrollers and IO stuff.

Basic IO for your computer

For basic IO you can use the Arduino, the XBee or the Polulu Wixel.

  1. Arduino – There are sketches available for Arduino which just plug all read values through to the USB.
  2. XBee – The XBee module – by default – is already streaming the data to USB and requires no extra programming.
  3. Pololu Wixel – The Pololu Wixel is similar to the Arduino. You need to program it to pass readings from the ports directly to USB.

Wireless IO

  1. Arduino – If you use Arduino, you need to extend it with a XBee or Bluetooth module and a breakout board to – at least – step down the power levels to that of the XBee. (The XBee runs on 2.5 to 3.5 Volts and will die when attached to more).
    1. Requirements – To make your Arduino wireless, you need about 30 USD more:
      1. A Bluetooth or XBee module (around 23 USD each)
      2. A DC/DC power converter to step down the power provided by the Arduino module to 3.5 Volts (around 6 USD)
  2. Pololu Wixel – The Pololu Wixel has its own radio module.
    1. Requirements – None. The Pololu Wixel has a built in radio/transmitter
  3. XBee – The XBee module is wireless by default.
    1. Requirements – If you want to read the data from your XBee modules you need:
      1. For Apple/PC/Netbook – A USB to Serial module for the XBee (around 25 USD)
      2. For Android devices – An IO board like the IOIO (around 45 USD)

Smart, Wireless IO

  1. Arduino and XBee – Combining the power of local computing via the Arduino to the power of wireless communication. Using the XBee, requests, data and instructions can be sent to other devices and received by the Arduino module. The cost of this solution is, however, twice that of the Polulu Wixel
  2. Pololu Wixel – Combines a micro controller with a radio-module. It can therefore send data to other devices and run local processes like the Arduino. With a cost of 20 USD per module it is more than half the price of the combo Arduino/XBee.
  3. Android + IOIO – “Android” can be any device, from Smartphones to tablets and Nettops. IOIO is an equivalent to the simple IO boards you can buy for PC’s, with the difference that it works for Android. The combo of Android and IOIO can use WiFi to communicate to the world.
  4. Android + IOIO + XBee/Pololu Wixel – When you want your Android device to communicate with and through XBee or Pololu Wixels, you can connect these to your IOIO board and read the data from the TX/RX ports of these devices. The cheapest Android devices cost around 99 euro and include a 600 to 800 MHz ARM Cortex A8 processor.
  5. Netbook + XBee/Pololu Wixel – Using a Netbook and a USB connection to either a XBee and/or Pololu Wixel, you can read the streams coming in and send data through these devices to all involved. A netbook adds 200 euro to your equation. It also allows you to run a lot of extra software and store data in databases or on the harddrive.

On the low-end side, where a micro controller is enough for a specific (part of your) solution, the Polulu Wixel is the most cost-effective as for 20 USD per module, you have it all.

Polulu Wixels do not communicate with XBee.

IO over WiFi

In some cases you might want to use WiFi to do wireless IO stuff to individual modules. One big and obvious benefit of WiFi is that a lot of systems have it built in by default.

The big disadvantage of WiFi is the additional cost per module. Where 20 euro is sufficient to run wireless modules like XBees or wireless modules with embedded micro controllers like the Polulu Wixels, WiFi solutions will start at 85 USD per module and only move up in price.

  1. WiFlyThe WiFly is a simple HTTP-server combined with an IO chip. You can set it to send all data to a specific IP number and you can access it directly from any computer using its IP address to request data and send instructions. One module cost around 85 USD with breakout board (which is advisable if you want to solder stuff to it)
  2. Arduino and WiFly – Taken the cost of the combination, moving toward 100 USD, and the limitations of Arduino (it will only do WiFi, has no local storage and no screen) you might move up using Android and IOIO, or drop the Arduino WiFi solution as a whole.
  3. Android + IOIO – Android devices come standard with WiFi and are becoming more and more available with low end tablets in price ranges from 99 to 150 euro.  The biggest benefit of Android is that it runs Java and that with Java you can build almost anything including small scale Servers. You will start at 150 euro (99 euro for an Android tablet and 45 USD for a IOIO board), but your solution with Android and IOIO is basically running a simple computer with a lot of additional option.
  4. NetBook + XBee/Pololu Wixel – Although you might not be using the radio-options at first, the price of a XBee or Pololu Wixel is good enough to serve as a simple IO board. The Netbook can send and receive data over WiFi containing readings and instructions to set the values digital ports and change voltages on the analog ports. Via the XBee and Pololu Wixel

WiFi / Wireless hybrids

From price-perspective I will only mention the solutions that make most sense.

  1. Android + IOIO + Xbee/Pololu Wixel – The Android device works as WiFi station. The XBee / Pololu Wixel deal with all nodes in the network of wireless sensors. Total cost per Android + IOIO + XBee will be around 170 euro.
  2. NetBook + Xbee/Polulu Wixel – The netbook works as WiFi station. The XBee / Pololu Wixel deal with all nodes in the network of wireless sensors. The cost for a Netbook + Pololu can be around 220 euro. XBee will add around 25 euro for the XBee USB module, moving the price up to 250 euro. (Import costs included)

Independently running solutions

In cases where you have a lot of local stuff going on, you want independent solutions which operate without the need of constant data streams.

One simple case are solutions to change the color of the light, or dealing with temperature.

  1. Changing the color of light – In most cases light that can change color is created with three light sources: Red, Green and Blue. Mixed they can create
    (almost) all colors in the humanly visible spectrum. The intensity of each color defines what shade you create. One way to define the intensity of the color is by regulating the amount of current runs through it. Another is via pulse modulation: defining the period of time the color is switched “on” and “off”. For LED light, pulse modulation is the most common way.
    1. Using dumb modules: If you have a dumb module, like an XBee, that module can only send and receive data.
    2. Issue with dumb modules: The pulse-modulation has to be done elsewhere, leading to a constant stream of data, just to control the intensity of light.
    3. Using smart modules: A smart module can be an Arduino or a Pololu Wixel. Anything with a micro controller.
    4. Benefit of smart modules: You can give the smart module one instruction: “Change color of light to <value>”. The micro controller will then take care of dealing with the exact requirements to change that light. It can change the light directly, but also can do it more organically, using small steps.
  2. Dealing with temperature – The basics are very the same as with changing the color of light. The micro controller can take care of specific steps to reduce data transfer and only limit data transfer to very specific messages and instructions.

Independent solutions and wirelessness

I already covered this in the parts above.
For repetitions sake, independent solutions can include:
  1. Arduino + WiFly / XBee – Making the Arduino accessable via wireless systems
  2. Android + IOIO + XBee/Pololu Wixels – Making the Android device capable of IO tasks and wireless via the Pololu Wixel. The added bonus is that you can:
    1. Access and use WiFi
    2. Create more complete solutions including Servers and data loggers
  3. NetBook + XBee/Polulu Wixels – Making the Netbook available for other devices with either XBee or Pololu Wixels. The added bonus is similar to Android.

Next steps

I will add articles on specific implementations of these combinations of elements in later posts.
Posted in: Uncategorized