Der kleine Sensor MPU6050 enthält neben einem Gyroskop auch einen Beschleunigungsmesser und erlaubt damit den Aufbau einer digitalen Kreuzwasserwaage.
Um eine digitale Kreuzwasserwaage zu bauen, benötigen wir zunächst einen Sensor wie den MPU6050, der die Lage eines Gegenstands im Raum ermittelt. Er verfügt für jede Achse im Raum über einen Beschleunigungsmesser und ein Gyroskop und ist dabei gerade einmal 4 mal 4 Millimeter groß. Für unseren Testaufbau verwenden wir ein Modul, das den Halbleiter trägt. Sie erhalten es bei AZ-Delivery für 4,79 Euro [1]. Sollte es dort ausverkauft sein, bekommen Sie das Modul auch bei Amazon oder Reichelt.
Der MPU6050 kommuniziert über den I2C-BUS mit dem RasPi. Mit dem Anschluss AD0 legen Sie fest, ob sich der Sensor unter der Adresse 0x68 (AD0 auf GND) oder 0x69 (AD0 auf VSS) am Bus meldet. Die Betriebsspannung für das Modul liegt im Bereich von 3,3 bis 5 Volt. Falls Sie mehr Informationen zum MPU6050 benötigen, werfen Sie einen Blick in das Datenblatt [2]. Um den Sensor anzusprechen, verwenden wir eine Bibliothek, die uns einfache Funktionen für den Zugriff auf die Messwerte des Sensors bereitstellt.
Um die Daten des Sensors zu verarbeiten, setzen wir einen ESP32 ein. Dabei handelt es sich um einen hoch integrierten Mikrocontroller mit einem unschlagbaren Preis-Leistungs-Verhältnis. Zum Programmieren verwenden wir ein ESP32-Entwicklungsboard [3], das Sie für 9,49 Euro recht günstig erhalten. Als Entwicklungsumgebung kommt die Arduino IDE zum Einsatz. Eine Anleitung, wie Sie die IDE installieren und für den ESP32 einrichten, finden Sie im Artikel “Schneller Einstieg” aus der vorigen Ausgabe [4]. Darüber hinaus finden Sie diesen Artikel als PDF-Dokument in der Download-Sektion dieses Artikels.
Zu guter Letzt benötigt das Projekt noch ein Display, um die Messwerte des Sensors grafisch anzuzeigen. Hier bietet sich ein preiswertes 1,8-Zoll-TFT-Farbdisplay für 7,99 Euro an [5], das sich über eine SPI-Schnittstelle ansprechen lässt. Da sich das Ansteuern recht komplex gestaltet, greifen wir hierfür auf die GFX-Library von Adafruit [6] zurück. Den Quellcode der Bibliothek finden Sie auf Github [7].
Versuchsaufbau
Auf dem Schaltplan unserer Wasserwaage (Abbildung 1) sehen Sie, wie Sie alle Komponenten des Projekts verbinden müssen. Sehen wir uns die zwei Kondensatoren ganz oben im Plan ein wenig genauer an. Der 10-µF-Kondensator zwischen dem EN-Pin und Masse ermöglicht es, das Programm ohne Drücken der Boot-Taste in den ESP32 zu laden. Theoretisch sollte das auch ohne diesen zusätzlichen Kondensator klappen, aber die Praxis zeigt, dass das oft nicht zutrifft. Das Grundproblem liegt im USB-Treiber in Verbindung mit bestimmten Hardwarekomponenten des ESP32-DevBoards.
Der zweite Kondensator (1000 µF) stellt eine Option dar. Falls die Hintergrundbeleuchtung des Displays stark flackert, beseitigt er dieses Problem. Er stabilisiert die Betriebsspannung und verhindert damit das Flimmern. Kommt es in anderen digitalen Schaltungen zu schwer eingrenzbaren sporadischen Problemen, schadet es nie, einen großen Kondensator in die Spannungsversorgung zu bauen. Er hilft oft, Probleme dieser Art zu beseitigen.
Die restlichen Verbindungen im Schaltplan koppeln den Sensor via I2C mit dem ESP32. Das Display nutzt die SPI-Schnittstelle und bringt noch einen zusätzlichen Reset-Anschluss mit. Achten Sie darauf, alle im Schaltplan vorhandenen Spannungsversorgungen anzuschließen. Wie Abbildung 2 zeigt, besteht der Versuchsaufbau aus zwei Breadboards mit der Elektronik. Bei jeder der beiden Platinen entfernte der Autor eine der Versorgungsleisten. Das ermöglicht einen Aufbau, auf den das Entwicklungsboard so passt, dass man gut alle Anschlüsse erreicht.
Erster Test
Zunächst einmal gilt es, den MPU6050-Sensor in Betrieb zu nehmen. Dazu installieren Sie die entsprechende Bibliothek in der Arduino IDE. Navigieren Sie im Menü zu Sketch | Bibliothek einbinden | Bibliothek verwalten. Dort angekommen, suchen Sie nach der Bibliothek MPU6050_light und installieren sie (Abbildung 3). Falls Sie eine entsprechende Nachfrage erhalten, installieren Sie alle abhängigen Bibliotheken mit.
Nach der Installation finden Sie im Menü Datei | Beispiele | MPU6050_light | GetAllData ein Beispielprogramm, mit dem Sie die Werte des Sensors auslesen (Abbildung 4). Die Ergebnisse der Messungen gibt die Software auf der seriellen Konsole aus. Bewegen Sie den Sensor, dann sehen Sie gut, wie sich die einzelnen Werte verändern. Neben den Daten, die der Sensor von Haus aus liefert – Beschleunigung in Richtung der Raumachsen, Winkelbeschleunigung um die Achsen und Temperatur –, gibt er auch den Winkel der Achse als berechneten Wert aus. Das nutzen wir als Grundlage für unsere Wasserwaage.
Display testen
Als Nächstes steht die Inbetriebnahme des Displays an. Dazu benötigen Sie die drei Bibliotheken TFT LCD Library [8], Adafruit ST7735 Library [9] und Adafruit GFX Library [10]. Installieren Sie alle drei wie oben beschrieben in der Arduino IDE. Auch hier kommt womöglich die Nachfrage nach den Bibliotheken.
Nach der Installation finden Sie unter Datei | Beispiel | Adafruit ST7735 and ST7789 Library | graficstest ein Programm, um das Display zu testen. Um es an unseren Aufbau anzupassen, müssen Sie die Werte für TFT_CS, FT_RST und TFT_DC anders belegen. Die dazu nötigen Codezeilen zeigt Listing 1. Kopieren Sie sie einfach an die entsprechende Stelle ins Programm. Nach dessen Hochladen in den ESP3 läuft eine Sequenz von Testgrafiken über das Display.
Listing 1
Anpassungen
// For 1.44" and 1.8" TFT with ST7735 use: #define TFT_CS 17 #define TFT_RST 14 #define TFT_DC 2 Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);










