Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

How to Use BMI160 Accelerometer Gyro - 6DOF sensor: Examples, Pinouts, and Specs

Image of BMI160 Accelerometer Gyro - 6DOF sensorDesign with BMI160 Accelerometer Gyro - 6DOF sensor in Cirkit Designer

Introduction

The BMI160 Accelerometer Gyro is a compact 6 Degrees of Freedom (6DOF) sensor that integrates a 3-axis accelerometer and a 3-axis gyroscope into a single chip. Manufactured by Winwin, the BMI160 is designed for use in mobile and wearable devices due to its small form factor and low power consumption. It is ideal for applications such as gesture recognition, pedometer, gaming, navigation, and virtual reality.

Explore Projects Built with BMI160 Accelerometer Gyro - 6DOF sensor

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Image of SparkFun Pro Micro Based Motion Tracking System with BMI160 and EEPROM Data Logging: A project utilizing BMI160 Accelerometer Gyro - 6DOF sensor in a practical application
SparkFun Pro Micro Based Motion Tracking System with BMI160 and EEPROM Data Logging

This circuit is designed for motion sensing and data logging applications. It features a SparkFun Pro Micro microcontroller interfaced with a BMI160 6DOF sensor for motion detection and two 24LC512 EEPROM chips for extended data storage. The microcontroller reads gyroscopic and accelerometer data from the BMI160 sensor, processes it, and stores it in the EEPROM, with power supplied by a Polymer Lithium Ion Battery.

Open Project in Cirkit Designer
Image of Bluetooth-Enabled Wearable Motion Sensor with Rechargeable Battery: A project utilizing BMI160 Accelerometer Gyro - 6DOF sensor in a practical application
Bluetooth-Enabled Wearable Motion Sensor with Rechargeable Battery

This circuit features an Arduino Nano interfaced with an HC-05 Bluetooth module, a BMI160 6DOF sensor, and multiple flex resistors. It is powered by a polymer lithium-ion battery through a lipo battery charger module and a step-up boost converter. The primary function appears to be wireless sensor data collection and transmission, with the flex resistors possibly serving as input devices and the accelerometer/gyro for motion tracking.

Open Project in Cirkit Designer
Image of Arduino Nano and MPU6050 Based Gesture-Controlled Robotic Arm with Bluetooth Connectivity: A project utilizing BMI160 Accelerometer Gyro - 6DOF sensor in a practical application
Arduino Nano and MPU6050 Based Gesture-Controlled Robotic Arm with Bluetooth Connectivity

This circuit features multiple MPU6050 accelerometer and gyroscope sensors interfaced with Arduino Nano microcontrollers, likely for capturing motion data. The Arduinos are programmed to read sensor data, calibrate input from potentiometers, and control LEDs. Communication with a Bluetooth module suggests wireless data transmission, possibly to a robotic arm or remote system, based on the motion and flex sensor inputs.

Open Project in Cirkit Designer

Technical Specifications

Key Features

Pin Configuration and Descriptions

Pin Number Pin Name Description
1 VDD Power supply voltage (1.71 V to 3.6 V)
2 GND Ground
3 SCL/SCLK I2C clock / SPI serial clock
4 SDA/SDI I2C data / SPI serial data input
5 SDO SPI serial data output
6 CS SPI chip select (active low)
7 INT1 Interrupt 1 (programmable)
8 INT2 Interrupt 2 (programmable)

Usage Instructions

Integration into a Circuit

  1. Power Supply: Connect the VDD pin to a power source between 1.71 V and 3.6 V and the GND pin to the ground.
  2. Communication Interface: Choose between I2C or SPI for communication with a microcontroller like the Arduino UNO.
    • For I2C, connect SCL to the I2C clock and SDA to the I2C data.
    • For SPI, connect SCLK to the SPI clock, SDI to the SPI data input, SDO to the SPI data output, and CS to the chip select.
  3. Interrupts: The INT1 and INT2 pins can be configured to output interrupt signals for various sensor events.

Best Practices

Example Arduino Code

#include <Wire.h>
#include <BMI160Gen.h>

BMI160Gen mySensor;

void setup() {
  Wire.begin();
  Serial.begin(9600);
  if (mySensor.begin(BMI160Gen::I2C_MODE, Wire) == false) {
    Serial.println("BMI160 not found. Please check wiring/power.");
    while (1);
  }
}

void loop() {
  float ax, ay, az, gx, gy, gz;
  mySensor.readMotionSensor(ax, ay, az, gx, gy, gz);
  
  Serial.print("Accel: ");
  Serial.print(ax); Serial.print(", ");
  Serial.print(ay); Serial.print(", ");
  Serial.println(az);
  
  Serial.print("Gyro: ");
  Serial.print(gx); Serial.print(", ");
  Serial.print(gy); Serial.print(", ");
  Serial.println(gz);
  
  delay(100);
}

Troubleshooting and FAQs

Common Issues

FAQs

Q: Can the BMI160 be used for both I2C and SPI simultaneously? A: No, the BMI160 can be configured to use either I2C or SPI, but not both at the same time.

Q: What is the purpose of the INT1 and INT2 pins? A: These pins can be programmed to trigger interrupts for specific events like motion detection, data ready, and tap sensing.

Q: How do I calibrate the BMI160 sensor? A: Calibration procedures can vary; refer to the manufacturer's datasheet for specific calibration instructions.

Q: Is the BMI160 suitable for outdoor applications? A: The BMI160 can operate in temperatures ranging from -40°C to +85°C, making it suitable for many outdoor applications. However, it should be protected from moisture and other environmental factors that could damage the sensor.