Skip to main content

Controlling Servo Motor With MPU6050 Gyro Sensor Using ESP32 Beginners Projects

 


Controlling Servo With MPU6050 Gyro Sensor Using ESP32 - Servo Control Using ESP32

MPU6050 measures accelerometer + gyroscope. Code calculates pitch from accelerometer (X tilt). The pitch (range -90° to +90°) is mapped to servo angles (0°–180°). The servo on GPIO 13 moves according to tilt.

📌 Wiring:-


MPU6050 → ESP32

VCC → 3.3V

GND → GND

SDA → GPIO 21 (default I²C SDA on ESP32)

SCL → GPIO 22 (default I²C SCL on ESP32)


Servo → ESP32

Signal (orange/yellow) → GPIO 13

VCC (red) → 5V (use external supply if possible, not directly from ESP32)

GND (black/brown) → GND (common ground with ESP32 & MPU6050)

⚠️ Important: Servos draw a lot of current → use an external 5V supply for the servo, not just the ESP32’s 5V pin.


Controlling servo with mpu6050 Using Esp32



Full Code:- 

#include <Wire.h>

#include <Adafruit_MPU6050.h>

#include <Adafruit_Sensor.h>

#include <ESP32Servo.h>

Adafruit_MPU6050 mpu;

Servo myServo;

int servoPin = 13;  // PWM pin for servo

void setup() {

  Serial.begin(115200);

  // Initialize MPU6050

  if (!mpu.begin()) {

    Serial.println("Failed to find MPU6050 chip");

    while (1) {

      delay(10);

    }

  }

  Serial.println("MPU6050 Found!");

  mpu.setAccelerometerRange(MPU6050_RANGE_8_G);

  mpu.setGyroRange(MPU6050_RANGE_500_DEG);

  mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);

  delay(100);

  // Attach servo

  myServo.attach(servoPin);

}

void loop() {

  sensors_event_t a, g, temp;

  mpu.getEvent(&a, &g, &temp);

  // Calculate pitch angle from accelerometer

  float pitch = atan2(a.acceleration.y, a.acceleration.z) * 180 / PI;

  // Map pitch (-90 to 90) → servo (0 to 180)

  int servoAngle = map(pitch, -90, 90, 0, 180);

  // Constrain to avoid errors

  servoAngle = constrain(servoAngle, 0, 180);

  myServo.write(servoAngle);

  Serial.print("Pitch: ");

  Serial.print(pitch);

  Serial.print("°  →  Servo: ");

  Serial.println(servoAngle);

  delay(20); // Small delay for smooth motion

}


👉Project All Parts Amazon Link:- Click Here👈


Comments

Popular posts from this blog

Clap On Off Switch Circuit Using Arduino

  Arduino Clap LED program #define MicAO 8 int ledPin = 13; int clap = 0; long detection_range_start = 0; long detection_range = 0; boolean status_lights = false; void setup() {   pinMode(MicAO, INPUT);   pinMode(ledPin,OUTPUT);   } void loop() { int status_MicAO = digitalRead(MicAO); if (status_MicAO == 0) { if (clap == 0) { detection_range_start = detection_range = millis(); clap++; } else if (clap > 0 && millis()-detection_range >= 50) { detection_range = millis(); clap++; } } if (millis()-detection_range_start >= 400) { if (clap == 2) { if (!status_lights) { status_lights = true; digitalWrite(ledPin, HIGH); } else if (status_lights) { status_lights = false; digitalWrite(ledPin, LOW); } } clap = 0; } }

IOT Based Water Level Indicator Project Using Esp32 And Ultrasonic Sensor

  Water Level Indicator Project Using ESP32   Water Level Indicator with Alarm on Tank Full.   IoT Wi-Fi smart water level indicator for tanks with mobile app control . 📟 OLED Display (0.96" I2C SSD1306)   OLED Pin         ESP32 Pin VCC                     3.3V GND                     GND SDA                    GPIO 21 SCL                      GPIO 22     🔔 BUZZER   Buzzer Pin        ESP32 Pin   +           GPIO 26 -            GND         Each LED connects to an ESP32 GPIO pin via a current-limiting resistor.   ...

DIY ORTOMI ROBOT FACE USING ESP32 CONNECTION DIAGRAM

  0.96” I2C   28x64 SSD1306 OLED Display Wiring :- VCC – 3.3V GND – GND SCL(OLED) – GPIO 22 ( ESP32 ) SDA(OLED) – GPIO 21 ( ESP32 )   TTP223 Touch Sensor Wiring :- VCC – 3.3V {Add 10R resistor with this pin} (ESP32) GND – GND (ESP32) I / O   – GPIO 14 (ESP32)   Speaker OR Buzzer :-   + POSITIVE –   GPIO 25 (ESP32) - NEGETIVE - GND (ESP32)   Required Libraries to Install:- Adafruit_GFX Adafruit_SSD1306 Wire     Note:- Download Emotions.h and SoundFX.h file for link below and paste in same folder where code.uno file save.     Full Code:- RobotFace.ino #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> //#include "Emotions.h" #include "Emotions_CLEAN.h" #include "SoundFX.h"   #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET     -1 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_H...