The BME680 is a digital 4-in-1 sensor with VOC, humidity, pressure and temperature measurement based on proven sensing principles, housed in an extremely compact metal-lid LGA package. Its small dimensions and its low power consumption enable the integration in battery-powered or frequency-coupled devices, such as handsets or wearables. The BMX160 is a highly integrated, low power 9-axis sensor that provides precise acceleration and angular rate (gyroscopic) and geomagnetic measurement in each spatial direction. It integrates the 16-bit digital, triaxial accelerometer, 16-bit digital, triaxial gyroscope, and a geomagnetic sensor. 13DOF 2 click has these two ICs integrated onboard, which makes it a very powerful motion and sensing applications designing tool.
How does it work?
13DOF 2 click is based on the BME680 and the BMX160 sensor from Bosch Sensortec. Altogether, this Click board™ integrates a triaxial accelerometer, triaxial gyroscope, geomagnetic, VOC, humidity, pressure and temperature sensors on the single board. This allows very high integration and very small dimensions, at an affordable cost. The output of each MEMS is processed, digitized and available through the I2C or SPI communication interface. The data can be oversampled by the sensor ICs by themselves, in order to achieve as reliable data readings as possible.
As already mentioned, the BMX160 – a small, high performance, low power 9-axis sensor is in charge for the accelerometer gyroscope and geomagnetic measurements. It features very low power consumption: typ. 1585 µA in high performance mode or down to only 4 µA suspend mode. It has built-in timing unit to synchronize the sensor data, as well as the integrated 1024 byte FIFO buffer, in order to support low power applications and prevent data loss in non-real-time systems. The intelligent FIFO architecture allows dynamic reallocation of FIFO space for accelerometer, gyroscope and magnetometer, respectively. For typical 9-DoF applications, this is sufficient for approximately 0.5 s of data capture.
Besides the mentioned above, BMX160 also features an on-chip powerful programmable interrupt engine with two dedicated interrupt pins, enabling low-power motion-based context awareness. The interrupt engine can detect many different events, including any or no-motion detection, tap or double tap sensing, orientation detection, activity and inactivity recognition, Data Ready, FIFO full / FIFO watermark events, and more. Any of these events can be independently mapped to the above mentioned 2 interrupt output pins, via user programmable parameters. The INT 1 pin is routed to the mikroBUS™ INT pin, while the INT 2 pin is routed to the mikroBUS™ PWM pin. These pins are labeled as IT1 and IT2 on the Click board™, respectively. The datasheet of the BMX160 offers a full list of outputs and features, each with a detailed explanation.
On the other side, the BME680 – a small, high performance, low power, 4-in-1 sensor is in charge for the gas, humidity, pressure and temperature measurements. It also features very low power consumption, for example, 3.7 µA is typical at 1 Hz humidity, pressure and temperature measurement mode. It also features a very high accuracy humidity sensor (tolerance ±3% r.H. and hysteresis ±1.5% r.H.), pressure sensor with only 0.12 Pa RMS Noise (equivalent to to 1.7 cm of altitude) and a very low temperature offset drift, and a gas sensor with direct indoor air quality (IAQ) index output system. In principle, the IAQ index output is in an index that can have values between 0 and 500 with a resolution of 1 to indicate or quantify the quality of the air available in the surrounding. It greatly simplifies the categorization of the air quality measurements.
13DOF 2 click supports both SPI and I2C communication interfaces, allowing it to be used with a wide range of different MCUs. The communication interface can be selected by moving SMD jumpers grouped under the COMM SEL to an appropriate position (SPI or I2C). The slave I2C address can also be configured by an SMD jumper when the Click board™ is operated in the I2C mode an SMD jumper labeled as ADDR SEL is used to set the least significant bit (LSB) of the I2C address. Given that this is a dual IC Click Board™, it has two chip select pins, marked as CS1 and CS2, which are routed to the CS and RST pins on the mikroBUS™, respectively.
This Click Board™ uses both I2C and SPI communication interfaces. It is designed to be operated only with up to 3.3V logic levels. Proper conversion of logic voltage levels should be applied, before the Click board™ is used with MCUs operated at 5V.
Specifications
Type
Acceleration,Environmental,Gyroscope,Magnetic,Motion
Applications
It is a perfect solution for development of different types of motion detection and MotionTracking™ applications: motion-based game controllers, 3D and gesture controllers, IoT applications, wearable motion sensing applications, and similar applications.
On-board modules
BMX160 – Small, low power 9-axis sensor from bosch BME680 – Low power gas, pressure, temperature and humidity sensor from bosch
Key Features
very low power consumption, built-in timing unit to synchronize the sensor data, dynamic reallocation of FIFO space
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 13DOF 2 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 | COMM SEL | Right | Communication interface selection: left position SPI, right position I2C |
JP6 | ADDR SEL | Right | Slave I2C address LSB selection: left position 1, right position 0 |
Software Support
We provide a library for the 13DOF 2 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 contains basic functions for starting both sensors and reading data that the sensors measure.
Key functions:
void c13dof2_bmx160_getAxis(uint8_t sensor, T_C13DOF2_BMX160_AXIS *sAxis)
– Reads Axis data from the BMX160 sensor (Accel, Gyro, Magnetic).uint16_t c13dof2_bmx160_getStepCounter()
– Read Step counter.float c13dof2_bme680_getAmbientData(uint8_t dataIn)
– Reads Environmental data from BME680 sensor (VOC, Temperature, Pressure and Humidity).
Examples description
The application is composed of three sections :
- System Initialization – Initialization I2C or SPI module and sets all the necessary GPIO pins.
- Application Initialization – Initializes the driver init, checks the communication and starts configuration for chips BMX160 and BME680.
- Application Task – This example reads all parameters from those sensors (Acceleration, Gyro, Magnetic, Temperature, etc.) and shows them on USB UART log.
void applicationTask() { /* BMX160 */ c13dof2_bmx160_getAxis(_C13DOF2_BMX160_DATA_ACCEL, &Accel); c13dof2_bmx160_getAxis(_C13DOF2_BMX160_DATA_GYRO, &Gyro); c13dof2_bmx160_getAxis(_C13DOF2_BMX160_DATA_MAGNET, &Magnet); temperature_bmx160 = c13dof2_bmx160_internalTemperature(); step_counter = c13dof2_bmx160_getStepCounter(); c13dof2_bmx160_getInterruptStatus(&status); /* BME680 */ temperature = c13dof2_bme680_getAmbientData(_C13DOF2_BME680_DATA_TEMPERATURE); pressure = c13dof2_bme680_getAmbientData(_C13DOF2_BME680_DATA_PRESSURE); humidity = c13dof2_bme680_getAmbientData(_C13DOF2_BME680_DATA_HUMIDITY); gas = c13dof2_bme680_getGasResistance(); mikrobus_logWrite( "-------------------------------------------------------" , _LOG_LINE ); mikrobus_logWrite( "------ BMX160 DATA ------", _LOG_LINE ); _displayData_BMX160(); mikrobus_logWrite( "------ BME680 DATA ------", _LOG_LINE ); _displayData_BME680(); mikrobus_logWrite( " ", _LOG_LINE ); Delay_ms( 1000 ); }
Additional Functions :
- void _interruptDetect() – display interupt state (TAP status)
- void _displayData_BMX160() – display BMIX160 data (Accel, Gyro, Magnetic, Step counter, and internal senzor Temperature)
- void _displayData_BME680() – display BME680 data (Temperature, Pressure, Humidity and VOC resistance)
The full application code, and ready to use projects can be found on our LibStock page.
Other mikroE Libraries used in the example:
- I2C library
- SPI Library
- UART Library
- Conversions Library
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.
VOC library
The Libstock page for the 13DOF 2 click offers a library for for accel, gyro, magnetic, step counter, temperature, humidity, and pressure readings. To get the library for air quality (VOC) measurements, visit the Bosch website and download the VOC library file for mikroC (libalgobsec.emcl).
The run-in phase for VOC measuring is approximately 5 minutes.
Note: Once you go to the Bosch website, you will need to read and agree with the terms of the software license agreement, before you can download the VOC library.
For more information about the 13DOF 2 click library, see our Libstock page.
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.