MPU 6050
Jump to navigation
Jump to search
Contents
Description[edit]
The MPU-6050 is a sensor that combines a 3-axis gyroscope and 3-axis accelerometer. Here it is used as the GY-521 module that can be directly connected to the ESP32/ES8266. The module is connected via the I2C bus.
more details for advanced users:
How to connect it electrically[edit]
The MPU 6050 is connected to the I2C bus. This is the same as where the display is connected.
- Pin15 is SCL (OLED_SCL)
- Pin4 is SDA (OLED_SDA)
Example connection to the ESP32 This shows all values of the MPU6050 on the OLED Display. It assumes the following connections:
- GND on GY521/MPU6050 to GND on ESP32
- VCC on GY521/MPU6050 to 3.3V on ESP32
- SCL on GY521/MPU6050 to OLED_SCL/Pin15/SCL on ESP32
- SDA on GY521/MPU6050 to OLED_SDA/Pin4/SDA on ESP32
Required Module and Files[edit]
- We use two modules:
- this is downloaded from https://github.com/micropython-IMU/micropython-mpu9x50
- the original files are at
There are other libraries available, e.g. https://github.com/adamjezek98/MPU6050-ESP8266-MicroPython
How to control it in MicroPython[edit]
1 from machine import I2C, Pin
2 from imu import MPU6050
3
4 # Pins according the schematic https://heltec.org/project/wifi-kit-32/
5 i2c = I2C(-1, scl=Pin(15), sda=Pin(4))
6
7 imu = MPU6050(i2c)
8
9 # print all values
10 print(imu.accel.xyz)
11 print(imu.gyro.xyz)
12 print(imu.temperature)
13
14 #print a single value, e.g. x value of acceleration
15 print(imu.accel.x)
Related Tutorial Videos[edit]
Program: Showing all Values on the Display[edit]
This shows all values of the MPU6050 on the OLED Display. It assumes the following connections:
- GND on GY521/MPU6050 to GND on ESP32
- VCC on GY521/MPU6050 to 3.3V on ESP32
- SCL on GY521/MPU6050 to OLED_SCL/Pin15/SCL on ESP32
- SDA on GY521/MPU6050 to OLED_SDA/Pin4/SDA on ESP32
1 from machine import I2C, Pin
2 import ssd1306
3 from imu import MPU6050
4 from time import sleep
5
6 # ESP32 reset pin for display must be 1 - this is pin16
7 # should be done in ssd1306.py - if not uncommend the next 2 lines
8 #pin16 = Pin(16, Pin.OUT)
9 #pin16.value(1)
10
11
12 # Pins according the schematic https://heltec.org/project/wifi-kit-32/
13 i2c = I2C(-1, scl=Pin(15), sda=Pin(4))
14
15 #display size
16 oled_width = 128
17 oled_height = 64
18 oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
19
20 #link IMU to the i2C bus
21 imu = MPU6050(i2c)
22
23 while True:
24 # read in analog value in v
25 x = imu.accel.x
26 y = imu.accel.y
27 z = imu.accel.z
28 xg = imu.gyro.x
29 yg = imu.gyro.y
30 zg = imu.gyro.z
31 t = imu.temperature
32
33 # print to serial line
34 print("x:", x, "y: ", y, "z:", z)
35 # empty display
36 oled.fill(0)
37 oled.show()
38 # write v converted to a string onto the display at (0,0)
39 oled.text("x:"+str(x), 0, 0)
40 oled.text("y:"+str(y), 0, 9)
41 oled.text("z:"+str(z), 0, 18)
42 oled.text("xg:"+str(xg), 0, 27)
43 oled.text("yg:"+str(yg), 0, 36)
44 oled.text("zg:"+str(zg), 0, 45)
45 oled.text("t:"+str(t), 0, 54)
46 oled.show()
47 sleep(0.3)