Taula de continguts:

Seguiment de moviment mitjançant MPU-6000 i fotó de partícules: 4 passos
Seguiment de moviment mitjançant MPU-6000 i fotó de partícules: 4 passos

Vídeo: Seguiment de moviment mitjançant MPU-6000 i fotó de partícules: 4 passos

Vídeo: Seguiment de moviment mitjançant MPU-6000 i fotó de partícules: 4 passos
Vídeo: Трекинг Объектов в Capcut На Компьютере // Motion Tracking Capcut 2024, De novembre
Anonim
Image
Image

MPU-6000 és un sensor de seguiment de moviment de 6 eixos que té incrustat un acceleròmetre de 3 eixos i un giroscopi de 3 eixos. Aquest sensor és capaç de fer un seguiment eficient de la posició i ubicació exactes d’un objecte en el pla tridimensional. Es pot utilitzar en sistemes que requereixen una anàlisi de posició amb la màxima precisió.

En aquest tutorial s'ha il·lustrat la interfície del mòdul del sensor MPU-6000 amb el fotó de partícules. Per llegir els valors de l’acceleració i l’angle de rotació, hem utilitzat partícules amb un adaptador I2c, que fa que la connexió al mòdul del sensor sigui més fàcil i fiable.

Pas 1: maquinari necessari:

Maquinari necessari
Maquinari necessari
Maquinari necessari
Maquinari necessari
Maquinari necessari
Maquinari necessari

Els materials necessaris per dur a terme la nostra tasca inclouen els components de maquinari esmentats a continuació:

1. MPU-6000

2. Fotó de partícules

3. Cable I2C

4. Escut I2C per a fotons de partícules

Pas 2: connexió de maquinari:

Connexió de maquinari
Connexió de maquinari
Connexió de maquinari
Connexió de maquinari

La secció de connexió de maquinari explica bàsicament les connexions de cablejat necessàries entre el sensor i el fotó de partícules. Garantir connexions correctes és la necessitat bàsica mentre es treballa en qualsevol sistema per a la sortida desitjada. Per tant, les connexions necessàries són les següents:

El MPU-6000 funcionarà sobre I2C. Aquí teniu un exemple de diagrama de cablejat, que demostra com connectar cada interfície del sensor.

Fora de la caixa, el tauler està configurat per a una interfície I2C, per tant, us recomanem que utilitzeu aquesta connexió si no sou agnòstic. Tot el que necessiteu són quatre cables.

Només es necessiten quatre connexions pins Vcc, Gnd, SCL i SDA, que es connecten amb l'ajut del cable I2C.

Aquestes connexions es mostren a les imatges anteriors.

Pas 3: codi per al seguiment de moviment:

Codi per al seguiment de moviment
Codi per al seguiment de moviment

Comencem ara pel codi de partícules.

Mentre s’utilitza el mòdul de sensor amb l’arduino, incloem la biblioteca application.h i spark_wiring_i2c.h. La biblioteca "application.h" i spark_wiring_i2c.h conté les funcions que faciliten la comunicació i2c entre el sensor i la partícula.

A continuació es proporciona tot el codi de partícules per a la comoditat de l'usuari:

# include # include // L’adreça I2C MPU-6000 és 0x68 (104) #define Addr 0x68 int xGyro = 0, yGyro = 0, zGyro = 0, xAccl = 0, yAccl = 0, zAccl = 0; void setup () {// Estableix la variable Particle.variable ("i2cdevice", "MPU-6000"); Particle.variable ("xAccl", xAccl); Particle.variable ("yAccl", yAccl); Particle.variable ("zAccl", zAccl); Particle.variable ("xGyro", xGyro); Particle.variable ("yGyro", yGyro); Particle.variable ("zGyro", zGyro); // Inicialitzar la comunicació I2C com a Master Wire.begin (); // Inicialitzar la comunicació serial, establir la velocitat de transmissió = 9600 Serial.begin (9600); // Inicia la transmissió I2C Wire.beginTransmission (Addr); // Seleccioneu el registre de configuració del giroscopi Wire.write (0x1B); // Abast a escala completa = 2000 dps Wire.write (0x18); // Atura la transmissió I2C Wire.endTransmission (); // Inicia la transmissió I2C Wire.beginTransmission (Addr); // Seleccioneu el registre de configuració de l’acceleròmetre Wire.write (0x1C); // Rang d’escala completa = +/- 16g Wire.write (0x18); // Atura la transmissió I2C Wire.endTransmission (); // Inicia la transmissió I2C Wire.beginTransmission (Addr); // Seleccioneu registre de gestió d'energia Wire.write (0x6B); // PLL amb referència xGyro Wire.write (0x01); // Atura la transmissió I2C Wire.endTransmission (); retard (300); } void loop () {dades sense signar int [6]; // Inicia la transmissió I2C Wire.beginTransmission (Addr); // Selecciona el registre de dades Wire.write (0x3B); // Atura la transmissió I2C Wire.endTransmission (); // Sol·liciteu 6 bytes de dades Wire.requestFrom (Addr, 6); // Llegiu 6 bytes de dades if (Wire.available () == 6) {data [0] = Wire.read (); dades [1] = Wire.read (); dades [2] = Wire.read (); dades [3] = Wire.read (); dades [4] = Wire.read (); dades [5] = Wire.read (); } retard (800); // Converteix les dades xAccl = ((dades [1] * 256) + dades [0]); if (xAccl> 32767) {xAccl - = 65536; } yAccl = ((dades [3] * 256) + dades [2]); if (yAccl> 32767) {yAccl - = 65536; } zAccl = ((dades [5] * 256) + dades [4]); if (zAccl> 32767) {zAccl - = 65536; } retard (800); // Inicia la transmissió I2C Wire.beginTransmission (Addr); // Selecciona el registre de dades Wire.write (0x43); // Atura la transmissió I2C Wire.endTransmission (); // Sol·liciteu 6 bytes de dades Wire.requestFrom (Addr, 6); // Llegiu 6 bytes de dades if (Wire.available () == 6) {data [0] = Wire.read (); dades [1] = Wire.read (); dades [2] = Wire.read (); dades [3] = Wire.read (); dades [4] = Wire.read (); dades [5] = Wire.read (); } // Converteix les dades xGyro = ((data [1] * 256) + data [0]); if (xGyro> 32767) {xGyro - = 65536; } yGyro = ((dades [3] * 256) + dades [2]); if (yGyro> 32767) {yGyro - = 65536; } zGyro = ((dades [5] * 256) + dades [4]); if (zGyro> 32767) {zGyro - = 65536; } // Data de sortida al tauler Particle.publish ("Acceleració a l'eix X:", cadena (xAccl)); retard (1000); Particle.publish ("Acceleració a l'eix Y:", String (yAccl)); retard (1000); Particle.publish ("Acceleració a l'eix Z:", String (zAccl)); retard (1000); Particle.publish ("Eix X de rotació:", String (xGyro)); retard (1000); Particle.publish ("Eix Y de rotació:", String (yGyro)); retard (1000); Particle.publish ("Eix Z de rotació:", String (zGyro)); retard (1000); }

La funció Particle.variable () crea les variables per emmagatzemar la sortida del sensor i la funció Particle.publish () mostra la sortida al tauler del lloc.

La sortida del sensor es mostra a la imatge superior per a la vostra referència.

Pas 4: aplicacions:

Aplicacions
Aplicacions

MPU-6000 és un sensor de seguiment de moviment que troba la seva aplicació a la interfície de moviment de telèfons intel·ligents i tauletes. Als telèfons intel·ligents, aquests sensors es poden utilitzar en aplicacions com ara ordres gestuals per a aplicacions i control de telèfon, jocs millorats, realitat augmentada, captura i visualització de fotos panoràmiques i navegació per a vianants i vehicles. La tecnologia MotionTracking pot convertir telèfons i tauletes en potents dispositius intel·ligents en 3D que es poden utilitzar en aplicacions que van des de la vigilància de la salut i la forma física fins als serveis basats en la ubicació.

Recomanat: