תוכן עניינים:
- שלב 1: ציוד
- שלב 2: הגדרת ה- Raspberry Pi
- שלב 3: הגדרת הקוד לדוגמה
- שלב 4: צור תעודת SSL בחתימה עצמית
- שלב 5: חיבור החומרה
- שלב 6: קוד צד השרת
- שלב 7: קוד אתר
- שלב 8: לבסוף
וִידֵאוֹ: דיסקו-פי: 8 שלבים (עם תמונות)
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:17
מדריך זה מראה כיצד להשתמש ב- Raspberry Pi לשליטה ברצועת LED צבעונית, המבוססת על מוזיקה המושמעת מדפדפן אינטרנט.
הוא מראה כיצד ליצור אתר בסיסי באמצעות Node.js באמצעות HTTPS ולהשתמש ב- socket.io באמצעות WSS (Secure Websocket).
לאתר יש עמוד יחיד בעל פריסה בסיסית ביותר. דף האינטרנט מאכלס רשימה נפתחת עם קבצי מוזיקה, הממוקמים בתיקיה הציבורית/שמע בשרת. בחירת אפשרות ברשימה מנגנת את קובץ המוסיקה בדף האינטרנט באמצעות רכיב השמע HTML 5. בעת הפעלת קובץ המוסיקה, דף האינטרנט משתמש בממשק AudioContext כדי לנתח את המוסיקה, שנשלחת לאחר מכן לשרת בחיבור מאובטח.
השרת הפועל ב- Raspberry Pi משתמש בספריית Nde RPI WS281x Native (עוטפת את ספריית WS281X של ג'רמי גארף) כדי לשנות את צבעי הנורות ברצועת LED WS2811, בהתבסס על הנתונים שנשלחו דרך שקע האינטרנט.
ניתן למצוא את הקוד לדוגמא כאן: דיסקו-פי
שלב 1: ציוד
- Raspberry Pi - השתמשתי ב- Raspberry Pi 2B שהיתה לי במקום, אבל אתה יכול לקבל ערכת Starter Raspberry Pi 3 בסביבות 100 CAD
- רצועת LED WS2811 - שיחקתי עם ALITOVE 16.4ft 150 פיקסלים WS2811. זה מגיע עם בקר וספק כוח בסביבות 45-50 CAD
- מחבר חבית חבית - קניתי אחד מחנות האלקטרוניקה המקומית שלי, משהו כזה. רק וודא אם מתאים לאספקת החשמל שלך
- מחברי מגשר / חוט - היו לי כמה כבלי חיבור נקבה לזכר וכמה 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: לבסוף
אתה אמור לראות את נוריות ה- 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
נדרש אתחול מחדש כדי שהשינוי הזה ייכנס לתוקף
מוּמלָץ:
קסדת דיסקו להדפסה בתלת מימד !: 11 שלבים (עם תמונות)
קסדת דיסקו להדפסה בתלת מימד !: בהשראת קסדת ה"תומס "הקלאסית של דאפט פאנק. להאיר את החדר ולהיות מקנא של כל החברים שלך עם קסדת הדיסקו המדהימה הזו של ארדואינו! תזדקק לגישה למדפסת תלת מימד ולברזל הלחמה כדי להשלים פרויקט זה. אם אתה רוצה שלא
נורות דיסקו V2 ניידות נשלטות: 11 שלבים (עם תמונות)
דיסק נייד של דיסקו V2 -נוריות נשלטות בקולות צליל: עברתי דרך ארוכה עם מסע האלקטרוניקה שלי מאז שהכנתי את הדיסקו הנייד הראשון שלי. במבנה המקורי פרצתי מעגל על לוח אב טיפוס והצלחתי לבנות דיסקו כיס קטן ומסודר. הפעם עיצבתי PCB משלי ו
שולחן דיסקו מואר: 27 שלבים (עם תמונות)
שולחן דיסקו מאיר: כל דירה זקוקה לרהיטים מדהימים, אז למה שלא תכין לבד? שולחן קפה זה מכיל רצועות LED המאירות לדגמים וצבעים שונים הניתנים להתאמה אישית. האורות נשלטים על ידי ארדואינו ולחצן מוסתר, והעניין כולו
מארגן שולחן העבודה של דיסקו: 8 שלבים (עם תמונות)
מארגן שולחן העבודה של דיסקו: חומרים: טריפלקס, עובי: 3 מ"מ כמה צלחות עץ תלויות בגודל חיתוך הלייז שלך … התאם את הקובץ על צלחת העץ בגודל המרבי שלך … אולי אתה צריך יותר מלוח אחד (זכור זאת). 6 x נוריות פלאש (השתמשתי ב -7 נוריות פלאש צבעוניות) ava
דיסקו אינסופי: 6 שלבים (עם תמונות)
דיסקו אינסופי: בפרויקט הזה יצרתי מראה אינסוף המבוססת על דודקהדרן המגיב לצליל