Merging Arduino and Xbee
There are many open source projects out there. Many of you are familiar with the concept of open source software, where the source code is made available. Not so common is the idea of open-source hardware. What is the idea here? You get the full details of the hardware and firmware as if it were just the code of an open source software project. It is about extending the openness of a project to the hardware and firmware levels.
Arduino is one of these open-source hardware projects. It is a family of small printed circuit boards powered by Atmel micro-controllers that can be programed. You develop the code for these micro-controllers using an Integrated Development Environment (IDE) also provided on the project's web-page, available for Windows, Linux or OSX. The IDE is based on Processing IDE I covered a while ago and the programming language is based on Wiring language. The goal is to make user life easier as the development is aimed to artists more than to engineers.
The micro-controller is first programmed with a boot loader so the user code can later downloaded to the board without the need of an external programmer. The USB version can even be powered from the PC you are developing with.
You can but the hardware (or just the PCB if you prefer) from a number of providers online, even you can find deals on eBay for around $20. You can also but pre-programmed micro-controllers containing the boot-loader.
XBee is a completely different beast: It is a commercial piece of hardware, intended for OEM use. XBee module implements the ZigBee(r) proprietary wireless standard. ZigBee operates on the 2.4Ghz ISM band, the same as Wi-Fi, but ZigBee is intended for low-power, low speed, short-range wireless communication. ZigBee uses IEEE 802.15.4 standard for its MAC layer. Xbee modules are cheap too. List price is $19 ea.
A Spanish company called Libelium put Arduino and Xbee together to offer a family of wireless sensor networks with an "open" twist. I recently bought a set of sensors and gateways to play with it to use it for an upcoming lab exercise in one of our Master's degrees. Till now I am just learning the role of each component and how can you change its behavior.