תוכן עניינים:
- שלב 1: דברים שאנחנו צריכים לפרויקט זה (דרישות)
- שלב 2: הבנת עקרון העבודה
- שלב 3: סכמטי
- שלב 4: המרת MP3 לקובץ WAV באמצעות Audacity
- שלב 5: WAV ל- C-Code
- שלב 6: צור קובץ סופי והפעל את Linux
וִידֵאוֹ: השמעת שירים (MP3) באמצעות Arduino באמצעות PWM ברמקול או בנאי Flyback: 6 שלבים (עם תמונות)
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:15
היי ח'ברה, זו ההדרכה הראשונה שלי, אני מקווה שתאהבו את זה !!
ביסודו של דבר, בפרויקט זה השתמשתי בתקשורת הטורית בין הארדואינו למחשב הנייד שלי, כדי להעביר נתוני מוזיקה מהמחשב הנייד שלי לארדואינו. ושימוש ב- TIMERS של Arduino להשמעת הנתונים כאות PWM.
רציתי להזכיר כי הפרויקט הזה אינו מיועד למתחילים !!!.
למעשה, הפרויקט הזה היה אחד הפרויקטים הארוכים ביותר, מכיוון שעלינו לעשות הרבה דברים כדי לגרום לו לעבוד.
תשומת הלב
עשיתי את החלק השני של המדריך הזה, שהוא הרבה יותר קל ודורש בעיות מינימליות לעבודה
קישור לחלק השני (הקל ביותר).
שלב 1: דברים שאנחנו צריכים לפרויקט זה (דרישות)
1. לוח Arduino (אנו יכולים להשתמש בכל לוח (328, 2560) כלומר מגה, אונו, מיני וכו 'אך עם סיכות שונות ספציפיות)
2. מחשב או מחשב נייד עם לינוקס (השתמשתי בפדורה 29) או חי USB עם לינוקס
3. קרש או פרדבורד
4. חיבור חוטים
5. TC4420 (נהג Mosfet או דבר כזה)
6. Power Mosfet (ערוץ N או P, אנא חברו אז בהתאם) (השתמשתי בערוץ N)
7. רמקול או שנאי Flyback (כן קראתם נכון !!)
8. ספק כוח מתאים (0-12V) (השתמשתי באספקת כוח ATX משלי)
9. גוף קירור (הצלתי מהמחשב הישן שלי)
10. מחשב עם ווינדוס וכונן עט.
כדי לדעת את העבודה המפורטת של כל רכיב ופרויקט זה אנא קרא את השלב הבא.
עשיתי את החלק השני של ההוראה הזה, שהוא הרבה יותר קל וצריך מינימום בעיות כדי לעבוד. קישור לחלק השני (הקל ביותר).
שלב 2: הבנת עקרון העבודה
אההה !! החלק הארוך ביותר של פרק זה להוראה, קריאה וכתיבה משעמם.
קודם כל, אנחנו צריכים לקבל סקירה כללית על איך הדבר הזה עובד בפועל.
מה שאנחנו עושים כאן הוא שראשונה אנחנו ממירים את שיר ה- MP3 שלנו לקובץ WAV ואת הקובץ הזה לקובץ כותרת C באמצעות התוכנה שנמצאת בקישור. קוד C זה למעשה מכיל 8 סיביות (מדוע 8 סיביות ?? קרא עוד) דוגמאות נתונים שאנו צריכים לשחק באמצעות ה- Arduino שלנו בקצב או במהירות קבועה, המפורטת בהתאם לקצב הדגימה שלנו.
תיאוריה של אות אודיו.
למי שלא יודע מהו קצב הדגימה או קצב הסיביות:-
קצב הדגימה מוגדר כמספר הדגימות, אנו משחקים בשנייה (בדרך כלל נמדדים ב- Hz או KHz).
למידע נוסף בפירוט: לחץ כאן
שיעורי הדגימה הסטנדרטיים הם 44100 הרץ (האיכות הטובה ביותר), 32000 הרץ, 22050 הרץ וכו '
מה שאומר ש- 44100 דוגמאות משמשות תוך שנייה ליצירת גל בהתאם.
כלומר, כל מדגם נדרש לשחק במרווח קבוע של 1/44100 = 22.67 ארה ב.
ואז מגיע עומק הסיביות של אות אודיו, שהוא בדרך כלל מדד עד כמה הצליל מיוצג באודיו הדיגיטלי. ככל שעומק הסיביות גבוה יותר, הצליל הדיגיטלי מדויק יותר.
אבל עם Arduino או כל מיקרו-בקר אחר עם שעון 16Mhz מאפשר לנו להשתמש בנו עד 8 ביט בלבד. אני אסביר את זה למה.
יש נוסחה בדף מס '102 בגיליון הנתונים של 328p:- גליון נתונים
לא אפרט יותר מדוע אני משתמש בנוסחה זו.
תדירות האות = אות השעון / N x (1+למעלה)
אות שעון = 16Mhz (לוח Arduino)
N = מחליק מראש (1 הוא ערך לפרויקט שלנו)
TOP = ערך 0 עד 2^16 (עבור מונה טיימר של 16 סיביות) (255 = 2^8 (8 סיביות) לפרויקט שלנו)
אנו מקבלים את הערך של תדר האות = 62.5 קילוהרץ
המשמעות היא שתדר גלי המוביל תלוי בעומק הסיביות.
נניח, אם נשתמש בערך TOP = 2^16 = 65536 (כלומר עומק הסיביות של 16 סיביות)
אז נקבל את הערך של תדר האות = 244 הרץ (שלא נוכל להשתמש בו)
OKK … אז מספיקה התאוריה הזו של אופן הפעולה של אותות אודיו, אז נחזור לפרויקט.
ניתן להעתיק את קוד C שנוצר לשיר לארדואינו וניתן לשחק אותו, אך אנו מוגבלים להשמעת אודיו של 3 שניות עם קצב דגימה של 8000 הרץ. מכיוון שקוד C זה הוא קובץ טקסט ומכאן שאינו דחוס אלא דחוס. וזה לוקח יותר מדי מקום. (למשל קובץ קוד C עם אודיו בן 43 שניות עם 44 דגימות של 1 קילוהרץ לוקח מקום עד 23 מגה בייט). ואילו Arduino Mega שלנו נותן לנו שטח של כ- 256 Kb.
אז איך נשמיע שירים באמצעות Arduino. זה לא אפשרי. המדריך הזה מזויף. אל דאגה קוראים, לכן עלינו להשתמש בתקשורת כלשהי בין Arduino במהירות כה גבוהה (עד 1 Mb/s) כדי לשלוח נתוני אודיו ל- Arduino.
אבל כמה מהירות בדיוק אנחנו צריכים, כדי לעשות זאת ??
התשובה היא 44000 בתים לשנייה כלומר מהירות יותר מ 44000*8 = 325, 000 ביט/ש.
אנחנו צריכים עוד ציוד היקפי עם אחסון גדול כדי לשלוח את הנתונים האלה לארדואינו שלנו. וזה יהיה המחשב שלנו עם לינוקס (למה מחשב עם לינוקס ??? אנא קרא עוד כדי לדעת יותר על זה.)
אההה … זה אומר שנוכל להשתמש בתקשורת סדרתית … אבל רגע … סדרתי אפשרי רק במהירויות של עד 115200 סיביות/s מה שאומר (325000/115200 = 3) כי הוא איטי פי שלוש מהנדרש.
לא, חברים, זה לא. נשתמש במהירות או בשידור Baud של 500, 000 סיביות/שניות עם כבל עד 20-30 ס מ לכל היותר, המהיר פי 1.5 מהנדרש.
למה לינוקס, לא ווינדוס ???
לכן עלינו לשלוח דוגמאות במרווח (שצוין גם למעלה) של 1/44100 = 22.67 ארה ב עם המחשב האישי שלנו.
אז איך נוכל לתכנת את זה כך ??
אנו יכולים להשתמש ב- C ++ כדי לשלוח בייט נתונים דרך סידורי במרווח זמן באמצעות פונקציית שינה כלשהי
כמו nanosleep, Chrono וכו 'וכו'.
עבור (int x = 0; x
sendData (x);
nanosleep (22000); // 22uS
}
אבל אף אחד זה לא עבד על WINDOWS גם לא עבד בצורה זו ב- Linux (אבל מצאתי דרך אחרת שתוכל לראות בקוד שלי המצורף.)
כי אנחנו לא יכולים להשיג פירוט כזה באמצעות חלונות. אתה צריך לינוקס כדי להשיג פירוט כזה.
בעיות שמצאתי אפילו עם לינוקס …
אנו יכולים להשיג פרטנות כזו באמצעות לינוקס, אך לא מצאתי שום פונקציה כזו כדי לישון את התוכנית שלי במשך 22uS.
פונקציות כמו nanosleep, Chrono nanosleep וכו 'וכו' גם הן לא פועלות, מכיוון שהן מספקות שינה רק יותר מ -100 US. אבל הייתי צריך בדיוק 22 US בדיוק. חקרתי כל עמוד בגוגל והתנסיתי בכל הפונקציות האפשריות הזמינות ב- C/C ++ אבל שום דבר לא עבד בשבילי. ואז הגעתי לתפקוד משלי, שעבד עבורי כקסם אמיתי.
והקוד שלי מספק כעת שינה מדויקת ומדויקת של 1uS ומעלה !!!
אז כיסינו את החלק הקשה והשאר קל …
ואנחנו רוצים לייצר אות PWM באמצעות Arduino עם תדר ספציפי גם תדר גל נשא. (62.5KHz (כפי שחושב למעלה) לחסינות טובה של האות).
לכן, עלינו להשתמש במה שנקרא TIMERS של Arduino כדי ליצור PWM. אגב, אני לא אפרט על זה הרבה, כי תמצא הרבה הדרכות בנושא TIMERS, אבל אם אתה לא מוצא כמה אז תגיב למטה אני אכין אחת.
השתמשתי במנהג TC4420 Mosfet, כדי להציל את סיכות הארדואינו שלנו, מכיוון שהם לא יכולים לספק כל כך הרבה זרם כדי להניע MOSFET לפעמים.
אז, זו הייתה כמעט התיאוריה של הפרויקט הזה, אנו יכולים לראות כעת את תרשים המעגלים.
שימו לב שימו לב תשומת לב
למעשה, הפרויקט הזה התקשה מאוד בכוונה (אני אסביר למה), יש שיטה נוספת שדורשת noPC רק Arduino ורמקול ב- nextinstructable. Link שלי כאן.
*המטרה העיקרית של פרויקט זה היא להשתמש בתקשורת סדרתית ולדעת את עוצמתה וללמוד כיצד אנו יכולים לתכנת את המחשב האישי שלנו לבצע משימות בדיוק במרווחים כה עדינים.*
שלב 3: סכמטי
חבר את כל הרכיבים כפי שמוצג בתרשים. אז יש לכם כאן שתי אפשרויות:-
1. חבר רמקול (מחובר עם 5V)
2. חבר שנאי Flyback (מחובר עם 12V)
ניסיתי את שניהם. ושניהם עובדים די טוב.
כתב ויתור:-
*אני ממליץ להשתמש בשנאי Flyback בזהירות מכיוון שהוא עלול להיות מסוכן מכיוון שהוא מייצר מתח גבוה. ולא אהיה אחראי לכל נזק.*
שלב 4: המרת MP3 לקובץ WAV באמצעות Audacity
אז קודם כל תוריד את התוכנה
1. תעוזה, חיפוש והורדה מגוגל
2. כדי להמיר קובץ WAV ל- C-Code, הורד יישום חלון בשם WAVToCode
תוכל ללמוד כיצד להשתמש בתוכנת WAVToCode מהקישור הזה ולהוריד אותו מקישור זה.
אני גם אתן שלבים מפורטים כיצד להשתמש בשתי התוכנות.
אנא עיין בתמונות המקושרות להנחיה זו.
בשלב זה נמיר MP3 ל- Wav. (עקוב אחר התמונות, קצב הפרויקט חייב להיות 44100Hz)
בשלב הבא נמיר קובץ wav ל- C Code.
שלב 5: WAV ל- C-Code
עקוב אחר התמונות.
עיין בשתי התמונות האחרונות, השינויים חייבים להיות זהים בדיוק, אותיות גדולות צריכות להיות גדולות וקטנות צריכות להיות קטנות יותר, או שתקבל שגיאת תחביר במהלך החיבור.
(אתה יכול לראות שהשיר של 1 דקות ב -41 דקות תפס שטח של 23MB.)
שנה את שם השיר ואת אורך השיר עם שם ומשך השיר בהתאמה.
ושמור את קובץ קוד C.
עשה זאת לכל השירים שאתה רוצה לשחק עם ארדואינו
שלב 6: צור קובץ סופי והפעל את Linux
הוסף את כל השירים שהומרו לקובץ המסופק בקישור זה.
ותעקוב אחרי התמונות.
העלה את הקוד לארדואינו שצירפתי.
זכור את שמות הקבצים של קוד C (למשל אורח חיים, דולר, לבוש), מכיוון שעלינו לציין את אותם שמות בדיוק בקוד שלנו עם תלויי רישיות.
בסופו של דבר הפעל את ה- Fedora Live USB שלך או אחר והתקן מהדר gcc ולאחר מכן השתמש בהוראות הידור מהתיקייה הידור התוכנית והפעל אותו.
בסופו של דבר תוכל להאזין לשירים מרמקול או מ Flyback.
תודה שקראתם את ההדרכה הזו ותגיבו אם אהבתם.
שימו לב: הפכתי את החלק השני של זה להדריך, שהוא הרבה יותר קל ודורש בעיות מינימליות לעבודה. קישור לחלק השני (הקל ביותר)
מוּמלָץ:
כיצד לשפץ ולהשתמש ברמקול מיני: 4 שלבים
כיצד לשפץ ולהשתמש ברמקול מיני: שלום, זוהי הוראה מהירה אך שימושית כיצד ליצור רמקול מיני באמצעות אוזניות ישנות/שקע אוזניות וצעצוע שבור המשתמש בצליל. כל מה שאתה צריך, כמו גם ערכת הלחמה. זה שימושי עבור מחשב נייד Raspberry Pi או מכשיר
השמעת הצליל הראשון שלך בארון VCV: 4 שלבים
השמעת הקול הראשון שלך בארון VCV: במדריך זה אראה לך כיצד להתחיל להתנסות בתוכנית הסינתר המודולרית VCV Rack. VCV Rack היא תוכנית חינמית המשמשת לחיקוי של סינתר מודולרי, כך שהיא נהדרת לאנשים שרוצים להתחיל בסינתורים אבל לא רוצים
נגן שירים באמצעות Arduino באמצעות ADC ל- PWM על שנאי או רמקול של Flyback: 4 שלבים
נגן שירים באמצעות Arduino באמצעות ADC ל- PWM ב- Transformator או ברמקול של Flyback: שלום חבר'ה, זהו החלק השני של ההוראה הנוספת שלי (שהייתה קשה בהרבה), בעיקרון, בפרויקט הזה השתמשתי ב- ADC וב- TIMERS בארדואינו כדי להמיר אות אודיו לאות PWM. זה הרבה יותר קל מאשר ההוראה הקודמת שלי
שירים של 8 ביט באמצעות נושא סיום Arduino / Zelda: 4 שלבים
שירים של 8 ביט באמצעות נושא סיום Arduino / Zelda: רצית פעם להכין כרטיסי מתנה או צעצועים שמנגנים שיר ברגע שאתה פותח או לוחץ אותם? עם שיר לבחירתך? אולי אפילו שיר שיצרת? ובכן זה הדבר הכי קל בעולם וזה לא יעלה לך כלום
השמעת שירים באמצעות מנוע צעד !!: 11 שלבים (עם תמונות)
הפעל שירים באמצעות מנוע צעד !!: פרויקט זה עוסק בעיצוב ממשק דינאמי פשוט, שיאפשר אינטראקציה עם מנוע צעד בשתי דרכים שונות. הממשק הראשון ישלוט בכיוון ומהירות מנוע הצעד באמצעות GUI פשוט, אשר