How does it work?
9DOF 3 Click features the BMX055, an integrated 9-axis sensor for the detection of movements and rotations and magnetic heading. It comprises the full functionality of a triaxial, low-g acceleration sensor, a triaxial angular rate sensor and a triaxial geomagnetic sensor. The BMX055 senses orientation, tilt motion, acceleration, rotation, shock, vibration and heading in cell phones, handhelds, computer peripherals, man-machine interfaces, virtual reality features and game controllers.
The BMX055 allows accurate measurements of angular rate, acceleration and geomagnetic fields in 3 perpendicular axes within one device. The programmable measurement ranges are ±2g, ±4g, ±8g, 16g for accelerometer, ±125°/s, ±250°/s, ±500°/s, ±1000°/s, ±2000°/s for gyroscope and 1300µT (x,y), 2500µT (z) for the magnetometer. The smallest to be distinguished magnitude from the measured value, or short for resolution, is 0.98mg, 0.004°/s and 0.3µT for accelerometer, gyroscope and magnetometer respectively.
There are several power modes configurable for each sensor intended for low-power applications and power saving. The data from sensors are acquired via selected digital interface either SPI or I2C, by reading the addresses directly. Featured IC possesses a 16bit gyroscope, 12bit accelerometer and a full performance geomagnetic sensor that provides data in 2’s complement representation. Measured data compensation and calibration are also included as an on-chip feature, as well as a temperature sensor for the reduction of temperature fluctuations on sensitive components.
9DOF 3 Click supports two serial digital interface protocols for communication as a slave with a host device: SPI and I2C. The active interface is selected by soldering the SMD jumpers to an appropriate position. The slave I2C address can also be configured by an SMD jumper when the Click board™ is operated in the I2C mode. The group of SMD jumpers labeled as ADDR SEL are used to set the I2C address of the BMX055.
The BMX055 module supports four interrupt pins for each sensor: Accel_INT, Gyro_INT, Mag_INT and DRDY. The sensor interrupt is selectable via one cross-shaped jumper selection and routed to the Mikrobus INT pin. There is also a header on top of the click with the breakout of all available sensors interrupt pins.
This Click Board™ is designed to be operated only with a 3.3V logic level. A proper logic voltage level conversion should be performed before the Click board™ is used with MCUs with different logic levels.
Specifications
Type
Acceleration,Gyroscope,Magnetic,Motion
Applications
Can be used for HMI and augmented reality, advanced gesture recognition, indoor navigation, tilt measurement and compensation, free-fall detection and drop detection for warranty logging, display profile switching, advanced system power management for mobile applications and menu scrolling, tap / double-tap sensing.
On-board modules
9DOF 3 Click uses the BMX055 IC, an integrated 9-axis sensor for the detection of movements and rotations and magnetic heading, from Bosch Sensortec.
Key Features
Three sensors in one device, Smart operation and integration, Consumer electronics suite, Programmable functionality, Ultra-low power IC
Interface
I2C,SPI
Feature
No ClickID
Compatibility
mikroBUS™
Click board size
M (42.9 x 25.4 mm)
Input Voltage
3.3V
Pinout diagram
This table shows how the pinout on 9DOF 3 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 |
---|---|---|---|
LD1 | PWR | – | Power LED Indicator |
JP1, JP5-JP9 | VCC SEL | Left | Communication interface selection: left position SPI, right position I2C |
JP2-JP4 | ADDR SEL | Left | I2C slave address selection: left position 0, right position 1 |
JP10,JP11 | INT SEL | Down | Sensor interrupt selection: Down – Accel, Top – Gyro, Left – Drdy, Right – Mag |
Maximum Ratings (Limiting Conditions)
Description | Min | Typ | Max | Unit | |
---|---|---|---|---|---|
Supply Voltage | -0.3 | 3.3 | 425 | V | |
Operating Temperature Range | -40 | – | 85 | V | |
None-volatile memory (NVM) Data Retention | 10 | – | – | Y | |
Acceleration Range | ±2 | – | ±16 | g | |
Gyroscope Range | ±125 | – | ±2000 | °/s | |
Magnetic Field Range | Brg,x,y | ±1200 | ±1300 | – | µT |
Brg,z | ±1200 | ±2500 | – | µT |
Software Support
We provide a library for the 9DOF 3 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
The library covers all the necessary functions to control 9DOF 3 click board. Library performs a standard I2C and SPI interface communication.
Key functions:
void c9dof3_multi_write ( uint8_t sel_mode, uint8_t reg, uint8_t *p_tx_data, uint8_t n_bytes )
– Generic write sequence function.void c9dof3_default_config ( void )
– Set default configuration function.void c9dof3_get_data ( c9dof3_accel_t *accel_data, c9dof3_gyro_t *gyro_data, c9dof3_mag_t *mag_data )
– Read Accel, Gyro and Mag data function.
Examples description
The application is composed of three sections :
- System Initialization – Initializes I2C/SPI and start to write log.
- Application Initialization – Initialization driver enables – I2C/SPI, check communication, set default configuration for accelerometer, gyroscope and magnetometer, also write log.
- Application Task – (code snippet) This is an example which demonstrates the use of 9DOF 3 Click board. Measured and display Accel, Gyroscope and Magnetometer data coordinates values for X-axis, Y-axis and Z-axis. Results are being sent to the Usart Terminal where you can track their changes. All data logs write on USB uart changes for every 1 sec.
void application_task( ) { c9dof3_get_data ( &accel_data, &gyro_data, &mag_data ); mikrobus_logWrite( " Accel X: ", _LOG_TEXT ); IntToStr( accel_data.x, log_text ); mikrobus_logWrite( log_text, _LOG_TEXT ); mikrobus_logWrite( " |", _LOG_TEXT ); mikrobus_logWrite( " Gyro X: ", _LOG_TEXT ); IntToStr( gyro_data.x, log_text ); mikrobus_logWrite( log_text, _LOG_TEXT ); mikrobus_logWrite( " |", _LOG_TEXT ); mikrobus_logWrite( " Mag X: ", _LOG_TEXT ); IntToStr( mag_data.x, log_text ); mikrobus_logWrite( log_text, _LOG_LINE ); mikrobus_logWrite( " Accel Y: ", _LOG_TEXT ); IntToStr( accel_data.y, log_text ); mikrobus_logWrite( log_text, _LOG_TEXT ); mikrobus_logWrite( " |", _LOG_TEXT ); mikrobus_logWrite( " Gyro Y: ", _LOG_TEXT ); IntToStr( gyro_data.y, log_text ); mikrobus_logWrite( log_text, _LOG_TEXT ); mikrobus_logWrite( " |", _LOG_TEXT ); mikrobus_logWrite( " Mag Y: ", _LOG_TEXT ); IntToStr( mag_data.y, log_text ); mikrobus_logWrite( log_text, _LOG_LINE ); mikrobus_logWrite( " Accel Z: ", _LOG_TEXT ); IntToStr( accel_data.z, log_text ); mikrobus_logWrite( log_text, _LOG_TEXT ); mikrobus_logWrite( " |", _LOG_TEXT ); mikrobus_logWrite( " Gyro Z: ", _LOG_TEXT ); IntToStr( gyro_data.z, log_text ); mikrobus_logWrite( log_text, _LOG_TEXT ); mikrobus_logWrite( " |", _LOG_TEXT ); mikrobus_logWrite( " Mag Z: ", _LOG_TEXT ); IntToStr( mag_data.z, log_text ); mikrobus_logWrite( log_text, _LOG_LINE ); mikrobus_logWrite( "-------------------------", _LOG_TEXT); mikrobus_logWrite( "-------------------------", _LOG_LINE ); Delay_ms( 1000 ); }
The full application code, and ready to use projects can be found on our LibStock page.
Other mikroE Libraries used in the example:
- I2C or SPI
- 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.