xbee3  2.1.0.0
Main Page

XBEE 3 click

Xbee 3 Click is a compact add-on board suitable for mission-critical wireless applications. This board features the XB8X-DMUS-001, a low-power CE/RED certified Digi Xbee® RF module delivering superior performance and interference immunity from Digi International. The module can run either a proprietary DigiMesh® or point-to-multipoint networking protocol utilizing a low-power Silicon Labs MCU and an ADF7023 transceiver, along with an integrated SAW filter that offers industry-leading interference blocking. Operating between 863MHz and 870MHz (868MHz), it allows use in several regions, including approved European countries.

click Product page


Click library

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

Software Support

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

Standard key functions :

Example key functions :

Example Description

This example demonstrates the use of an XBEE 3 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;
xbee3_cfg_t xbee3_cfg;
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// Click initialization.
xbee3_cfg_setup( &xbee3_cfg );
XBEE3_MAP_MIKROBUS( xbee3_cfg, MIKROBUS_1 );
if ( UART_ERROR == xbee3_init( &xbee3, &xbee3_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
xbee3_hw_reset ( &xbee3 );
xbee3_process( );
xbee3_clear_app_buf( );
log_printf( &logger, " - Enter command mode -\r\n" );
Delay_ms ( 100 );
xbee3_display_rsp ( 1000 );
log_printf( &logger, " - Factory Reset -\r\n" );
xbee3_factory_reset ( &xbee3 );
Delay_ms ( 100 );
xbee3_display_rsp ( 1000 );
log_printf( &logger, " - Get serial number -\r\n" );
Delay_ms ( 100 );
xbee3_display_rsp ( 1000 );
log_printf( &logger, " - Set Device Name -\r\n" );
Delay_ms ( 100 );
xbee3_display_rsp ( 1000 );
log_printf( &logger, " - Set Destination Address -\r\n" );
Delay_ms ( 100 );
xbee3_display_rsp ( 1000 );
log_printf( &logger, " - Set API mode -\r\n" );
Delay_ms ( 100 );
xbee3_display_rsp ( 1000 );
log_printf( &logger, " - Apply changes -\r\n" );
xbee3_apply_changes ( &xbee3 );
Delay_ms ( 100 );
xbee3_display_rsp ( 1000 );
log_printf( &logger, " - Save changes -\r\n" );
xbee3_save_changes ( &xbee3 );
Delay_ms ( 100 );
xbee3_display_rsp ( 1000 );
log_printf( &logger, " - Exit command mode -\r\n" );
Delay_ms ( 100 );
xbee3_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( 3000 );
#else
xbee3_process( );
if ( app_buf_len > 0 )
{
log_printf( &logger, "%s", app_buf );
xbee3_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.XBEE3

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.


xbee3_init
err_t xbee3_init(xbee3_t *ctx, xbee3_cfg_t *cfg)
XBEE 3 initialization function.
xbee3_save_changes
err_t xbee3_save_changes(xbee3_t *ctx)
XBEE 3 save changes function.
xbee3_get_serial_number
err_t xbee3_get_serial_number(xbee3_t *ctx)
XBEE 3 get serial number function.
xbee3_cfg_setup
void xbee3_cfg_setup(xbee3_cfg_t *cfg)
XBEE 3 configuration object setup function.
xbee3_exit_command_mode
err_t xbee3_exit_command_mode(xbee3_t *ctx)
XBEE 3 exit command mode function.
DESTINATION_ADDRESS_LOW
#define DESTINATION_ADDRESS_LOW
Definition: main.c:38
xbee3_cfg_t
XBEE 3 Click configuration object.
Definition: xbee3.h:169
DEVICE_NAME
#define DEVICE_NAME
Definition: main.c:33
application_task
void application_task(void)
Definition: main.c:174
xbee3_apply_changes
err_t xbee3_apply_changes(xbee3_t *ctx)
XBEE 3 apply changes function.
xbee3_set_device_name
err_t xbee3_set_device_name(xbee3_t *ctx, char *dev_name)
XBEE 3 set device name function.
DESTINATION_ADDRESS_HIGH
#define DESTINATION_ADDRESS_HIGH
Definition: main.c:37
xbee3_hw_reset
void xbee3_hw_reset(xbee3_t *ctx)
XBEE 3 hw reset function.
xbee3_set_api_mode
err_t xbee3_set_api_mode(xbee3_t *ctx, uint8_t api_mode)
XBEE 3 set api mode function.
XBEE3_MAP_MIKROBUS
#define XBEE3_MAP_MIKROBUS(cfg, mikrobus)
MikroBUS pin mapping.
Definition: xbee3.h:128
xbee3_generic_write
err_t xbee3_generic_write(xbee3_t *ctx, char *data_in, uint16_t len)
XBEE 3 data writing function.
XBEE3_MODE_TRANSPARENT
#define XBEE3_MODE_TRANSPARENT
XBEE 3 mode settings.
Definition: xbee3.h:87
xbee3_factory_reset
err_t xbee3_factory_reset(xbee3_t *ctx)
XBEE 3 factory reset function.
application_init
void application_init(void)
Definition: main.c:86
xbee3_set_destination_address
err_t xbee3_set_destination_address(xbee3_t *ctx, char *dest_addr_high, char *dest_addr_low)
XBEE 3 set destination address function.
xbee3_enter_command_mode
err_t xbee3_enter_command_mode(xbee3_t *ctx)
XBEE 3 enter command mode function.
DEMO_TEXT_MESSAGE
#define DEMO_TEXT_MESSAGE
Definition: main.c:44
xbee3_t
XBEE 3 Click context object.
Definition: xbee3.h:145