proximity21  2.1.0.0
Main Page

Proximity 21 Click

Proximity 21 Click is a compact add-on board for high-precision proximity sensing and short-range distance measurements. This board features the VL53L4ED, a Time-of-Flight (ToF) proximity sensor from STMicroelectronics, known for its extended temperature capability and accuracy. This sensor provides a field of view (FoV) of 18°, measuring distances from 1mm up to 1300mm in standard conditions and up to 1150mm in extended temperature environments, with reliable performance even in ambient light conditions up to 5klx. The Click board™ features a unique Click Snap design, making the main IC area movable for versatile implementation.

Click Product page


Click library

  • Author : Stefan Filipovic
  • Date : Jun 2024.
  • Type : I2C type

Software Support

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

Standard key functions :

Example key functions :

Example Description

This example demonstrates the use of Proximity 21 Click board by reading and displaying the target distance in millimeters on the USB UART.

The demo application is composed of two sections :

Application Init

Initializes the driver and performs the Click default configuration.

void application_init ( void )
{
log_cfg_t log_cfg;
proximity21_cfg_t proximity21_cfg;
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// Click initialization.
proximity21_cfg_setup( &proximity21_cfg );
PROXIMITY21_MAP_MIKROBUS( proximity21_cfg, MIKROBUS_1 );
if ( I2C_MASTER_ERROR == proximity21_init( &proximity21, &proximity21_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
if ( PROXIMITY21_ERROR == proximity21_default_cfg ( &proximity21 ) )
{
log_error( &logger, " Default configuration." );
for ( ; ; );
}
log_info( &logger, " Application Task " );
}

Application Task

Waits for a data ready interrupt, then reads the measurement results and logs

the target distance (millimeters) and signal quality (the higher the value the better the signal quality) to the USB UART.

void application_task ( void )
{
// Wait for a data ready interrupt
while ( proximity21_get_gpio1_pin ( &proximity21 ) );
if ( PROXIMITY21_OK == proximity21_get_result ( &proximity21, &results ) )
{
log_printf( &logger, " Distance [mm]: %u\r\n", results.distance_mm );
log_printf( &logger, " Signal [kcps/SPAD]: %u\r\n\n", results.signal_per_spad_kcps );
proximity21_clear_interrupt ( &proximity21 );
}
}

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

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.


PROXIMITY21_OK
@ PROXIMITY21_OK
Definition: proximity21.h:241
proximity21_init
err_t proximity21_init(proximity21_t *ctx, proximity21_cfg_t *cfg)
Proximity 21 initialization function.
proximity21_clear_interrupt
err_t proximity21_clear_interrupt(proximity21_t *ctx)
Proximity 21 clear interrupt function.
proximity21_t
Proximity 21 Click context object.
Definition: proximity21.h:203
proximity21_data_t::signal_per_spad_kcps
uint16_t signal_per_spad_kcps
Definition: proximity21.h:190
application_task
void application_task(void)
Definition: main.c:66
proximity21_default_cfg
err_t proximity21_default_cfg(proximity21_t *ctx)
Proximity 21 default configuration function.
proximity21_cfg_t
Proximity 21 Click configuration object.
Definition: proximity21.h:223
proximity21_data_t::distance_mm
uint16_t distance_mm
Definition: proximity21.h:182
proximity21_get_gpio1_pin
uint8_t proximity21_get_gpio1_pin(proximity21_t *ctx)
Proximity 21 get GPIO1 pin function.
proximity21_cfg_setup
void proximity21_cfg_setup(proximity21_cfg_t *cfg)
Proximity 21 configuration object setup function.
PROXIMITY21_MAP_MIKROBUS
#define PROXIMITY21_MAP_MIKROBUS(cfg, mikrobus)
MikroBUS pin mapping.
Definition: proximity21.h:164
application_init
void application_init(void)
Definition: main.c:30
proximity21_get_result
err_t proximity21_get_result(proximity21_t *ctx, proximity21_data_t *results)
Proximity 21 get result function.
PROXIMITY21_ERROR
@ PROXIMITY21_ERROR
Definition: proximity21.h:242
proximity21_data_t
Proximity 21 Click results data object.
Definition: proximity21.h:178