xbee 2.1.0.0
Main Page

XBEE click

‍XBee Click is a compact add-on board providing wireless connectivity to end-point devices in ZigBee mesh networks. This board features the XB24CZ7PIS-004, a low-power Digi XBee® RF module delivering superior performance and interference immunity from Digi International. With its ultra-sensitive receiver, the XB24CZ7PIS-004 operates in the 2.4GHz ISM band (indoor/urban range of 60m and outdoor of 1200m), allowing the formation of robust mesh network optimized for use in the US, Canada, Europe, Australia, and Japan (worldwide acceptance). Alongside firmware updates, it supports commissioning and LED behaviors to aid device deployment and commissioning.

click Product page


Click library

  • Author : Stefan Filipovic
  • Date : Feb 2024.
  • Type : UART type

Software Support

We provide a library for the XBEE 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 Click driver.

Standard key functions :

  • xbee_cfg_setup Config Object Initialization function.
    void xbee_cfg_setup ( xbee_cfg_t *cfg );
    void xbee_cfg_setup(xbee_cfg_t *cfg)
    XBEE configuration object setup function.
    XBEE Click configuration object.
    Definition xbee.h:173
  • xbee_init Initialization function.
    err_t xbee_init ( xbee_t *ctx, xbee_cfg_t *cfg );
    err_t xbee_init(xbee_t *ctx, xbee_cfg_t *cfg)
    XBEE initialization function.
    XBEE Click context object.
    Definition xbee.h:149

Example key functions :

  • xbee_get_serial_number This function sends a get serial number command.
    err_t xbee_get_serial_number(xbee_t *ctx)
    XBEE get serial number function.
  • xbee_set_device_name This function sets the device name (node identifier).
    err_t xbee_set_device_name ( xbee_t *ctx, char *dev_name );
    err_t xbee_set_device_name(xbee_t *ctx, char *dev_name)
    XBEE set device name function.
  • xbee_set_destination_address This function sets the destination address high and low bytes.
    err_t xbee_set_destination_address ( xbee_t *ctx, char *dest_addr_high, char *dest_addr_low );
    err_t xbee_set_destination_address(xbee_t *ctx, char *dest_addr_high, char *dest_addr_low)
    XBEE set destination address function.

Example Description

‍This example demonstrates the use of an XBEE 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, and api mode to transparent.

void application_init ( void )
{
log_cfg_t log_cfg;
xbee_cfg_t xbee_cfg;
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// Click initialization.
xbee_cfg_setup( &xbee_cfg );
XBEE_MAP_MIKROBUS( xbee_cfg, MIKROBUS_1 );
if ( UART_ERROR == xbee_init( &xbee, &xbee_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
xbee_hw_reset ( &xbee );
xbee_process( );
xbee_clear_app_buf( );
log_printf( &logger, " - Enter command mode -\r\n" );
Delay_ms ( 100 );
xbee_display_rsp ( 1000 );
log_printf( &logger, " - Factory Reset -\r\n" );
xbee_factory_reset ( &xbee );
Delay_ms ( 100 );
xbee_display_rsp ( 1000 );
log_printf( &logger, " - Get serial number -\r\n" );
Delay_ms ( 100 );
xbee_display_rsp ( 1000 );
log_printf( &logger, " - Set Device Name -\r\n" );
Delay_ms ( 100 );
xbee_display_rsp ( 1000 );
log_printf( &logger, " - Set Destination Address -\r\n" );
Delay_ms ( 100 );
xbee_display_rsp ( 1000 );
log_printf( &logger, " - Set API mode -\r\n" );
Delay_ms ( 100 );
xbee_display_rsp ( 1000 );
log_printf( &logger, " - Apply changes -\r\n" );
xbee_apply_changes ( &xbee );
Delay_ms ( 100 );
xbee_display_rsp ( 1000 );
log_printf( &logger, " - Save changes -\r\n" );
xbee_save_changes ( &xbee );
Delay_ms ( 100 );
xbee_display_rsp ( 1000 );
log_printf( &logger, " - Exit command mode -\r\n" );
Delay_ms ( 100 );
xbee_display_rsp ( 1000 );
app_buf_len = 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 " );
}
#define XBEE_MODE_TRANSPARENT
XBEE mode settings.
Definition xbee.h:91
#define XBEE_MAP_MIKROBUS(cfg, mikrobus)
MikroBUS pin mapping.
Definition xbee.h:132
err_t xbee_factory_reset(xbee_t *ctx)
XBEE factory reset function.
err_t xbee_enter_command_mode(xbee_t *ctx)
XBEE enter command mode function.
err_t xbee_apply_changes(xbee_t *ctx)
XBEE apply changes function.
err_t xbee_exit_command_mode(xbee_t *ctx)
XBEE exit command mode function.
err_t xbee_save_changes(xbee_t *ctx)
XBEE save changes function.
err_t xbee_set_api_mode(xbee_t *ctx, uint8_t api_mode)
XBEE set api mode function.
void xbee_hw_reset(xbee_t *ctx)
XBEE hw reset function.
void application_init(void)
Definition main.c:85
#define DESTINATION_ADDRESS_LOW
Definition main.c:38
#define DEVICE_NAME
Definition main.c:33
#define DESTINATION_ADDRESS_HIGH
Definition main.c:37

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
xbee_process( );
if ( app_buf_len > 0 )
{
log_printf( &logger, "%s", app_buf );
xbee_clear_app_buf( );
}
#endif
}
err_t xbee_generic_write(xbee_t *ctx, char *data_in, uint16_t len)
XBEE data writing function.
#define DEMO_TEXT_MESSAGE
Definition main.c:44
void application_task(void)
Definition main.c:172

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.XBEE

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.