SMART DOF CLICK
PID: MIKROE-3457 Weight: 18 g
SmartDOF click features a highly advanced integrated system-in-package (SiP)
solution with three different sensors on-chip: triaxial accelerometer, magnetometer, and
triaxial gyroscope are all integrated on the same die, along with the powerful 32-bit
ARM® Cortex®-M0+ MCU. Thanks to the integrated MCU, the BN080 SiP provides
extensive signal processing. This allows many features to be implemented, including
the MotionEngine™ support. The MotionEngine™ software allows extensive data
modes and events detection. The BNO080 also supports the dynamic calibration of the
sensors for temperature and aging, offering ultimate accuracy and reliability.
SmartDOF click is supported by a mikroSDK compliant library, which includes functions
that simplify software development. This Click board™ comes as a fully tested product,
ready to be used on a system equipped with the mikroBUS™ socket.
Built to be used as a simple solution, this 9 DOF SiP provides an output which can be
used directly, with no tedious conversions required. Acting as a co-processor, it reduces
the workload from the host MCU, allowing it to be used for other tasks, such as handling
of the interrupt requests. Despite its complexity, BN080 SiP still reduces the overall
power consumption, allowing various "always-on" features which can be used to wake
up the host MCU and the rest of the system. Thanks to its many features, SmartDOF
click can be used for the development of various motion-based applications, including
VR/AR applications, robotics, VR/AR headsets, wearable motion controllers, and
similar.
HOW DOES IT WORK?
The Click board™ is based on the BNO080, a System in Package (SiP) that integrates a
triaxial accelerometer, triaxial gyroscope, magnetometer and a 32-bit ARM® Cortex®M0+ MCU, produced by Hillcrest Labs. The integrated MCU core runs the proprietary
Hillcrest SH-2 firmware, which includes the support for the MotionEngine™ software
and its sophisticated signal processing algorithms. Thanks to this, the SmartDOF can
provide very accurate and precise 3D acceleration, magnetic, and angular velocity data,
in real-time. The additional output modes include orientation outputs by combining data
from various sensors. There are many different rotation vectors available on a top of
other readings, including geomagnetic rotation vector (does not use the gyroscope
sensor), game rotation vector (no magnetometer), etc. The datasheet of the BNO080
offers a full list of outputs, each with a detailed explanation.
As a device built to be used primarily in smartphones, BNO080 brings events detection
and classification system. Stability classification distinguishes among three stability
classes: "on the table" (the device is at a fixed position), "stable" (held in hand but in a
stationary manner), or at "motion" (the device is in motion). Stability classification is not
the only classification for this device. For more information, please refer to the
datasheet of the BN080 SiP.
The detection engine allows many different events to be detected and reported as an
interrupt, including tap detector, step detector, step counter, shake detector, etc. Both
classification and detection systems use configurable thresholds. More information
about how to set them up can be found in the SH-2 Reference Manual. However, the
mikroSDK compatible library offers a well-documented set of functions, for simplified
firmware development.
The BNO080 offers both static and dynamic calibration features, which allow for
increased precision. Static calibration is applied to the output data for the properties
which do not change over time, or with temperature (i.e cross-axis sensitivity, gain,
sensor orientation in respect to the frame of reference…) Dynamic calibration is used
for the parameters which vary over time or temperature (i.e. zero-rate offset, zero-g
offset…)
Besides the compensation parameters, the user is able to tare the device, using two
tare modes: tare around all axes, or tare around the z-axis. The result of a tare
operation is applied wherever power is applied to the device. The tare value can be
permanently stored with the Persist Tare function.
The BNO080 will be started in the Bootloader mode. This mode allows updating the
embedded firmware over the I2C interface. When this pin is pulled to a LOW logic level,
the device will boot up in the Bootloader mode after the next restart. This pin is routed to
the mikroBUS™ PWM pin and it is labeled as BT. The BNO080 datasheet describes the
firmware update process in more details.
The Click board™ uses the I2C interface to communicate with the host MCU. It has an
SMD jumper labeled as ADD SEL, which can be used to select the slave I2C address.
This allows more than one device on a single I2C bus.
The Click board™ is designed to work with 3.3V only. When using it with MCUs that use
5V levels for their communication, a proper level translation circuit should be used.
SPECIFICATIONS
Type
Motion
Applications
SmartDOF click can be used for the development of various motionbased applications, including VR/AR applications, robotics, VR/AR
headsets, wearable motion controllers, and similar.
On-board
modules
BNO080, a System in Package (SiP) with triaxial accelerometer,
triaxial gyroscope, magnetometer, and a 32-bit ARM® Cortex®M0+ MCU, produced by Hillcrest Labs.
Key Features
Integrated MCU with proprietary firmware that supports
MotionEngine™ and all the benefits it brings along, including
sophisticated event detection and categorization, low power
consumption, support for "always on" events, used to conserve
power on the host MCU, and many more.
Interface
I2C
Input Voltage
3.3V
Click board
size
M (42.9 x 25.4 mm)
PINOUT DIAGRAM
This table shows how the pinout on Smart DOF click corresponds to the pinout on the
mikroBUS™ socket (the latter shown in the two middle columns).
Notes
Pin
Pin
Notes
NC
1
AN
PWM
16
BT
Boot Enable
RST
2
RST
INT
15
INT
Interrupt
NC
3
CS
RX
14
NC
NC
4
SCK
TX
13
NC
NC
5
MISO
SCL
12
SCL
I2C Clock
NC
6
MOSI
SDA
11
SDA
I2C Data
Power Supply
3.3V
7
3.3V
5V
10
NC
Ground
GND
8
GND
GND
9
GND
Chip Reset
Ground
ONBOARD SETTINGS AND INDICATORS
Label
Name
Default
PWR
PWR
-
JP1
ADD SEL
Left
Description
Power LED Indicator
Slave I2C address LSB selection: left position 0, right
position 1
SOFTWARE SUPPORT
We provide a library for the Smart DOF click on our LibStock page, as well as a demo
application (example), developed using MikroElektronika compilers. The demo can run
on all the main MikroElektronika development boards.
Library Description
Library contains functions for setting and getting pin states as well as function for device
reset Library contains functions for i2c reading and writing data Library contains
functions for sending and receiving packets (packet is data to send + 4 byte header)
Library contains functions for requesting reports and receiving reports Library contains
function for basic device initialization Library contains constants for boot modes, sensor
Q points, channels, commands, sub-commands, report IDs and FRS report IDs.
Key functions:
void smartdof_sendPacket( uint8_t channel_number, uint16_t data_length, uint8_t *
packet_data ) - forms a packet of data by attaching proper header to data.
uint8_t smartdof_receivePacket( uint32_t n_cycles_timeout ) - receives data packet from
device.
void smartdof_getData( uint8_t * data_header, uint16_t * data_length, uint8_t *
data_buffer ) - returns data received by 'smartdof_receivePacket()' function to user.
Examples description
The application is composed of the three sections :
System Initialization - Initializes I2C, LOG, INT, RST and PWM pins.
Application Initialization - Initializes I2C driver and Smart DOF device.
Application Task - Executes one of 'smartdof_xxx_task()' additional functions.
void applicationTask( )
{
smartdof_magnetometer_task( );
}
Additional Functions :
smartdof_accelerometer_task() - initializes accelerometer reports in 100000 micro second intervals,
receives, parses and logs report data.
smartdof_gyroscope_task() - initializes gyroscope calibrated reports in 100000 micro second
intervals, receives, parses and logs report data.
smartdof_magnetometer_task() - initializes magnetometer calibrated reports in 100000 micro second
intervals, receives, parses and logs report data.
The full application code, and ready to use projects can be found on our LibStock page.
Other mikroE Libraries used in the example:
I2C
UART
Conversions
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. The terminal available in all
MikroElektronika compilers, or any other terminal application of your choice, can be
used to read the message.
MIKROSDK
This click board is supported with mikroSDK - MikroElektronika Software Development
Kit. To ensure proper operation of mikroSDK compliant click board demo applications,
mikroSDK should be downloaded from the LibStock and installed for the compiler you
are using.
For more information about mikroSDK, visit the official page.
https://www.mikroe.com/smart‐dof‐click/5‐15‐19