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 非常适用于基于状态的监控、结构健康监测、地震成像、机器人技术、音频和主动降噪、可穿戴设备等低功耗运动感测应用。
mikroBUS 2
Tilt 5 Click
Tilt 5 Click 是一款用于精确倾斜检测的紧凑型附加板,适用于多种基于运动的应用场景。该板搭载来自 OncQue 的 RBS240100T 球接触式倾斜传感器开关,能够在 360° 全方位内检测 45° 倾斜角度。该传感器在默认状态下为常开开关,具有低功耗优势,同时提供 50mΩ 的接触电阻、50MΩ 的绝缘电阻以及最大 10mA 的接触电流。它通过单一 INT 引脚与主控 MCU 通信,输出可靠的倾斜检测信号,板载的橙色 LD2 LED 可实现视觉反馈。该板支持 Click Snap 创新功能,允许传感器区域可拆卸,以便灵活集成。Tilt 5 Click 特别适用于安全系统、防盗防破坏设备、警报系统、地震检测装置及节能唤醒机制等应用场景。
功能概述
开发板
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”)的安装孔位于角落,便于使用螺丝固定,实现简便安装。
微控制器概述
MCU卡片 / MCU

建筑
ARM Cortex-M4
MCU 内存 (KB)
10
硅供应商
STMicroelectronics
引脚数
100
RAM (字节)
100
一步一步来
项目组装
实时跟踪您的结果
应用程序输出
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
额外支持
资源
类别:Human-Machine Interface (HMI)