lr  2.1.0.0
Main Page

LR click

LR Click is a compact add-on board that contains a low-power, long-range transceiver. This board features the RN2483, RF technology-based SRD transceiver, which operates at a frequency of 433/868MHz from Microchip Technology. This Click boardâ„¢ features an embedded LoRaWAN Class A compliant stack, providing a long-range spread spectrum communication with high interference immunity. The RN2483 module is a fully certified 433/868MHz European R&TTE directive assessed radio modem combined with the advanced and straightforward command interface.

click Product page


Click library

  • Author : Stefan Ilic
  • Date : Feb 2023.
  • Type : UART type

Software Support

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

Standard key functions :

  • lr_cfg_setup Config Object Initialization function.
    void lr_cfg_setup ( lr_cfg_t *cfg );
  • lr_init Initialization function.
    err_t lr_init ( lr_t *ctx, lr_cfg_t *cfg );
  • lr_default_cfg Click Default Configuration function.
    void lr_default_cfg ( lr_t *ctx, bool cb_default, void ( *response_p )( char *response ) );

Example key functions :

  • lr_mac_tx Function for writing mac parameters
    uint8_t lr_mac_tx ( lr_t *ctx, lr_mac_t *mac );
  • lr_join Function for setting join mode
    uint8_t lr_join ( lr_t *ctx, char *join_mode, char *response );
  • lr_tick_conf Timer Configuration
    void lr_tick_conf ( lr_t *ctx, uint32_t timer_limit );

Example Description

This example shows the usage of the LR Click board by transmitting and receiving data.

The demo application is composed of two sections :

Application Init

IInitializes the driver and performs default configuration and reads System version.

void application_init ( void )
{
log_cfg_t log_cfg;
lr_cfg_t lr_cfg;
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// Click initialization.
lr_cfg_setup( &lr_cfg );
LR_MAP_MIKROBUS( lr_cfg, MIKROBUS_1 );
if ( UART_ERROR == lr_init( &lr, &lr_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
lr_default_cfg( &lr, 0, 0 );
log_printf( &logger, "System VER: %s \r\n", resp_buf );
log_printf( &logger, "MAC PAUSE: %s \r\n", resp_buf );
log_printf( &logger, "RADIO SET WDT 0: %s \r\n", resp_buf );
log_info( &logger, " Application Task " );
}

Application Task

Transmitter mode - sends one-by-one byte sequence of the desired message each second and

checks if it is sent successfully Receiver mode - displays all the received characters on USB UART.

void application_task ( void )
{
lr_process( );
#ifdef DEMO_APP_RECEIVER
char *ptr;
uint8_t int_data;
if ( LR_OK == lr_rx( &lr, LR_ARG_0, resp_buf ) )
{
resp_buf[ 12 ] = 0;
ptr = ( char* ) &int_data;
hex_to_int( &resp_buf[ 10 ], ptr );
log_printf( &logger, "%c", int_data );
}
#endif
#ifdef DEMO_APP_TRANSMITTER
for ( uint8_t cnt = 0; cnt < 9; cnt++ )
{
int8_to_hex( send_message[ cnt ], send_hex );
if ( LR_OK == lr_tx( &lr, &send_hex[ 0 ] ) )
{
log_printf( &logger, " Response : %s \r\n", resp_buf );
}
Delay_ms( 1000 );
}
#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.LR

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.


lr_cfg_t
LR Click configuration object.
Definition: lr.h:272
lr_mac_t
Mac object definition.
Definition: lr.h:231
LR_ARG_0
#define LR_ARG_0
Definition: lr.h:72
lr_rx
uint8_t lr_rx(lr_t *ctx, char *window_size, char *response)
Main receiver function
lr_init
err_t lr_init(lr_t *ctx, lr_cfg_t *cfg)
LR initialization function.
LR_CMD_MAC_PAUSE
#define LR_CMD_MAC_PAUSE
Definition: lr.h:70
LR_CMD_RADIO_SET_WDT
#define LR_CMD_RADIO_SET_WDT
Definition: lr.h:71
lr_tx
uint8_t lr_tx(lr_t *ctx, char *buffer)
Main tnanceiver function.
LR_MAP_MIKROBUS
#define LR_MAP_MIKROBUS(cfg, mikrobus)
MikroBUS pin mapping.
Definition: lr.h:166
lr_cfg_setup
void lr_cfg_setup(lr_cfg_t *cfg)
LR configuration object setup function.
application_task
void application_task(void)
Definition: main.c:112
resp_buf
char resp_buf[50]
Definition: main.c:39
lr_cmd
void lr_cmd(lr_t *ctx, char *cmd, char *response)
Send command function.
lr_tick_conf
void lr_tick_conf(lr_t *ctx, uint32_t timer_limit)
Timer Configuration.
lr_mac_tx
uint8_t lr_mac_tx(lr_t *ctx, lr_mac_t *mac)
Function for writing mac parameters.
LR_OK
@ LR_OK
Definition: lr.h:297
lr_join
uint8_t lr_join(lr_t *ctx, char *join_mode, char *response)
Function for setting join mode.
send_hex
char send_hex[50]
Definition: main.c:38
LR_CMD_SYS_GET_VER
#define LR_CMD_SYS_GET_VER
LR Click Commands.
Definition: lr.h:69
application_init
void application_init(void)
Definition: main.c:70
lr_t
LR Click context object.
Definition: lr.h:244
send_message
uint8_t send_message[9]
Definition: main.c:40
lr_default_cfg
void lr_default_cfg(lr_t *ctx, bool cb_default, void(*response_p)(char *response))
LR default configuration function.