Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
MPU-6000 është një Sensor i Ndjekjes së Lëvizjes me 6 Aks, i cili ka një akselerometër 3-Bosht dhe një xhiroskop 3-Bosht të ngulitur në të. Ky sensor është i aftë të gjurmojë në mënyrë efikase pozicionin dhe vendndodhjen e saktë të një objekti në rrafshin 3-dimensional. Mund të përdoret në sistemet që kërkojnë analiza të pozicionit me saktësinë më të lartë.
Në këtë tutorial është ilustruar ndërfaqja e modulit të sensorit MPU-6000 me arduino nano. Për të lexuar vlerat e nxitimit dhe këndit të rrotullimit, ne kemi përdorur arduino nano me një përshtatës I2c. Ky përshtatës I2C e bën lidhjen me modulin e sensorit të lehtë dhe më të besueshëm.
Hapi 1: Kërkohet harduer:
Materialet që na duhen për të arritur qëllimin tonë përfshijnë përbërësit e mëposhtëm të harduerit:
1. MPU-6000
2. Arduino Nano
3. Kabllo I2C
4. Mburoja I2C për arduino nano
Hapi 2: Bashkimi i harduerit:
Seksioni i lidhjes së harduerit në thelb shpjegon lidhjet e telave të kërkuara midis sensorit dhe arduino nano. Sigurimi i lidhjeve të sakta është nevoja themelore gjatë punës në çdo sistem për daljen e dëshiruar. Pra, lidhjet e nevojshme janë si më poshtë:
MPU-6000 do të punojë mbi I2C. Këtu është shembulli i diagramit të instalimeve elektrike, duke demonstruar se si të lidhni secilën ndërfaqe të sensorit.
Jashtë kutisë, bordi është i konfiguruar për një ndërfaqe I2C, si i tillë ne rekomandojmë përdorimin e këtij bashkimi nëse përndryshe jeni agnostik.
Gjithçka që ju nevojitet janë katër tela! Vetëm katër lidhje kërkohen kunjat Vcc, Gnd, SCL dhe SDA dhe këto janë të lidhura me ndihmën e kabllit I2C.
Këto lidhje demonstrohen në fotot e mësipërme.
Hapi 3: Kodi për Ndjekjen e Lëvizjes:
Le të fillojmë me kodin arduino tani.
Ndërsa përdorim modulin e sensorit me arduino, ne përfshijmë bibliotekën Wire.h. Biblioteka "Wire" përmban funksione të cilat lehtësojnë komunikimin i2c midis sensorit dhe bordit arduino.
I gjithë kodi arduino është dhënë më poshtë për lehtësinë e përdoruesit:
#përfshi
// Adresa MPU-6000 I2C është 0x68 (104)
#përcaktoni Addr 0x68
void setup ()
{
// Filloni komunikimin I2C si Master
Wire.begin ();
// Filloni komunikimin serik, vendosur normën e baudit = 9600
Serial.filloj (9600);
// Filloni transmetimin I2C
Wire.beginTransmetimi (Addr);
// Zgjidh regjistrin e konfigurimit të xhiroskopit
Wire.write (0x1B);
// Gama e shkallës së plotë = 2000 dps
Wire.write (0x18);
// Ndaloni transmetimin I2C
Wire.endTransmission ();
// Filloni transmetimin I2C
Wire.beginTransmetimi (Addr);
// Zgjidh regjistrin e konfigurimit të akselerometrit
Wire.write (0x1C);
// Gama e shkallës së plotë = +/- 16g
Wire.write (0x18);
// Ndaloni transmetimin I2C
Wire.endTransmission ();
// Filloni transmetimin I2C
Wire.beginTransmetimi (Addr);
// Zgjidhni regjistrin e menaxhimit të energjisë
Wire.write (0x6B);
// PLL me referencë xGyro
Wire.write (0x01);
// Ndaloni transmetimin I2C
Wire.endTransmission ();
vonesë (300);
}
lak void ()
{
të dhëna int të panënshkruara [6];
// Filloni transmetimin I2C
Wire.beginTransmetimi (Addr);
// Zgjidh regjistrin e të dhënave
Wire.write (0x3B);
// Ndaloni transmetimin I2C
Wire.endTransmission ();
// Kërkoni 6 bajt të dhëna
Tela. Kërkohet Nga (Addr, 6);
// Lexoni 6 bajt të dhëna
nëse (Wire. në dispozicion () == 6)
{
të dhëna [0] = Wire.read ();
të dhëna [1] = Wire.read ();
të dhëna [2] = Wire.read ();
të dhëna [3] = Wire.read ();
të dhëna [4] = Wire.read ();
të dhëna [5] = Wire.read ();
}
// Shndërroni të dhënat
int xAccl = të dhëna [0] * 256 + të dhëna [1];
int yAccl = të dhëna [2] * 256 + të dhëna [3];
int zAccl = të dhëna [4] * 256 + të dhëna [5];
// Filloni transmetimin I2C
Wire.beginTransmetimi (Addr);
// Zgjidh regjistrin e të dhënave
Wire.write (0x43);
// Ndaloni transmetimin I2C
Wire.endTransmission ();
// Kërkoni 6 bajt të dhëna
Tela. Kërkohet Nga (Addr, 6);
// Lexoni 6 bajt të dhëna
nëse (Wire. në dispozicion () == 6)
{
të dhëna [0] = Wire.read ();
të dhëna [1] = Wire.read ();
të dhëna [2] = Wire.read ();
të dhëna [3] = Wire.read ();
të dhëna [4] = Wire.read ();
të dhëna [5] = Wire.read ();
}
// Shndërroni të dhënat
int xGyro = të dhëna [0] * 256 + të dhëna [1];
int yGyro = të dhëna [2] * 256 + të dhëna [3];
int zGyro = të dhëna [4] * 256 + të dhëna [5];
// Dalja e të dhënave në monitorin serik
Serial.print ("Përshpejtimi në boshtin X:");
Serial.println (xAccl);
Serial.print ("Përshpejtimi në Boshtin Y:");
Serial.println (yAccl);
Serial.print ("Përshpejtimi në Boshtin Z:");
Serial.println (zAccl);
Serial.print ("Boshti X i rrotullimit:");
Serial.println (xGyro);
Serial.print ("Y-Boshti i Rrotullimit:");
Serial.println (yGyro);
Serial.print ("Z-Boshti i Rrotullimit:");
Serial.println (zGyro);
vonesë (500);
}
Në bibliotekën Wire.write () dhe Wire.read () përdoret për të shkruar komandat dhe lexuar daljen e sensorit.
Serial.print () dhe Serial.println () përdoret për të shfaqur daljen e sensorit në monitorin serik të Arduino IDE.
Dalja e sensorit tregohet në figurën e mësipërme.
Hapi 4: Aplikimet:
MPU-6000 është një sensor i përcjelljes së lëvizjes, i cili gjen aplikimin e tij në ndërfaqen e lëvizjes së telefonave inteligjentë dhe tabletave. Në telefonat inteligjentë, këta sensorë mund të përdoren në aplikacione të tilla si komandat e gjesteve për aplikacionet dhe kontrollin e telefonit, lojërat e zgjeruara, realiteti i shtuar, kapja dhe shikimi panoramik i fotografive dhe navigimi i këmbësorëve dhe automjeteve. Teknologjia MotionTracking mund të shndërrojë celularët dhe tabletët në pajisje të fuqishme inteligjente 3D që mund të përdoren në aplikacione duke filluar nga monitorimi i shëndetit dhe fitnesit deri tek shërbimet e bazuara në vendndodhje.