Raspberry Pi Pico: Position und Lage erkennen mit MPU-6050

Mit dem Raspberry Pi Pico kann man die Sensordaten des MPU-6050 auswerten und die Position bzw. Lage des Sensors ermitteln. Damit kannst du ein elektronisches Gerät realisieren, dass erkennen kann, ob es auf einer bestimmten Seite liegt oder auf dem Kopf steht. Es wäre denkbar, dass das Gerät abhängig von der Position bzw. Lage eine bestimmte Funktion ausführt.

Stelle dir vor, der vorliegende Aufbau wäre in einen Würfel eingebaut. Ein Würfel hat 6 Seiten. Wir wollen feststellen auf welcher Seite der Würfel liegt. Dazu ist im folgenden Programmcode eine Auswertung der Beschleunigungsdaten vorgesehen, aus denen die Lage ermittelt wird.

Vielleicht hast du dann weitere Ideen, wie du aus dem Beschleunigungsdaten innovative Anwendungen entwickeln kannst.

Aufbau und Bauteile

Raspberry Pi Pico: MPU-6050 programmieren

Raspberry Pi Pico MPU-6050
Pin 38 GND GND
Pin 36 VCC +3,3V VCC
Pin 27 GPIO 21 SCL
Pin 26 GPIO 20 SDA

Hinweis: Man sollte beachten, dass das MPU-6050-Modul nur an einer Seite eine Steckleiste hat. Wenn man es auf einem Steckbrett befestigt, dann besteht die Gefahr, dass es schief steckt. Dadurch können die Werte des Beschleunigungssensors von den erwarteten Werten abweichen.

MicroPython-Bibliothek für MPU-6050

Damit der MPU-6050 programmiert werden kann, müssen zwei externe Bibliotheken auf dem Raspberry Pi Pico geladen und im Verzeichnis lib gespeichert werden.

I2C verbinden und programmieren

Schnell und einfach alle Bauteile zusammen bestellen

Programmcode

Es geht in diesem Programmcode darum, die Lage des MPU-6050 zu erkennen. Der Programmcode liest die Beschleunigungsdaten vom Sensor und ermittelt dann, welche Lage er hat. Das tut er regelmäßig und die Ausgabe erfolgt nur dann, wenn die Lage sich verändert hat.
Damit das funktioniert, sind 6 Positionen definiert. Das entspricht einem Würfel, der 4 Seiten hat und zusätzlich eine Ober- und Unterseite. Zusammen sind das 6 Positionen, die sich vom Programmcode eindeutig identifizieren lassen. Natürlich gibt es dazwischen weitere Positionen, die wir an der Stelle als nicht eindeutig erkennen, weil der Würfel nicht auf einer seiner Flächen steht, sondern zur Seite geneigt ist.

Im Programmcode sind die Positionen von 0 bis 6 definiert. Wobei die Position 0 als nicht eindeutig definiert ist. Das bedeutet, der Würfel würde nicht klar auf einer Seite liegen, sondern nur zu irgendeiner Seite geneigt sein.

# Bibliotheken laden
import machine
import time
from imu import MPU6050

# I2C-Pins
i2c_sda = machine.Pin(20)
i2c_scl = machine.Pin(21)

# Initialisierung I2C
i2c = machine.I2C(0, sda=i2c_sda, scl=i2c_scl, freq=100000)

# Initialisierung MPU-6050
imu = MPU6050(i2c)
time.sleep(2) # Warten bis Initialisierung fertig ist

# Wiederholung (Endlos-Schleife)
while True:
    time.sleep(.2)
    # Messwerte für X, Y und Z
    acc_x = round(imu.accel.x * 10)
    acc_y = round(imu.accel.y * 10)
    acc_z = round(imu.accel.z * 10)
    # Lage ermitteln
    if acc_x in range(-2, 2) and acc_y in range (-2, 2) and acc_z >= 8: pos = 1
    elif acc_x <= -8 and acc_y in range (-2, 2): pos = 2
    elif acc_x >= 8 and acc_y in range (-2, 2): pos = 3
    elif acc_x in range (-2, 2) and acc_y <= -8: pos = 4
    elif acc_x in range (-2, 2) and acc_y >= 8: pos = 5
    elif acc_x in range (-2, 2) and acc_y in range (-2, 2) and acc_z <= -8: pos = 6
    else: pos = 0
    # Messwerte anzeigen
    #print('acc_x:', acc_x, "\t", 'acc_y:', acc_y, "\t", 'acc_z:', acc_z, "\t", end = "\r")
    print('Lage:', pos, end = "\r")

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

Programmieren mit dem Raspberry Pi Pico

Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren