Բովանդակություն:
- Քայլ 1: Պահանջվում է սարքավորում
- Քայլ 2: Սարքավորման միացում
- Քայլ 3: Շարժման հետևման կոդ
- Քայլ 4: Դիմումներ
Video: Շարժման հետևում MPU-6000- ի և մասնիկի ֆոտոնի միջոցով `4 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:45
MPU-6000- ը 6 առանցքի շարժման հետևման տվիչ է, որն ունի 3 առանցքի արագացուցիչ և 3 առանցքի գիրոսկոպ: Այս սենսորն ունակ է արդյունավետ կերպով հետևել օբյեկտի ճշգրիտ դիրքին և գտնվելու վայրը եռաչափ հարթությունում: Այն կարող է օգտագործվել այն համակարգերում, որոնք պահանջում են դիրքի վերլուծություն ամենաբարձր ճշգրտությամբ:
Այս ձեռնարկում պատկերված է MPU-6000 սենսորային մոդուլի ինտերֆեյսը մասնիկ ֆոտոնի հետ: Արագացման և պտտման անկյունի արժեքները կարդալու համար մենք օգտագործել ենք I2c ադապտեր ունեցող մասնիկ: Այս I2C ադապտերը դյուրին և հուսալի է դարձնում սենսորային մոդուլի հետ կապը:
Քայլ 1: Պահանջվում է սարքավորում
Մեր առաջադրանքը կատարելու համար անհրաժեշտ նյութերը ներառում են ստորև նշված ապարատային բաղադրիչները.
1. MPU-6000
2. Ֆոտոն մասնիկ
3. I2C մալուխ
4. I2C վահան մասնիկի ֆոտոնի համար
Քայլ 2: Սարքավորման միացում
Սարքավորումների միացման բաժինը հիմնականում բացատրում է սենսորի և մասնիկ ֆոտոնի միջև պահանջվող լարերի միացումները: Connectionsանկալի ելքի համար ցանկացած համակարգի վրա աշխատելիս հիմնական անհրաժեշտությունն է հիմնական կապերի ապահովումը: Այսպիսով, անհրաժեշտ կապերը հետևյալն են.
MPU-6000- ը կաշխատի I2C- ով: Ահա միացման սխեմայի օրինակ, որը ցույց է տալիս, թե ինչպես միացնել սենսորի յուրաքանչյուր միջերեսը:
Տուփից դուրս, տախտակը կազմաձևված է I2C ինտերֆեյսի համար, ուստի խորհուրդ ենք տալիս օգտագործել այս կապը, եթե այլապես ագնոստիկ եք: Ձեզ անհրաժեշտ է չորս լար:
Միայն չորս միացում է պահանջվում Vcc, Gnd, SCL և SDA կապում, որոնք միացված են I2C մալուխի օգնությամբ:
Այս կապերը ցուցադրվում են վերը նշված նկարներում:
Քայլ 3: Շարժման հետևման կոդ
Եկեք հիմա սկսենք մասնիկների կոդով:
Arduino- ի հետ սենսորային մոդուլն օգտագործելիս մենք ներառում ենք application.h և spark_wiring_i2c.h գրադարանը: «application.h» և spark_wiring_i2c.h գրադարանը պարունակում են գործառույթներ, որոնք հեշտացնում են i2c հաղորդակցությունը սենսորի և մասնիկի միջև:
Օգտվողի հարմարության համար ստորև բերված է մասնիկների ամբողջ ծածկագիրը.
#ներառել #ներառել // MPU-6000 I2C հասցեն ՝ 0x68 (104) #սահմանել Addr 0x68 int xGyro = 0, yGyro = 0, zGyro = 0, xAccl = 0, yAccl = 0, zAccl = 0; void setup () {// Սահմանել փոփոխական Particle.variable ("i2cdevice", "MPU-6000"); Մասնիկ. Փոփոխական («xAccl», xAccl); Particle.variable («yAccl», yAccl); Particle.variable («zAccl», zAccl); Particle.variable («xGyro», xGyro); Particle.variable («yGyro», yGyro); Particle.variable («zGyro», zGyro); // Նախնականացնել I2C հաղորդակցությունը որպես Master Wire.begin (); // Նախնականացնել սերիական հաղորդակցությունը, սահմանել baud rate = 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); } void loop () {unsigned int data [6]; // Սկսել I2C փոխանցումը Wire.beginTransmission (Addr); // Ընտրեք տվյալների գրանցամատյան Wire.write (0x3B); // Դադարեցնել I2C փոխանցումը Wire.endTransmission (); // Պահանջել տվյալների 6 բայթ Wire.requestFrom (Addr, 6); // Կարդացեք տվյալների 6 բայթ, եթե (Wire.available () == 6) {data [0] = Wire.read (); տվյալներ [1] = Wire.read (); տվյալներ [2] = Wire.read (); տվյալներ [3] = Wire.read (); տվյալներ [4] = Wire.read (); տվյալներ [5] = Wire.read (); } ուշացում (800); // Փոխարկել տվյալները xAccl = ((տվյալները [1] * 256) + տվյալները [0]); եթե (xAccl> 32767) {xAccl -= 65536; } yAccl = ((տվյալներ [3] * 256) + տվյալներ [2]); եթե (yAccl> 32767) {yAccl -= 65536; } zAccl = ((տվյալներ [5] * 256) + տվյալներ [4]); եթե (zAccl> 32767) {zAccl -= 65536; } ուշացում (800); // Սկսել I2C փոխանցումը Wire.beginTransmission (Addr); // Ընտրեք տվյալների գրանցամատյան Wire.write (0x43); // Դադարեցնել I2C փոխանցումը Wire.endTransmission (); // Պահանջել 6 բայթ տվյալների Wire.requestFrom (Addr, 6); // Կարդացեք տվյալների 6 բայթ, եթե (Wire.available () == 6) {data [0] = Wire.read (); տվյալներ [1] = Wire.read (); տվյալներ [2] = Wire.read (); տվյալներ [3] = Wire.read (); տվյալներ [4] = Wire.read (); տվյալներ [5] = Wire.read (); } // Փոխարկել տվյալները xGyro = ((տվյալները [1] * 256) + տվյալները [0]); եթե (xGyro> 32767) {xGyro -= 65536; } yGyro = ((տվյալներ [3] * 256) + տվյալներ [2]); եթե (yGyro> 32767) {yGyro -= 65536; } zGyro = ((տվյալներ [5] * 256) + տվյալներ [4]); եթե (zGyro> 32767) {zGyro -= 65536; } // Տվյալների մուտքագրում Particle.publish- ի վահանակ («Արագացում X- առանցքում.», Լար (xAccl)); ուշացում (1000); Particle.publish («Արագացում Y- առանցքում.», Լարային (yAccl)); ուշացում (1000); Particle.publish ("Արագացում Z- առանցքում.", Լարային (zAccl)); ուշացում (1000); Particle.publish («Պտտման առանցք.», Լարային (xGyro)); ուշացում (1000); Particle.publish («Պտտման առանցք.», Լար (yGyro)); ուշացում (1000); Particle.publish («Պտտման առանցք.», Լար (zGyro)); ուշացում (1000); }
Particle.variable () գործառույթը ստեղծում է սենսորի ելքը պահելու փոփոխականները, իսկ Particle.publish () գործառույթը ցուցադրում է ելքը կայքի վահանակի վրա:
Սենսորային ելքը ցուցադրվում է վերևի նկարում ՝ ձեր տեղեկանքի համար:
Քայլ 4: Դիմումներ
MPU-6000- ը շարժման հետևման տվիչ է, որն իր կիրառությունը գտնում է սմարթֆոնների և պլանշետների շարժման ինտերֆեյսում: Սմարթֆոններում այս սենսորները կարող են օգտագործվել այնպիսի ծրագրերում, ինչպիսիք են ՝ ծրագրերի և հեռախոսի կառավարման ժեստերի հրամանները, ուժեղացված խաղերը, ընդլայնված իրականությունը, համայնապատկերի լուսանկարահանումն ու դիտումը, ինչպես նաև հետիոտնային և տրանսպորտային միջոցների նավարկությունը: MotionTracking տեխնոլոգիան կարող է հեռախոսներն ու պլանշետները վերածել հզոր 3D խելացի սարքերի, որոնք կարող են օգտագործվել ծրագրերում ՝ առողջության և ֆիթնեսի մոնիտորինգից մինչև տեղադրության վրա հիմնված ծառայություններ:
Խորհուրդ ենք տալիս:
ADXL345- ի և մասնիկի ֆոտոնի միջոցով արագացման չափում. 4 քայլ
ADXL345- ի և մասնիկի ֆոտոնի միջոցով արագացման չափում. ADXL345- ը փոքր, բարակ, ծայրահեղ ցածր հզորության, 3 առանցքի արագացուցիչ է `բարձր լուծաչափով (13 բիթ) չափմամբ մինչև ± 16 գ: Թվային ելքային տվյալները ձևաչափվում են որպես 16-բիթ երկակի լրացում և հասանելի են I2 C թվային ինտերֆեյսի միջոցով: Չափում է
H3LIS331DL- ի և մասնիկի ֆոտոնի միջոցով արագացման չափում. 4 քայլ
H3LIS331DL- ի և մասնիկի ֆոտոնի միջոցով արագացման չափում. H3LIS331DL- ը ցածր էներգիայի բարձր արդյունավետությամբ 3 առանցքի գծային արագացուցիչ է, որը պատկանում է «նանո» ընտանիքին ՝ թվային I²C սերիական ինտերֆեյսով: H3LIS331DL- ն ունի 100 գ/g 200 գ/g 400 գ լիարժեք կշեռքներ օգտագործողի կողմից և ունակ է չափել արագացումները
Cերմաստիճանի չափում MCP9803- ի և մասնիկի ֆոտոնի միջոցով `4 քայլ
MCP9803- ի և Particle Photon- ի միջոցով ջերմաստիճանի չափում. MCP9803- ը 2 լարային բարձր ճշգրտության ջերմաստիճանի տվիչ է: Նրանք մարմնավորված են օգտագործողների կողմից ծրագրավորվող գրանցամատյաններով, որոնք հեշտացնում են ջերմաստիճանի զգայուն ծրագրերը: Այս սենսորը հարմար է բարձրակարգ բազմաշերտ ջերմաստիճանի մոնիտորինգի համակարգի համար:
Արեգակնային վահանակների մոնիտորինգ մասնիկի ֆոտոնի միջոցով. 7 քայլ
Արեգակնային վահանակների մոնիտորինգ մասնիկի ֆոտոնի միջոցով. Aimրագրի նպատակն է բարձրացնել արևային վահանակների արդյունավետությունը: Projectրագիրը նախատեսված է վերահսկելու արևային ֆոտովոլտային էներգիայի արտադրությունը ՝ բարձրացնելու արևային կայանի աշխատանքը, մոնիտորինգը և սպասարկումը: Այս նախագծում մասնիկների ph
Լույսի ինտենսիվության հաշվարկ BH1715- ի և մասնիկի ֆոտոնի միջոցով `5 քայլ
Լույսի ինտենսիվության հաշվարկ BH1715- ի և Particle Photon- ի միջոցով. Երեկ մենք աշխատում էինք LCD էկրաններով, և դրանց վրա աշխատելիս մենք հասկացանք լույսի ինտենսիվության հաշվարկի կարևորությունը: Լույսի ինտենսիվությունը ոչ միայն կարևոր է այս աշխարհի ֆիզիկական տիրույթում, այլև իր լավ ասված դերն ունի կենսաբանության մեջ