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-12-02
Package Version: 2.1.0.1
mikroSDK Library: 2.0.0.0
Category: Motion
Downloaded: 3 times
Not followed.
License: MIT license
ML Vibro Sens Click is a compact add-on board for motion sensing and vibration analysis. This board features the FXLS8974CF, a 3-axis low-g 12-bit digital accelerometer from NXP designed for precise motion detection and data collection. This Click board™ represents a machine learning training tool that communicates with the host MCU over an I2C interface, with selectable addresses and dual operating modes for interrupt signaling or motion detection. It features two DC motors - a balanced motor for generating steady baseline vibrations and an unbalanced motor for customizable vibration patterns controlled via PWM or PDM signals.
Do you want to subscribe in order to receive notifications regarding "ML Vibro Sens Click" changes.
Do you want to unsubscribe in order to stop receiving notifications regarding "ML Vibro Sens Click" changes.
Do you want to report abuse regarding "ML Vibro Sens Click".
DOWNLOAD LINK | RELATED COMPILER | CONTAINS |
---|---|---|
5839_ml_vibro_sens_cl.zip [654.59KB] | 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 |
|
ML Vibro Sens Click is a compact add-on board for motion sensing and vibration analysis. This board features the FXLS8974CF, a 3-axis low-g 12-bit digital accelerometer from NXP designed for precise motion detection and data collection. This Click board™ represents a machine learning training tool that communicates with the host MCU over an I2C interface, with selectable addresses and dual operating modes for interrupt signaling or motion detection. It features two DC motors - a balanced motor for generating steady baseline vibrations and an unbalanced motor for customizable vibration patterns controlled via PWM or PDM signals.
We provide a library for the ML Vibro Sens 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 ML Vibro Sens Click driver.
mlvibrosens_cfg_setup
Config Object Initialization function.
void mlvibrosens_cfg_setup ( mlvibrosens_cfg_t *cfg );
mlvibrosens_init
Initialization function.
err_t mlvibrosens_init ( mlvibrosens_t *ctx, mlvibrosens_cfg_t *cfg );
mlvibrosens_default_cfg
Click Default Configuration function.
err_t mlvibrosens_default_cfg ( mlvibrosens_t *ctx );
mlvibrosens_get_int_pin
This function returns the interrupt pin logic state.
uint8_t mlvibrosens_get_int_pin ( mlvibrosens_t *ctx );
mlvibrosens_get_data
This function reads accel X, Y, and Z axis data in g and temperature in degrees Celsius.
err_t mlvibrosens_get_data ( mlvibrosens_t *ctx, mlvibrosens_data_t *data_out );
mlvibrosens_set_vibro_state
This function sets the vibro motors state.
void mlvibrosens_set_vibro_state ( mlvibrosens_t *ctx, uint8_t state );
This example demonstrates the use of the ML Vibro Sens Click board by capturing and logging acceleration data on the X, Y, and Z axes, along with temperature readings. The data is output over USB UART and can be visualized in real-time using tools like SerialPlot. Additionally, the vibro motor state changes periodically, cycling through different vibration states for added feedback.
The demo application is composed of two sections :
Initializes the communication interface and configures the ML Vibro Sens Click board with default settings. This setup enables an interrupt on the INT pin when data is ready, sets the acceleration sensitivity to a +/-4G range, and sets the output data rate to 100 Hz.
void application_init ( void )
{
log_cfg_t log_cfg; /**< Logger config object. */
mlvibrosens_cfg_t mlvibrosens_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.
mlvibrosens_cfg_setup( &mlvibrosens_cfg );
MLVIBROSENS_MAP_MIKROBUS( mlvibrosens_cfg, MIKROBUS_1 );
if ( I2C_MASTER_ERROR == mlvibrosens_init( &mlvibrosens, &mlvibrosens_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
if ( MLVIBROSENS_ERROR == mlvibrosens_default_cfg ( &mlvibrosens ) )
{
log_error( &logger, " Default configuration." );
for ( ; ; );
}
log_info( &logger, " Application Task " );
}
Monitors the data-ready interrupt, retrieves acceleration and temperature data when available, and logs it over USB UART in the format X;Y;Z;TEMP. After every 1000 data readings, the vibro motor state cycles through predefined states to demonstrate the motor's functionality.
void application_task ( void )
{
static uint8_t vibro_state = MLVIBROSENS_VIBRO_STATE_IDLE;
static uint16_t result_num = 0;
static mlvibrosens_data_t accel_data;
// Wait for a data ready interrupt
while ( mlvibrosens_get_int_pin ( &mlvibrosens ) );
if ( MLVIBROSENS_OK == mlvibrosens_get_data ( &mlvibrosens, &accel_data ) )
{
log_printf ( &logger, "%f;%f;%f;%d;\r\n", accel_data.x, accel_data.y,
accel_data.z, accel_data.temperature );
}
if ( ++result_num > 1000 )
{
result_num = 0;
if ( ++vibro_state > MLVIBROSENS_VIBRO_STATE_BOTH )
{
vibro_state = MLVIBROSENS_VIBRO_STATE_IDLE;
}
mlvibrosens_set_vibro_state ( &mlvibrosens, vibro_state );
}
}
We recommend using the SerialPlot tool for data visualization. The temperature measurements should be visualized independently. The data format for plotter is as follows: X;Y;Z;TEMP;
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.