Accel 32 Click with Clicker 4 for STM32F4

Published 4月 16, 2025

点击板

Accel 32 Click
Tilt 5 Click

开发板

Clicker 4 for STM32F4

编译器

NECTO Studio

微控制器单元

STM32F407VGT6

Acceleration & Tilt Tracking Solution

实时监测运动与倾斜活动,结合精准的三轴加速度追踪与倾斜检测功能

你将学到和构建的内容

简介

Acceleration & Tilt Tracking 解决方案结合了 Accel 32 Click 与 Tilt 5 Click,实现了实时的连续运动感测与倾斜检测。该方案特别适用于机器人、工业监测、游戏控制界面以及可穿戴设备,能够提供三个轴向上的精确加速度数据、温度读取以及基于滚珠开关的倾斜状态检测。通过 ACTIVE/IDLE 倾斜反馈与通过 UART 输出的精确加速度日志,此解决方案构成了一个紧凑且可靠的姿态监测与动作控制系统。

mikroBUS 1

Accel 32 Click

Accel 32 Click 是一款用于精确运动检测与监控的紧凑型附加板。该板搭载来自 Analog Devices 的 ADXL382-1,这是一款宽带宽三轴 MEMS 加速度计。它提供可选的 ±15g、±30g 和 ±60g 测量范围,具备高灵敏度、低噪声密度和高效功耗,非常适用于高振动等严苛环境。该传感器通过 SPI 接口进行通信,集成温度传感功能,并具备单击、双击和三击检测功能,同时具备防误触机制。该板支持 Click Snap 功能,提供灵活的安装方式,并通过可配置中断和电源管理提供额外功能。Accel 32 Click 非常适用于基于状态的监控、结构健康监测、地震成像、机器人技术、音频和主动降噪、可穿戴设备等低功耗运动感测应用。

Accel 32 Click front-background image

mikroBUS 2

Tilt 5 Click

Tilt 5 Click 是一款用于精确倾斜检测的紧凑型附加板,适用于多种基于运动的应用场景。该板搭载来自 OncQue 的 RBS240100T 球接触式倾斜传感器开关,能够在 360° 全方位内检测 45° 倾斜角度。该传感器在默认状态下为常开开关,具有低功耗优势,同时提供 50mΩ 的接触电阻、50MΩ 的绝缘电阻以及最大 10mA 的接触电流。它通过单一 INT 引脚与主控 MCU 通信,输出可靠的倾斜检测信号,板载的橙色 LD2 LED 可实现视觉反馈。该板支持 Click Snap 创新功能,允许传感器区域可拆卸,以便灵活集成。Tilt 5 Click 特别适用于安全系统、防盗防破坏设备、警报系统、地震检测装置及节能唤醒机制等应用场景。

Tilt 5 Click front-background image

功能概述

开发板

Clicker 4 for STM32F4 是一款紧凑型开发板,专为快速构建自定义设备而设计。它配备 STM32F407VGT6 MCU、四个 mikroBUS™ 插座(用于 Click board™ 连接)、电源管理等功能,使其成为快速应用开发的理想选择。核心采用 STM32F407VGT6 MCU,该芯片基于 Arm® Cortex®-M4 32 位处理器,运行频率高达 168 MHz,提供充足的计算能力以满足高负载任务需求。除了两个 1x20 排针接口外,四个 mikroBUS™ 插座可支持庞大且不断增长的 Click boards™ 生态系统。开发板上清晰标记的功能区域提供直观、易用的界面,加快开发进程。Clicker 4 不仅能加速原型设计,还可直接集成到项目中,无需额外的硬件修改。四个 4.2mm(0.165”)的安装孔位于角落,便于使用螺丝固定,实现简便安装。

Clicker 4 for STM32F4 front image

微控制器概述 

MCU卡片 / MCU

default

建筑

ARM Cortex-M4

MCU 内存 (KB)

10

硅供应商

STMicroelectronics

引脚数

100

RAM (字节)

100

一步一步来

项目组装

Clicker 4 for STM32F4 front image hardware assembly

首先,选择您的开发板 - Clicker 4 for STM32F4

Clicker 4 for STM32F4 front image hardware assembly
LTE IoT 5 Click front-background image hardware assembly
Calypso Click front-background image hardware assembly
Board mapper by product7 hardware assembly
Necto image step 2 hardware assembly
Necto image step 3 hardware assembly
Necto image step 4 hardware assembly
Necto image step 5 hardware assembly
NECTO Output Selection Step Image hardware assembly
Necto image step 6 hardware assembly
Clicker 4 for STM32F4 HA MCU Step hardware assembly
Necto image step 8 hardware assembly
Necto image step 9 hardware assembly
Necto image step 10 hardware assembly
Necto PreFlash Image hardware assembly

实时跟踪您的结果

应用程序输出

1. 应用程序输出 - 在调试模式下,“应用程序输出”窗口支持实时数据监控,直接提供执行结果的可视化。请按照提供的教程正确配置环境,以确保数据正确显示。

2. UART 终端 - 使用UART Terminal通过USB to UART converter监视数据传输,实现Click board™与开发系统之间的直接通信。请根据项目需求配置波特率和其他串行设置,以确保正常运行。有关分步设置说明,请参考提供的教程

3. Plot 输出 - Plot功能提供了一种强大的方式来可视化实时传感器数据,使趋势分析、调试和多个数据点的对比变得更加直观。要正确设置,请按照提供的教程,其中包含使用Plot功能显示Click board™读数的分步示例。在代码中使用Plot功能时,请使用以下函数:plot(insert_graph_name, variable_name);。这是一个通用格式,用户需要将“insert_graph_name”替换为实际图表名称,并将“variable_name”替换为要显示的参数。

软件支持

库描述

Acceleration & Tilt Tracking Solution 使用 NECTO Studio 开发,确保兼容 mikroSDK 的开源库和工具。该解决方案采用即插即用的设计,支持快速实施和测试,并与所有配备 mikroBUS™ 插座的开发板、入门套件和 mikromedia 板完全兼容。

示例描述
加速度与倾斜追踪解决方案通过集成 Accel 32 Click 与 Tilt 5 Click,实现连续加速度测量与倾斜检测。Accel 32 Click 可获取 X、Y、Z 三轴方向的实时加速度数据以及温度读数;Tilt 5 Click 则通过滚珠开关传感器检测倾斜动作,根据运动状态输出 ACTIVE(有倾斜)或 IDLE(无倾斜)。该方案特别适用于运动追踪、冲击检测、方向感测及倾斜控制等应用场景。

关键功能:

  • accel32_init - 初始化 Accel 32 Click,用于加速度与温度测量。

  • accel32_default_cfg - 以默认设置配置 Accel 32 Click,实现运动追踪功能。

  • accel32_get_data - 获取 X、Y、Z 三轴加速度与温度数据。

  • tilt5_init - 初始化 Tilt 5 Click,实现倾斜动作检测。

  • tilt5_get_out_pin - 读取倾斜传感器状态,判断是否检测到运动(ACTIVE 或 IDLE)。

  • log_printf - 通过 UART 输出传感器数据日志,用于调试和实时追踪。

应用初始化
初始化步骤用于配置系统实现加速度与倾斜检测:

1. 初始化 UART 日志功能,用于调试输出。

2. 配置 Accel 32 Click 实现加速度与温度测量功能。

3. 初始化 Tilt 5 Click,实现倾斜状态检测。

4. 若任何初始化步骤失败,将记录错误并停止程序运行。

应用任务
主循环执行以下操作:

1. 从 Accel 32 Click 读取加速度与温度数据;

2. 通过 UART 输出当前 X、Y、Z 三轴加速度与温度值;

3. 从 Tilt 5 Click 获取倾斜传感器状态;

4. 通过 UART 输出倾斜状态(ACTIVE 或 IDLE);

5. 持续重复该流程,确保实现实时运动与倾斜追踪。

开源

代码示例

完整的应用程序代码和一个现成的项目可以通过NECTO Studio包管理器直接安装到NECTO Studio 应用程序代码也可以在MIKROE的GitHub账户中找到。

/*
 * Solution Name: Acceleration & Tilt Tracking Solution
 *
 * Description:
 * This embedded application continuously monitors motion data using the Accel
 * 32 Click and detects tilt motion using the Tilt 5 Click, logging real-time
 * sensor readings via UART.
 *
 * The system utilizes the following Click boards:
 *   - Accel 32 Click: Measures acceleration on the X, Y, and Z axes and
 *     monitors temperature changes.
 *   - Tilt 5 Click: Detects tilt motion using a ball switch sensor and reports 
 *     state transitions between "ACTIVE" and "IDLE."
 *
 * The `application_init` function initializes both Click boards, configures
 * them for proper operation, and sets up the UART logger for debugging.
 *
 * The `application_task` function reads accelerometer and temperature data
 * from the Accel 32 Click and logs it via UART. It also continuously monitors
 * the tilt state using the Tilt 5 Click, logging any detected motion.
 *
 * Hardware Setup:
 *   - MIKROBUS_1: Accel 32 Click (Motion and temperature monitoring)
 *   - MIKROBUS_2: Tilt 5 Click (Tilt detection)
 *
 * Key Features:
 *   - Real-time acceleration measurement (X, Y, Z) and temperature
 *     monitoring.
 *   - Tilt detection with active and idle state logging.
 *   - UART-based logging for debugging and sensor data visualization.
 *
 * Development Environment:
 *   - [NECTO Studio](https://www.mikroe.com/necto)
 *   - [mikroSDK v2.0](https://www.mikroe.com/mikrosdk) framework
 *   - MIKROE [Click boards](https://www.mikroe.com/click-boards) Add-ons
 *
 * Author: Branko Jaksic
 * Date: April, 2025
 */

// ------------------------------------------------------------------- INCLUDES
#include "log.h"
#include "board.h"
#include "tilt5.h"
#include "accel32.h"

// ------------------------------------------------------------------ VARIABLES
static log_t logger;    /**< Log driver object. */
static tilt5_t tilt5;   /**< Tilt 5 Click driver object. */
static accel32_t accel32;   /**< Accel 32 Click driver object. */

// ------------------------------------------------------ APPLICATION FUNCTIONS
void application_init ( void )
{
    log_cfg_t log_cfg;  /**< Logger config object. */
    tilt5_cfg_t tilt5_cfg;  /**< Click config object. */
    accel32_cfg_t accel32_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 " );

    // Accel 32 Click initialization.
    accel32_cfg_setup( &accel32_cfg );
    ACCEL32_MAP_MIKROBUS( accel32_cfg, MIKROBUS_1 );
    if ( SPI_MASTER_ERROR == accel32_init( &accel32, &accel32_cfg ) )
    {
        log_error( &logger, " Communication init." );
        for ( ; ; );
    }

    if ( ACCEL32_ERROR == accel32_default_cfg ( &accel32 ) )
    {
        log_error( &logger, " Default configuration." );
        for ( ; ; );
    }

    // Tilt 5 Click initialization.
    tilt5_cfg_setup( &tilt5_cfg );
    TILT5_MAP_MIKROBUS( tilt5_cfg, MIKROBUS_2 );
    if ( DIGITAL_OUT_UNSUPPORTED_PIN == tilt5_init( &tilt5, &tilt5_cfg ) ) 
    {
        log_error( &logger, " Communication init." );
        for ( ; ; );
    }

    log_info( &logger, " Application Task " );
}

void application_task ( void )
{
    accel32_data_t meas_data;

    if ( ACCEL32_OK == accel32_get_data ( &accel32, &meas_data ) )
    {
        log_printf( &logger, " Accel X: %.3f g\r\n", meas_data.accel.x );
        log_printf( &logger, " Accel Y: %.3f g\r\n", meas_data.accel.y );
        log_printf( &logger, " Accel Z: %.3f g\r\n", meas_data.accel.z );
        log_printf( &logger, " Temperature: %.1f degC\r\n",
                             meas_data.temperature );
        Delay_ms ( 100 );
    }

    uint8_t state = tilt5_get_out_pin ( &tilt5 );
    if ( TILT5_STATE_ACTIVE == state ) {
        log_printf( &logger, "Tilt state: ACTIVE\r\n" );
    } else {
        log_printf( &logger, "Tilt state: IDLE\r\n" );
    }
    Delay_ms ( 100 );
}

int main ( void ) 
{
    /* Do not remove this line or clock might not be set correctly. */
    #ifdef PREINIT_SUPPORTED
    preinit();
    #endif
    
    application_init( );
    
    for ( ; ; ) 
    {
        application_task( );
    }

    return 0;
}

// ------------------------------------------------------------------------ END

额外支持

资源

喜欢这个项目吗?

'购买此套件' 按钮会直接带您进入购物车,您可以在购物车中轻松添加或移除产品。