Position bestimmen
Gyroskop und Beschleunigungssensor MPU6050 (Lageerkennung)
Abschnitt betitelt „Gyroskop und Beschleunigungssensor MPU6050 (Lageerkennung)“Mit einem Gyroskop und einem Beschleunigungssensor, wie dem MPU6050, können Roboter ihre Lage und Bewegung im Raum erkennen. Das Gyroskop misst die Winkelgeschwindigkeit, während der Beschleunigungssensor die lineare Beschleunigung erfasst. Durch die Kombination dieser Daten können Roboter ihre Position und Orientierung bestimmen.
I2C Schnittstelle (Mini Exkurs)
Abschnitt betitelt „I2C Schnittstelle (Mini Exkurs)“I2C (Inter-Integrated Circuit) ist ein serielles Kommunikationsprotokoll, das es ermöglicht, mehrere Sensoren und Aktoren über nur zwei Leitungen (SCL für die Uhr und SDA für die Daten) mit einem Mikrocontroller zu verbinden. Es ist besonders nützlich für die Kommunikation mit Sensoren wie dem MPU6050, da es eine einfache und effiziente Möglichkeit bietet, Daten auszutauschen.
Schaltplan und Aufbau
Abschnitt betitelt „Schaltplan und Aufbau“Das MPU6050 Sensor Modul hat mehrere Pins wir benötigen aber nur vier Pins um ihn mit unserem ESP32 zu verbinden:
- VCC: Versorgungsspannung (+3.3V oder +5V)
- GND: Masse
- SCL: I2C-Schnittstelle (Clock)
- SDA: I2C-Schnittstelle (Data)
Im folgenden sehen Sie eine mögliche Verdrahtung.

Programmcode (Bibliothek)
Abschnitt betitelt „Programmcode (Bibliothek)“Wie für den Ultraschall Sensor gibt es auch für den MPU6050 bereits eine fertige Bibliothek, welche die Kommunikation mit dem Sensor vereinfacht.
Bilbothek auf GitHub
Bibliothek einbinden
Abschnitt betitelt „Bibliothek einbinden“Damit wir die Bibliothek nutzen können müssen wir sie zuerst in unser Projekt einbinden. Gehen Sie dazu wie folgt vor.
- Öffnen Sie Thonny und stecken Sie den ESP32 an.
- Laden Sie die Datei
mpu6050.pyherunter und öffnen Sie sie in Thonny. - Speichern Sie diese Datei unter dem Namen
mpu6050.pyauf dem Micropython Device. - Danach sollten Sie die neue Datei auf dem Gerät sehen können.
Bibliothek nutzen
Abschnitt betitelt „Bibliothek nutzen“Als nächsten Schritt müssen wir die Bibliothek in unsere main.py einbinden.
außerdem brauchen wir die Pin Klasse und I2C Klasse aus der machine Bibliothek um die Schnittstelle zu definieren, welche wir für die Kommunikation mit dem Sensor verwenden wollen.
from machine import Pin, I2Cfrom mpu6050 import MPU6050Zunächst müssen wir die I2C Schnittstelle definieren, welche wir für die Kommunikation mit dem Sensor verwenden wollen.
from machine import Pin, I2Cfrom mpu6050 import MPU6050
i2c = I2C(0, scl=Pin(22), sda=Pin(21))Anschließend können wir ein Objekt der Klasse MPU6050 erzeugen. Dem Konstruktor übergeben wir die I2C Schnittstelle, welche wir gerade definiert haben.
#...
i2c = I2C(0, scl=Pin(22), sda=Pin(21))mpu = MPU6050(i2c)Das Objekt speichern wir in der Variablen mpu.
Bevor wir Daten vom Sensor lesen können, müssen wir ihn zuerst aus dem Schlafmodus wecken. Dazu rufen wir die Methode wake() auf unserem mpu Objekt auf.
Danach können wir die aktuellen Werte des Gyroskops und des Beschleunigungssensors mit den Methoden read_gyro_data() und read_accel_data() auslesen.
# ...mpu = MPU6050(i2c)
mpu.wake() # wake up the MPU6050 from sleep
# Sensor Daten lesen.gyro = mpu.read_gyro_data()accel = mpu.read_accel_data()Beispielprogramm
Abschnitt betitelt „Beispielprogramm“Hier sehen Sie nochmal ein komplettes Beispiel auf einen Blick.
from machine import Pin, I2Cfrom mpu6050 import MPU6050import time
# ESP32 Pin assignmenti2c = I2C(0, scl=Pin(22), sda=Pin(21))mpu = MPU6050(i2c)
# wake up the MPU6050 from sleepmpu.wake()
# Init current orientationgyro = mpu.read_gyro_data()accel = mpu.read_accel_data()
# continuously print the datawhile True: new_gyro = mpu.read_gyro_data() new_accel = mpu.read_accel_data() if(new_gyro != gyro or new_accel != accel): gyro = new_gyro accel = new_accel print("Gyro: " + str(gyro) + ", Accel: " + str(accel)) time.sleep(0.1)Aufgabe: Orientierung messen
Abschnitt betitelt „Aufgabe: Orientierung messen“-
Bauen Sie die Schaltung auf.

Start Lab in Wokwi
-
Starten Sie das Programm und beobachten Sie die Ausgabe im Terminal. Drehen Sie den Sensor und sehen Sie, wie sich die Werte ändern.
-
Welche Werte ändern sich, wenn Sie den Sensor drehen? Welche Werte ändern sich, wenn Sie ihn bewegen?
-
Ändern Sie das Programm so ab, dass eine Meldung ausgegeben wird, wenn der Sensor in Ruhe ist. (Fahrzeug hat angehalten.)
-
Ändern Sie das Programm so ab, dass eine Meldung ausgegeben wird, in welche Himmelsrichtung der Sensor zeigt. (Norden, Osten, Süden, Westen)
Alles erledigt?
Abschnitt betitelt „Alles erledigt?“- Beispielprogramm getestet
- Stopmeldung implementiert
- Himmelsrichtung implementiert
Motor Encoder (Wegmessung)
Abschnitt betitelt „Motor Encoder (Wegmessung)“comming soon…