Skip to main content
Integrated sensor with 3-axis accelerometer, 3-axis gyroscope and a temperature sensor with I2C interface.

Pin names

VCC
Power
Voltage supply
GND
Ground
Ground
SCL
I2C
I2C clock line
SDA
I2C
I2C data line
XDA
Not Implemented
Unused - not currently implemented in the simulator
XCL
Not Implemented
Unused - not currently implemented in the simulator
AD0
Digital Input
Address select pin
INT
Digital Output
Interrupt
The XDA and XCL pins are not currently implemented in the simulator. If you need them, please open a request, and describe your use case.
You normally only need to connect the VCC, GND, SCL, and SDA pins. The I2C address of the device is 0x68. You can change the address of 0x69 by connecting the AD0 pin to VCC.

Attributes

accelX
string
default:"0"
Initial x acceleration value (g)
accelY
string
default:"0"
Initial y acceleration value (g)
accelZ
string
default:"1"
Initial z acceleration value (g)
rotationX
string
default:"0"
Initial x rotation value (deg/sec)
rotationY
string
default:"0"
Initial y rotation value (deg/sec)
rotationZ
string
default:"0"
Initial z rotation value (deg/sec)
temperature
string
default:"24"
Initial temperature value (celsius)

Units

All the acceleration values (x/y/z) use g-force units, where 1g = 9.80665 m/s². The gyroscope measures angular rotation and returns the number of degrees per second.

Arduino code example

The example below uses the Adafruit MPU6050 library to read and display the acceleration values from the sensor. On Arduino Uno, connect the SDA pin to A4, and the SCL pin to A5.
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>

Adafruit_MPU6050 mpu;

void setup(void) {
  Serial.begin(115200);

  while (!mpu.begin()) {
    Serial.println("MPU6050 not connected!");
    delay(1000);
  }
  Serial.println("MPU6050 ready!");
}

sensors_event_t event;

void loop() {
  mpu.getAccelerometerSensor()->getEvent(&event);

  Serial.print("[");
  Serial.print(millis());
  Serial.print("] X: ");
  Serial.print(event.acceleration.x);
  Serial.print(", Y: ");
  Serial.print(event.acceleration.y);
  Serial.print(", Z: ");
  Serial.print(event.acceleration.z);
  Serial.println(" m/s^2");
  delay(500);
}
Run this example on Wokwi

Automation controls

The mpu6050 sensor can be controlled using Automation Scenarios. The names of the controls match the names of the attributes defined above:
accelX
float
Set the x acceleration value (g)
accelY
float
Set the y acceleration value (g)
accelZ
float
Set the z acceleration value (g)
rotationX
float
Set the x rotation value (deg/sec)
rotationY
float
Set the y rotation value (deg/sec)
rotationZ
float
Set the z rotation value (deg/sec)
temperature
float
Set the temperature value (celsius)
The following example set the temperature to 25°C:
- set-control:
    part-id: imu1
    control: temperature
    value: 25

Simulator examples

Build docs developers (and LLMs) love