Judesio stebėjimas naudojant MPU-6000 ir dalelių fotoną: 4 žingsniai
Judesio stebėjimas naudojant MPU-6000 ir dalelių fotoną: 4 žingsniai
Anonim
Image
Image

MPU-6000 yra 6 ašių judesio sekimo jutiklis, turintis 3 ašių akselerometrą ir 3 ašių giroskopą. Šis jutiklis gali efektyviai sekti tikslią objekto padėtį ir vietą trimatėje plokštumoje. Jis gali būti naudojamas sistemose, kurioms reikia aukščiausio tikslumo padėties analizės.

Šioje pamokoje buvo parodyta MPU-6000 jutiklio modulio sąsaja su dalelių fotonu. Norėdami perskaityti pagreičio ir sukimosi kampo vertes, naudojome daleles su I2c adapteriu. Šis I2C adapteris leidžia lengvai ir patikimiau prijungti jutiklio modulį.

1 veiksmas: reikalinga aparatūra:

Reikalinga aparatūra
Reikalinga aparatūra
Reikalinga aparatūra
Reikalinga aparatūra
Reikalinga aparatūra
Reikalinga aparatūra

Mūsų užduočiai atlikti reikalingos medžiagos apima toliau nurodytus aparatūros komponentus:

1. MPU-6000

2. Dalelių fotonas

3. I2C kabelis

4. I2C skydas dalelių fotonui

2 veiksmas: prijungimas prie aparatūros:

Aparatūros prijungimas
Aparatūros prijungimas
Aparatūros prijungimas
Aparatūros prijungimas

Techninės įrangos prijungimo skyrius iš esmės paaiškina laidų jungtis, reikalingas tarp jutiklio ir dalelių fotono. Užtikrinti teisingas jungtis yra pagrindinė būtinybė dirbant su bet kuria norimos išvesties sistema. Taigi, būtinos jungtys yra šios:

MPU-6000 veiks per I2C. Čia yra elektros instaliacijos schemos pavyzdys, parodantis, kaip prijungti kiekvieną jutiklio sąsają.

Iš karto plokštė sukonfigūruota I2C sąsajai, todėl rekomenduojame naudoti šį prijungimą, jei esate kitaip agnostikas. Viskas, ko jums reikia, yra keturi laidai!

Reikia tik keturių jungčių „Vcc“, „Gnd“, „SCL“ir „SDA“kaiščių, kurie yra prijungti naudojant I2C kabelį.

Šie ryšiai parodyti aukščiau esančiose nuotraukose.

3 veiksmas: judesio stebėjimo kodas:

Judesio sekimo kodas
Judesio sekimo kodas

Pradėkime nuo dalelių kodo dabar.

Naudodami jutiklio modulį su „arduino“, įtraukiame „application.h“ir „spark_wiring_i2c.h“biblioteką. Bibliotekoje „application.h“ir spark_wiring_i2c.h yra funkcijos, palengvinančios i2c ryšį tarp jutiklio ir dalelės.

Visas dalelių kodas pateikiamas žemiau, kad būtų patogiau vartotojui:

#include #include // MPU-6000 I2C adresas yra 0x68 (104) #define Addr 0x68 int xGyro = 0, yGyro = 0, zGyro = 0, xAccl = 0, yAccl = 0, zAccl = 0; void setup () {// Nustatyti kintamąjį Particle.variable ("i2cdevice", "MPU-6000"); Particle.variable ("xAccl", xAccl); Dalelių.kintamasis ("yAccl", yAccl); Dalelių kintamasis ("zAccl", zAccl); Dalelių.kintamasis ("xGyro", xGyro); Dalelių.kintamasis ("yGyro", yGyro); Dalelių.kintamasis ("zGyro", zGyro); // Inicijuoti I2C ryšį kaip pagrindinį laidą.begin (); // Inicijuoti serijinį ryšį, nustatyti duomenų perdavimo spartą = 9600 Serial.begin (9600); // Pradėti I2C perdavimą Wire.beginTransmission (Addr); // Pasirinkite giroskopo konfigūracijos registrą Wire.write (0x1B); // Visas skalės diapazonas = 2000 dps Wire.write (0x18); // Sustabdyti I2C perdavimą Wire.endTransmission (); // Pradėti I2C perdavimą Wire.beginTransmission (Addr); // Pasirinkite akselerometro konfigūracijos registrą Wire.write (0x1C); // Visas skalės diapazonas = +/- 16g Wire.write (0x18); // Sustabdyti I2C perdavimą Wire.endTransmission (); // Pradėti I2C perdavimą Wire.beginTransmission (Addr); // Pasirinkite energijos valdymo registrą Wire.write (0x6B); // PLL su xGyro nuoroda Wire.write (0x01); // Sustabdyti I2C perdavimą Wire.endTransmission (); vėlavimas (300); } void loop () {unsigned int data [6]; // Pradėti I2C perdavimą Wire.beginTransmission (Addr); // Pasirinkite duomenų registrą Wire.write (0x3B); // Sustabdyti I2C perdavimą Wire.endTransmission (); // Prašyti 6 baitų duomenų Wire.requestFrom (Addr, 6); // Perskaitykite 6 baitus duomenų, jei (Wire.available () == 6) {data [0] = Wire.read (); duomenys [1] = Wire.read (); duomenys [2] = Wire.read (); duomenys [3] = Wire.read (); duomenys [4] = Wire.read (); duomenys [5] = Wire.read (); } uždelsimas (800); // Konvertuoti duomenis xAccl = ((duomenys [1] * 256) + duomenys [0]); if (xAccl> 32767) {xAccl -= 65536; } yAccl = ((duomenys [3] * 256) + duomenys [2]); if (yAccl> 32767) {yAccl -= 65536; } zAccl = ((duomenys [5] * 256) + duomenys [4]); if (zAccl> 32767) {zAccl -= 65536; } uždelsimas (800); // Pradėti I2C perdavimą Wire.beginTransmission (Addr); // Pasirinkite duomenų registrą Wire.write (0x43); // Sustabdyti I2C perdavimą Wire.endTransmission (); // Prašyti 6 baitų duomenų Wire.requestFrom (Addr, 6); // Perskaitykite 6 baitus duomenų, jei (Wire.available () == 6) {data [0] = Wire.read (); duomenys [1] = Wire.read (); duomenys [2] = Wire.read (); duomenys [3] = Wire.read (); duomenys [4] = Wire.read (); duomenys [5] = Wire.read (); } // Konvertuoti duomenis xGyro = ((duomenys [1] * 256) + duomenys [0]); if (xGyro> 32767) {xGyro -= 65536; } yGyro = ((duomenys [3] * 256) + duomenys [2]); if (yGyro> 32767) {yGyro -= 65536; } zGyro = ((duomenys [5] * 256) + duomenys [4]); if (zGyro> 32767) {zGyro -= 65536; } // Išvesties duomenys į prietaisų skydelį Particle.publish ("Pagreitis X ašyje:", eilutė (xAccl)); vėlavimas (1000); Particle.publish ("pagreitis Y ašyje:", eilutė (yAccl)); vėlavimas (1000); Particle.publish ("Pagreitis Z ašyje:", eilutė (zAccl)); vėlavimas (1000); Particle.publish ("X sukimosi ašis:", eilutė (xGyro)); vėlavimas (1000); Particle.publish ("Y sukimosi ašis:", eilutė (yGyro)); vėlavimas (1000); Particle.publish ("Z sukimosi ašis:", eilutė (zGyro)); vėlavimas (1000); }

Funkcija „Particle.variable ()“sukuria kintamuosius, kad išsaugotų jutiklio išvestį, o „Particle.publish“() rodo išvestį svetainės prietaisų skydelyje.

Jutiklio išvestis yra parodyta aukščiau esančiame paveikslėlyje.

4 žingsnis: programos:

Programos
Programos

MPU-6000 yra judesio sekimo jutiklis, kuris yra pritaikytas išmaniųjų telefonų ir planšetinių kompiuterių judesio sąsajoje. Išmaniuosiuose telefonuose šie jutikliai gali būti naudojami tokiose programose, kaip programų gesto komandos ir telefono valdymas, patobulinti žaidimai, papildyta realybė, panoraminės nuotraukų fiksavimas ir peržiūra, pėsčiųjų ir transporto priemonių navigacija. „MotionTracking“technologija gali paversti telefonus ir planšetinius kompiuterius į galingus 3D išmaniuosius įrenginius, kurie gali būti naudojami įvairiose programose-nuo sveikatos ir tinkamumo stebėjimo iki vietos nustatymo paslaugų.