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

שמירה על רדיו אינטרנט פשוט וקל: KISSIR: 13 שלבים
שמירה על רדיו אינטרנט פשוט וקל: KISSIR: 13 שלבים

וִידֵאוֹ: שמירה על רדיו אינטרנט פשוט וקל: KISSIR: 13 שלבים

וִידֵאוֹ: שמירה על רדיו אינטרנט פשוט וקל: KISSIR: 13 שלבים
וִידֵאוֹ: המוסיקה הכי טובה ברדיו רק ב-88FM 2024, נוֹבֶמבֶּר
Anonim
שמירה על רדיו אינטרנט פשוט ומרופד: KISSIR
שמירה על רדיו אינטרנט פשוט ומרופד: KISSIR
שמירה על רדיו אינטרנט פשוט ומרופד: KISSIR
שמירה על רדיו אינטרנט פשוט ומרופד: KISSIR

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

פטל פאי כנגן רדיו אינטרנט אינו דבר חדש, ויש הרבה הוראות כיצד ליצור נגן רדיו אינטרנט באמצעות פטל פטל עם או בלי צג להזרמת תחנות אינטרנט מרחבי העולם. אם היית בוחר ללכת ללא ראש (ללא צג), עדיין היית זקוק לאמצעי להתממשק עם נגן הפי, בדרך כלל ממשק אינטרנט אם לא אמצעי תקשורת ישיר למארח, כגון ssh. ההנחיה הזו תהיה שונה במקצת; נשתמש בלחיצת כפתור פשוטה לשליחת פקודות ל- pi, ובכך נמנע את הצורך בממשק אינטרנט ומסך LCD. נשמע מספיק קל, נכון (?)

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

אין צורך להתקדם את כישורי הפיתון שלך. למעשה ממש עברתי מ"העולם העולמי "לכתיבת זה, וכפי שתראו, שאלתי הרבה קוד - כך שאם אוכל לעשות זאת ולתעד אותו במידה מסוימת, לא תהיה למישהו אחר בעיה.

בוא נלך!

אספקה:

חומרים נחוצים

  • Raspberry pi/ pi zero w עם כל התיקונים: ספק כוח, כרטיס SD ו- Raspbian או Raspbian lite.
  • אינטרנט וגישה לאינטרנט
  • מחשב נוסף לביצוע גלישה באינטרנט ויכולת SSH לפאי הפטל
  • ממיר דיגיטלי לאנלוגי (DAC) - אופציונלי אבל אתה תהיה אסיר תודה.
  • מַגבֵּר
  • רמקולים
  • חיבור חוט ומגשרים
  • מלחם והלחמה
  • לוח פרפר לכפתורים
  • כפתורי מישוש: פתוחים בדרך כלל- אחד לכל ז'אנר מוזיקה, לחצן הפעלה ולחצן השתקה אופציונלי (מומלץ 7 כפתורים)
  • יחידת דיור לכל האמור לעיל (אופציונלי אך מסודר)

שלב 1: דרישות מוקדמות:

דרישות מוקדמות
דרישות מוקדמות

נתחיל בהנחה שכבר הגדרת את פאי ה- DAC, ה- DAC והמגבר שלך וגם נניח שיש לך גישה לאינטרנט. בשל כמות אפשרויות ציוד השמע, העדפות ואפשרויות להאזנת שמע, אנו מניחים שההגדרה שלך כבר הושלמה: אמור להיות צליל שיוצא מהרמקולים שלך לפני שתתחיל בפרויקט זה. נצטרך גם ssh ל- pi פטל, לכן באמצעות תצורה של pi, ודא שהממשקים מופעלים ב- ssh. אני אשתמש ב- Raspbian lite, וממליץ לך להתקין מחדש את העותק האחרון על כרטיס SD חדש המיועד לפרויקט זה. אם יצליח נבנה מתקן עצמאי שניתן להשאירו מופעל 24/7 כמכשיר האזנה ייעודי.

שלב 2: התקן את פייתון ופיפ

אני מעדיף ssh ל- pi באמצעות מחשב אחר, ולבצע את כל הפונקציות הנדרשות באמצעות הפעלת ssh, אך אני מניח שאפשר להתקין את ה- pi לראשונה למסך, מקלדת ועכבר ולעבוד ישירות על ה- pi עד שהוא עובדים ולאחר מכן נפרס כעצמאי.

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

עדכון sudo apt-get

sudo apt-get upgrade

ודא שמותקן פייתון. בהפעלה מסוף הקלד את השורות הבאות בשורת הפקודה:

פיתון -גרסה

אם אתה רואה פייתון 2.7.13 (או קודם לכן) בוא נתקין את פייתון 3.+:

sudo apt-get להתקין python3

sudo apt-get להתקין python-pip

sudo apt-get להתקין python3-pip

sudo pip3 install -שדרוג pip

שלב 3: התקן את MPG123 ו- Adafruit Blinka

כעת, לאחר שהבסיס הונח, רק כמה התקנות נוספות:

MPG123 היא תוכנת האודיו שתנגן את המוסיקה שלנו. ההתקנה ממש פשוטה:

sudo apt-get להתקין mpg123

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

$ sudo pip3 התקן adafruit-blinka

לפני שנמשיך הלאה, בואו נבצע בדיקה מהירה כדי לוודא שיש לנו את הגדרת Alsa:

משחק -גרסה

התוצאות שלנו צריכות לקרוא: גרסה 1.1.3 מאת ירוסלב קייסלה

שלב 4: כוונן את עוצמת הקול ל -50% ב- Alsamixer

כוונן את עוצמת הקול ל -50% ב- Alsamixer
כוונן את עוצמת הקול ל -50% ב- Alsamixer
כוונן את עוצמת הקול ל -50% ב- Alsamixer
כוונן את עוצמת הקול ל -50% ב- Alsamixer

כעת ננקט אמצעי זהירות והתאם את עוצמת הקול שלנו ל -50% כדי להימנע מהפתעות מחרישות אוזניים:

בשורת הפקודה, הקלד alsamixer:

מיקסר

אם אנו מסתכלים על מסך של אדום וירוק אדום, או 100% נפח מקסימלי, מומלץ להוריד את עוצמת הקול ל -50% כדי לחסוך את עור התוף. תמיד נוכל להתאים מאוחר יותר (למעלה או למטה) במידת הצורך.

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

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

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

SomaFm * הוא מקור מצוין להתחיל איתו, במיוחד אם עדיין אין לך מושג למה אתה רוצה להאזין. יש להם מגוון רחב של אפשרויות מוזיקה אקלקטיות, שאף אחת מהן לא בעיניי פוגעת, אין פרסומות, והחלק הטוב ביותר: הם חולקים בגלוי את כתובת האתר שלהם. כדי לתפוס את כתובת האתר, לחץ על תמונת התחנה שבה אתה מעוניין, ובסרגל הניווט בצד שמאל לחץ על "קישורי זרם ישיר". משם, מצא את קטע ה- MP3 וגרד את כתובת האתר של קצב ההשמעה הגבוה ביותר (כלומר 128 פעימות 64). הדבק את כתובת האתר לעורך טקסט או פנקס רשימות לעת עתה.

כדוגמה, כדי לגרד את סלעי חג המולד, כתובת האתר תהיה: (איננו זקוקים לתיאור השרת)

ice4.somafm.com/xmasrocks-128-mp3

זה נהיה קצת יותר מסובך מחוץ לעולם של SomaFm. תחנות רבות משתמשות במתווך בין המאזין לתחנה, בין אם זה לצורך פרסום, שיווק או אולי מעקב - ואני בדרך כלל מנסה להימנע מתחנות מסוג זה. מכיוון שהמתווכים מעדיפים שתקשיב לתחנה דרכם, בדרך כלל די קשה למצוא את כתובת האתר; וכאן נכנס Vtuner.

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

שלב 6: אופציונלי: גירוד כתובות אתרים באמצעות Vtuner

אופציונלי: לגרד כתובות אתרים באמצעות Vtuner
אופציונלי: לגרד כתובות אתרים באמצעות Vtuner
אופציונלי: לגרד כתובות אתרים באמצעות Vtuner
אופציונלי: לגרד כתובות אתרים באמצעות Vtuner

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

אני אוהב את זה. אבל איך אני משיג את כתובת האתר? כל שעליך לעשות הוא לבצע לחיצה ימנית על הרווח הלבן מימין לתמונת התחנה, מתחת לשם התחנה, ובחר "הצג מקור דף" וגלול מטה לשורה 150 בערך. אנו מחפשים את השורה שאומרת "// נסה לטפל ב- icecast ". והכתובת נמצאת מיד מתחת!

orion.shoutca.st:8110/stream

די חלקלק!

חזור על שלב זה עד שיהיו לנו לפחות 5 תחנות ברשימה.

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

שלב 7: הגדר את הכפתורים שלנו

הגדר את הכפתורים שלנו
הגדר את הכפתורים שלנו
הגדר את הכפתורים שלנו
הגדר את הכפתורים שלנו

החלק החשוב ביותר! מסירים את האבק של הלחמה הישנה או לפחות מחברים אותו ואופים את האבק. הגיע הזמן להלחם. אני משתמש ב -4 לחצני לחיצה רגעיים, שנפתחים בדרך כלל. אני אבנה מערך של כפתורים (תמונה משמאל), ואצמיד אותם ללוח פרפ. קשה להבחין בתמונה, אך הכיוון של שיני הכפתורים פועל כולם צפון-דרום. בצד ימין, אתה יכול לראות היכן ניהלתי מעקה קרקע עבור חוטי הקרקע שלי והצמדתי כמה כבלי מגשר זכר לצד הנגדי של כל כפתור. במקום להיות בעל 7 חיבורי קרקע, המסילה תאפשר לנו לחלוק חיבור קרקע אחד ל- pi לכולם. התוצאה הסופית היא לוח ופלים עדין שיהיה מותקן בחלקו העליון של הרדיו באמצעות כמה ברגים דרך חורי הטייס המסופקים. רק צמרות הכפתורים יופיעו דרך החריץ שחתכתי מהחלק העליון. מכיוון שהמשטח העליון שלי הוא בעובי של 1/4 אינץ 'בלבד, אני רוצה להיזהר לא להבריז יותר מדי. הדבק עשוי להיות מועיל בכדי לשמור על לוח הפרפסים מחובר לרדיו.

שלב 8: זהה את סיכות ה- GPIO שלנו

זהה את סיכות ה- GPIO שלנו
זהה את סיכות ה- GPIO שלנו
זהה את סיכות ה- GPIO שלנו
זהה את סיכות ה- GPIO שלנו

בהוראה היחידה שלי, הצגתי שימוש חדש עבור כובעי הקול הישנים של Google AIY גרסה 1. במדריך הלא פופולרי (או פופולרי למדי), הזכרתי כמה התרשמתי מעיצוב הכובע עצמו. יש לי כמה שוכבים, אז אני אבנה אב טיפוס באמצעות הכובע מכיוון שיש בו גם את ה- dac וגם את המגבר.

בואו נזהה כעת שישה סיכות שיארחו את לחיצות הכפתורים שלנו. אבקש ממך להתמקד בצד השמאלי של כובע ה- AIY של Google, שם כתוב "סרווס". יש עמוד של 6 עיניים לסיכה שבה אני מצרף והלחמתי את כפתורי הזכר שלי מהשלב הקודם שלנו. אם אתה עובד בלי הכובע הקולי של Google, אין לך מה לדאוג - התמונה מימין תנחה אותך. בכל מקרה נעבוד עם סיכות gpio (BCM) 26, 06, 13, 05, 12, ו -24 מלמעלה למטה (או 0-5). GPIO #24 יהיה שמור ללחצן השהיה אופציונלי.

אל תשכח לצרף גם את חיבור הארקה.

שלב 9: קוד

אני בספק אם הקוד ישתנה מכאן, אולם לגרסה האחרונה של קוד הפיתון אנא בקר ב- github שלי. צירפתי עותק החל מה- 2019-12-18 בשם pytiful3.py.

זה לא הקוד היעיל ביותר שתראו אי פעם, והוא די מילולי, אבל הוא מבצע את העבודה.

נתחיל ביצירת ארגז חול לשחק בו. ממדריך הבית שלנו, צור ספרייה על פטל הפטל שלנו שנקראת kissir:

מקדיר קיסיר/

והעתק את תוכן הקובץ pytiful3.py לספרייה על ידי פתיחת הקובץ לדוגמה בעורך טקסט, ושימוש

sudo nano kissir/pytiful3.py

העתק / הדבק את תוכן הקובץ בסקריפט הפיתון החדש שלנו. אל תשכח לשמור את העבודה שלנו באמצעות Ctrl-x, Y והזן.

אם אתה רוצה סיור מהיר בתסריט, אנו מייבאים את מודולי הפייתון שאנו נזדקק להם, ולאחר מכן אנו מגדירים את הכפתורים שלנו ומקצים סיכת gpio לכל אחד משבעת הלחצנים. יהיו 5 תחנות רדיו (אתה מוזמן לערוך לפי העדפת התחנה שלך), כפתור עצירה ולחצן כיבוי. בעוד הלולאה האמיתית פועלת ופועלת עד ללחיצה על כפתור, אשר ברוב המקרים יעצור כל הפעלה קיימת של mpg123 ותתחיל לנגן את התחנה שהוקצתה ללחצן שנלחץ. כפתור ההשהיה/עצירה הוא לא ממש כפתור השהייה אלא יותר מתג הרג מכיוון שאיננו יכולים להשהות את רדיו האינטרנט. רדיו אינטרנט לא מחכה לאיש.

שלב 10: בדוק בארגז החול שלנו

בדוק בארגז החול שלנו
בדוק בארגז החול שלנו

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

python3 pytiful3.py

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

Ctrl-C יעצור את התסריט אם עליך להפסיק.

אז אם תראה "לחץ על כפתור", למה אנו מחכים? בחר כל אחד מחמשת לחצני תחנות הרדיו שלנו.

רוב הסיכויים שתשמעו רמקול פופ ליזום השמעת המוסיקה, ואני לא יכול לעזור בזה כרגע. Mpg123 מאפשר סיומת "-טעינה 1" לאחר כתובת התחנה בפקודה os.system, אולם לא יכולתי לדעת אם זה משנה. זה אמור לאפשר חיץ קל.

עוד קצת קוד שאולי תהית לגביו: יש דגל "-f 7000" לאחר קריאת mpg123. זה מקטין את עוצמת הקול למרחק רב של עוצמת הקול המרבית. נפח מלא יהיה 32K. כפי שאני מבין, סולם עוצמת הקול אינו קנה מידה לינארי, כך שאני לא יכול לומר שהוא רק חמישית מהנפח המקסימלי, אבל עדיין חזק מאוד. הייתי צריך לעשות את זה כי כרטיס הקול שלי - כרטיס הקול הקולי של Google AIY, לפעמים לא משחק טוב עם Alsamixer.

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

שלב 11: הגדר את הקוד שלנו להפעלה אוטומטית בעת אתחול

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

sudo cp pytiful3.py/usr/local/bin/

הפוך אותו להפעלה:

sudo chmod +x /usr/local/bin/pytiful3.py

כתוב סקריפט של מעטפת להפעלה בעת ההפעלה:

סודו ננו pytiful3.sh

והכנס את הטקסט הבא:

#! /bin/sh ### BEGIN INIT INFO # מספק: pytiful3.py # Required-Start: $ remote_fs $ syslog # Required-Stop: $ remote_fs $ syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 ### END INIT INFO # ודא שרמת עוצמת הקול אינה רועשת TODO # בצע פונקציות ספציפיות כאשר מתבקש ממערכת המערכת "$ 1" בהתחלה) הד "התחלת pytiful3.py" /usr/local/bin/pytiful3.py &;; עצור) הד "עצירת pytiful3.py" pkill -f /usr/local/bin/pytiful3.py;; *) הד "שימוש: /etc/init.d/pytiful3.sh {start | stop}" יציאה 1;; יציאת esac 0

העבר אותו ל- init.d:

sudo mv pytiful3.sh /etc/init.d/

הפוך אותו להפעלה:

sudo chmod +x /etc/init.d/pytiful3.sh

רשום את הסקריפט להפעלה בעת ההפעלה:

ברירות מחדל של sudo update-rc.d pytiful3.sh

שלב 12: בדוק שוב

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

בואו נעשה אתחול מחדש, נחכה שה- pi יופעל מחדש, ולאחר כדקה נלחץ שוב על כפתור.

אם עוצמת השמע שלך נמוכה מאוד, זכור שיש לנו עוצמת מיקסר גם ב- 50%, כך שנוכל להעלות אותה בהתאם משורת הפקודה.

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

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

"btn1234_choice = random.choice (btn1234)", מיד לאחר זיהוי רשימת התחנות שלנו, כאשר btn1234_choice היא הרשימה שלנו. אל תשכח להשתמש בסוגריים מרובעים סביב רשימת התחנות שלנו המופרדות בפסיקים. קריאת הפקודה בתהליך משנה משמיעה את הבחירה האקראית שלנו:

subprocess.call (['mpg123', '-q', btn1234_choice, "-טעינה 1"])

שלב 13: קופסא ואנחנו סיימנו

קופסא ואנחנו סיימנו
קופסא ואנחנו סיימנו
קופסא ואנחנו סיימנו
קופסא ואנחנו סיימנו
קופסא ואנחנו סיימנו
קופסא ואנחנו סיימנו

אם הגעת לשלב זה, העבודה הושלמה! ברכותינו - הרגע בניתם נגן רדיו אינטרנט עצמאי.

בהתאם לציוד שיש לך (רמקולים, dac ומגבר), ייתכן שאתה תוהה כיצד להסתיר כמה מהחוטים המונחים. אולי עוד הוראה ליום אחר, אבל אם אתה מתכנן להכין יחידת דיור שתוכל להכניס אליה כמה מהחוטים, אני ממליץ לתת לעצמך הרבה מקום נוסף.

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

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

מוּמלָץ: