Description:
The Xbee shield allows an Arduino board to communicate wirelessly using Zigbee. It is based on the Xbee module from MaxStream. The module can communicate up to 100 feet indoors or 300 feet outdoors (with line-of-sight). It can be used as a serial/USB replacement or you can put it into a command mode and configure it for a variety of broadcast and mesh networking options. The shields break out each of the Xbee's pins to a through-hole solder pad. It also provides female pin headers for use of digital pins 2 to 7 and the analog inputs, which are covered by the shield (digital pins 8 to 13 are not obstructed by the shield, so you can use the headers on the board itself). The Xbee shield was created in collaboration with Libelium, who developed it for use in their SquidBee motes (used for creating sensor networks).
Networking:
The Arduino XBee shield can be used with different XBee modules. The instructions below are for the XBee 802.15.4 modules (sometimes called "Series 1" to distinguish them from the Series 2 modules, although "Series 1" doesn't appear in the official name or product description).
Addressing:
There are multiple parameters that need to be configured correctly for two modules to talk to each other (although with the default settings, all modules should be able to talk to each other). They need to be on the same network, as set by the ID parameter (see "Configuration" below for more details on the parameters). The modules need to be on the same channel, as set by the CH parameter. Finally, a module's destination address (DH and DL parameters) determine which modules on its network and channel will receive the data it transmits. This can happen in a few ways:
- If a module's DH is 0 and its DL is less than 0xFFFF (i.e. 16 bits), data transmitted by that module will be received by any module whose 16-bit address MY parameter equals DL.
- If DH is 0 and DL equals 0xFFFF, the module's transmissions will be received by all modules.
- If DH is non-zero or DL is greater than 0xFFFF, the transmission will only be received by the module whose serial number equals the transmitting module's destination address (i.e. whose SH equals the transmitting module's Dhand whose SL equals its DL).
Again, this address matching will only happen between modules on the same network and channel. If two modules are on different networks or channels, they can't communicate regardless of their addresses.
Configuration:
Here are some of the more useful parameters for configuring your Xbee module. For step-by-step instructions on reading and writing them, see the guide to the Xbee shield. Make sure to prepend to the parameter name when sending a command to the module (e.g. to read the parameterID
, you should send the command ATID
).
Command | Description | Valid Values | Default Value |
ID |
The network ID of the Xbee module. | 0 - 0xFFFF | 3332 |
CH |
The channel of the Xbee module. | 0x0B - 0x1A | 0X0C |
SH and SL
|
The serial number of the Xbee module (SH gives the high 32 bits, SL the low 32 bits). Read-only. |
0 - 0xFFFFFFFF (for both SH and SL ) |
different for each module |
MY |
The 16-bit address of the module. | 0 - 0xFFFF | 0 |
DH and DL
|
The destination address for wireless communication (DH is the high 32 bits, DL the low 32). |
0 - 0xFFFFFFFF (for both DH and DL ) |
0 (for both DH and DL ) |
BD |
The baud rate used for serial communication with the Arduino board or computer. | 0 (1200 bps) 1 (2400 bps) 2 (4800 bps) 3 (9600 bps) 4 (19200 bps) 5 (38400 bps) 6 (57600 bps) 7 (115200 bps) |
3 (9600 baud) |
Note: although the valid and default values in the table above are written with a prefix of "0x" (to indicate that they are hexadecimal numbers), the module will not include the "0x" when reporting the value of a parameter, and you should omit it when setting values.
Here are a couple more useful commands for configuring the Xbee module (you'll need to prepend to these too).
Command | Description |
RE |
Restore factory default settings (note that like parameter changes, this is not permanent unless followed by the WR command). |
WR |
Write newly configured parameter values to non-volatile (long-term) storage. Otherwise, they will only last until the module loses power. |
CN |
Exit command mode now. (If you don't send any commands to the module for a few seconds, command mode will timeout and exit even without a CN command.) |
Package Included:
1 x Bluetooth XBee Shield V03 Module Wireless Control