Rotationssensor MPU-6050 mit WebGL am Raspberry Pi visualisieren

Der Raspberry Pi ist zu vielem in der Lage, so können einfach Rotations- und Beschleunigugnswerte mittels eines Sensors, wie dem MPU-6050, ausgelesen werden. Das Ergebnis sind jedoch einfache Zahlen, worunter man sich im Normalfall nicht all zu viel vorstellen wird. Jedoch ist es sehr einfach diese Zahlen zu visualisieren. Dies geht in modernen Browsern ganz einfach mittels WebGL, womit man 2D und 3D Objekte im Browser rendern kann.

Dazu lassen wir einen Node.JS Webserver auf dem Raspberry Pi laufen, der die Daten sowohl abruft, als auch visualisiert. Der Beispielcode dafür ist am Ende des Tutorials angehängt.

Dieses Tutorial ist aufgrund einer der vielen Tutorial-Wünsche für den Raspberry Pi entstanden.

 

Zubehör

Neben einem Computer mit Browser, benötigst du folgendes Zubehör, um zu beginnen:

Bei diesem Modul sind 2 unterschiedliche Pin Header anbei, wovon einer gebogen ist. Lötet man den gebogenen Pin Header an, spart man ein wenig Platz und die Bewegung später ist intuitiver.

Rotationssensor MPU 6050

Rotationssensor MPU 6050

Aufbau und Anschluss des MPU 6050 Sensors am Raspberry Pi

Um den Rotationssensor auslesen zu können, nutzen wir den sog. I2C Bus. Damit lassen sich verschiedene Sensoren mit lediglich einer Datenleitung (SDA) und einer „Clock“ (SCL) auslesen. Dies funktioniert mittels der Hardware Adresse eines Sensors (in unserem Fall 0x68). Der Vorteil von I2C ist, dass man nicht viele GPIO Pins belegen braucht und dennoch viele Daten auslesen kann.

Wir schließen die Jumper Kabel also an den MPU 6050 Sensor und an den Raspberry Pi wie folgt an:

Raspberry Pi MPU 6050
Pin 1 (3.3V) VCC
Pin 3 (SDA) SDA
Pin 5 (SCL) SCL
Pin 6 (GND) GND

Schematisch sieht das ganze folgendermaßen aus. Wie du siehst, werden die unteren vier Anschlüsse nicht benötigt und können frei bleiben.

GY-521_accelerometer_Gyroscope_Steckplatine

 

 

Installation der benötigten Raspberry Pi Bibliotheken

Standardmäßig ist I2C am Raspberry Pi nicht aktiviert. Dies ist der erste Schritt, den wir durchführen. Öffne eine SSH Konsole und gib folgendes ein:

sudo raspi-config

Navigiere unter „Advanced Options“ und anschließend unter „Interfacing Options“. Hier findet sich u.a. ein Eintrag zu „I2C“. Diesen wählen wir aus und aktivieren es. Danach kannst du das Tool mit „Finish“ beenden.

Zeit für einen ersten Test! Wir orüfen, ob der Sensor erkannt wurde. Dazu geben wir folgendes ein und erhalten die untere Ausgabe:

sudo i2cdetect -y 1

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- -

Genaueres zur Installation (z.B. falls du Probleme dabei hast) findest du hier.

An Adresse 0x68 (Hexadezimal) befindet sich also ein I2C Gerät – in unserem Fall ist es das MPU 6050 Gyroskop.

Nun können wir auch bereits bestimmte Adressen des Sensors auslesen, wie bspw:

sudo i2cget -y 1 0x68 0x75

Die Registerdaten sind hierbei im Datenblatt definiert. Je nach Position, wirst du hier einen anderen Wert finden. Da wir mit den Hexadezimalen Ergebnissen nicht all zu viel anfangen können, gehen wir vorerst weiter zum nächsten Punkt.

Node.JS und Pakete installieren

Bevor die den Server starten können, müssen wir zunächst Node.JS und den Package Manager npm installieren (wer lieber yarn als Paketmanager nutzen möchte, kann das natürlich auch tun). Davor aktualisieren wir noch die Paketquellen:

sudo apt-get update
curl -sL https://deb.nodesource.com/setup_13.x | bash -
sudo apt-get install git nodejs npm -y

Anschließend klonen wir uns das Projekt aus Github, in dem der gesamte Code enthalten ist, gehen in das Verzeichnis und laden die benötigten Bibliotheken herunter:

git clone https://github.com/tutRPi/Raspberry-Pi-WebGL-Gyroscope
cd Raspberry-Pi-WebGL-Gyroscope
npm install

Der Vorgang dauert ein paar Minuten, aber sollte sich ohne weitere Probleme abschließen.

 

Node.JS Server starten und Rotation im Browser testen

Um den Server zu starten, reicht es folgendes Befehl einzugeben:

node index.js

Dadurch wird nun unter http://raspberrypi:3000/ verfügbar (ggf. musst du „raspberrypi“ mit der internen IP Adresse deines Pi’s ersetzen). Im Browser sieht das ganze dann so aus:

Zunächst einmal wird eine HTML Seite ausgegeben, die folgenden Inhalt hat und sich die Rotationsdaten unter http://raspberrypi:3000/api/data holt und diese visualisiert.