Innholdsfortegnelse:
- Trinn 1: Nødvendig maskinvare:
- Trinn 2: Maskinvaretilkobling:
- Trinn 3: Kode for bevegelsessporing:
- Trinn 4: Søknader:
Video: Bevegelsessporing ved bruk av MPU-6000 og Particle Photon: 4 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:21
MPU-6000 er en 6-akset bevegelsessensor som har 3-akset akselerometer og 3-akset gyroskop innebygd i den. Denne sensoren er i stand til effektivt å spore nøyaktig posisjon og plassering av et objekt i det tredimensjonale planet. Den kan brukes i systemene som krever posisjonsanalyse med høyeste presisjon.
I denne opplæringen har grensesnittet mellom sensormodulen MPU-6000 og partikkelfoton blitt illustrert. For å lese verdiene for akselerasjon og rotasjonsvinkel har vi brukt partikkel med en I2c -adapter. Denne I2C -adapteren gjør tilkoblingen til sensormodulen enkel og mer pålitelig.
Trinn 1: Nødvendig maskinvare:
Materialene som kreves for å utføre vår oppgave inkluderer maskinvarekomponenter som er nevnt nedenfor:
1. MPU-6000
2. Partikkelfoton
3. I2C -kabel
4. I2C -skjerm for partikkelfoton
Trinn 2: Maskinvaretilkobling:
Maskinvarekoblingsdelen forklarer i utgangspunktet ledningsforbindelsene som kreves mellom sensoren og partikkelfotonet. Å sikre riktige tilkoblinger er den grunnleggende nødvendigheten mens du arbeider på et hvilket som helst system for ønsket utgang. Så de nødvendige tilkoblingene er som følger:
MPU-6000 fungerer over I2C. Her er eksempel på koblingsskjema, som viser hvordan du kobler til hvert grensesnitt på sensoren.
Uten boksen er brettet konfigurert for et I2C-grensesnitt, derfor anbefaler vi å bruke denne tilkoblingen hvis du ellers er agnostiker. Alt du trenger er fire ledninger!
Bare fire tilkoblinger kreves Vcc, Gnd, SCL og SDA -pinner, og disse er koblet til ved hjelp av I2C -kabel.
Disse sammenhengene er vist på bildene ovenfor.
Trinn 3: Kode for bevegelsessporing:
La oss begynne med partikkelkoden nå.
Mens vi bruker sensormodulen med arduino, inkluderer vi application.h og spark_wiring_i2c.h biblioteket. "application.h" og spark_wiring_i2c.h biblioteket inneholder funksjonene som letter i2c -kommunikasjonen mellom sensoren og partikkelen.
Hele partikkelkoden er gitt nedenfor for brukerens bekvemmelighet:
#include #include // MPU-6000 I2C-adressen er 0x68 (104) #define Addr 0x68 int xGyro = 0, yGyro = 0, zGyro = 0, xAccl = 0, yAccl = 0, zAccl = 0; void setup () {// Angi variabel Particle.variable ("i2cdevice", "MPU-6000"); Partikkel.variabel ("xAccl", xAccl); Particle.variable ("yAccl", yAccl); Partikkel.variabel ("zAccl", zAccl); Particle.variable ("xGyro", xGyro); Particle.variable ("yGyro", yGyro); Partikkel.variabel ("zGyro", zGyro); // Initialiser I2C -kommunikasjon som Master Wire.begin (); // Initialiser seriell kommunikasjon, sett overføringshastighet = 9600 Serial.begin (9600); // Start I2C -overføring Wire.beginTransmission (Addr); // Velg gyroskopkonfigurasjonsregister Wire.write (0x1B); // Fullt skalaområde = 2000 dps Wire.write (0x18); // Stopp I2C -overføring Wire.endTransmission (); // Start I2C -overføring Wire.beginTransmission (Addr); // Velg akselerometer konfigurasjonsregister Wire.write (0x1C); // Full skala område = +/- 16g Wire.write (0x18); // Stopp I2C -overføring Wire.endTransmission (); // Start I2C -overføring Wire.beginTransmission (Addr); // Velg strømstyringsregister Wire.write (0x6B); // PLL med xGyro -referanse Wire.write (0x01); // Stopp I2C -overføring Wire.endTransmission (); forsinkelse (300); } void loop () {unsigned int data [6]; // Start I2C -overføring Wire.beginTransmission (Addr); // Velg dataregister Wire.write (0x3B); // Stopp I2C -overføring Wire.endTransmission (); // Be om 6 byte med data Wire.requestFrom (Addr, 6); // Les 6 byte med data hvis (Wire.available () == 6) {data [0] = Wire.read (); data [1] = Wire.read (); data [2] = Wire.read (); data [3] = Wire.read (); data [4] = Wire.read (); data [5] = Wire.read (); } forsinkelse (800); // Konverter dataene xAccl = ((data [1] * 256) + data [0]); hvis (xAccl> 32767) {xAccl -= 65536; } yAccl = ((data [3] * 256) + data [2]); hvis (yAccl> 32767) {yAccl -= 65536; } zAccl = ((data [5] * 256) + data [4]); hvis (zAccl> 32767) {zAccl -= 65536; } forsinkelse (800); // Start I2C -overføring Wire.beginTransmission (Addr); // Velg dataregister Wire.write (0x43); // Stopp I2C -overføring Wire.endTransmission (); // Be om 6 byte med data Wire.requestFrom (Addr, 6); // Les 6 byte med data hvis (Wire.available () == 6) {data [0] = Wire.read (); data [1] = Wire.read (); data [2] = Wire.read (); data [3] = Wire.read (); data [4] = Wire.read (); data [5] = Wire.read (); } // Konverter dataene xGyro = ((data [1] * 256) + data [0]); hvis (xGyro> 32767) {xGyro -= 65536; } yGyro = ((data [3] * 256) + data [2]); hvis (yGyro> 32767) {yGyro -= 65536; } zGyro = ((data [5] * 256) + data [4]); hvis (zGyro> 32767) {zGyro -= 65536; } // Utdata til dashbordet Particle.publish ("Acceleration in X-Axis:", String (xAccl)); forsinkelse (1000); Particle.publish ("Akselerasjon i Y-akser:", String (yAccl)); forsinkelse (1000); Particle.publish ("Acceleration in Z-Axis:", String (zAccl)); forsinkelse (1000); Particle.publish ("X-Axis of Rotation:", String (xGyro)); forsinkelse (1000); Particle.publish ("Y-Axis of Rotation:", String (yGyro)); forsinkelse (1000); Particle.publish ("Z-Axis of Rotation:", String (zGyro)); forsinkelse (1000); }
Particle.variable () -funksjonen oppretter variablene for å lagre sensorens utgang og Particle.publish () -funksjonen viser utgangen på dashbordet til nettstedet.
Sensorutgangen er vist på bildet ovenfor for din referanse.
Trinn 4: Søknader:
MPU-6000 er en bevegelsessporingssensor, som finner sin anvendelse i bevegelsesgrensesnittet til smarttelefoner og nettbrett. I smarttelefoner kan disse sensorene brukes i applikasjonene, for eksempel bevegelseskommandoer for applikasjoner og telefonkontroll, forbedret spill, utvidet virkelighet, panoramafotografering og visning, samt fotgjenger og kjøretøynavigasjon. MotionTracking-teknologien kan konvertere telefoner og nettbrett til kraftige 3D-intelligente enheter som kan brukes i applikasjoner som spenner fra helse- og treningsovervåking til stedsbaserte tjenester.
Anbefalt:
Måling av akselerasjon ved bruk av ADXL345 og Particle Photon: 4 trinn
Måling av akselerasjon ved bruk av ADXL345 og Particle Photon: ADXL345 er et lite, tynt, ultralavt, 3-akset akselerometer med høy oppløsning (13-bit) måling på opptil ± 16 g. Digitale utdata er formatert som 16-biters tokomplement og er tilgjengelig via I2 C digitalt grensesnitt. Den måler
Temperaturmåling ved bruk av MCP9803 og Particle Photon: 4 trinn
Temperaturmåling ved bruk av MCP9803 og Particle Photon: MCP9803 er en 2-leders temperatursensor med høy nøyaktighet. De er utformet med brukerprogrammerbare registre som letter temperaturfølere. Denne sensoren er egnet for svært sofistikert flersones temperaturovervåkingssystem. I
Akselerasjonsmåling ved bruk av BMA250 og Particle Photon: 4 trinn
Akselerasjonsmåling ved hjelp av BMA250 og Particle Photon: BMA250 er et lite, tynt, ultralavt, 3-akset akselerometer med høy oppløsning (13-bit) måling på opptil ± 16 g. Digitale utdata er formatert som 16-biters tokomplement og er tilgjengelig via I2C digitalt grensesnitt. Den måler den statiske
Trykkmåling ved bruk av CPS120 og Particle Photon: 4 trinn
Trykkmåling ved hjelp av CPS120 og Particle Photon: CPS120 er en høykvalitets og lavkostet kapasitiv absolutt trykksensor med fullt kompensert effekt. Den bruker svært lite strøm og består av en ultra liten mikro-elektro-mekanisk sensor (MEMS) for trykkmåling. Et sigma-delta basert
Temperaturovervåkning ved bruk av MCP9808 og Particle Photon: 4 trinn
Temperaturovervåking ved bruk av MCP9808 og Particle Photon: MCP9808 er en meget nøyaktig digital temperatursensor ± 0,5 ° C I2C minimodul. De er utformet med brukerprogrammerbare registre som letter temperaturfølere. MCP9808 temperatursensoren med høy nøyaktighet har blitt en industri