Hardware

Specifications

The XBee-802.15.4 modules can use an optional firmware (DigiMesh) so that they are able to create mesh networks instead of the usual point to point topology. This firmware has been developed by Digi to allow modules to sleep, synchronize themselves and work on equal terms, avoiding the use of router nodes or coordinators that have to be permanently powered on. Characteristics of the implemented protocol:

  • Self Healing: any node can join or leave the network at any moment.

  • All nodes are equal: There are no father-son relationships.

  • Silent protocol: reduced routing heading due to using a reactive protocol similar to AODV (Ad hoc On-Demand Vector Routing).

  • Route discovery: instead of keeping a route map, routes are discovered when they are needed.

  • Selective ACKs: only the recipient responds to route messages.

  • Reliability: the use of ACKs ensures data transmission reliability.

  • Sleep Modes: low energy consumption modes with synchronization to wake at the same time.

The classic topology of this type of network is mesh, as the nodes can establish point to point connections with brother nodes through the use of parameters such as the MAC or network address or by making multi-jump connections.

To determine your range, perform a range test under your operating conditions*

The XBee-PRO DigiMesh modules use the same hardware as the XBee-PRO 802.15.4. So it is possible to use one protocol or another by changing the firmware. The user must keep in mind that depending on the regulations applied the transmission power should be set to the correct value. For instance, ETSI defines a maximum level of 10 dBm transmit power output.

The process of changing the firmware can be done with a Gateway and Digi's X-CTU program. See our X-CTU tutorials:

https://development.libelium.com/xbee-firmware-from-802-15-4-to-digimesh-tutorial/

The XBee DigiMesh modules are based on the standard IEEE 802.15.4 that supports functionalities enabling mesh topology use.

How to connect the module

This module can be connected to both SOCKET0 and SOCKET1 placed in the Waspmote board.

In order to connect the module to the SOCKET1, the user must use the Expansion Radio Board.

Expansion Radio Board (XBee DigiMesh)

The Expansion Board allows to connect 2 communication modules at the same time in the Waspmote sensor platform. This means a lot of different combinations are possible using any of the wireless radios available for Waspmote: 802.15.4, ZigBee 3, DigiMesh, 868 MHz, 900 MHz, LoRa, WiFi, NB-IoT / Cat-M, 4G, Sigfox, LoRaWAN, Bluetooth Pro, Bluetooth Low Energy and RFID/NFC. Besides, the following Industrial Protocols modules are available: RS-485/Modbus and CAN Bus.

Some possible combinations are:

  • LoRaWAN - 4G

  • 802.15.4 - Sigfox

  • 868 MHz - RS-485

  • NB-IoT / Cat-M - WiFi

  • DigiMesh - 4G

  • NB-IoT / Cat-M - RFID/NFC

  • WiFi - 4G

  • CAN Bus - Bluetooth

  • etc

NB-IoT / Cat-M and 4G modules do not need the Expansion Board to be connected to Waspmote. They can be plugged directly in the socket1.

In the next photo you can see the sockets available along with the UART assigned. On one hand, SOCKET0 allows to plug any kind of radio module through the UART0. On the other hand, SOCKET1 permits to connect a radio module through the UART1.

The API provides a function called ON() in order to switch the XBee module on. This function supports a parameter which permits to select the SOCKET. It is possible to choose between SOCKET0 and SOCKET1.

Selecting SOCKET0 (both are valid):

xbeeDM.ON();
xbeeDM.ON(SOCKET0);

Selecting SOCKET1:

xbeeDM.ON(SOCKET1);

In the case 2 XBee-DigiMesh modules are needed (each one in each socket), it will be necessary to create a new object from WaspXBeeDM class. By default, there is already an object called xbeeDM normally used for regular SOCKET0.

In order to create a new object it is necessary to put the following declaration in your Waspmote code:

WaspXBeeDM xbeeDM_2 = WaspXBeeDM();

Finally, it is necessary to initialize both modules. For example, xbeeDM is initialized in SOCKET0 and xbeeDM_2 in SOCKET1 as follows:

xbeeDM.ON(SOCKET0);
xbeeDM_2.ON(SOCKET1);

The rest of the functions are used the same way as they are used with older API versions. In order to understand them we recommend to read this guide.

  • Avoid to use DIGITAL7 pin when working with Expansion Board. This pin is used for setting the XBee into sleep.

  • Avoid to use DIGITAL6 pin when working with Expansion Board. This pin is used as power supply for the Expansion Board.

  • Incompatibility with Sensor Boards:

    • Agriculture PRO v30: Incompatible with Watermark and solar radiation sensors

    • Events v30: Incompatible with interruption shift register

    • Smart Water v30: DIGITAL7 incompatible with conductivity sensor

    • Smart Water Ions v30: Incompatible with ADC conversion (sensors cannot be read if the Expansion Board is in use)

    • Gases PRO v30: Incompatible with SOCKET_2 and SOCKET_3

    • Cities PRO v30: Incompatible with SOCKET_3. I2C bus can be used. No gas sensor can be used.

Last updated