9DOF 3 Click Board
9DOF 3 Click Board
The 9DOF 3 Click Board™ introduces the BMX055, a small-scale absolute orientation sensor in the class of low-noise 9-axis measurement units, from Bosch Sensortec. It comprises the full functionality of a triaxial, low-g acceleration sensor, a triaxial angular rate sensor and a triaxial geomagnetic sensor. All three sensor components of the BMX055 can be operated and addressed independently from each other.
On top, the BMX055 integrates a multitude of features that facilitate its use especially in the area of motion detection applications, such as device orientation measurement, gaming, HMI or menu browser control. The 9DOF 3 Click Board™ offers both SPI and I2C digital interfaces for easy and fast system integration.
How Does The 9DOF 3 Click Board™ Work?
The 9DOF 3 Click Board™ 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 a 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.
The 9DOF 3 Click Board™ 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 labelled 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.
The 9DOF 3 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,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 | The 9DOF 3 Click Board™ 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 |
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 9DOF 3 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 | CS3 | Chip Select Mag | |
Chip Select Gyro | CS2 | 2 | RST | INT | 15 | INT | Interrupt |
SPI Select Accel | CS1 | 3 | CS | RX | 14 | NC | |
SPI Clock | SCK | 4 | SCK | TX | 13 | NC | |
SPI Data OUT | SDO | 5 | MISO | SCL | 12 | SCL | I2C Clock |
SPI Data IN | SDI | 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 |
---|---|---|---|
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 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
The library covers all the necessary functions to control the 9DOF 3 Click Board™. The 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.
Example 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 the default configuration for accelerometer, gyroscope and magnetometer, also write log.
- Application Task - (code snippet) This is an example that demonstrates the use of the 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 written 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 Information
Depending on the development board you are using, you may need a 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 9DOF 3 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.
Software Support
We provide a library for the 9DOF 3 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
The library covers all the necessary functions to control the 9DOF 3 Click Board™. The 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.
Example 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 the default configuration for accelerometer, gyroscope and magnetometer, also write log.
- Application Task - (code snippet) This is an example that demonstrates the use of the 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 written 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 Information
Depending on the development board you are using, you may need a 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 9DOF 3 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.
9DOF 3 Click Board
Frequently Asked Questions
Have a Question?
Be the first to ask a question about this.