XBee 802.15.4 Addressing
The 802.15.4 RF protocol uses addressing to distinguish one radio from the next and prevents duplicate data packets. It is very important that each XBee module have a unique source address (MY) to prevent non-duplicate messages from being ignored as duplicates.
Broadcast vs. Unicast
The 802.15.4 specification has two basic forms of addressing between the modules, Broadcast and Unicast.Broadcast:
A Broadcast message is a message that will be received by all modules on any given PAN (by default Digi uses the PAN ID=0x3332). In 802.15.4 a Broadcast message is sent only once and not repeated, so there is no guarantee of any given node receiving the message. In order to send a Broadcast message set the DH=0x0 and the DL=0xFFFF. With these settings all XBee modules within range of the broadcasting node will receive the message.Unicast:
A Unicast message is a more reliable method for delivering data. A Unicast message is sent from one module to any other module based on the module's addressing. If the message is properly received the receiving radio will send back an acknowledgment or ACK. If the transmitting module doesn't receive an ACK it will attempt MAC level retires (3 MAC level retires for every transmission for a total of 4 attempts) until it receives an ACK. This greatly increases the probability of getting the data through to the destination.
16 Bit Addressing vs. 64 Bit Addressing
There are two major methods for sending a Unicast message, using either 16 bit addressing or 64 bit addressing. One or both methods can be used to communicate to an XBee module, however, 16 bit addressing can be disabled while 64 bit addressing cannot.16 Bit Addressing:
The first method for Unicast addressing to be discussed is 16 bit addressing. This form of addressing is more convenient for smaller networks or networks with a fixed number of radios.
16 bit addressing uses a 16 bit hex number (hence the name) to determine each radios source and destination address. When setting up a network each of the XBee radios must have a unique source address. The MY parameter by default is set at zero so when using 16 bit addressing it will have to be changed to a unique number. Since the address is 16 bits in length there are 65536 unique addresses.
In order to get data transfer from one module to another, the destination address (DL in this case) of the transmitting radio must match the source address (MY) of the receiving radio. The opposite does not need to be true if the communication is one-way. When using 16 bit addressing the DH parameter must be left at its default DH=0x0.64 Bit Addressing:
The next method of Unicast addressing is 64 bit addressing, the 64 bit addresses are IEEE MAC addresses. 64 bit addressing is typically better for very large networks or open-ended networks where modules may be added in the future. The basic concept of 64 bit addressing is the same as with 16 bit except you don't have to set the MY source address. The 64 bit source address is assigned by the IEEE to Digi and is guaranteed to be unique (there are 18.45e18 unique address with 64 bits).
The value of the source address can be determined by reading the SH & SL values on any module. In order to send a message to a particular module set the DH & DL of the transmitter to the SH & SL of the receiver (where DH=SH & DL=SL). Just like 16 bit addressing you don't need to set the destination addresses of the receiver if you only need one-way communication.
One may wish to disable the 16 bit addressing, and force the use of the 64 bit address. To disable, set MY=0xFFFF or MY=0xFFFE. There is no method for disabling 64 bit addressing on the XBee.