Բովանդակություն:
- Քայլ 1: Պահանջվում է սարքավորում
- Քայլ 2: Սարքավորման միացում
- Քայլ 3: Շարժման հետևման կոդ
- Քայլ 4: Դիմումներ
Video: Շարժման հետևում MPU-6000- ի և Arduino Nano- ի միջոցով. 4 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:45
MPU-6000- ը 6 առանցքի շարժման հետևման տվիչ է, որն ունի 3 առանցքի արագացուցիչ և 3 առանցքի գիրոսկոպ: Այս սենսորն ունակ է արդյունավետ կերպով հետևել օբյեկտի ճշգրիտ դիրքին և գտնվելու վայրը եռաչափ հարթությունում: Այն կարող է օգտագործվել այն համակարգերում, որոնք պահանջում են դիրքի վերլուծություն ամենաբարձր ճշգրտությամբ:
Այս ձեռնարկում պատկերված է MPU-6000 սենսորային մոդուլի ինտերֆեյսը arduino nano- ի հետ: Արագացման և պտտման անկյունի արժեքները կարդալու համար մենք օգտագործել ենք arduino nano- ն I2c ադապտերով: Այս I2C ադապտերը դյուրին և հուսալի է դարձնում սենսորային մոդուլի հետ կապը:
Քայլ 1: Պահանջվում է սարքավորում
Նյութերը, որոնք մեզ անհրաժեշտ են մեր նպատակին հասնելու համար, ներառում են հետևյալ ապարատային բաղադրիչները.
1. MPU-6000
2. Արդուինո Նանո
3. I2C մալուխ
4. I2C Shield arduino nano- ի համար
Քայլ 2: Սարքավորման միացում
Սարքավորումների միացման բաժինը հիմնականում բացատրում է սենսորի և arduino nano- ի միջև պահանջվող լարերի միացումները: Connectionsանկալի ելքի համար ցանկացած համակարգի վրա աշխատելիս հիմնական անհրաժեշտությունն է հիմնական կապերի ապահովումը: Այսպիսով, անհրաժեշտ կապերը հետևյալն են.
MPU-6000- ը կաշխատի I2C- ով: Ահա միացման սխեմայի օրինակ, որը ցույց է տալիս, թե ինչպես միացնել սենսորի յուրաքանչյուր միջերեսը:
Տուփից դուրս, տախտակը կազմաձևված է I2C ինտերֆեյսի համար, ուստի խորհուրդ ենք տալիս օգտագործել այս կապը, եթե այլապես ագնոստիկ եք:
Ձեզ անհրաժեշտ է չորս լար: Միայն չորս միացում է պահանջվում Vcc, Gnd, SCL և SDA կապում, որոնք միացված են I2C մալուխի օգնությամբ:
Այս կապերը ցուցադրվում են վերը նշված նկարներում:
Քայլ 3: Շարժման հետևման կոդ
Եկեք հիմա սկսենք arduino կոդով:
Arduino- ի հետ սենսորային մոդուլն օգտագործելիս մենք ներառում ենք Wire.h գրադարանը: «Լար» գրադարանը պարունակում է գործառույթներ, որոնք հեշտացնում են i2c հաղորդակցությունը սենսորի և arduino տախտակի միջև:
Օգտվողի հարմարության համար ստորև տրված է arduino- ի ամբողջ ծածկագիրը.
#ներառում
// MPU-6000 I2C հասցեն ՝ 0x68 (104)
#սահմանեք Addr 0x68
դատարկ կարգավորում ()
{
// Սկզբնականացնել I2C հաղորդակցությունը որպես վարպետ
Wire.begin ();
// Նախնականացնել սերիական հաղորդակցությունը, սահմանել բաուդ արագություն = 9600
Serial.begin (9600);
// Սկսել I2C փոխանցումը
Wire.beginTransmission (Addr);
// Ընտրեք գիրոսկոպի կազմաձևման գրանցամատյան
Wire.write (0x1B);
// Ամբողջ մասշտաբի տիրույթ = 2000 դպ/ վ
Wire.write (0x18);
// Դադարեցնել I2C փոխանցումը
Wire.endTransmission ();
// Սկսել I2C փոխանցումը
Wire.beginTransmission (Addr);
// Ընտրեք արագացուցիչի կազմաձևման գրանցամատյան
Wire.write (0x1C);
// Ամբողջ մասշտաբի միջակայք = +/- 16 գ
Wire.write (0x18);
// Դադարեցնել I2C փոխանցումը
Wire.endTransmission ();
// Սկսել I2C փոխանցումը
Wire.beginTransmission (Addr);
// Ընտրեք էներգիայի կառավարման գրանցամատյան
Wire.write (0x6B);
// PLL xGyro հղումով
Wire.write (0x01);
// Դադարեցնել I2C փոխանցումը
Wire.endTransmission ();
ուշացում (300);
}
դատարկ շրջան ()
{
անստորագիր int տվյալներ [6];
// Սկսել I2C փոխանցումը
Wire.beginTransmission (Addr);
// Ընտրեք տվյալների գրանցամատյան
Wire.write (0x3B);
// Դադարեցնել I2C փոխանցումը
Wire.endTransmission ();
// Պահանջել 6 բայթ տվյալներ
Հաղորդալար. Խնդրում ենք (Addr, 6);
// Կարդացեք տվյալների 6 բայթ
եթե (Wire.available () == 6)
{
տվյալներ [0] = Wire.read ();
տվյալներ [1] = Wire.read ();
տվյալներ [2] = Wire.read ();
տվյալներ [3] = Wire.read ();
տվյալներ [4] = Wire.read ();
տվյալներ [5] = Wire.read ();
}
// Փոխարկել տվյալները
int xAccl = տվյալներ [0] * 256 + տվյալներ [1];
int yAccl = տվյալներ [2] * 256 + տվյալներ [3];
int zAccl = տվյալներ [4] * 256 + տվյալներ [5];
// Սկսել I2C փոխանցումը
Wire.beginTransmission (Addr);
// Ընտրեք տվյալների գրանցամատյան
Wire.write (0x43);
// Դադարեցնել I2C փոխանցումը
Wire.endTransmission ();
// Պահանջել 6 բայթ տվյալներ
Հաղորդալար. Խնդրում ենք (Addr, 6);
// Կարդացեք 6 բայթ տվյալներ
եթե (Wire.available () == 6)
{
տվյալներ [0] = Wire.read ();
տվյալներ [1] = Wire.read ();
տվյալներ [2] = Wire.read ();
տվյալներ [3] = Wire.read ();
տվյալներ [4] = Wire.read ();
տվյալներ [5] = Wire.read ();
}
// Փոխարկել տվյալները
int xGyro = տվյալներ [0] * 256 + տվյալներ [1];
int yGyro = տվյալներ [2] * 256 + տվյալներ [3];
int zGyro = տվյալներ [4] * 256 + տվյալներ [5];
// Ելքային տվյալները սերիական մոնիտորին
Serial.print («Արագացում X- առանցքում.»);
Serial.println (xAccl);
Serial.print («Արագացում Y- առանցքում.»);
Serial.println (yAccl);
Serial.print («Արագացում Z- առանցքում.»);
Serial.println (zAccl);
Serial.print ("Պտտման առանցք.");
Serial.println (xGyro);
Serial.print ("Պտտման առանցք.");
Serial.println (yGyro);
Serial.print ("Պտտման առանցք.");
Serial.println (zGyro);
ուշացում (500);
}
Լարային գրադարանում Wire.write () և Wire.read () օգտագործվում են հրամանները գրելու և սենսորի ելքը կարդալու համար:
Serial.print () և Serial.println () օգտագործվում են սենսորի ելքը Arduino IDE- ի սերիական մոնիտորի վրա ցուցադրելու համար:
Սենսորի ելքը ցուցադրվում է վերևի նկարում:
Քայլ 4: Դիմումներ
MPU-6000- ը շարժման հետևման տվիչ է, որն իր կիրառությունը գտնում է սմարթֆոնների և պլանշետների շարժման ինտերֆեյսում: Սմարթֆոններում այս սենսորները կարող են օգտագործվել այնպիսի ծրագրերում, ինչպիսիք են ՝ ծրագրերի և հեռախոսի կառավարման ժեստերի հրամանները, ուժեղացված խաղերը, ընդլայնված իրականությունը, համայնապատկերի լուսանկարահանումն ու դիտումը, ինչպես նաև հետիոտնային և տրանսպորտային միջոցների նավարկությունը: MotionTracking տեխնոլոգիան կարող է հեռախոսներն ու պլանշետները վերածել հզոր 3D խելացի սարքերի, որոնք կարող են օգտագործվել ծրագրերում ՝ առողջության և ֆիթնեսի մոնիտորինգից մինչև տեղադրության վրա հիմնված ծառայություններ:
Խորհուրդ ենք տալիս:
Մարդու աչքի շարժման հետևում. 6 քայլ
Մարդու աչքի շարժման հետևում. Այս նախագիծը նպատակ ունի գրավել մարդու աչքի շարժումը և ցուցադրում է նրա շարժումը մի շարք LED լույսերի վրա, որոնք տեղադրված են աչքի տեսքով: Այս տիպի նախագիծը կարող է պոտենցիալ շատ կիրառություններ ունենալ ռոբոտաշինության և հատկապես հումայի ոլորտում
QeMotion - Շարժման հետևում յուրաքանչյուր ականջակալի համար: 5 քայլ (նկարներով)
QeMotion - Շարժման հետևում յուրաքանչյուր ականջակալի համար. Այն աշխատում է ՝ հետևելով ձեր գլխի շարժմանը (կամ դրա համար ականջակալ) և որոշակի շարժումների համար ստեղնաշարի սեղմումներ հրահրելով: Այսպիսով, ձեր կոմպ
Raspberry Pi- ի և MMA7455- ի միջոցով արագացման տատանումների հետևում Python- ի միջոցով. 6 քայլ
Raspberry Pi- ի և MMA7455- ի միջոցով արագացման տատանումներին հետևելը ՝ օգտագործելով Python- ը. Այն դեռ աշխատում է… Արագացնող տիեզերանավի ներկայացուցչությունը պարզաբանեց, որ մաքոքային ամենաբարձր կետում գտնվող ժամացույցը ավելի արագ կընտրի, քան բազայում `գրավիտացիոն ժամանակի ընդլայնման պատճառով: Մի քանի
Աչքի շարժման հետևում ինֆրակարմիր տվիչի միջոցով `5 քայլ
Աչքի շարժման հետևում ինֆրակարմիր սենսորով. Ես օգտագործել եմ ինֆրակարմիր սենսոր ՝ աչքերի շարժումները զգալու և LED- ն վերահսկելու համար: Ես ակնագնդեր եմ պատրաստել LED Կասետային NeoPixel- ով
Շարժման վերահսկվող վարդակից - շարժման զգայուն լույսից `6 քայլ
Շարժման վերահսկվող վարդակից - Շարժման զգայուն լույսից. Պատկերացրեք, որ դուք հնարամիտ եք, ով գնում է բլոկի ամենասարսափելի տունը: Բոլոր գայլերի, ուրվականների և գերեզմանների կողքով անցնելուց հետո դուք վերջապես հասնում եք վերջին ճանապարհին: Դուք կարող եք տեսնել կոնֆետը ձեր առջևի ամանի մեջ: Բայց հետո հանկարծ մի ղո