xbee2  2.1.0.0
Main Page

XBEE 2 click

Xbee 2 Click is a compact add-on board providing wireless end-point connectivity to other devices. This board features the XB3-24Z8UM, a Digi XBee® 3 transceiver module offering a fully interoperable ecosystem covering all vertical markets from Digi International. Building on industry-leading technology, the pre-certified Digi XBee® 3 module delivers the flexibility to switch between multiple frequencies and wireless protocols as needed (Zigbee, 802.15.4, DigiMesh® and BLE). It can be easily configured and controlled from a simple, central platform and comes with built-in Digi TrustFence® security, identity, and data privacy features which use more than 175 controls to protect against new and evolving cyber threats.

click Product page


Click library

  • Author : Stefan Filipovic
  • Date : Aug 2022.
  • Type : UART type

Software Support

We provide a library for the XBEE 2 Click as well as a demo application (example), developed using MikroElektronika compilers. The demo can run on all the main MikroElektronika development boards.

Package can be downloaded/installed directly from NECTO Studio Package Manager(recommended way), downloaded from our LibStock™ or found on Mikroe github account.

Library Description

This library contains API for XBEE 2 Click driver.

Standard key functions :

Example key functions :

Example Description

This example demonstrates the use of an XBEE 2 click board by showing the communication between the two click boards configured in transparent mode.

The demo application is composed of two sections :

Application Init

Initializes the driver and configures the click board by performing a factory reset, and setting the device name, destination address, api mode to transparent,

and a device role to join or form network depending on the application mode.

void application_init ( void )
{
log_cfg_t log_cfg;
xbee2_cfg_t xbee2_cfg;
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// Click initialization.
xbee2_cfg_setup( &xbee2_cfg );
XBEE2_MAP_MIKROBUS( xbee2_cfg, MIKROBUS_1 );
if ( UART_ERROR == xbee2_init( &xbee2, &xbee2_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
xbee2_hw_reset ( &xbee2 );
xbee2_process( );
xbee2_clear_app_buf( );
log_printf( &logger, " - Enter command mode -\r\n" );
Delay_ms ( 100 );
xbee2_display_rsp ( 1000 );
log_printf( &logger, " - Factory Reset -\r\n" );
xbee2_factory_reset ( &xbee2 );
Delay_ms ( 100 );
xbee2_display_rsp ( 1000 );
log_printf( &logger, " - Get serial number -\r\n" );
Delay_ms ( 100 );
xbee2_display_rsp ( 1000 );
log_printf( &logger, " - Set Device Name -\r\n" );
Delay_ms ( 100 );
xbee2_display_rsp ( 1000 );
log_printf( &logger, " - Set Destination Address -\r\n" );
Delay_ms ( 100 );
xbee2_display_rsp ( 1000 );
log_printf( &logger, " - Set API mode -\r\n" );
Delay_ms ( 100 );
xbee2_display_rsp ( 1000 );
log_printf( &logger, " - Set Device Role -\r\n" );
#ifdef DEMO_APP_TRANSMITTER
#else
#endif
Delay_ms ( 100 );
xbee2_display_rsp ( 1000 );
log_printf( &logger, " - Apply changes -\r\n" );
xbee2_apply_changes ( &xbee2 );
Delay_ms ( 100 );
xbee2_display_rsp ( 1000 );
log_printf( &logger, " - Save changes -\r\n" );
xbee2_save_changes ( &xbee2 );
Delay_ms ( 100 );
xbee2_display_rsp ( 1000 );
log_printf( &logger, " - Exit command mode -\r\n" );
Delay_ms ( 100 );
xbee2_display_rsp ( 1000 );
app_buf_len = 0;
app_buf_cnt = 0;
#ifdef DEMO_APP_TRANSMITTER
log_printf( &logger, " Application Mode: Transmitter\r\n" );
#else
log_printf( &logger, " Application Mode: Receiver\r\n" );
#endif
log_info( &logger, " Application Task " );
}

Application Task

Depending on the selected application mode, it reads all the received data or sends the desired message every 3 seconds.

void application_task ( void )
{
#ifdef DEMO_APP_TRANSMITTER
log_printf( &logger, "%s", ( char * ) DEMO_TEXT_MESSAGE );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
#else
xbee2_process( );
if ( app_buf_len > 0 )
{
log_printf( &logger, "%s", app_buf );
xbee2_clear_app_buf( );
}
#endif
}

The full application code, and ready to use projects can be installed directly from NECTO Studio Package Manager(recommended way), downloaded from our LibStock™ or found on Mikroe github account.

Other Mikroe Libraries used in the example:

  • MikroSDK.Board
  • MikroSDK.Log
  • Click.XBEE2

Additional notes and informations

Depending on the development board you are using, you may need USB UART click, USB UART 2 Click or RS232 Click to connect to your PC, for development systems with no UART to USB interface available on the board. UART terminal is available in all MikroElektronika compilers.


xbee2_hw_reset
void xbee2_hw_reset(xbee2_t *ctx)
XBEE 2 hw reset function.
xbee2_set_device_role
err_t xbee2_set_device_role(xbee2_t *ctx, uint8_t dev_role)
XBEE 2 set device role function.
xbee2_enter_command_mode
err_t xbee2_enter_command_mode(xbee2_t *ctx)
XBEE 2 enter command mode function.
XBEE2_MODE_TRANSPARENT
#define XBEE2_MODE_TRANSPARENT
XBEE 2 mode settings.
Definition: xbee2.h:92
XBEE2_MAP_MIKROBUS
#define XBEE2_MAP_MIKROBUS(cfg, mikrobus)
MikroBUS pin mapping.
Definition: xbee2.h:140
xbee2_exit_command_mode
err_t xbee2_exit_command_mode(xbee2_t *ctx)
XBEE 2 exit command mode function.
DESTINATION_ADDRESS_LOW
#define DESTINATION_ADDRESS_LOW
Definition: main.c:39
xbee2_cfg_t
XBEE 2 Click configuration object.
Definition: xbee2.h:181
DEVICE_NAME
#define DEVICE_NAME
Definition: main.c:34
application_task
void application_task(void)
Definition: main.c:184
xbee2_save_changes
err_t xbee2_save_changes(xbee2_t *ctx)
XBEE 2 save changes function.
xbee2_init
err_t xbee2_init(xbee2_t *ctx, xbee2_cfg_t *cfg)
XBEE 2 initialization function.
xbee2_apply_changes
err_t xbee2_apply_changes(xbee2_t *ctx)
XBEE 2 apply changes function.
DESTINATION_ADDRESS_HIGH
#define DESTINATION_ADDRESS_HIGH
Definition: main.c:38
XBEE2_DEVICE_ROLE_JOIN_NETWORK
#define XBEE2_DEVICE_ROLE_JOIN_NETWORK
XBEE 2 device role settings.
Definition: xbee2.h:100
xbee2_cfg_setup
void xbee2_cfg_setup(xbee2_cfg_t *cfg)
XBEE 2 configuration object setup function.
xbee2_get_serial_number
err_t xbee2_get_serial_number(xbee2_t *ctx)
XBEE 2 get serial number function.
xbee2_t
XBEE 2 Click context object.
Definition: xbee2.h:157
xbee2_set_api_mode
err_t xbee2_set_api_mode(xbee2_t *ctx, uint8_t api_mode)
XBEE 2 set api mode function.
application_init
void application_init(void)
Definition: main.c:87
xbee2_set_device_name
err_t xbee2_set_device_name(xbee2_t *ctx, char *dev_name)
XBEE 2 set device name function.
DEMO_TEXT_MESSAGE
#define DEMO_TEXT_MESSAGE
Definition: main.c:45
xbee2_set_destination_address
err_t xbee2_set_destination_address(xbee2_t *ctx, char *dest_addr_high, char *dest_addr_low)
XBEE 2 set destination address function.
XBEE2_DEVICE_ROLE_FORM_NETWORK
#define XBEE2_DEVICE_ROLE_FORM_NETWORK
Definition: xbee2.h:101
xbee2_generic_write
err_t xbee2_generic_write(xbee2_t *ctx, char *data_in, uint16_t len)
XBEE 2 data writing function.
xbee2_factory_reset
err_t xbee2_factory_reset(xbee2_t *ctx)
XBEE 2 factory reset function.