Tartalomjegyzék:

Mozgáskövetés MPU-6000 és részecskefoton használatával: 4 lépés
Mozgáskövetés MPU-6000 és részecskefoton használatával: 4 lépés

Videó: Mozgáskövetés MPU-6000 és részecskefoton használatával: 4 lépés

Videó: Mozgáskövetés MPU-6000 és részecskefoton használatával: 4 lépés
Videó: mozgáskövetés 2024, November
Anonim
Image
Image

Az MPU-6000 egy 6 tengelyes mozgáskövető érzékelő, amelybe 3 tengelyes gyorsulásmérő és 3 tengelyes giroszkóp van beépítve. Ez az érzékelő képes hatékonyan követni az objektum pontos helyzetét és elhelyezkedését a 3 dimenziós síkban. Alkalmazható olyan rendszerekben, amelyek a legnagyobb pontosságú helyzetelemzést igényelnek.

Ebben az oktatóanyagban szemléltetjük az MPU-6000 érzékelő modul és a részecskefoton összekapcsolását. A gyorsulás és a forgási szög értékeinek leolvasásához I2c adapterrel rendelkező részecskéket használtunk. Ez az I2C adapter megkönnyíti és megbízhatóbbá teszi a kapcsolatot az érzékelőmodullal.

1. lépés: Szükséges hardver:

Szükséges hardver
Szükséges hardver
Szükséges hardver
Szükséges hardver
Szükséges hardver
Szükséges hardver

A feladatunk elvégzéséhez szükséges anyagok az alábbi hardverkomponenseket tartalmazzák:

1. MPU-6000

2. Foton részecske

3. I2C kábel

4. I2C pajzs részecske fotonhoz

2. lépés: Hardver csatlakoztatása:

Hardver csatlakoztatása
Hardver csatlakoztatása
Hardver csatlakoztatása
Hardver csatlakoztatása

A hardvercsatlakozási szakasz alapvetően elmagyarázza az érzékelő és a részecskefoton között szükséges vezetékeket. A megfelelő kapcsolatok biztosítása az alapvető szükséglet, amikor bármilyen rendszeren dolgozik a kívánt kimenet érdekében. Tehát a szükséges kapcsolatok a következők:

Az MPU-6000 az I2C-n keresztül fog működni. Íme a példa kapcsolási rajz, amely bemutatja, hogyan kell bekötni az érzékelő egyes interfészeit.

A doboz készenlétben I2C interfészre van konfigurálva, ezért javasoljuk, hogy használja ezt a csatlakozást, ha egyébként agnosztikus. Csak négy vezetékre van szüksége!

Csak négy csatlakozóra van szükség Vcc, Gnd, SCL és SDA csapokra, és ezeket I2C kábel segítségével kell csatlakoztatni.

Ezeket az összefüggéseket a fenti képek mutatják be.

3. lépés: A mozgáskövetés kódja:

A mozgáskövetés kódja
A mozgáskövetés kódja

Kezdjük most a részecske kóddal.

Miközben az érzékelő modult használja az arduino -val, az application.h és a spark_wiring_i2c.h könyvtárat is tartalmazza. Az "application.h" és a spark_wiring_i2c.h könyvtár azokat a funkciókat tartalmazza, amelyek megkönnyítik az i2c kommunikációt az érzékelő és a részecske között.

A teljes szemcsekódot az alábbiakban adjuk meg a felhasználó kényelme érdekében:

#include #include // MPU-6000 I2C-cím 0x68 (104) #define Addr 0x68 int xGyro = 0, yGyro = 0, zGyro = 0, xAccl = 0, yAccl = 0, zAccl = 0; void setup () {// Particle.variable változó beállítása ("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); // Inicializálja az I2C kommunikációt Master Wire -ként.begin (); // Soros kommunikáció inicializálása, adatsebesség beállítása = 9600 Serial.begin (9600); // I2C átvitel indítása Wire.beginTransmission (Addr); // Válassza ki a giroszkóp konfigurációs regiszterét Wire.write (0x1B); // Teljes skála tartomány = 2000 dps Wire.write (0x18); // I2C átvitel leállítása Wire.endTransmission (); // I2C átvitel indítása Wire.beginTransmission (Addr); // Gyorsulásmérő konfigurációs regiszter kiválasztása Wire.write (0x1C); // Teljes skála tartomány = +/- 16g Wire.write (0x18); // I2C átvitel leállítása Wire.endTransmission (); // I2C átvitel indítása Wire.beginTransmission (Addr); // Válassza ki az energiagazdálkodási nyilvántartást Wire.write (0x6B); // PLL xGyro hivatkozással Wire.write (0x01); // I2C átvitel leállítása Wire.endTransmission (); késleltetés (300); } void loop () {unsigned int data [6]; // I2C átvitel indítása Wire.beginTransmission (Addr); // Adatregiszter kiválasztása Wire.write (0x3B); // I2C átvitel leállítása Wire.endTransmission (); // 6 bájt adat kérése Wire.requestFrom (Addr, 6); // Olvasson 6 bájtnyi adatot, ha (Wire.available () == 6) {data [0] = Wire.read (); adatok [1] = Wire.read (); adatok [2] = Wire.read (); adatok [3] = Wire.read (); adatok [4] = Wire.read (); adatok [5] = Wire.read (); } késleltetés (800); // Az adatok konvertálása xAccl = ((adatok [1] * 256) + adatok [0]); if (xAccl> 32767) {xAccl -= 65536; } yAccl = ((adatok [3] * 256) + adatok [2]); if (yAccl> 32767) {yAccl -= 65536; } zAccl = ((adatok [5] * 256) + adatok [4]); if (zAccl> 32767) {zAccl -= 65536; } késleltetés (800); // I2C átvitel indítása Wire.beginTransmission (Addr); // Adatregiszter kiválasztása Wire.write (0x43); // I2C átvitel leállítása Wire.endTransmission (); // 6 bájt adat kérése Wire.requestFrom (Addr, 6); // Olvasson 6 bájtnyi adatot, ha (Wire.available () == 6) {data [0] = Wire.read (); adatok [1] = Wire.read (); adatok [2] = Wire.read (); adatok [3] = Wire.read (); adatok [4] = Wire.read (); adatok [5] = Wire.read (); } // Az adatok konvertálása xGyro = ((adatok [1] * 256) + adatok [0]); if (xGyro> 32767) {xGyro -= 65536; } yGyro = ((adatok [3] * 256) + adatok [2]); if (yGyro> 32767) {yGyro -= 65536; } zGyro = ((adatok [5] * 256) + adatok [4]); if (zGyro> 32767) {zGyro -= 65536; } // Adatok kimenete a műszerfalra Particle.publish ("Gyorsulás az X-tengelyben:", String (xAccl)); késleltetés (1000); Particle.publish ("Gyorsulás az Y tengelyen:", String (yAccl)); késleltetés (1000); Particle.publish ("Gyorsulás Z-tengelyben:", String (zAccl)); késleltetés (1000); Particle.publish ("X-Axis of Rotation:", String (xGyro)); késleltetés (1000); Particle.publish ("Y forgástengely:", String (yGyro)); késleltetés (1000); Particle.publish ("Z-tengely forgás:", String (zGyro)); késleltetés (1000); }

A Particle.variable () függvény létrehozza a változókat az érzékelő kimenetének tárolására, a Particle.publish () függvény pedig megjeleníti a kimenetet a webhely műszerfalán.

Az érzékelő kimenete a fenti képen látható.

4. lépés: Alkalmazások:

Alkalmazások
Alkalmazások

Az MPU-6000 egy mozgáskövető érzékelő, amely az okostelefonok és táblagépek mozgásfelületén találja meg alkalmazását. Az okostelefonokban ezek az érzékelők olyan alkalmazásokban használhatók, mint az alkalmazások gesztusparancsai és a telefonvezérlés, a továbbfejlesztett játék, a kibővített valóság, a panorámás fényképek rögzítése és megtekintése, valamint a gyalogosok és a járművek navigálása. A MotionTracking technológia a készülékeket és a táblagépeket erőteljes 3D intelligens eszközökké alakíthatja, amelyek felhasználhatók az egészségtől és a fitnesz felügyeletétől a helyalapú szolgáltatásokig.

Ajánlott: