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 motion-based 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).
Onboard Settings And Indicators
Label | Name | Default | Description |
---|---|---|---|
PWR | PWR | - | Power LED Indicator |
JP1 | ADD SEL | Left | 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 :
void applicationTask( ) { smartdof_magnetometer_task( ); }
Additional Functions :
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.
Downloads
mikroBUS™ Standard specification