תוכן עניינים:

מעקב אחר תנועות באמצעות MPU-6000 ו- Arduino Nano: 4 שלבים
מעקב אחר תנועות באמצעות MPU-6000 ו- Arduino Nano: 4 שלבים

וִידֵאוֹ: מעקב אחר תנועות באמצעות MPU-6000 ו- Arduino Nano: 4 שלבים

וִידֵאוֹ: מעקב אחר תנועות באמצעות MPU-6000 ו- Arduino Nano: 4 שלבים
וִידֵאוֹ: כל מה שרצית לדעת על מעקב אחר תנועות עובר בהריון 2024, דֵצֶמבֶּר
Anonim
Image
Image

MPU-6000 הוא חיישן מעקב תנועה בעל 6 צירים הכולל מד תאוצה 3 צירים וג'ירוסקופ 3 צירים. חיישן זה מסוגל לבצע מעקב יעיל אחר המיקום והמיקום המדויק של אובייקט במישור התלת ממדי. זה יכול להיות מועסק במערכות הדורשות ניתוח מיקום בדיוק הכי גבוה.

במדריך זה הודגם הממשק של מודול החיישנים MPU-6000 עם ננו ארדואינו. כדי לקרוא את ערכי ההאצה וזווית הסיבוב, השתמשנו ב- arduino nano עם מתאם I2c. מתאם I2C זה הופך את החיבור למודול החיישן לפשוט ואמין יותר.

שלב 1: חומרה נדרשת:

חומרה נדרשת
חומרה נדרשת
חומרה נדרשת
חומרה נדרשת
חומרה נדרשת
חומרה נדרשת

החומרים הדרושים לנו להגשמת מטרתנו כוללים את רכיבי החומרה הבאים:

1. MPU-6000

2. ארדואינו ננו

3. כבל I2C

4. מגן I2C לננו ארדואינו

שלב 2: חיבור חומרה:

חיבור חומרה
חיבור חומרה
חיבור חומרה
חיבור חומרה

קטע חיבור החומרה בעצם מסביר את חיבורי החיווט הנדרשים בין החיישן לננו הארדואינו. הבטחת חיבורים נכונים היא ההכרח הבסיסי בעת עבודה על כל מערכת לתפוקה הרצויה. אז, החיבורים הנדרשים הם כדלקמן:

ה- MPU-6000 יפעל מעל I2C. להלן תרשים החיווט לדוגמה, המדגים כיצד לחבר כל ממשק של החיישן.

הלוח מחוץ לקופסה מוגדר לממשק I2C, ולכן אנו ממליצים להשתמש בחיבור זה אם אתה אגנוסטי אחרת.

כל מה שאתה צריך זה ארבעה חוטים! רק ארבעה חיבורים נדרשים סיכות Vcc, Gnd, SCL ו- SDA ואלו מחוברים בעזרת כבל I2C.

קשרים אלה מודגמים בתמונות למעלה.

שלב 3: קוד למעקב אחר תנועה:

קוד למעקב אחר תנועה
קוד למעקב אחר תנועה

נתחיל עם קוד הארדואינו עכשיו.

בעת השימוש במודול החיישנים עם הארדואינו, אנו כוללים את ספריית Wire.h. ספריית "Wire" מכילה את הפונקציות המאפשרות תקשורת i2c בין החיישן ללוח הארדואינו.

קוד הארדואינו כולו ניתן להלן לנוחות המשתמש:

#לִכלוֹל

// כתובת MPU-6000 I2C היא 0x68 (104)

#define Addr 0x68

הגדרת חלל ()

{

// אתחל תקשורת I2C כמאסטר

Wire.begin ();

// אתחל תקשורת טורית, הגדר קצב שידור = 9600

Serial.begin (9600);

// התחל את שידור I2C

Wire.beginTransmission (Addr);

// בחר רשם תצורה של גירוסקופ

Wire.write (0x1B);

// טווח קנה מידה מלא = 2000 dps

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 בתים של נתונים

Wire.requestFrom (Addr, 6);

// קרא 6 בייט נתונים

אם (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 ();

}

// המר את הנתונים

int xAccl = data [0] * 256 + נתונים [1];

int yAccl = data [2] * 256 + נתונים [3];

int zAccl = data [4] * 256 + נתונים [5];

// התחל את שידור I2C

Wire.beginTransmission (Addr);

// בחר רישום נתונים

Wire.write (0x43);

// עצור את שידור I2C

Wire.endTransmission ();

// בקש 6 בתים של נתונים

Wire.requestFrom (Addr, 6);

// קרא 6 בייט נתונים

אם (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 ();

}

// המר את הנתונים

int xGyro = data [0] * 256 + נתונים [1];

int yGyro = data [2] * 256 + נתונים [3];

int zGyro = data [4] * 256 + נתונים [5];

// נתוני פלט לצג הסדרתי

Serial.print ("האצה בציר X:");

Serial.println (xAccl);

Serial.print ("האצה בציר Y:");

Serial.println (yAccl);

Serial.print ("האצה בציר Z:");

Serial.println (zAccl);

Serial.print ("ציר X של סיבוב:");

Serial.println (xGyro);

Serial.print ("ציר Y של סיבוב:");

Serial.println (yGyro);

Serial.print ("ציר סיבוב Z:");

Serial.println (zGyro);

עיכוב (500);

}

בספריית תיל Wire.write () ו- Wire.read () משמשים לכתיבת הפקודות וקריאת פלט החיישן.

Serial.print () ו- Serial.println () משמשים להצגת פלט החיישן על הצג הטורי של ה- Arduino IDE.

פלט החיישן מוצג בתמונה למעלה.

שלב 4: יישומים:

יישומים
יישומים

MPU-6000 הוא חיישן מעקב אחר תנועה, שמוצא את יישומו בממשק התנועה של סמארטפונים וטאבלטים. בסמארטפונים ניתן להשתמש בחיישנים אלה ביישומים כגון פקודות מחווה ליישומים ושליטה טלפונית, משחקים משופרים, מציאות רבודה, צילום וצפייה פנורמיים וניווט להולכי רגל ורכב. טכנולוגיית MotionTracking יכולה להמיר מכשירים וטאבלטים למכשירים חכמים תלת-ממדיים שניתן להשתמש בהם ביישומים החל מניטור בריאות וכושר וכלה בשירותים מבוססי מיקום.

מוּמלָץ: