DEV Community

Cover image for How to Connect MPU6050 to Arduino Nano Every
Shilleh
Shilleh

Posted on

How to Connect MPU6050 to Arduino Nano Every

The Nano Every is Arduino's smallest board with dimensions of only 45x18mm and a weight under 5g. It is based on the ATMega4809 AVR processor and has 20 MHz clock speed, 48 KB of flash memory, 6 KB of SRAM, and 256 bytes of EEPROM. It also has two 15-pin connectors (one on each side) that are pin-to-pin compatible with the original Arduino Nano.

The Nano Every is a great choice for projects that require a small and powerful microcontroller board. It is also a good option for beginners who want to learn about Arduino programming, as it is very similar to the Arduino Uno.

In this tutorial, we will be showing how to simply connect it with the MPU6050 6DOF accelerometer to start getting acceleration and gyroscopic values in the Arduino IDE. This is very simple thanks to I2C communication, we only need 4 jumper wires. The prerequisite is that you have soldered parts.

Step 1-) Connect Your Device with Jumper Wires and Plug into Power

Image description

Step 2-) Add Arduino megaAVR Boards from the Boards Manager

Open Arduino IDE and open the Boards Manager on the side.

Add the Arduino megaAVR so that you can connect to the Arduino Every.

Select the board and the port once done.

Step 3-) Add Adafruit MPU6050 Library

Adafruit has a convenient library that you can download straight from the Arduino IDE

Go to Library Manager and search MPU6050, and select the Adafruit MPU6050 library.

Step 4-) Run Example Script
They also have example scripts in their library now that you have it downloaded.

Go to File > Examples

In the section, you will see examples from external libraries, select the basic_readings example

You can upload this to your board right away if you have your connections ready and you should start seeing readings in the serial monitor. Make sure you open the serial monitor with the correct Baud Rate

The full code is here

// Basic demo for accelerometer readings from Adafruit MPU6050

#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>

Adafruit_MPU6050 mpu;

void setup(void) {
  Serial.begin(115200);
  while (!Serial)
    delay(10); // will pause Zero, Leonardo, etc until serial console opens

  Serial.println("Adafruit MPU6050 test!");

  // Try to initialize!
  if (!mpu.begin()) {
    Serial.println("Failed to find MPU6050 chip");
    while (1) {
      delay(10);
    }
  }
  Serial.println("MPU6050 Found!");

  mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
  Serial.print("Accelerometer range set to: ");
  switch (mpu.getAccelerometerRange()) {
  case MPU6050_RANGE_2_G:
    Serial.println("+-2G");
    break;
  case MPU6050_RANGE_4_G:
    Serial.println("+-4G");
    break;
  case MPU6050_RANGE_8_G:
    Serial.println("+-8G");
    break;
  case MPU6050_RANGE_16_G:
    Serial.println("+-16G");
    break;
  }
  mpu.setGyroRange(MPU6050_RANGE_500_DEG);
  Serial.print("Gyro range set to: ");
  switch (mpu.getGyroRange()) {
  case MPU6050_RANGE_250_DEG:
    Serial.println("+- 250 deg/s");
    break;
  case MPU6050_RANGE_500_DEG:
    Serial.println("+- 500 deg/s");
    break;
  case MPU6050_RANGE_1000_DEG:
    Serial.println("+- 1000 deg/s");
    break;
  case MPU6050_RANGE_2000_DEG:
    Serial.println("+- 2000 deg/s");
    break;
  }

  mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
  Serial.print("Filter bandwidth set to: ");
  switch (mpu.getFilterBandwidth()) {
  case MPU6050_BAND_260_HZ:
    Serial.println("260 Hz");
    break;
  case MPU6050_BAND_184_HZ:
    Serial.println("184 Hz");
    break;
  case MPU6050_BAND_94_HZ:
    Serial.println("94 Hz");
    break;
  case MPU6050_BAND_44_HZ:
    Serial.println("44 Hz");
    break;
  case MPU6050_BAND_21_HZ:
    Serial.println("21 Hz");
    break;
  case MPU6050_BAND_10_HZ:
    Serial.println("10 Hz");
    break;
  case MPU6050_BAND_5_HZ:
    Serial.println("5 Hz");
    break;
  }

  Serial.println("");
  delay(100);
}

void loop() {

  /* Get new sensor events with the readings */
  sensors_event_t a, g, temp;
  mpu.getEvent(&a, &g, &temp);

  /* Print out the values */
  Serial.print("Acceleration X: ");
  Serial.print(a.acceleration.x);
  Serial.print(", Y: ");
  Serial.print(a.acceleration.y);
  Serial.print(", Z: ");
  Serial.print(a.acceleration.z);
  Serial.println(" m/s^2");

  Serial.print("Rotation X: ");
  Serial.print(g.gyro.x);
  Serial.print(", Y: ");
  Serial.print(g.gyro.y);
  Serial.print(", Z: ");
  Serial.print(g.gyro.z);
  Serial.println(" rad/s");

  Serial.print("Temperature: ");
  Serial.print(temp.temperature);
  Serial.println(" degC");

  Serial.println("");
  delay(500);
}
Enter fullscreen mode Exit fullscreen mode

Conclusion:
That is it for this example, with the basic example you can customize it and add logic as you see fit.

If you enjoyed this quick tutorial and it made your life easier be sure to subscribe to the Youtube Channel by going to the video at the beginning of this tutorial and hitting subscribe. Let us know if you have any questions about this. Thanks for your time.

Top comments (0)