We strongly encourage users to use Package manager for sharing their code on Libstock website, because it boosts your efficiency and leaves the end user with no room for error. [more info]
Rating:
Author: MIKROE
Last Updated: 2024-10-31
Package Version: 2.1.0.15
mikroSDK Library: 2.0.0.0
Category: Sub-1 GHz Transceivers
Downloaded: 180 times
Not followed.
License: MIT license
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.
Do you want to subscribe in order to receive notifications regarding "OOK RX Click" changes.
Do you want to unsubscribe in order to stop receiving notifications regarding "OOK RX Click" changes.
Do you want to report abuse regarding "OOK RX Click".
DOWNLOAD LINK | RELATED COMPILER | CONTAINS |
---|---|---|
3633_ook_rx_click.zip [527.27KB] | mikroC AI for ARM GCC for ARM Clang for ARM mikroC AI for PIC mikroC AI for PIC32 XC32 GCC for RISC-V Clang for RISC-V mikroC AI for AVR mikroC AI for dsPIC XC16 |
|
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.
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.
This library contains API for OOK RX Click driver.
ookrx_cfg_setup
Config Object Initialization function.
void ookrx_cfg_setup ( ookrx_cfg_t *cfg );
ookrx_init
Initialization function.
err_t ookrx_init ( ookrx_t *ctx, ookrx_cfg_t *cfg );
ookrx_enable_device
This function enables device by setting the EN pin to high logic state.
void ookrx_enable_device ( ookrx_t *ctx );
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 );
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 :
Initializes the driver and enables the device and squelch mode.
void application_init ( void )
{
log_cfg_t log_cfg; /**< Logger config object. */
ookrx_cfg_t ookrx_cfg; /**< Click config object. */
/**
* Logger initialization.
* Default baud rate: 115200
* Default log level: LOG_LEVEL_DEBUG
* @note If USB_UART_RX and USB_UART_TX
* are defined as HAL_PIN_NC, you will
* need to define them manually for log to work.
* See @b LOG_MAP_USB_UART macro definition for detailed explanation.
*/
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_squelch ( &ookrx );
ookrx_enable_device ( &ookrx );
log_info( &logger, " 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 );
}
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:
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.