Zpět na články

ESP32 + MPU-6050: akcelerometr a gyroskop v Arduino IDE (kompletní návod)

Návod, jak připojit MPU-6050 k ESP32 a měřit akceleraci, rotaci a teplotu v Arduino IDE.

ESP32 + MPU-6050: akcelerometr a gyroskop v Arduino IDE (kompletní návod)

Senzor MPU-6050 je velmi populární modul používaný v robotice, dronech nebo IoT projektech. Obsahuje totiž akcelerometr a gyroskop, takže dokáže měřit pohyb i orientaci zařízení v prostoru.

V tomto článku si ukážeme:

  • jak připojit MPU-6050 k ESP32
  • jak nainstalovat potřebné knihovny
  • jak číst data z akcelerometru a gyroskopu
  • jak zobrazit hodnoty v Serial Monitoru

Projekt je vhodný jako základ pro projekty jako:

  • stabilizace robotů
  • drony
  • detekce pohybu
  • měření orientace zařízení
ESP32 Blog image

Co je MPU-6050

MPU-6050 je tzv. IMU senzor (Inertial Measurement Unit), který kombinuje:

  • 3osý akcelerometr
  • 3osý gyroskop
  • teplotní senzor

Díky tomu dokáže měřit 6 stupňů volnosti (6-DOF) – pohyb a rotaci ve všech třech osách.

Akcelerometr měří zrychlení zařízení, například při pohybu nebo vliv gravitace. Gyroskop naopak měří úhlovou rychlost rotace kolem os X, Y a Z.

ESP32 Blog image

Hlavní vlastnosti MPU-6050

Senzor nabízí poměrně dobré parametry pro hobby projekty. Akcelerometr může pracovat v několika měřicích rozsazích – konkrétně ±2 g, ±4 g, ±8 g nebo ±16 g, takže je možné měřit jak jemné pohyby, tak rychlé změny zrychlení. Citlivost senzoru se přitom mění podle zvoleného rozsahu.

Gyroskop dokáže měřit úhlovou rychlost v rozsazích ±250, ±500, ±1000 nebo ±2000 stupňů za sekundu, což umožňuje sledovat pomalé i velmi rychlé rotace zařízení.

Senzor obsahuje také integrovaný 16bitový analogově-digitální převodník, který zajišťuje přesnější měření. Komunikace s mikrokontrolérem probíhá pomocí I2C sběrnice, takže zapojení je velmi jednoduché.

Co budete potřebovat

Pro tento projekt budete potřebovat:

  • ESP32 vývojovou desku
  • senzor MPU-6050
  • breadboard
  • propojovací vodiče

Výhodou je, že MPU-6050 komunikuje přes I2C, takže stačí jen čtyři vodiče.

ESP32 Blog image

Instalace knihoven v Arduino IDE

Nejprve je potřeba nainstalovat knihovny.

Postup:

  1. otevřete Arduino IDE
  2. klikněte na Tools → Manage Libraries
  3. vyhledejte a nainstalujte:
  • Adafruit MPU6050
  • Adafruit Unified Sensor
  • Adafruit BusIO

Tyto knihovny obsahují funkce pro jednoduché čtení dat ze senzoru.

ESP32 Blog image

ESP32 Blog image

Program pro ESP32 a MPU-6050

Následující program načítá data z:

  • akcelerometru
  • gyroskopu
  • teplotního senzoru

a vypisuje je do Serial Monitoru.

1#include <Adafruit_MPU6050.h> 2#include <Adafruit_Sensor.h> 3#include <Wire.h> 4 5Adafruit_MPU6050 mpu; 6 7void setup() { 8 9 Serial.begin(115200); 10 11 if (!mpu.begin()) { 12 Serial.println("Nepodařilo se najít MPU6050"); 13 while (1) { 14 delay(10); 15 } 16 } 17 18 Serial.println("MPU6050 nalezen!"); 19 20 mpu.setAccelerometerRange(MPU6050_RANGE_8_G); 21 mpu.setGyroRange(MPU6050_RANGE_500_DEG); 22 mpu.setFilterBandwidth(MPU6050_BAND_5_HZ); 23} 24 25void loop() { 26 27 sensors_event_t a, g, temp; 28 mpu.getEvent(&a, &g, &temp); 29 30 Serial.print("Akcelerometr X: "); 31 Serial.print(a.acceleration.x); 32 Serial.print(" m/s^2 "); 33 34 Serial.print("Y: "); 35 Serial.print(a.acceleration.y); 36 Serial.print(" m/s^2 "); 37 38 Serial.print("Z: "); 39 Serial.print(a.acceleration.z); 40 Serial.println(" m/s^2"); 41 42 Serial.print("Gyroskop X: "); 43 Serial.print(g.gyro.x); 44 Serial.print(" rad/s "); 45 46 Serial.print("Y: "); 47 Serial.print(g.gyro.y); 48 Serial.print(" rad/s "); 49 50 Serial.print("Z: "); 51 Serial.print(g.gyro.z); 52 Serial.println(" rad/s"); 53 54 Serial.print("Teplota: "); 55 Serial.print(temp.temperature); 56 Serial.println(" °C"); 57 58 Serial.println(); 59 60 delay(500); 61}

Zobrazení dat v Serial Monitoru

Po nahrání programu otevřete Serial Monitor a nastavte rychlost 115200 baud.

Výstup může vypadat například takto:

1Akcelerometr X: 0.12 m/s^2 Y: -0.05 m/s^2 Z: 9.81 m/s^2 2Gyroskop X: 0.01 rad/s Y: -0.02 rad/s Z: 0.00 rad/s 3Teplota: 28.3 °C

Pokud senzorem pohnete nebo ho otočíte, hodnoty se okamžitě změní.

Kalibrace senzoru

Při úplném klidu by měl gyroskop vracet hodnoty blízké 0. V praxi ale může mít malou odchylku způsobenou šumem senzoru.

Stejně tak u akcelerometru by při nehybném senzoru měla být hodnota:

  • osa Z přibližně 9.8 m/s² (gravitace)
  • osy X a Y blízko nule.

V reálných projektech se proto často používá kalibrace nebo filtry, které chyby kompenzují.

Jak projekt rozšířit

Tento projekt můžeš snadno rozšířit například o:

  • OLED displej pro zobrazení dat
  • výpočet roll a pitch úhlů
  • vizualizaci orientace v 3D
  • použití v balancing robotu
  • detekci pádu nebo náklonu

Shrnutí

V tomto návodu jsme si ukázali, jak připojit MPU-6050 k ESP32 a číst data z akcelerometru a gyroskopu pomocí Arduino IDE. Senzor dokáže měřit pohyb i rotaci ve třech osách, což z něj dělá ideální komponentu pro robotiku, drony nebo IoT projekty.

Nakupte svoje ESP32 ještě dnes!

Doprava Zásilkovnou za 89 Kč
Platba dobírkou
Vrácení do 30 dnů
Omezené zásoby - skladem

ESP32-S3 DevKit USB-C

Kompletní vývojová deska s USB-C

240MHz dvoujádrový
WiFi 802.11 b/g/n
Bluetooth 4.2 + BLE
4MB Flash paměť
520KB SRAM
38 GPIO pinů
209za kus

Množstevní slevy:

1
Celkem
209
Objednat

Bezpečná platba při převzetí zásilky nebo online platba přes Comgate, a.s.