Sisukord:
- Samm: vajalik riistvara:
- 2. samm: riistvara ühendamine:
- 3. samm: liikumise jälgimise kood:
- 4. samm: rakendused:
Video: Liikumise jälgimine MPU-6000 ja osakeste footoni abil: 4 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:46
MPU-6000 on 6-teljeline liikumisjälgimisandur, millesse on integreeritud 3-teljeline kiirendusmõõtur ja 3-teljeline güroskoop. See andur on võimeline tõhusalt jälgima objekti täpset asukohta ja asukohta kolmemõõtmelisel tasapinnal. Seda saab kasutada süsteemides, mis nõuavad võimalikult täpset positsioonianalüüsi.
Selles õpetuses on illustreeritud MPU-6000 andurimooduli liidestamist osakeste footoniga. Kiirenduse ja pöördenurga väärtuste lugemiseks oleme kasutanud osakesi koos I2c adapteriga. See I2C adapter muudab ühenduse andurimooduliga lihtsaks ja usaldusväärsemaks.
Samm: vajalik riistvara:
Meie ülesande täitmiseks vajalikud materjalid hõlmavad allpool nimetatud riistvarakomponente:
1. MPU-6000
2. Osakeste footon
3. I2C kaabel
4. I2C kilp osakeste footonile
2. samm: riistvara ühendamine:
Riistvara ühendamise jaotis selgitab põhimõtteliselt anduri ja osakeste footoni vahel vajalikke juhtmestiku ühendusi. Soovitud väljundi mis tahes süsteemiga töötamisel on põhivajadus õigete ühenduste tagamine. Seega on vajalikud ühendused järgmised:
MPU-6000 töötab üle I2C. Siin on näide ühendusskeemist, mis näitab, kuidas anduri iga liidest ühendada.
Valmis plaat on konfigureeritud I2C liidese jaoks, seega soovitame seda ühendamist kasutada, kui olete muidu agnostik. Kõik, mida vajate, on neli juhtmest!
Vaja on ainult nelja ühendust Vcc, Gnd, SCL ja SDA ning need ühendatakse I2C kaabli abil.
Neid seoseid on näidatud ülaltoodud piltidel.
3. samm: liikumise jälgimise kood:
Alustame nüüd osakeste koodiga.
Andurimoodulit koos arduinoga kasutades kaasame teeki application.h ja spark_wiring_i2c.h. Raamatukogu "application.h" ja spark_wiring_i2c.h sisaldab funktsioone, mis hõlbustavad i2c suhtlust anduri ja osakese vahel.
Kogu osakeste kood on kasutaja mugavuse huvides toodud allpool:
#include #include // MPU-6000 I2C aadress on 0x68 (104) #define Addr 0x68 int xGyro = 0, yGyro = 0, zGyro = 0, xAccl = 0, yAccl = 0, zAccl = 0; void setup () {// Määra muutuja Particle.variable ("i2cdevice", "MPU-6000"); Particle.variable ("xAccl", xAccl); Particle.variable ("yAccl", yAccl); Particle.variable ("zAccl", zAccl); Particle.variable ("xGyro", xGyro); Osake.muutuja ("yGyro", yGyro); Osake.muutuja ("zGyro", zGyro); // Initsialiseerida I2C side kui Master Wire.begin (); // Initsialiseeri jadaühendus, määrake edastuskiirus = 9600 Serial.begin (9600); // Käivita I2C ülekanne Wire.beginTransmission (Addr); // Vali güroskoobi konfiguratsiooniregister Wire.write (0x1B); // Täielik skaala vahemik = 2000 dps Wire.write (0x18); // Peata I2C ülekanne Wire.endTransmission (); // Käivita I2C ülekanne Wire.beginTransmission (Addr); // Vali kiirendusmõõturi konfiguratsiooniregister Wire.write (0x1C); // Täielik skaala vahemik = +/- 16g Wire.write (0x18); // Peata I2C ülekanne Wire.endTransmission (); // Käivita I2C ülekanne Wire.beginTransmission (Addr); // Vali toitehaldusregister Wire.write (0x6B); // PLL xGyro viitega Wire.write (0x01); // Peata I2C ülekanne Wire.endTransmission (); viivitus (300); } void loop () {unsigned int data [6]; // Käivita I2C ülekanne Wire.beginTransmission (Addr); // Valige andmeregister Wire.write (0x3B); // Peata I2C ülekanne Wire.endTransmission (); // Taotle 6 baiti andmeid Wire.requestFrom (Addr, 6); // Loe 6 baiti andmeid, kui (Wire.available () == 6) {data [0] = Wire.read (); andmed [1] = Wire.read (); andmed [2] = Wire.read (); andmed [3] = Wire.read (); andmed [4] = Wire.read (); andmed [5] = Wire.read (); } viivitus (800); // Teisenda andmed xAccl = ((andmed [1] * 256) + andmed [0]); kui (xAccl> 32767) {xAccl -= 65536; } yAccl = ((andmed [3] * 256) + andmed [2]); kui (yAccl> 32767) {yAccl -= 65536; } zAccl = ((andmed [5] * 256) + andmed [4]); if (zAccl> 32767) {zAccl -= 65536; } viivitus (800); // Käivita I2C ülekanne Wire.beginTransmission (Addr); // Valige andmeregister Wire.write (0x43); // Peata I2C ülekanne Wire.endTransmission (); // Taotle 6 baiti andmeid Wire.requestFrom (Addr, 6); // Loe 6 baiti andmeid, kui (Wire.available () == 6) {data [0] = Wire.read (); andmed [1] = Wire.read (); andmed [2] = Wire.read (); andmed [3] = Wire.read (); andmed [4] = Wire.read (); andmed [5] = Wire.read (); } // Andmete teisendamine xGyro = ((andmed [1] * 256) + andmed [0]); kui (xGyro> 32767) {xGyro -= 65536; } yGyro = ((andmed [3] * 256) + andmed [2]); kui (yGyro> 32767) {yGyro -= 65536; } zGyro = ((andmed [5] * 256) + andmed [4]); if (zGyro> 32767) {zGyro -= 65536; } // Andmete väljastamine armatuurlauale Particle.publish ("Kiirendus X-teljel:", String (xAccl)); viivitus (1000); Particle.publish ("Kiirendus Y-teljel:", String (yAccl)); viivitus (1000); Particle.publish ("Kiirendus Z-teljel:", String (zAccl)); viivitus (1000); Particle.publish ("Pöörlemise X-telg:", String (xGyro)); viivitus (1000); Particle.publish ("Y-pöörlemistelg:", string (yGyro)); viivitus (1000); Particle.publish ("Z-pöörlemistelg:", string (zGyro)); viivitus (1000); }
Funktsioon Particle.variable () loob muutujad anduri väljundi salvestamiseks ja Particle.publish () kuvab väljundi saidi armatuurlaual.
Anduri väljund on näidatud ülaltoodud pildil.
4. samm: rakendused:
MPU-6000 on liikumise jälgimise andur, mis leiab rakenduse nutitelefonide ja tahvelarvutite liikumisliideses. Nutitelefonides saab neid andureid kasutada sellistes rakendustes nagu rakenduste liigutamise käsud ja telefoni juhtimine, täiustatud mängud, liitreaalsus, panoraamfotode jäädvustamine ja vaatamine ning jalakäijate ja sõidukite navigeerimine. MotionTracking tehnoloogia võib muuta telefonid ja tahvelarvutid võimsateks 3D-intelligentseteks seadmeteks, mida saab kasutada rakendustes, alates tervise- ja treeningseirest kuni asukohapõhiste teenusteni.
Soovitan:
Kiirenduse mõõtmine ADXL345 ja osakeste footoni abil: 4 sammu
Kiirenduse mõõtmine ADXL345 ja osakeste footonite abil: ADXL345 on väike, õhuke ülivõimsusega 3-teljeline kiirendusmõõtur, millel on kõrge eraldusvõimega (13-bitine) mõõtmine kuni ± 16 g. Digitaalsed väljundandmed on vormindatud 16-bitiste kaheosaliste täienditena ja neile on juurdepääs digitaalse liidese I2 C kaudu. See mõõdab
Magnetvälja mõõtmine HMC5883 ja osakeste footoni abil: 4 sammu
Magnetvälja mõõtmine, kasutades HMC5883 ja osakeste fotone: HMC5883 on digitaalne kompass, mis on loodud madala välja magnetvälja tuvastamiseks. Sellel seadmel on lai magnetvälja vahemik +/- 8 Oe ja väljundkiirus 160 Hz. HMC5883 andur sisaldab automaatseid degaussing rihma draivereid, nihke tühistamist ja
Päikesepaneeli jälgimine osakeste footoni abil: 7 sammu
Päikesepaneelide jälgimine osakeste footonite abil: Projekti eesmärk on parandada päikesepaneelide efektiivsust. Projekti eesmärk on jälgida päikeseenergia fotoelektrienergia tootmist, et parandada päikeseenergiajaama jõudlust, seiret ja hooldust. Selles projektis on osakeste ph
Temperatuuri jälgimine MCP9808 ja osakeste footoni abil: 4 sammu
Temperatuuri jälgimine MCP9808 ja osakeste fotonite abil: MCP9808 on ülitäpne digitaalne temperatuuriandur ± 0,5 ° C I2C minimoodul. Need on varustatud kasutaja poolt programmeeritavate registritega, mis hõlbustavad temperatuuri andmise rakendusi. MCP9808 ülitäpsest temperatuuriandurist on saanud tööstusharu
Temperatuuri ja niiskuse jälgimine SHT25 ja osakeste footoni abil: 5 sammu
Temperatuuri ja niiskuse jälgimine, kasutades SHT25 ja osakeste fotone: Oleme hiljuti töötanud erinevate projektide kallal, mis vajasid temperatuuri ja niiskuse jälgimist, ja siis mõistsime, et need kaks parameetrit mängivad tegelikult keskset rolli süsteemi töö efektiivsuse hindamisel. Mõlemad Indias