Smart DOF Click Board
Smart DOF Click Board
The Smart DOF Click Board™ 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.
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, the Smart DOF Click Board™ 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 The Smart DOF Click Board™ Work?
The Smart DOF Click Board™ is based on the BNO080, a System in The 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 labelled as BT. The BNO080 datasheet describes the firmware update process in more details.
The Smart DOF Click Board™ uses the I2C interface to communicate with the host MCU. It has an SMD jumper labelled 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 Smart DOF 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 | Acceleration,Gyroscope,Magnetic,Motion |
Applications | The Smart DOF Click Board™ 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 The 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 |
Compatibility | mikroBUS |
Click board size | M (42.9 x 25.4 mm) |
Input Voltage | 3.3V |
PINOUT DIAGRAM
This table shows how the pinout of the Smart DOF Click Board™ 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 | |
Chip Reset | 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 | Ground |
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 Board™ 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.
Example 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 Information
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
The Smart DOF 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.
Smart DOF Click Board
Frequently Asked Questions
Have a Question?
Be the first to ask a question about this.