ookrx 2.1.0.0
Main Page

OOK RX click

‍OOK RX click is a wireless receiver that operates at the frequency of 433MHz (sub-GHz). This device allows realization of a simple, low-speed wireless ad hoc communication network between a receiver and compatible transmitter.

click Product page


Click library

  • Author : Stefan Filipovic
  • Date : Nov 2023.
  • Type : GPIO type

Software Support

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

Standard key functions :

  • ookrx_cfg_setup Config Object Initialization function.
    void ookrx_cfg_setup(ookrx_cfg_t *cfg)
    OOK RX configuration object setup function.
    OOK RX Click configuration object.
    Definition ookrx.h:130
  • ookrx_init Initialization function.
    err_t ookrx_init ( ookrx_t *ctx, ookrx_cfg_t *cfg );
    err_t ookrx_init(ookrx_t *ctx, ookrx_cfg_t *cfg)
    OOK RX initialization function.
    OOK RX Click context object.
    Definition ookrx.h:115

Example key functions :

  • ookrx_enable_device This function enables device by setting the EN pin to high logic state.
    void ookrx_enable_device(ookrx_t *ctx)
    OOK RX enable device function.
  • ookrx_wait_ready This function waits for all training bytes to arrive which indicates data ready.
    static void ookrx_wait_ready ( ookrx_t *ctx );
  • ookrx_read_packet This function reads data packet and stores it in a packet_buf only if the OOKRX_PREAMBLE bytes are received successfully.
    static uint8_t ookrx_read_packet ( ookrx_t *ctx );

Example Description

‍This example demonstrates the use of OOK RX click board by reading and parsing packet messages received from the transmitter.

The demo application is composed of two sections :

Application Init

‍Initializes the driver and enables the device and squelch mode.

void application_init ( void )
{
log_cfg_t log_cfg;
ookrx_cfg_t ookrx_cfg;
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// Click initialization.
ookrx_cfg_setup( &ookrx_cfg );
OOKRX_MAP_MIKROBUS( ookrx_cfg, MIKROBUS_1 );
if ( DIGITAL_OUT_UNSUPPORTED_PIN == ookrx_init( &ookrx, &ookrx_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
ookrx_enable_device ( &ookrx );
log_info( &logger, " Application Task " );
}
#define OOKRX_MAP_MIKROBUS(cfg, mikrobus)
MikroBUS pin mapping.
Definition ookrx.h:101
void ookrx_enable_squelch(ookrx_t *ctx)
OOK RX enable squelch function.
void application_init(void)
Definition main.c:90

Application Task

‍Waits for a data ready indication, then reads all packet data, verifies the CRC bytes in a packet, and displays its data as well as the RSSI value on the USB UART.

void application_task ( void )
{
static float rssi_v = 0;
static uint8_t packet_len = 0;
static uint8_t msg_cnt = 0;
static uint16_t crc = 0;
log_printf( &logger, "\r\n Waiting for data ready...\r\n" );
ookrx_wait_ready ( &ookrx );
packet_len = ookrx_read_packet ( &ookrx );
if ( packet_len )
{
ookrx_read_rssi_voltage ( &ookrx, &rssi_v );
crc = ( ( uint16_t ) packet_buf[ packet_len - 2 ] << 8 ) | packet_buf[ packet_len - 1 ];
if ( crc == micrftx2_calculate_crc16 ( packet_buf, packet_len - 2 ) )
{
log_printf( &logger, " Received message: " );
for ( msg_cnt = 0; msg_cnt < packet_buf[ 2 ]; msg_cnt++ )
{
log_printf( &logger, "%c", ( uint16_t ) packet_buf[ msg_cnt + 3 ] );
}
log_printf( &logger, "\r\n RSSI: %.1f dBm\r\n", OOKRX_RSSI_V_TO_DBM ( rssi_v ) );
}
}
Delay_ms ( 100 );
}
#define OOKRX_RSSI_V_TO_DBM(x)
Definition ookrx.h:81
err_t ookrx_read_rssi_voltage(ookrx_t *ctx, float *data_out)
OOK RX read RSSI pin voltage level function.
void application_task(void)
Definition main.c:123

Note

‍The OOK TX click board is a compatible transmitter for the OOK RX click.

Here are a few steps for troubleshooting if you are experiencing issues running this example:

‍- Check the MCU clock configuration, use an external oscillator instead of the MCU's internal one for better accuracy on manchester data rate delay.

  • Measure the actual data rate on the data line and adjust the OOKRX_MAN_BIT_LEN_US value accordingly.

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

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.