ዝርዝር ሁኔታ:

MPU-6000 እና ቅንጣት ፎቶን በመጠቀም የእንቅስቃሴ መከታተያ -4 ደረጃዎች
MPU-6000 እና ቅንጣት ፎቶን በመጠቀም የእንቅስቃሴ መከታተያ -4 ደረጃዎች

ቪዲዮ: MPU-6000 እና ቅንጣት ፎቶን በመጠቀም የእንቅስቃሴ መከታተያ -4 ደረጃዎች

ቪዲዮ: MPU-6000 እና ቅንጣት ፎቶን በመጠቀም የእንቅስቃሴ መከታተያ -4 ደረጃዎች
ቪዲዮ: Gyro shootout: MPU6000 vs ICM20602 vs BMI270 and OSR4 mode for BMI Gyros! 2024, ህዳር
Anonim
Image
Image

MPU-6000 በውስጡ ባለ 3-አክሲ የፍጥነት መለኪያ እና 3-አክሲ ጋይሮስኮፕ ያለው ባለ 6-አክሲስ እንቅስቃሴ መከታተያ ዳሳሽ ነው። ይህ አነፍናፊ በ 3-ልኬት አውሮፕላን ውስጥ የአንድን ነገር ትክክለኛ አቀማመጥ እና ቦታ በብቃት መከታተል ይችላል። እስከ ከፍተኛ ትክክለኛነት ድረስ የአቀማመጥ ትንተና በሚያስፈልጋቸው ስርዓቶች ውስጥ ሊሠራ ይችላል።

በዚህ መማሪያ ውስጥ የ MPU-6000 ዳሳሽ ሞዱል ከቅንጣት ፎቶን ጋር መገናኘቱ ተገል beenል። የፍጥነት እና የማዞሪያ አንግል እሴቶችን ለማንበብ እኛ ከ I2c አስማሚ ጋር ቅንጣትን ተጠቀምን። ይህ I2C አስማሚ ከአነፍናፊ ሞዱል ጋር ያለውን ግንኙነት ቀላል እና የበለጠ አስተማማኝ ያደርገዋል።

ደረጃ 1 ሃርድዌር ያስፈልጋል

ሃርድዌር ያስፈልጋል
ሃርድዌር ያስፈልጋል
ሃርድዌር ያስፈልጋል
ሃርድዌር ያስፈልጋል
ሃርድዌር ያስፈልጋል
ሃርድዌር ያስፈልጋል

የእኛን ሥራ ለማከናወን የሚያስፈልጉ ቁሳቁሶች ከዚህ በታች የተጠቀሱትን የሃርድዌር ክፍሎች ያካትታሉ።

1. MPU-6000

2. ቅንጣት ፎቶን

3. I2C ኬብል

4. I2C ጋሻ ለ ቅንጣት ፎቶን

ደረጃ 2 የሃርድዌር ማያያዣ;

የሃርድዌር ግንኙነት
የሃርድዌር ግንኙነት
የሃርድዌር ግንኙነት
የሃርድዌር ግንኙነት

የሃርድዌር መንጠቆው ክፍል በመሠረቱ በአነፍናፊው እና በንጥል ፎቶን መካከል የሚፈለጉትን የሽቦ ግንኙነቶች ያብራራል። ለተፈለገው ውጤት በማንኛውም ስርዓት ላይ ሲሰሩ ትክክለኛ ግንኙነቶችን ማረጋገጥ መሠረታዊ አስፈላጊነት ነው። ስለዚህ አስፈላጊዎቹ ግንኙነቶች እንደሚከተለው ናቸው

MPU-6000 ከ I2C በላይ ይሠራል። እያንዳንዱን የአነፍናፊ በይነገጽ እንዴት ሽቦ ማገናኘት እንደሚቻል የሚያሳይ የምስል ሽቦ ንድፍ ምሳሌ እዚህ አለ።

ከሳጥን ውጭ ፣ ቦርዱ ለ I2C በይነገጽ የተዋቀረ ነው ፣ ስለሆነም እርስዎ ሌላ የማይታወቁ ከሆኑ ይህንን መንጠቆ እንዲጠቀሙ እንመክራለን። የሚያስፈልግዎት አራት ሽቦዎች ብቻ ናቸው!

Vcc ፣ Gnd ፣ SCL እና SDA ፒኖች የሚያስፈልጉት አራት ግንኙነቶች ብቻ ናቸው እና እነዚህ በ I2C ገመድ እገዛ ተገናኝተዋል።

እነዚህ ግንኙነቶች ከላይ ባሉት ሥዕሎች ውስጥ ይታያሉ።

ደረጃ 3 የእንቅስቃሴ መከታተያ ኮድ

የእንቅስቃሴ መከታተያ ኮድ ፦
የእንቅስቃሴ መከታተያ ኮድ ፦

አሁን በንጥል ኮድ እንጀምር።

ከአርዲኖው ጋር የአነፍናፊ ሞጁሉን እየተጠቀምን ሳለ እኛ application.h እና spark_wiring_i2c.h ቤተ -መጽሐፍትን አካተናል። "application.h" እና spark_wiring_i2c.h ቤተ -መጽሐፍት በአነፍናፊው እና በንጥሉ መካከል ያለውን የ i2c ግንኙነት የሚያመቻቹ ተግባሮችን ይ containsል።

ጠቅላላው ቅንጣት ኮድ ለተጠቃሚው ምቾት ከዚህ በታች ተሰጥቷል-

#ያካትቱ #ያካትቱ // MPU-6000 I2C አድራሻ 0x68 (104) #define Addr 0x68 int xGyro = 0 ፣ yGyro = 0 ፣ zGyro = 0 ፣ xAccl = 0 ፣ yAccl = 0 ፣ zAccl = 0; ባዶነት ማዋቀር () {// አዘጋጅ ተለዋዋጭ Particle.variable ("i2cdevice", "MPU-6000"); ቅንጣት። ተለዋዋጭ (“xAccl” ፣ xAccl); ቅንጣት። ተለዋዋጭ (“yAccl” ፣ yAccl); ቅንጣት። ተለዋዋጭ (“zAccl” ፣ zAccl); ቅንጣት። ተለዋዋጭ (“xGyro” ፣ xGyro); ቅንጣት። ተለዋዋጭ (“yGyro” ፣ yGyro); ቅንጣት። ተለዋዋጭ ("zGyro" ፣ zGyro); // የ I2C ግንኙነትን እንደ ማስተር Wire.begin () ያስጀምሩ። // ተከታታይ ግንኙነቶችን ያስጀምሩ ፣ የባውድ መጠን = 9600 Serial.begin (9600) ያዘጋጁ ፤ // I2C ማስተላለፍን ይጀምሩ Wire.begin ማስተላለፊያ (አክል); // የ gyroscope ውቅረት መመዝገቢያ Wire.write ን ይምረጡ (0x1B); // ሙሉ ልኬት ክልል = 2000 dps Wire.write (0x18); // I2C ማስተላለፍን ያቁሙ Wire.endTransmission (); // I2C ማስተላለፍን ይጀምሩ Wire.begin ማስተላለፊያ (አክል); // የፍጥነት መለኪያ ውቅረት መመዝገቢያ ይምረጡ Wire.write (0x1C); // ሙሉ ልኬት ክልል = +/- 16g Wire.write (0x18); // I2C ማስተላለፍን ያቁሙ Wire.endTransmission (); // I2C ማስተላለፍን ይጀምሩ Wire.begin ማስተላለፊያ (አክል); // የኃይል አስተዳደር ምዝገባን ይምረጡ Wire.write (0x6B); // PLL በ xGyro ማጣቀሻ Wire.write (0x01); // I2C ማስተላለፍን ያቁሙ Wire.endTransmission (); መዘግየት (300); } ባዶነት loop () {ያልተፈረመ int ውሂብ [6]; // I2C ማስተላለፍን ይጀምሩ Wire.begin ማስተላለፊያ (አክል); // የውሂብ መመዝገቢያ ይምረጡ Wire.write (0x3B); // I2C ማስተላለፍን ያቁሙ Wire.endTransmission (); // 6 ባይት መረጃን ይጠይቁ Wire.requestFrom (Addr, 6); // (ባይት የሚገኝ () == 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.begin ማስተላለፊያ (አክል); // የውሂብ መመዝገቢያ ይምረጡ Wire.write (0x43); // I2C ማስተላለፍን ያቁሙ Wire.endTransmission (); // 6 ባይት መረጃን ይጠይቁ Wire.requestFrom (Addr, 6); // (ባይት የሚገኝ () == 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-Axis ውስጥ Acceleration:", String (xAccl)); መዘግየት (1000); Particle.publish ("Y-Axis ውስጥ ማፋጠን:", String (yAccl)); መዘግየት (1000); Particle.publish ("ዘ-አክሲዮን ውስጥ ማፋጠን:", ሕብረቁምፊ (zAccl)); መዘግየት (1000); Particle.publish ("X-Axis of Rotation:", String (xGyro)); መዘግየት (1000); Particle.publish ("Y-Axis of Rotation:", String (yGyro)); መዘግየት (1000); Particle.publish ("Z-Axis of Rotation:", String (zGyro)); መዘግየት (1000); }

የ Particle.variable () ተግባር የአነፍናፊውን ውጤት ለማከማቸት ተለዋዋጮችን ይፈጥራል እና የ Particle.publish () ተግባር ውጤቱን በጣቢያው ዳሽቦርድ ላይ ያሳያል።

ለማጣቀሻዎ አነፍናፊ ውፅዓት ከላይ ባለው ስዕል ላይ ይታያል።

ደረጃ 4: ማመልከቻዎች

ማመልከቻዎች
ማመልከቻዎች

MPU-6000 የእንቅስቃሴ መከታተያ ዳሳሽ ነው ፣ ይህም መተግበሪያውን በስማርትፎኖች እና በጡባዊዎች የእንቅስቃሴ በይነገጽ ውስጥ ያገኛል። በዘመናዊ ስልኮች ውስጥ እነዚህ ዳሳሾች ለትግበራዎች እና ለስልክ ቁጥጥር የእጅ ምልክቶች ትዕዛዞች ፣ የተሻሻለ ጨዋታ ፣ የተጨመረው እውነታ ፣ የፓኖራሚክ ፎቶ ቀረፃ እና እይታ ፣ እና የእግረኛ እና የተሽከርካሪ አሰሳ በመሳሰሉት መተግበሪያዎች ውስጥ ሊሠሩ ይችላሉ። MotionTracking ቴክኖሎጂ ከጤና እና ከአካል ብቃት ክትትል እስከ አካባቢ-ተኮር አገልግሎቶች ድረስ ባሉ ትግበራዎች ውስጥ ጥቅም ላይ ሊውሉ ወደሚችሉ ኃይለኛ 3 ል አስተዋይ መሣሪያዎች የእጅ ስልኮችን እና ጡባዊዎችን ሊቀይር ይችላል።

የሚመከር: