Bewegungsverfolgung mit MPU-6000 und Particle Photon - Gunook
Bewegungsverfolgung mit MPU-6000 und Particle Photon - Gunook
Anonim
Image
Image

MPU-6000 ist ein 6-Achsen-Bewegungsverfolgungssensor, in den ein 3-Achsen-Beschleunigungsmesser und ein 3-Achsen-Gyroskop eingebettet sind. Dieser Sensor ist in der Lage, die genaue Position und Position eines Objekts in der dreidimensionalen Ebene effizient zu verfolgen. Es kann in Systemen eingesetzt werden, die eine Positionsanalyse mit höchster Präzision erfordern.

In diesem Tutorial wurde die Anbindung des MPU-6000 Sensormoduls an Partikelphotonen veranschaulicht. Zum Auslesen der Beschleunigungs- und Drehwinkelwerte haben wir Partikel mit einem I2C-Adapter verwendet. Dieser I2C-Adapter macht die Verbindung zum Sensormodul einfach und zuverlässiger.

Schritt 1: Erforderliche Hardware:

Erforderliche Hardware
Erforderliche Hardware
Erforderliche Hardware
Erforderliche Hardware
Erforderliche Hardware
Erforderliche Hardware

Zu den Materialien, die zur Erfüllung unserer Aufgabe erforderlich sind, gehören die unten aufgeführten Hardwarekomponenten:

1. MPU-6000

2. Teilchenphoton

3. I2C-Kabel

4. I2C-Schild für Teilchenphotonen

Schritt 2: Hardwareanschluss:

Hardware-Anschluss
Hardware-Anschluss
Hardware-Anschluss
Hardware-Anschluss

Der Abschnitt Hardware-Anschlüsse erklärt im Wesentlichen die erforderlichen Kabelverbindungen zwischen dem Sensor und dem Partikelphoton. Die Sicherstellung korrekter Verbindungen ist die Grundvoraussetzung bei der Arbeit an jedem System für die gewünschte Ausgabe. Die erforderlichen Verbindungen sind also wie folgt:

Der MPU-6000 wird über I2C arbeiten. Hier ist das Beispiel-Verdrahtungsdiagramm, das zeigt, wie jede Schnittstelle des Sensors verdrahtet wird.

Out-of-the-box ist das Board für eine I2C-Schnittstelle konfiguriert, daher empfehlen wir, diesen Anschluss zu verwenden, wenn Sie ansonsten agnostisch sind. Alles was Sie brauchen sind vier Drähte!

Es werden nur vier Anschlüsse benötigt Vcc, Gnd, SCL und SDA Pins und diese werden mit Hilfe von I2C Kabel verbunden.

Diese Verbindungen sind in den obigen Bildern dargestellt.

Schritt 3: Code für Bewegungsverfolgung:

Code für Bewegungsverfolgung
Code für Bewegungsverfolgung

Beginnen wir jetzt mit dem Partikelcode.

Bei der Verwendung des Sensormoduls mit dem arduino binden wir die Bibliothek application.h und spark_wiring_i2c.h ein. Die Bibliothek "application.h" und spark_wiring_i2c.h enthält die Funktionen, die die i2c-Kommunikation zwischen Sensor und Partikel ermöglichen.

Der gesamte Partikelcode ist unten für die Benutzerfreundlichkeit angegeben:

#include#include // MPU-6000 I2C-Adresse ist 0x68(104) #define Addr 0x68 int xGyro = 0, yGyro = 0, zGyro = 0, xAccl = 0, yAccl = 0, zAccl = 0; Void setup () { // Variable setzen Particle.variable ("i2cdevice", "MPU-6000"); Partikel.variable("xAccl", xAccl); Partikel.variable("yAccl", yAccl); Partikel.variable("zAccl", zAccl); Partikel.variable("xGyro", xGyro); Partikel.variable("yGyro", yGyro); Partikel.variable("zGyro", zGyro); // I2C-Kommunikation als Master Wire.begin() initialisieren; // Serielle Kommunikation initialisieren, Baudrate = 9600 einstellen Serial.begin (9600); // I2C-Übertragung starten Wire.beginTransmission(Addr); // Gyroskop-Konfigurationsregister auswählen Wire.write (0x1B); // Skalenendwert = 2000 dps Wire.write (0x18); // I2C-Übertragung stoppen Wire.endTransmission (); // I2C-Übertragung starten Wire.beginTransmission(Addr); // Wählen Sie das Beschleunigungssensor-Konfigurationsregister Wire.write (0x1C); // Skalenendwert = +/-16g Wire.write (0x18); // I2C-Übertragung stoppen Wire.endTransmission (); // I2C-Übertragung starten Wire.beginTransmission(Addr); // Energieverwaltungsregister auswählen Wire.write (0x6B); // PLL mit xGyro-Referenz Wire.write (0x01); // I2C-Übertragung stoppen Wire.endTransmission (); Verzögerung (300); aufrechtzuerhalten. Void Schleife () { unsigned int data[6]; // I2C-Übertragung starten Wire.beginTransmission(Addr); // Datenregister auswählen Wire.write (0x3B); // I2C-Übertragung stoppen Wire.endTransmission (); // 6 Byte Daten anfordern Wire.requestFrom(Addr, 6); // 6 Byte Daten lesen if (Wire.available () == 6) { data[0] = Wire.read (); data[1] = Wire.read(); data[2] = Wire.read(); Daten[3] = Wire.read(); data[4] = Wire.read(); data[5] = Wire.read(); } Verzögerung (800); // Konvertieren der Daten xAccl = ((data[1] * 256) + data[0]); wenn (xAccl > 32767) { xAccl -= 65536; } yAccl = ((Daten[3] * 256) + Daten[2]); wenn (yAccl > 32767) {yAccl -= 65536; } zAccl = ((Daten[5] * 256) + Daten[4]); wenn (zAccl > 32767) {zAccl -= 65536; } Verzögerung (800); // I2C-Übertragung starten Wire.beginTransmission(Addr); // Datenregister auswählen Wire.write (0x43); // I2C-Übertragung stoppen Wire.endTransmission (); // 6 Byte Daten anfordern Wire.requestFrom(Addr, 6); // 6 Byte Daten lesen if (Wire.available () == 6) { data[0] = Wire.read (); data[1] = Wire.read(); data[2] = Wire.read(); Daten[3] = Wire.read(); data[4] = Wire.read(); data[5] = Wire.read(); } // Konvertieren der Daten xGyro = ((data[1] * 256) + data[0]); wenn (xGyro > 32767) { xGyro -= 65536; } yGyro = ((Daten[3] * 256) + Daten[2]); wenn (yGyro > 32767) {yGyro -= 65536; } zGyro = ((Daten[5] * 256) + Daten[4]); wenn (zGyro > 32767) {zGyro -= 65536; } // Daten an das Dashboard ausgeben Particle.publish("Beschleunigung in X-Achse: ", String(xAccl)); Verzögerung (1000); Particle.publish("Beschleunigung in Y-Achse: ", String(yAccl)); Verzögerung (1000); Particle.publish("Beschleunigung in Z-Achse: ", String(zAccl)); Verzögerung (1000); Particle.publish("X-Rotationsachse: ", String(xGyro)); Verzögerung (1000); Particle.publish("Y-Rotationsachse: ", String(yGyro)); Verzögerung (1000); Particle.publish("Z-Rotationsachse: ", String(zGyro)); Verzögerung (1000); }

Die Funktion Particle.variable() erstellt die Variablen zum Speichern der Ausgabe des Sensors und die Funktion Particle.publish() zeigt die Ausgabe auf dem Dashboard der Site an.

Der Sensorausgang ist im obigen Bild zu Ihrer Referenz dargestellt.

Schritt 4: Anwendungen:

Anwendungen
Anwendungen

MPU-6000 ist ein Motion-Tracking-Sensor, der seine Anwendung in der Bewegungsschnittstelle von Smartphones und Tablets findet. In Smartphones können diese Sensoren in Anwendungen wie Gestenbefehlen für Anwendungen und Telefonsteuerung, Enhanced Gaming, Augmented Reality, Panoramafotoaufnahme und -betrachtung sowie Fußgänger- und Fahrzeugnavigation eingesetzt werden. Die MotionTracking-Technologie kann Handys und Tablets in leistungsstarke 3D-intelligente Geräte umwandeln, die in Anwendungen eingesetzt werden können, die von der Gesundheits- und Fitnessüberwachung bis hin zu standortbasierten Diensten reichen.