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

דיסקו-פי: 8 שלבים (עם תמונות)
דיסקו-פי: 8 שלבים (עם תמונות)

וִידֵאוֹ: דיסקו-פי: 8 שלבים (עם תמונות)

וִידֵאוֹ: דיסקו-פי: 8 שלבים (עם תמונות)
וִידֵאוֹ: ניר וגלי - חיי כלב 2024, נוֹבֶמבֶּר
Anonim
דיסקו-פי
דיסקו-פי

מדריך זה מראה כיצד להשתמש ב- Raspberry Pi לשליטה ברצועת LED צבעונית, המבוססת על מוזיקה המושמעת מדפדפן אינטרנט.

הוא מראה כיצד ליצור אתר בסיסי באמצעות Node.js באמצעות HTTPS ולהשתמש ב- socket.io באמצעות WSS (Secure Websocket).

לאתר יש עמוד יחיד בעל פריסה בסיסית ביותר. דף האינטרנט מאכלס רשימה נפתחת עם קבצי מוזיקה, הממוקמים בתיקיה הציבורית/שמע בשרת. בחירת אפשרות ברשימה מנגנת את קובץ המוסיקה בדף האינטרנט באמצעות רכיב השמע HTML 5. בעת הפעלת קובץ המוסיקה, דף האינטרנט משתמש בממשק AudioContext כדי לנתח את המוסיקה, שנשלחת לאחר מכן לשרת בחיבור מאובטח.

השרת הפועל ב- Raspberry Pi משתמש בספריית Nde RPI WS281x Native (עוטפת את ספריית WS281X של ג'רמי גארף) כדי לשנות את צבעי הנורות ברצועת LED WS2811, בהתבסס על הנתונים שנשלחו דרך שקע האינטרנט.

ניתן למצוא את הקוד לדוגמא כאן: דיסקו-פי

שלב 1: ציוד

  1. Raspberry Pi - השתמשתי ב- Raspberry Pi 2B שהיתה לי במקום, אבל אתה יכול לקבל ערכת Starter Raspberry Pi 3 בסביבות 100 CAD
  2. רצועת LED WS2811 - שיחקתי עם ALITOVE 16.4ft 150 פיקסלים WS2811. זה מגיע עם בקר וספק כוח בסביבות 45-50 CAD
  3. מחבר חבית חבית - קניתי אחד מחנות האלקטרוניקה המקומית שלי, משהו כזה. רק וודא אם מתאים לאספקת החשמל שלך
  4. מחברי מגשר / חוט - היו לי כמה כבלי חיבור נקבה לזכר וכמה 22 מד חיבור מוצק חוט שוכב מסביב

שלב 2: הגדרת ה- Raspberry Pi

מערכת הפעלה

בדרך כלל אני משתמש במבנה העדכני ביותר של Raspbian. הורד את התמונה וכתוב אותו לכרטיס ה- SD. אם אתה משתמש במחשב Windows, תוכל להשתמש ב- Win32 Disk Imager כדי לכתוב את התמונה לכרטיס ה- SD.

Node.js

התקן את הגירסה העדכנית ביותר של Node.js. בזמן הכתיבה אני משתמש ב- 8.9.1

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

sudo apt-get להתקין nodejs

התקן git

sudo apt-get להתקין git

שלב 3: הגדרת הקוד לדוגמה

שיבוט את הקוד לדוגמה

1. הגדר תיקיית בסיס להתקנה

cd /opt

sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock

2. שיבוט את מאגר git לדוגמה

שיבוט git https://github.com/haydockjp/disco-pi.git"

אוֹ

git clone [email protected]: haydockjp/disco-pi.git

3. התקן את התלות

דיסקו-פי

התקנת npm

זה עשוי לקחת 2-3 דקות

שלב 4: צור תעודת SSL בחתימה עצמית

1. צור קובץ מפתח פרטי

cd /opt/com.jonhaydock/disco-pi/certs

openssl genrsa -out disco-pi-key.pem 2048

2. צור CSR (בקשת חתימת תעודה)

openssl req -new -key דיסקו-pi-key.pem -out דיסקו-pi-csr.pem

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

שם מדינה (קוד בן 2 אותיות) [AU]: CA

שם מדינה או מחוז (שם מלא) [מדינה מסוימת]: שם יישוב קולומביה הבריטית (למשל עיר) : שם הארגון בוונקובר (למשל חברה) [אינטרנט Widgits Pty Ltd]: שם היחידה הארגונית של דיסקו פי (למשל, קטע) : שם נפוץ (למשל שרת FQDN או שמך) : disco-pi כתובת דוא"ל : [email protected] סיסמת אתגר : שם חברה אופציונלי :

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

3. הפק את התעודה

openssl x509 -req -days 1095 -in disco-pi-csr.pem -signkey disco-pi-key.pem -out disco-pi-cert.pem

4. ליתר ביטחון ניצור גם קובץ Diffie Hellman Parameters

openssl dhparam -out dh_2048.pem 2048

זה יכול לקחת 15-20 דקות

שלב 5: חיבור החומרה

חיבור החומרה
חיבור החומרה
חיבור החומרה
חיבור החומרה
חיבור החומרה
חיבור החומרה
חיבור החומרה
חיבור החומרה

הפעלת רצועת LED

פס ה- LED מופעל על ידי 12 וולט. ה- Raspberry Pi מסוגל רק להוציא 3.3v או 5v ואינו מסוגל להוציא בשום מקום ליד המגברים הדרושים להנעת כל כך הרבה נוריות LED.

חשוב לא לחבר את ספק הכוח 12 וולט ל- Raspberry Pi.

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

בצע את השלבים הבאים על אחריותך בלבד. אני לא לוקח אחריות על כל דבר שעלול להשתבש.

רצועת לד

לרצועת הלד שלי יש שלושה חוטים:

אדום - +12 וולט

שחור - קרקע

ירוק - נתונים

הערה: יש דין ודואט - נתוני כניסה ויציאת נתונים. וודא שאתה עובד עם קצה רצועת הלד שאומרת דין.

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

1. חבר את החוט האדום מפס ה- LED לצד + של שקע החבית.

השתמשתי בחוט לבן 22 מד.

הנח את החוט בחריץ + בשקע החבית והברג אותו למקומו.

דחוף את הקצה השני של החוט לתוך השקע על הנורית. וודא שאתה מתחבר עם החוט האדום.

2. חבר את החוט השחור מרצועת ה- LED לצד - של שקע הקנה.

השתמשתי בחוט חיבור 22 מד שחור.

הנח את החוט בחריץ - בשקע החבית. בשלב זה גם הניחו את הקצה הגברי של אחד מכבלי המחבר (חוט חום בתמונה) לאותו חור והברגו את שניהם במקומם.

דחוף את הקצה השני של החוט השחור לתוך השקע על הנורית.

וודא שאתה מתחבר עם החוט השחור.

3. חבר את החוט הירוק מפס הלד

קח את אחד מכבלי המחבר בין הנקבה לזכר. בתמונות שלי זהו החוט הירוק.

הכנס את קצה הזכר לשקע ה- LED עם החוט הירוק.

זהו כבל הנתונים.

פאי פטל

1. קח את כבל המחבר הירוק וחבר אותו ל- Raspberry Pi GPIO.

עליך לחבר אותו ל- PCM_CLK (פין 12 / GPIO 18)

2. קח את כבל המחבר השחור וחבר אותו ל- Raspberry Pi GPIO.

עליך לחבר אותו לאחד השטח. אני מציע שתשתמש בסיכה 14, אך תוכל גם להשתמש בסיכה 6, 9, 20, 25, 30, 34 או 39.

הערה: כדי שזה יעבוד, מקור החשמל LED ו- Raspberry Pi חייבים להיות בעלי בסיס משותף. שים לב גם שאסור לחבר את 12 וולט + (חוט אדום) ל- Raspberry Pi.

כוח LED

אתה לא אמור להיות מסוגל לחבר את ספק הכוח שלך 12 וולט לשקע החבית

כל נוריות LED ברצועת LED שלך צריכות כעת להאיר לבן

שלב 6: קוד צד השרת

הפעלת הקוד בצד השרת

cd /opt/com.jonhaydock/disco-pi

sudo npm התחלה

פעולה זו תפעיל את שרת האינטרנט ותתחיל להאזין לבקשות HTTPS ו- WSS.

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

ייצוא DISCO_PI_PORT = 1443

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

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

sudo npm התחל 10

ניתן למצוא את קוד השרת הראשי בקובץ app.js. קובץ זה מפעיל את שרת האינטרנט HTTPS ומוסיף גם ל- socket.io להאזין לבקשות WebSocket באותה יציאה.

כדי לגשת לאתר, עליך לפתוח דפדפן אינטרנט במחשב הראשי שלך (בדקתי זאת רק ב- Chrome) ולהשתמש בכתובת ה- IP של ה- Raspberry Pi, למשל.

10.0.1.2/

תוכל לברר את כתובת ה- IP שלך משורת הפקודה Raspberry Pi.

ifconfig

שרת האינטרנט יגיש כל תוכן תחת התיקיה הציבורית. ברירת המחדל היא להציג את דף index.html.

יש לו נקודת סיום אחת של API - /api /audio. נקודת סיום זו מחפשת קבצים כלשהם תחת תיקיית הציבור/שמע ומחזירה את הרשימה. לדוגמה

["GYAKO.mp3", "Havana (feat. Young Thug).mp3", "Queen_Bohemian_Rhapsody.mp3", "Set It All Free.mp3", "This Is What You Came For (feat. Rihanna).mp3"]

כדי להוסיף מוסיקה כאופציה, העתק קבצים לתיקיה זו. אני אישית משתמש ב- Filezilla מעל ssh. התיקייה שאליה ברצונך להוסיף קבצים היא /opt/com.jonhaydock/disco-pi/public/audio

שלב 7: קוד אתר

קוד אתר
קוד אתר

כאשר אתה פוגע באתר אתה אמור לראות משהו כזה.

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

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

אם תבחר באפשרות None, המוסיקה תפסיק לנגן.

בעת הפעלת קובץ המוסיקה, דף האינטרנט משתמש בממשק AudioContext כדי לנתח את המוסיקה, שנשלחת לאחר מכן לשרת בחיבור מאובטח של רשת.

ההודעה היא הסוג שה- socket.io בשרת הוגדר להאזנה עבור "ws2811". הוא מכיל מערך של 50 אלמנטים, שהם בין 0 ל -255.

"ws2811", {"0": 251, "1": 252, "2": 241, "3": 217, "4": 193, "5": 164, "6": 148, "7": 139, "8": 110, "9": 96, "10": 81, "11": 67, "12": 72, "13": 66, "14": 60, "15": 60, "16": 63, "17": 54, "18": 37, "19": 30, "20": 31, "21": 26, "22": 13, "23": 3 " 24 ": 10," 25 ": 7," 26 ": 6," 27 ": 0," 28 ": 0," 29 ": 0," 30 ": 1," 31 ": 8," 32 ": 12, "33": 3, "34": 2, "35": 2, "36": 0, "37": 0, "38": 0, "39": 0, "40": 0, "41": 0, "42": 0, "43": 0, "44": 0, "45": 0, "46": 0, "47": 0, "48": 0, " 49 ": 0}

השרת משתמש בספריית Nde RPI WS281x Native (עוטפת את ספריית WS281X של ג'רמי גארף) כדי לשנות את צבעי הנורות ברצועת LED WS2811, בהתבסס על הנתונים שנשלחו דרך שקע האינטרנט.

שלב 8: לבסוף

Image
Image

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

אני מקווה שאתה נהנה מזה. ספר לי מה אתה עושה עם זה!

הערה: אם יש לך בעיות

מכיוון שספרייה זו ושמע אודיו Raspberry Pi המשולב משתמשים ב- PWM, לא ניתן להשתמש בהם יחד.

ייתכן שיהיה עליך לרשום את מודול גרעין השמע של Broadcom על ידי יצירת קובץ /etc/modprobe.d/snd-blacklist.conf עם

רשימה שחורה snd_bcm2835

אם מכשיר השמע עדיין נטען לאחר הרשימה השחורה, ייתכן שיהיה עליך גם להגיב עליו בקובץ /etc /modules. במערכות ללא ראש ייתכן שיהיה עליך גם לאלץ אודיו באמצעות hdmi

ערוך את config.txt והוסף:

hdmi_force_hotplug = 1

hdmi_force_edid_audio = 1

נדרש אתחול מחדש כדי שהשינוי הזה ייכנס לתוקף

מוּמלָץ: