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

רישום נתונים בזמן אמת MPU-6050/A0 עם Arduino ו- Android: 7 שלבים (עם תמונות)
רישום נתונים בזמן אמת MPU-6050/A0 עם Arduino ו- Android: 7 שלבים (עם תמונות)

וִידֵאוֹ: רישום נתונים בזמן אמת MPU-6050/A0 עם Arduino ו- Android: 7 שלבים (עם תמונות)

וִידֵאוֹ: רישום נתונים בזמן אמת MPU-6050/A0 עם Arduino ו- Android: 7 שלבים (עם תמונות)
וִידֵאוֹ: הרשמה לזמן אמת - אינטראקטיב ישראל 2024, נוֹבֶמבֶּר
Anonim
רישום נתונים בזמן אמת MPU-6050/A0 עם Arduino ו- Android
רישום נתונים בזמן אמת MPU-6050/A0 עם Arduino ו- Android

התעניינתי להשתמש בארדואינו ללמידת מכונות. כצעד ראשון, אני רוצה לבנות תצוגת נתונים ורשום בזמן אמת (או די קרוב לזה) באמצעות מכשיר אנדרואיד. אני רוצה ללכוד נתוני מד תאוצה מ- MPU-6050 אז תכננתי את המבנה לשימוש ב- HC-05 ב 115200 baud. עם תצורה זו ניתן להעביר 4 ערוצי נתונים במהירות של 250 דגימות בשנייה.

לבנייה יש כמה שלבים:

  • בנה את המגן או קרש הלחם
  • תכנות את הארדואינו
  • טען את אפליקציית האנדרואיד מ- Google Play או סניף את GitHub והרכב אותה בעצמך
  • חבר את ה- MPU-6050 למשהו מעניין שרוטט (השתמשתי במכונית R/C)
  • השתמש במכשיר האנדרואיד כדי להתחבר ל- Arduino
  • צייר את הנתונים, שמור אם מעוניין
  • ייבא לפייתון (או פלטפורמה אחרת) לשימוש נוסף

בואו נתחיל!

שלב 1: בנה את המגן/קרש הלחם

בנה את המגן/קרש הלחם
בנה את המגן/קרש הלחם
בנה את המגן/קרש הלחם
בנה את המגן/קרש הלחם

זהו תרשים החיווט עבור Arduino, HC-05 ו- MPU-6050. בנוסף ל- MPU-6050 יש לי את הקלט האנלוגי A0 המחובר לחיישן אור כדי להראות שה- ADC פועל. ניתן להכניס כל אות 0-5 וולט למתאם A0. אלה הרכיבים בהם השתמשתי לבנייה:

  • ארדואינו אונו
  • HC-05 (HC-06 אמור לעבוד גם כן, אך הבניה שלי הייתה עם HC-05)
  • MPU-6050
  • פוטורסיסטור Sparkfun
  • נגד 10 קאוהם (חום-שחור-כתום)

רוב מודולי Bluetooth HC-05 כברירת מחדל ל- 9600 baud. כדי שהנתונים יעברו בהצלחה יהיה עליך לתכנת אותם מחדש עבור קצב שידור של 115,200. יש HC-05/HC-06 AT Command Instructable טוב המסביר כיצד לעשות זאת.

שלב 2: תכנת את הארדואינו

תכנות את הארדואינו
תכנות את הארדואינו
תכנות את הארדואינו
תכנות את הארדואינו

השתמשתי במהדורה של Arduino IDE 1.6.7 כדי לתכנת את Arduino. ניתן להוריד את הקוד מהקישורים בשלב זה או ממאגר GitHub. צירפתי שלוש גרסאות: Firmware125.ino היא גרסת 125 הרץ, Firmware250.ino היא גירסת 250 הרץ ו- Firmware500.ino היא גרסת 500 הרץ. כדי לגרום לארדואינו לעבור במחזור של 500 הרץ, ה- A0 ADC אינו נאסף.

הקושחה כוללת שעון על פין 9 בו השתמשתי כדי לבדוק את התזמון. המעקב מראה כי זמן המחזור הוא 4 אלפיות השנייה (שווה ערך ל -1/250 הרץ). גיליתי שאם יש בעיות בקישור הסדרתי העיתוי לא יהיה אחיד.

קוד הארדואינו אכן משתמש במסכות סיביות כדי להוסיף מספר ערוץ לכל חבילה מכיוון שלפעמים דוגמאות יורדות מעל בלוטות '. אני משתמש בשלושת הביטים המשמעותיים ביותר לאחסון מספר ערוץ. עבור מספרים שלמים חתומים הסיביות המשמעותית ביותר (MSB) שמורה לסימן. מכיוון שאני רוצה להשתמש ב- MSB עבור הכתובת שלי, במקום סימן המספר השלם, עלי להמיר את כל ערכי מד התאוצה החתומים למספרים שלמים לא חתומים. אני עושה זאת על ידי הוספת 32768 לכל ערך (ספירות ה- ADC של מד התאוצה MPU הן +32768 עד -32768) ומעובדות כמספרים שלמים לא חתומים:

(int unsigned) ((ארוך) iAccelData+32767);

מספר הערוץ זהה לכל מד תאוצה ויציאת A0, כך שניתן לזהות מנה שנפלה אם מספרי הערוץ אינם תקינים. עבור המנות המגיעות מה- Bluetooth ב- Arduino, הדפוס הבינארי הוא (הסימנים משתנים בצורה חכמה):

(xacc 3 bits bits = 0x00, 13bit unsigned) (yacc 3 bits bits = 0x01, 13bit unsigned) (zacc 3 bits bits = 0x02, 13bit unsigned) (3 bits bits = 0x03, iadc13bit unsigned)

(xacc 3 bits bits = 0x00, 13bit unsigned) (yacc 3 bits bits = 0x01, 13bit unsigned) (zacc 3 bits bits = 0x02, 13bit unsigned) (3 bits bits = 0x03, iadc13bit unsigned) (xacc 3 bits bits = 0x00, 13bit ללא סימן) (yacc 3 סיביות כתובת = 0x01, 13bit לא חתומות) (zacc 3 bit bits = 0x02, 13bit unsigned) (3 bit bits = 0x03, iadc13bit unsigned) …

אם אתה משתמש במשהו אחר מאשר אפליקציית Android Accel Plot לקריאת נתוני Bluetooth, להלן השלבים לחילוץ הכתובת (אני משתמש בשמות המשתנים מהקובץ Accel Plot Bluetooth.java מתוך ריפו GitHub):

- קראו את ה- 16 ללא חתימה

- חלץ את הבייט הגבוה ושמור אותו ל- btHigh.

- חלץ את הבייט הנמוך ושמור אותו ל- btLow.

- אחזר את הכתובת מ- btHigh באמצעות: (btHigh >> 5) & 0x07. הצהרה זו מעבירה btHigh 5 סיביות ימינה ומעבירה את שלושת סיביות הכתובת לשלושת הרשמים הנמוכים ביותר. הסימן & הוא לוגי AND שמאלץ את סיביות 4 ומעלה להיות אפס ושלושת הביטים האחרונים להתאים את סיביות הכתובת. התוצאה של הצהרה זו היא הכתובת שלך.

אינך צריך לדאוג לחילוץ הכתובות אם אתה משתמש ב- Accel Plot.

שלב 3: טען את אפליקציית Android מ- Google Play או סניף את GitHub

טען את אפליקציית Android מ- Google Play או סניף את GitHub
טען את אפליקציית Android מ- Google Play או סניף את GitHub

יש לך כמה אפשרויות לטעינת אפליקציית Android במכשיר שלך. אם אתה רוצה להימנע מקוד, תוכל לחפש "Accel Plot" והאפליקציה אמורה לעלות בחנות Google Play. עקוב אחר הוראות החנות להתקנה.

הרצון שלי עם הוראה זו הוא באמת לעודד אחרים לבנות פרויקטים ולכן פרסמתי גם את הקוד במאגר GitHub. אתה אמור להיות מסוגל להסניף את זה, לבנות אותו ולשנות אותו כראות עיניך. פרסמתי את הקוד תחת רישיון MIT אז תהנו!

שלב 4: התחבר ל- Arduino למשהו מעניין (השתמשתי במכונית R/C)

התחבר ל- Arduino למשהו מעניין (השתמשתי במכונית R/C)
התחבר ל- Arduino למשהו מעניין (השתמשתי במכונית R/C)

אני רוצה בסופו של דבר להשתמש במכשיר לאיתור משטח כביש ולכן חשבתי שמתאימה מכונית קטנה בשלט רחוק (R/C). אני חושב שזה עוזר בשלב הבא אם ההאשמות יכולות להיות על משהו שזז או רוטט.

שלב 5: השתמש במכשיר אנדרואיד כדי להתחבר ל- Arduino

השתמש במכשיר אנדרואיד כדי להתחבר ל- Arduino
השתמש במכשיר אנדרואיד כדי להתחבר ל- Arduino
השתמש במכשיר אנדרואיד כדי להתחבר ל- Arduino
השתמש במכשיר אנדרואיד כדי להתחבר ל- Arduino
השתמש במכשיר אנדרואיד כדי להתחבר ל- Arduino
השתמש במכשיר אנדרואיד כדי להתחבר ל- Arduino

אם עדיין לא עשית זאת, יהיה עליך לשייך תחילה את HC-05 למכשיר האנדרואיד שלך. אני מאמין שברוב המכשירים אתה יכול לעשות זאת על ידי מעבר להגדרות. סיכת ברירת המחדל עבור רוב מכשירי HC-05 תהיה 1234 או 1111.

פתח את אפליקציית AccelPlot במכשיר אנדרואיד. כאשר האפליקציה נפתחת, ולפני שתתחבר ל- HC-05, תוכל לשנות את קצב הדגימה (זה נקבע בקוד הארדואינו), מאזני מד התאוצה (מוגדרים גם בקוד הארדואינו), ומספר הדגימות שיש לשמור.

לאחר ביצוע הגדרות אלה לחץ על כפתור "התחבר". הוא אמור להביא את מכשירי ה- Bluetooth והמכשיר שלך צריך להיות רשום. בחר בו וברגע שהקוד יקים את החיבור תראה טוסט "מחובר" צץ.

השתמש בלחצן החץ אחורה כדי לחזור ל- Accel Plot. הקש על כפתור "התחל זרם" כדי להציג נתונים ממכשיר HC-05. אתה צריך גם לחצנים זמינים לשמירת הנתונים או להפעלת התוכן המאופנן בתדירות באמצעות שקע השמע.

שלב 6: רכישת הנתונים והתכנון

Image
Image
ייבא לתוך פייתון (או פלטפורמה אחרת) לשימוש נוסף
ייבא לתוך פייתון (או פלטפורמה אחרת) לשימוש נוסף

יש להפעיל את כפתור "התחל זרם". הקש עליו כדי להתחיל להזרים נתונים למסך.

כפתור "שמור נתונים" יופעל גם הוא, הקש עליו כדי לאחסן את הנתונים.

Accel Plot כוללת גם אפשרות להעביר אות מאופנן בערוצי השמע. 2 הערוצים באפליקציית Accel Plot מתייחסים לערוצים השמאליים והימניים של שקע האודיו במכשיר אנדרואיד. זה שימושי אם אתה רוצה להכניס את נתוני MPU-6050 למערכת רישום נתונים נפרדת, כמו מכשירי National.

הסרטון מציג דוגמה לכך שהמערכת אוספת נתונים על מכונית R/C.

שלב 7: ייבא לתוך פייתון (או פלטפורמה אחרת) לשימוש נוסף

ייבא לתוך פייתון (או פלטפורמה אחרת) לשימוש נוסף
ייבא לתוך פייתון (או פלטפורמה אחרת) לשימוש נוסף

הקבצים נשמרים במכשיר אנדרואיד. הקבצים יאוחסנו תחת הספרייה "AccelPlot" עבור Android API 18 ומעלה. הקוד ממקם את קבצי.dat בתיקייה "\ Tablet / Documents / AccelPlot" עבור API 19 (KitKat 4.4) ומעלה. נתקלתי בבעיות בכמה מכשירי אנדרואיד המציגים את הקבצים כאשר הם מחוברים באמצעות USB. במקרים מסוימים נאלצתי לאתחל את מכשיר האנדרואיד כדי לגרום להם להופיע. לא בטוח למה זה, אבל צריכים להיות ארבעה קבצים, אחד לכל ערוץ. ניתן להעתיק אותם לספרייה מקומית לעבודה נוספת.

השתמשתי ב- Anaconda/Python 2.7 כדי לפתוח את הקבצים ולהציג את הנתונים. בקובץ "ExploratoryAnalysis.ipynb" יש את קובץ ה- Notebook IPython שיפתח את כל קבצי הנתונים וישרטט את נתוני המדגם. קבצי דוגמה כלולים במאגר GitHub. הנתונים נשמרים כצפות גדולות של 4 בתים ('> f') באנדיאן, כך שכל תוכנית ניתוח צריכה להיות מסוגלת לפתוח אותן.

צירפתי גם קובץ פשוט יותר בשם "ReadDataFiles.ipynb" שמראה כיצד לקרוא בקובץ יחיד בשמו.

מוּמלָץ: