תוכן עניינים:
וִידֵאוֹ: מעקב אחר תנועות באמצעות MPU-6000 ו- Arduino Nano: 4 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:12
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 יכולה להמיר מכשירים וטאבלטים למכשירים חכמים תלת-ממדיים שניתן להשתמש בהם ביישומים החל מניטור בריאות וכושר וכלה בשירותים מבוססי מיקום.
מוּמלָץ:
מערכת מעקב אחר תנועות ראש ל- VR: 8 שלבים
מערכת מעקב אחר תנועות ראש ל- VR: שמי סם KODO, במדריך זה אלמד אותך צעד אחר צעד כיצד להשתמש בחיישני IMU של Arduino לבניית מערכת מעקב ראש ל- VR. בפרויקט זה תצטרך: - תצוגת LCD HDMI : https: //www.amazon.com/Elecrow-Capacitive-interfac
מעקב אחר תנועות עיניים אנושיות: 6 שלבים
מעקב אחר תנועות עיניים אנושיות: פרויקט זה נועד ללכוד את תנועת העין האנושית, ומציג את תנועתו על קבוצה של נורות LED הממוקמות בצורת עין. סוג זה של פרויקט עשוי להיות בעל שימושים רבים בתחום הרובוטיקה ובמיוחד חומא
QeMotion - מעקב אחר תנועות לכל אוזניות !: 5 שלבים (עם תמונות)
QeMotion - מעקב אחר תנועות לכל אוזניות !: סקירה כללית: מכשיר זה מאפשר לך לנצל את תנועת הראש שלך כדי להפעיל אירועים בעצם כל משחק וידאו. הוא פועל על ידי מעקב אחר תנועת הראש שלך (או האוזניות בהתייחס לזה) והפעלת לחיצות מקלדת לתנועות מסוימות. אז המחשב שלך
RC רובר נשלט על ידי תנועות תנועות וג'ויסטיק: 8 שלבים
RC רובר נשלט על ידי מחוות Motions & Joyestick: RC Rover הוא פרויקט רובוטיקה שמטרתו לשפר את השליטה ברוברים באמצעות שימוש בתדר רדיו ואינטראקציה של תנועת רובר עם תנועת יד באמצעות יחידת האינרציה (MPU6050), אך גם שליטה על זה רובר עם ג'ויססטיק. את כל
מעקב אחר תנועות עיניים באמצעות חיישן אינפרא אדום: 5 שלבים
מעקב אחר תנועות עיניים באמצעות חיישן אינפרא אדום: השתמשתי בחיישן אינפרא אדום כדי לחוש תנועות עיניים ולשלוט ב- LED