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

מד Bluetooth VU אנלוגי מופעל: 6 שלבים
מד Bluetooth VU אנלוגי מופעל: 6 שלבים

וִידֵאוֹ: מד Bluetooth VU אנלוגי מופעל: 6 שלבים

וִידֵאוֹ: מד Bluetooth VU אנלוגי מופעל: 6 שלבים
וִידֵאוֹ: Moes Bluetooth датчик освещенности, температуры и влажности – E-Ink дисплей Tuya Smart Life 2024, נוֹבֶמבֶּר
Anonim
מד Bluetooth VU אנלוגי מופעל
מד Bluetooth VU אנלוגי מופעל

זה היה הפרויקט שלי לאחד משיעורי האוניברסיטה שלי בשם SMP. כשהשתמשנו בלוח הפיתוח STM32F103RB, ביססתי את הפרויקט שלי על זה, החל ממד VU פשוט. לאחר מכן הוספתי כמה תכונות נוספות כמו תמיכת Bluetooth לשידור ערכים מה- ADC לאפליקציית Android ליצירת תרשים dB פשוט.

שלב 1: רכיבים בשימוש

  • לוח פיתוח STM32F103RB
  • מודול בלוטוס HC-05 zs040
  • לוח VU אנלוגי (קישור)
  • מיקרופון אלקטרט
  • מגבר מרובע LM324N
  • 2 טרנזיסטורים מסוג TIP120
  • 3 דיודות 1N4148
  • קבלים ונגדים שונים

למרות שאתה יכול להעביר את המעגל הזה ממסילת 5V הלוח, השתמשתי גם באספק כוח חיצוני של 5V.

שלב 2: עוקב מעטפה

עוקב מעטפה
עוקב מעטפה
עוקב מעטפה
עוקב מעטפה

החלק העיקרי בעיצוב זה הוא עוקב המעטפה שלוקח את האות ממיקרופון האלקטרט ויוצא מתח ביחס למשרעת האות של המיקרופון.

האות הגולמי מהמיקרופון מועבר לראשונה באמצעות מגבר בעל רווח של 150.

האות מועבר לאחר מכן דרך עוקב המעטפה בפועל שאמור להוציא רק את חלקי האות החיובי.

החלק האחרון הוא הפחתת מתח הקיזוז של 1.65V מהפלט של עוקב המעטפה כדי לספק אות של 0 V ללא צליל, 1.65 V עבור צליל בינוני ו -3.3 V עבור צליל חזק שצריך להיות תואם למובנה ADC של הלוח.

עוקב מעטפה זה מיושם מתשובת StackExchange הנהדרת הזו.

שלב 3: PWM למד האנלוגי

כדי להפעיל את מחט המד, הגדרתי את טיימר TIM4 של לוח המיקרו בתדר של סביב 500 הרץ.

על ידי ניסיון רציף של מחזורי עבודה שונים, הסתדרתי עם כמה ערכים שהספיקו כדי שהמחט תלך מ -0 ל -100.

אפרט את תהליך הצגת ערך מדויק בשלב הבא על ידי יישום קצת מתמטיקה.

שלב 4: כיול מיקרופון

כיול מיקרופון
כיול מיקרופון
כיול מיקרופון
כיול מיקרופון

לאחר שעשיתי את עוקב המעטפות, כתבתי קוד פשוט לשימוש ב- ADC ואימתתי שערך הקריאה אכן משתנה בהתאם לקול החדר בתוך החדר.

על מנת "לתרגם" ערך זה לקריאת dB בפועל, השתמשתי בגנרטור צלילים מקוון בתדירות של 550 הרץ וב- Android שלי בכדי לספק קריאת התייחסות.

תכננתי את הערכים האלה והשתמשתי בכלי Curve Fit של MatLAB כדי לקבל פונקציה שממפה קריאות ADC לקירובים בפועל של רמות ה- dB (או לפחות מספיק קרוב לקריאות הטלפון שלי).

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

עשיתי את אותו הדבר גם כדי למפות את מיקום המחט לערכי PWM. אספתי ערכים אלה על ידי הגדלת ערך PWM ברציפות 10 ברציפות עד שהצורך פגע בקריאה בסולם שלו.

בשילוב שתי הפונקציות הללו קיבלתי דרך קלה להציג את הקריאה מ- ADC לערך ממשי על מחוון המד.

שלב 5: אפליקציית אנדרואיד

האפליקציה משתמשת בספרייה המגניבה הזו כדי לתקשר באמצעות Bluetooth סדרתי כדי להחליף מידע בתים.

האזהרה העיקרית של מערכת זו היא שאורך המילה המרבי שנשלח באמצעות Bluetooth הוא 8 סיביות וערך ה- ADC מיוצג כ -12 סיביות. כדי להתגבר על בעיה זו, חילקתי ערך ADC אחד לשני ערכי 6 סיביות נפרדים (MSB ו- LSB) כאשר 2 הסיביות הנותרות משמשות לזיהוי סוג ההודעה (MSB, LSB, CHK).

לכן, עבור ערך ADC יחיד שאנו רוצים לשדר, חילקנו את הערך בפועל ל -2 הודעות. כדי לבדוק את תקינות ההודעות האלה, שלחתי הודעות שלישיות עם ה- XOR של 2 ההודעות הראשונות.

לאחר בדיקת תקינות הערך, נוכל ליישם את אותה הפונקציה כדי להשיג את רמת ה- dB ולשרטט אותה על התרשים החי שלנו.

שלב 6: סיכום

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

קוד המקור לפרויקט זה ניתן למצוא כאן:

  • אפליקציה נלווית לאנדרואיד - ריפו
  • קוד מיקרו -בקר - ריפו

אל תהסס לתרום אם אתה מוצא את זה שימושי בכל דרך שהיא.

מוּמלָץ: