Complete Guide: How to Connect MPU6050 to ESP32 - Physical Wiring and Code Setup

The ESP32 is a popular and versatile microcontroller and system-on-chip (SoC) that's widely used in various embedded systems and Internet of Things (IoT) projects. It was developed by Espressif Systems, a company based in China. The ESP32 is a successor to the ESP8266 and offers many improvements and additional features. In this tutorial, we show how to use the MPU6050 with this amazing microcontroller to start getting gyro and accelerometer values in real time, very easily with the Adafruit MPU6050 library in the Arduino IDE. All you will need is an ESP32 and a soldered MPU6050 which you can purchase here:

- Use Discount Code SHILLEHTEK for 30% Off!

Buy MPU6050 on ShillehTek

- Or buy it on Amazon

Buy MPU6050 on Amazon

The MPU6050 is a highly capable 6-axis motion tracking device, combining a 3-axis gyroscope and a 3-axis accelerometer on a single chip. It provides real-time motion data, which is essential for various applications in robotics, motion sensing, and interactive technology. Its versatility and functionality make it an invaluable component for hobbyists and professionals alike working on motion-related projects.

Recognizing the technical challenges that can come with micro-soldering delicate components, our MPU6050 modules at ShillehTek come pre-soldered. This not only saves you time and effort but also ensures that you get reliable and consistent performance right out of the box. Whether you're building your first project or a seasoned creator, our pre-soldered MPU6050 modules provide a convenient and hassle-free solution, letting you focus on the creative aspects of your projects.

Also, be sure to subscribe and support the channel if you have not!




1-) Physical Connection

You can see the physical connection is super simple as the module uses I2C communication so we only need 4 jumper wires to get started here!

Step 2-) Add the Board and Connect

Go to the boards manager in Arduino and search esp32. Download the boards by Espressif. Then you can select the board in Arduino IDE followed by the port (after you plug into your computer). You should be good to go there.

Step 3-) Add Adafruit MPU6050 Library

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

Go to Library Manager, 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) {
  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) {
  Serial.println("MPU6050 Found!");

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

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


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(", Y: ");
  Serial.print(", Z: ");
  Serial.println(" m/s^2");

  Serial.print("Rotation X: ");
  Serial.print(", Y: ");
  Serial.print(", Z: ");
  Serial.println(" rad/s");

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



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.

Create a free account to access full content.

All access to code and resources on ShillehTek.

Signup Now

Already a member? Sign In

Explore More on Our Blog

How to Use ADS1115 with the Raspberry Pi (Part 1)

How to Use ADS1115 with the Raspberry Pi (Part 1)

Discover how to expand your Raspberry Pi projects by integrating the ADS1115 ADC for precise analog signal reading....

How to Install Pip Packages in AWS Lambda Using Docker and ECR

How to Install Pip Packages in AWS Lambda Using Docker and ECR

Learn how to streamline AWS Lambda deployments by using Docker and Amazon Elastic Container Registry (ECR) to package...

Create Tabular Product Descriptions on Your Shopify Store

Create Tabular Product Descriptions on Your Shopify Store

Enhance your Shopify store's product pages with our comprehensive guide on implementing tabular descriptions. Learn how to add a...

SSH Into Raspberry Pi with Tailscale VPN

SSH Into Raspberry Pi with Tailscale VPN

Effortlessly access and manage your Raspberry Pi from anywhere using Tailscale's secure mesh VPN.

Send Email with Lua and the ESP32

Send Email with Lua and the ESP32

In this tutorial, we delve into sending emails with the ESP32-S3 using Lua, focusing on the Xedge IDE's built-in SMTP...

How to Code with Lua on ESP32 with XEdge32

How to Code with Lua on ESP32 with XEdge32

Learn how to set up Xedge32 and start coding on the ESP32-S3 with Lua programming!

Stream Audio From Raspberry Pi to Local Computer

Stream Audio From Raspberry Pi to Local Computer

Discover the simplicity of streaming live audio directly from a USB microphone connected to your Raspberry Pi to...

SSH Raspberry Pi via Cell Phone

SSH Raspberry Pi via Cell Phone

This beginner-friendly guide will walk you through remotely controlling your Raspberry Pi using SSH through your cell phone.

Remotely Control Raspberry Pi via SSH from External Network

Remotely Control Raspberry Pi via SSH from External Network

Learn how to SSH into your Raspberry Pi from any network. This is critical in IoT since you can control...

Stream Video from Raspberry Pi Camera to YouTube Live

Stream Video from Raspberry Pi Camera to YouTube Live

Learn how to stream to YouTube from a Raspberry Pi Camera.

Back to blog

Leave a comment

Please note, comments need to be approved before they are published.