13DOF Click Board
13DOF Click Board
Enhance your projects with the cutting-edge 13DOF Click Board. This remarkable board takes motion tracking to a new level of accuracy and functionality, catering to a wide range of applications, from immersive gaming to precise navigation.
The 13DOF Click Board integrates three high-performance sensor ICs by Bosch Sensortec, ensuring exceptional sensor data fusion. It features the BME680 sensor for digital gas, pressure, humidity, and temperature sensing, as well as the BMM150 geomagnetic sensor for enhanced location-based accuracy.
Developers working on mobile phones, smartwatches, fitness devices, or GPS systems can rely on the 13DOF Click Board for unparalleled precision and reliability in sensor data acquisition. The board is supported by a mikroSDK compliant library, simplifying software development, and comes fully tested and ready for immediate use in mikroBUS socket equipped systems.
Stay ahead in the rapidly evolving tech landscape with the 13DOF Click Board. This board is designed to meet the demands of modern technology, offering a perfect blend of accuracy, performance, and versatility to elevate user experiences across different platforms.
- Exceptional sensor data fusion with Bosch Sensortec ICs
- Compatibility with various applications including gaming and navigation
Specifications:
- Supported ICs: BME680, BMM150
- Compliance: mikroSDK
Software Support
We provide a library for the 13DOF 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 13DOF Click Board™. The library performs a standard I2C interface communication.
Key Functions
float c13dof_bme680_getAmbientData( uint8_t dataIn )
- Get BME680 ambient data function.void c13dof_bmm150_readGeoMagData( int16_t *magX, int16_t *magY, int16_t *magZ, uint16_t *resHall )
- Get BMM150 Geomagnetic sensors data function.void c13dof_bmi088_readAccel( int16_t *accelX, int16_t *accelY, int16_t *accelZ )
- Read Accel X-axis, Y-axis and Z-axis function.
Example Description
The application is composed of three sections :
- System Initialization - Initializes I2C and start to write log.
- Application Initialization - Initialization driver enables - I2C, initializes BME680 Low power gas, pressure, temperature & humidity sensor, BMI088 6-axis Motion Tracking Sensor and BMM150 Geomagnetic Sensor, also write log.
- Application Task - (code snippet) This is an example that demonstrates the use of the 13DOF Click Board™. Measured and display temperature in degrees Celsius [ °C ], humidity data [ % ], pressure [ mbar ] and gas resistance data from the BME680 sensor. Measured and display Accel and Gyro data coordinates values for X-axis, Y-axis and Z-axis from the BMI088 sensor. Measured and display Geomagnetic data coordinates values for X-axis, Y-axis and Z-axis from the BMM150 sensor. Results are being sent to the Usart Terminal where you can track their changes. All data logs write on USB UART change every 2 sec.
void applicationTask() { temperature = c13dof_bme680_getTemperature(); Delay_10ms(); mikrobus_logWrite( " | BME680 |", _LOG_LINE ); mikrobus_logWrite( "----------------------------------------------------------", _LOG_LINE ); mikrobus_logWrite( " ", _LOG_TEXT ); mikrobus_logWrite( " Temperature : ", _LOG_TEXT ); FloatToStr( temperature, logText ); mikrobus_logWrite( logText, _LOG_TEXT ); mikrobus_logWrite( degCel, _LOG_LINE ); humidity = c13dof_bme680_getHumidity(); Delay_10ms(); mikrobus_logWrite( " ", _LOG_TEXT ); mikrobus_logWrite( " Humidity : ", _LOG_TEXT ); FloatToStr( humidity, logText ); mikrobus_logWrite( logText, _LOG_TEXT ); mikrobus_logWrite( " %", _LOG_LINE ); pressure = c13dof_bme680_getPressure(); Delay_10ms(); mikrobus_logWrite( " ", _LOG_TEXT ); mikrobus_logWrite( " Pressure : ", _LOG_TEXT ); FloatToStr( pressure, logText ); mikrobus_logWrite( logText, _LOG_TEXT ); mikrobus_logWrite( " mbar", _LOG_LINE ); gasRes = c13dof_bme680_getGasResistance(); Delay_10ms(); mikrobus_logWrite( " ", _LOG_TEXT ); mikrobus_logWrite( " Gas Resistance : ", _LOG_TEXT ); LongWordToStr( gasRes, logText ); ltrim( logText ); mikrobus_logWrite( logText, _LOG_LINE ); mikrobus_logWrite( "----------------------------------------------------------", _LOG_LINE ); readyCheck = c13dof_bmm150_checkReady(); while ( readyCheck != _C13DOF_BMM150_DATA_READY ) { readyCheck = c13dof_bmm150_checkReady(); } c13dof_bmi088_readAccel( &accelX, &accelY, &accelZ ); Delay_10ms(); c13dof_bmi088_readGyro( &gyroX, &gyroY, &gyroZ ); Delay_10ms(); c13dof_bmm150_readGeoMagData( &magX, &magY, &magZ, &RHall ); Delay_10ms(); mikrobus_logWrite( " BMI088 | BMM150", _LOG_LINE ); mikrobus_logWrite( "----------------------------------------------------------", _LOG_LINE ); mikrobus_logWrite( "| Accel | Gyro | Mag |",_LOG_LINE ); mikrobus_logWrite( "----------------------------------------------------------", _LOG_LINE ); mikrobus_logWrite( " Accel X :", _LOG_TEXT ); IntToStr( accelX, logText ); mikrobus_logWrite( logText, _LOG_TEXT ); mikrobus_logWrite( " | ", _LOG_TEXT ); mikrobus_logWrite( " Gyro X :", _LOG_TEXT ); IntToStr( gyroX, logText ); mikrobus_logWrite( logText, _LOG_TEXT ); mikrobus_logWrite( " | ", _LOG_TEXT ); mikrobus_logWrite( " Mag X :", _LOG_TEXT ); IntToStr( magX, logText ); mikrobus_logWrite( logText, _LOG_TEXT ); mikrobus_logWrite( " | ", _LOG_LINE ); mikrobus_logWrite( " Accel Y :", _LOG_TEXT ); IntToStr( accelY, logText ); mikrobus_logWrite( logText, _LOG_TEXT ); mikrobus_logWrite( " | ", _LOG_TEXT ); mikrobus_logWrite( " Gyro Y :", _LOG_TEXT ); IntToStr( gyroY, logText ); mikrobus_logWrite( logText, _LOG_TEXT ); mikrobus_logWrite( " | ", _LOG_TEXT ); mikrobus_logWrite( " Mag Y :", _LOG_TEXT ); IntToStr( magY, logText ); mikrobus_logWrite( logText, _LOG_TEXT ); mikrobus_logWrite( " | ", _LOG_LINE ); mikrobus_logWrite( " Accel Z :", _LOG_TEXT ); IntToStr( accelZ, logText ); mikrobus_logWrite( logText, _LOG_TEXT ); mikrobus_logWrite( " | ", _LOG_TEXT ); mikrobus_logWrite( " Gyro Z :", _LOG_TEXT ); IntToStr( gyroZ, logText ); mikrobus_logWrite( logText, _LOG_TEXT ); mikrobus_logWrite( " | ", _LOG_TEXT ); mikrobus_logWrite( " Mag Z :", _LOG_TEXT ); IntToStr( magZ, logText ); mikrobus_logWrite( logText, _LOG_TEXT ); mikrobus_logWrite( " | ", _LOG_LINE ); mikrobus_logWrite( "----------------------------------------------------------", _LOG_LINE ); mikrobus_logWrite( "----------------------------------------------------------", _LOG_LINE ); Delay_1sec(); Delay_1sec(); }
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 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 13DOF 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.
13DOF Click Board
Frequently Asked Questions
Have a Question?
Be the first to ask a question about this.