It reports Advanced Pedometer and Event Detection features, such as Pedometer, Tilt detection, Wake on Motion and Significant Motion Detector. Device tree options. Signed-off-by: Aurelie Fontaine <aurelie.fontaine@tdk.com>
135 lines
3.4 KiB
ReStructuredText
135 lines
3.4 KiB
ReStructuredText
.. zephyr:code-sample:: tdk_apex
|
|
:name: TDK Advanced Pedometer and Event Detection (APEX)
|
|
:relevant-api: sensor_interface
|
|
|
|
Get TDK APEX event detection (trigger mode).
|
|
|
|
Overview
|
|
********
|
|
|
|
This sample application shows how to use the APEX (Advanced Pedometer
|
|
and Event Detection) features of TDK Invensense sensors. It consists of:
|
|
** Pedometer: Tracks step count, and provide details such as the cadence
|
|
and the estimated activity type (Walk, Run, Unknown).
|
|
** Tilt Detection: Detects the Tilt when tilting the board with an angle
|
|
of 30 degrees or more. The tilt event is generated when the
|
|
position is held for 4 seconds.
|
|
** Wake on Motion (WoM): Detects motion per axis exceeding 195 mg threshold.
|
|
** Significant Motion Detector (SMD): Detects when the user has moved
|
|
significantly.
|
|
APEX features support are configured through devicetree.
|
|
|
|
References
|
|
**********
|
|
|
|
- https://invensense.tdk.com/download-pdf/an-000271-icm-42607x-and-icm-42670x-apex-motion-functions-description-and-usage/
|
|
|
|
Driver configuration
|
|
********************
|
|
|
|
The APEX is based on accelerometer data only. The TDK Sensor driver configures
|
|
accelerometer low power mode and the APEX operating frequency (25Hz or 50Hz).
|
|
|
|
Wiring
|
|
*******
|
|
|
|
This sample uses an external breakout for the sensor. A devicetree
|
|
overlay must be provided to identify the TDK sensor, the SPI or I2C bus interface and the interrupt
|
|
sensor GPIO.
|
|
|
|
Building and Running
|
|
********************
|
|
|
|
This sample supports TDK IMU devices. Each device needs
|
|
to be aliased as ``tdk-apex-sensorN`` where ``N`` goes from ``0`` to ``9``. For example:
|
|
|
|
.. code-block:: devicetree
|
|
|
|
/ {
|
|
aliases {
|
|
tdk-apex-sensor0 = &icm42670p;
|
|
};
|
|
};
|
|
|
|
This sample supports APEX feature of TDK device. It needs to be specified as bellow:
|
|
|
|
.. code-block:: devicetree
|
|
|
|
icm42670p: icm42670p@0 {
|
|
apex = "pedometer";
|
|
}
|
|
|
|
Make sure the apex feature used is in devicetree, then build and run with:
|
|
|
|
.. zephyr-app-commands::
|
|
:zephyr-app: samples/sensor/tdk_apex
|
|
:board: nrf52dk/nrf52832
|
|
:goals: build flash
|
|
|
|
Sample Output
|
|
=============
|
|
|
|
.. code-block:: devicetree
|
|
|
|
icm42670p: icm42670p@0 {
|
|
apex = "pedometer";
|
|
}
|
|
|
|
.. code-block:: console
|
|
|
|
Found device "icm42670p@68", getting sensor data
|
|
[0:00:09.287]: STEP_DET count: 6 steps cadence: 2.0 steps/s activity: Unknown
|
|
[0:00:09.689]: STEP_DET count: 7 steps cadence: 2.1 steps/s activity: Walk
|
|
[0:00:10.051]: STEP_DET count: 8 steps cadence: 2.2 steps/s activity: Walk
|
|
[0:00:10.433]: STEP_DET count: 9 steps cadence: 2.2 steps/s activity: Walk
|
|
[0:00:10.835]: STEP_DET count: 10 steps cadence: 2.3 steps/s activity: Walk
|
|
|
|
<repeats endlessly>
|
|
|
|
.. code-block:: devicetree
|
|
|
|
icm42670p: icm42670p@0 {
|
|
apex = "tilt";
|
|
}
|
|
|
|
.. code-block:: console
|
|
|
|
Found device "icm42670p@68", getting sensor data
|
|
[0:00:15.249]: TILT
|
|
[0:00:21.479]: TILT
|
|
[0:00:26.765]: TILT
|
|
|
|
<repeats endlessly>
|
|
|
|
.. code-block:: devicetree
|
|
|
|
icm42670p: icm42670p@0 {
|
|
apex = "wom";
|
|
}
|
|
|
|
.. code-block:: console
|
|
|
|
Found device "icm42670p@68", getting sensor data
|
|
[0:00:02.555]: WOM x=1 y=0 z=1
|
|
[0:00:02.636]: WOM x=0 y=0 z=1
|
|
[0:00:02.797]: WOM x=0 y=1 z=0
|
|
[0:00:02.877]: WOM x=0 y=0 z=1
|
|
[0:00:02.957]: WOM x=1 y=1 z=1
|
|
|
|
<repeats endlessly>
|
|
|
|
.. code-block:: devicetree
|
|
|
|
icm42670p: icm42670p@0 {
|
|
apex = "smd";
|
|
}
|
|
|
|
.. code-block:: console
|
|
|
|
Found device "icm42670@68", getting sensor data
|
|
[0:00:04.622]: SMD
|
|
[0:00:05.084]: SMD
|
|
[0:00:05.566]: SMD
|
|
|
|
<repeats endlessly>
|