תוכן עניינים:
- שלב 1: ציוד
- שלב 2: הגדרת ה- Raspberry Pi
- שלב 3: פי-בלסטר
- שלב 4: הגדרת הקוד לדוגמה
- שלב 5: צור תעודת SSL בחתימה עצמית
- שלב 6: חיווט המעגל
- שלב 7: קוד צד השרת
- שלב 8: קוד אתר
- שלב 9: לבסוף
וִידֵאוֹ: Color-pi: 9 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:17
מדריך זה מראה כיצד להשתמש ב- Raspberry Pi לשליטה קולית ברצועת LED RGB, דרך אתר אינטרנט, באמצעות ממשקי ה- API של Web Speech for SpeechRecognition ו- SpeechSynthesis.
דוגמה זו מראה כיצד
- צור אתר בסיסי באמצעות Node.js באמצעות
- השתמש בממשקי ה- API של דיבור אינטרנט ל SpeechRecognition ו- SpeechSynthesis.
- השתמש במסגרת Cylon.js לשליטה ברצועת LED RGB ב- Raspberry Pi
- תקשורת באמצעות WSS (שקעי אינטרנט מאובטחים) מדף האינטרנט ל- Cylon.js כדי לשלוט בצבע הנורית
הערה
- תזדקק לרמקולים או לאוזניות כדי לשמוע את סינתיסייזר הדיבור
- יהיה עליך לתת גישה למיקרופון שלך כדי שהזיהוי הקולי יפעל
- מכיוון שגישה זו למיקרופון שלך צריכה להפעיל את האתר תחת
- הספרייה cylon-api-socketio אינה תומכת בשלב זה ב- https. יש לי בקשת משיכה שמחכה למיזוג, אך עד אז עליך להחליף את /node_modules/cylon-api-socketio/lib/api.js בקובץ במאגר זה
- יש צורך ב pi-blaster בכדי לגרום לזה לעבוד.
שלב 1: ציוד
- Raspberry Pi - השתמשתי ב- Raspberry Pi 2B שהיתה לי במקום, אבל אתה יכול לקבל ערכת Starter Raspberry Pi 3 בסביבות 100 CAD
- RGB LED Strip Light - שיחקתי עם Minger LED Strip Light 32.8ft/10M 600leds RGB SMD 5050. זה מגיע עם בקר וספק כוח בכ- CAD 40
- מחבר חבית חבית - קניתי אחד מחנות האלקטרוניקה המקומית שלי, משהו כזה. רק וודא אם מתאים לאספקת החשמל שלך
- מחברי מגשר / חוט - היו לי כמה כבלי חיבור נקבה לזכר וכמה 22 מד חיבור מוצק חוט שוכב מסביב
- לוח הלחם הלוח הלוח -הלחמה ללא הלחמה - משהו כזה
- 3 x 10kΩ נגדים
- 3 x N -channel MOSFETs לשליטה על הלדים - קניתי כמה IRL3303 של החנות האלקטרונית המקומית שלי. חשוב שמתח סף השערים יהיה מקסימלי. 3.3V כך שניתן להניע אותו על ידי סיכות RPi; בדרך כלל מסומן בשם 'L' (רמת לוגיקה) בשם.
שלב 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: פי-בלסטר
pi-blaster מאפשר PWM בסיכות GPIO שאתה מבקש מ- Raspberry Pi. הטכניקה הנהוגה יעילה ביותר: אינה משתמשת במעבד ונותנת פולסים יציבים מאוד.
אפנון רוחב הדופק הזה מאפשר ל- Raspberry Pi לשלוט עד כמה כל אחד מהערוצים האדומים, הירוקים והכחולים בהירים עבור רצועת ה- LED.
ראשית, שיבוט את המאגר
cd /opt /
sudo git שיבוט https://github.com/sarfata/pi-blaster.git sudo chown -R pi: pi pi-blaster
לאחר מכן, בנה והתקן
cd/opt/pi-blaster./autogen.sh &&./configure && make && sudo make install
לבסוף, הגדר באילו סיכות אתה רוצה להשתמש
מתחת לחשבון השורש, או באמצעות סודו, צור וערוך את הקובץ
/etc/default/pi-blaster
הוסף את השורות הבאות
DAEMON_OPTS =-gpio 23, 24, 25
סיכות gpio אלה צריכות להתאים את הסיכות שאתה מחבר לרצועת ה- LED שלך.
הערה: יש הבדל בין GPIO למספר סיכה. דוגמה זו משתמשת בדברים הבאים
LED - כחול, GPIO -23, פין - 16
LED - אדום, GPIO -24, פין - 18 LED - ירוק, GPIO -25, פין - 22
תוספות נוספות
התחל עם פי-בלאסטר
sudo service pi-blaster start
הפעל מחדש את pi-blaster
sudo service pi-blaster הפעלה מחדש
עצור pi-blaster
sudo service pi-blaster stop
הפעל את pi-blaster באופן אוטומטי בזמן האתחול
sudo systemctl אפשר pi-blaster
אזהרות ואזהרות אחרות
סיכות המשמשות את pi-blaster יוגדרו כתפוקות. אל תחבר משהו לכניסה או שאתה עלול להרוס אותו! שד זה משתמש במחולל PWM חומרה של פטל הפאי כדי לקבל תזמונים מדויקים. הדבר עלול להפריע לפלט כרטיס הקול שלך.
שלב 4: הגדרת הקוד לדוגמה
שיבוט את הקוד לדוגמה
1. הגדר תיקיית בסיס להתקנה
cd /opt
sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock
2. שיבוט את מאגר git לדוגמה
שיבוט git
אוֹ
git clone [email protected]: haydockjp/color-pi.git
3. התקן את התלות
cd color-pi
התקנת npm
זה עשוי לקחת 2-3 דקות
4. פרויקט זה צריך לתקשר באמצעות HTTPS ו- WSS. בשלב זה cylon-api-socketio אינו תומך בחיבורי SSL. קיימת בקשת משיכה פתוחה להוספת תמיכה זו, אך עד למיזוג זה יש קובץ תיקון במאגר זה. הפעל את הפקודה הבאה לאחר התקנת npm
git checkout node_modules/cylon-api-socketio/lib/api.js
שלב 5: צור תעודת SSL בחתימה עצמית
1. צור קובץ מפתח פרטי
cd /opt/com.jonhaydock/colour-pi/certs
openssl genrsa -out color-pi-key.pem 2048
2. צור CSR (בקשת חתימת תעודה)
openssl req -new -key color-pi-key.pem -out color-pi-csr.pem
בשלב זה תתבקש למסור מידע כלשהו לבקשת האישור. מכיוון שזו תעודה בחתימה עצמית, זה תלוי בך עד כמה אתה ממלא את הפרטים במדויק. הנה דוגמה
שם מדינה (קוד בן 2 אותיות) [AU]: CA
שם מדינה או פרובינציה (שם מלא) [מדינה מסוימת]: שם יישוב קולומביה הבריטית (למשל עיר) : שם הארגון בוונקובר (למשל חברה) [אינטרנט Widgits Pty Ltd]: שם היחידה הארגונית של צבע פי (למשל, קטע) : שם נפוץ (למשל שרת FQDN או השם שלך) : כתובת דוא"ל color-pi : [email protected]
סיסמת אתגר :
שם חברה אופציונלי :
בדוגמה זו, פשוט לחץ על חזור כדי להשאיר את סיסמת האתגר ריקה
3. הפק את התעודה
openssl x509 -req -days 1095 -in color-pi-csr.pem -signkey color-pi-key.pem -out color-pi-cert.pem
4. ליתר ביטחון ניצור גם קובץ Diffie Hellman Parameters
openssl dhparam -out dh_2048.pem 2048
זה יכול לקחת 15-20 דקות
שלב 6: חיווט המעגל
הפעלת רצועת LED
פס ה- LED מופעל על ידי 12 וולט. ה- Raspberry Pi מסוגל רק להוציא 3.3v או 5v ואינו מסוגל להוציא בשום מקום ליד המגברים הדרושים להנעת כל כך הרבה נוריות LED.
חשוב לא לחבר את ספק הכוח 12 וולט ל- Raspberry Pi. טרנזיסטורים מסוג MOSFET בתעלת N משמשים להפרדת ה -3.3 וולט על סיכות ה- RPi לבין ה -12 וולט של ספק הכוח LED.
ל- MOSFET שלושה סיכות שער, ניקוז ומקור. אם אינך בטוח באיזה גוגל מדובר בגיליון הנתונים של הטרנזיסטור בו אתה משתמש, למשל. IRL3303
אנו הולכים לחבר את סיכת ה- Raspberry Pi לשער, את חוט ה- LED לנקז ואת הקרקע המשותפת למקור. כאשר הסיכה עולה גבוה, המתח בין הניקוז למקור יפעיל את השער ויחבר את השער למקור.
אנו הולכים גם לשים נגדים של 10kΩ על פני השער והמקור, כך שכאשר סיכה RPi גבוהה, נוכל להגן על הסיכה על ידי הפחתת הזרם העובר דרכה.
בצע את השלבים הבאים על אחריותך בלבד. אני לא לוקח אחריות על כל דבר שעלול להשתבש
יש תמונה מטריפה ותצלום של המעגל בפועל למעלה.
אני ממליץ לעשות זאת בזמן שהחשמל כבוי עבור ה- RPi ורצועת ה- LED
הגדר את מעגלי הטרנזיסטור, אחד לכל ערוץ צבע
- הכנס את אחד הטרנזיסטורים ללוח הלחם כפי שמופיע בתרשים
- הכנס אחד מנגדי 10kΩ לרוחב הניקוז וסיכות המקור של הטרנזיסטור. זהו הסיכה הראשונה והאחרונה
- השתמש בחוט כלשהו כדי לחבר את סיכת המקור (סיכה אחרונה) לקרקע על לוח הלחם
- חזור על שלבים 1 - 3 פעמיים נוספות, כך שיהיו לך שלוש קבוצות - אחת לכל צבע (אדום, ירוק וכחול)
חבר את סיכות ה- RPi ללוח
- חבר את פין 16 לפין השער (סיכה ראשונה) של הטרנזיסטור הראשון - זה יהיה ערוץ ה- LED הכחול
- חבר את פין 18 לפין השער (סיכה ראשונה) של הטרנזיסטור הראשון - זה יהיה ערוץ ה- LED האדום
- חבר את סיכה 20 לאחד מקווי הקרקע בצד לוח הלחם
- חבר את פין 22 לפין השער (סיכה ראשונה) של הטרנזיסטור הראשון - זה יהיה ערוץ הלד הירוק
השתמשתי בצבעי תיל תואמים לנורות הלד: כחול, אדום וירוק. השתמשתי בשחור לאדמה
חבר את ג'ק החבית
- חבר חוט לבן לקצה + של שקע החבית
- חבר חוט שחור לקצה - של שקע החבית
- חבר את החוט השחור לאותו קו קרקע בלוח הלחם שאליו חובר פין RPi 20
- חבר את החוט הלבן לקו + בלוח הלחם
חיבור פס הלדים
רצועת הלד שלי הגיעה עם מחבר בגודל מספיק טוב שניתן לחבר אותו זמנית ללוח. דחפתי את המחבר בלוח הלחם וחיברתי אותו למבחן המעגל.
- הטרנזיסטור הראשון מחובר לפין 16. העברתי חוט כחול מסיכת הניקוז (סיכה אמצעית) אל החוט הכחול במחבר רצועת ה- LED.
-
הטרנזיסטור השני מחובר לפין 18. העברתי חוט אדום מה-
לנקז
סיכה (סיכה אמצעית) לחוט האדום במחבר רצועת ה- LED
-
הטרנזיסטור השלישי מחובר לפין 22. רצתי חוט ירוק מה-
לנקז
סיכה (סיכה אמצעית) לחוט הירוק במחבר רצועת ה- LED
- לבסוף, העברתי חוט לבן מקו + בלוח הלחם שהיה מחובר לשקע החבית, אל החוט הלבן במחבר רצועת ה- LED.
כּוֹחַ
לאחר בדיקת המעגל, כדאי להפעיל את ה- Raspberry Pi ולחבר את אספקת 12V לשקע החבית.
שלב 7: קוד צד השרת
הפעלת הקוד בצד השרת
cd /opt/com.jonhaydock/colour-pi
sudo npm התחלה
פעולה זו תפעיל את שרת האינטרנט ותתחיל להאזין לבקשות HTTPS ו- WSS.
הערה: זכור להפעיל את pi-blaster תחילה
משתני סביבה
ברירת המחדל של יציאת האתר היא 443, אך תוכל לעקוף זאת על ידי הגדרת משתנה סביבה לפני שתתחיל את הקוד. לדוגמה
ייצוא COLOUR_PI_PORT = 2443
יציאת ברירת המחדל של שקע האינטרנט היא 1443, אך תוכל לעקוף זאת על ידי הגדרת משתנה סביבה לפני שתתחיל את הקוד. לדוגמה
ייצוא COLOUR_PI_WSS_PORT = 3443
הערה: מכיוון ששקע האינטרנט מטופל על ידי cylon.js ולא האתר הראשי, אלה צריכים להיות ביציאות שונות
ניתן גם לעקוף את הסיכות המשמשות את הכחול (סיכה 16), הירוק (סיכה 18) והאדום (סיכה 22). לדוגמה
ייצוא COLOUR_PI_PIN_BLUE = 36
ייצוא COLOUR_PI_PIN_RED = 38 ייצוא COLOUR_PI_PIN_GREEN = 40
הערה: אלה צריכים להתאים את הסיכות הפיזיות שבהן השתמשת. אם תשנה את אלה, יהיה עליך גם לעדכן את GPIOs המוגדרים בקובץ/etc/default/pi-blaster. לדוגמה
DAEMON_OPTS =-gpio 16, 20, 21
ניתן למצוא את קוד השרת הראשי בקובץ app.js. קובץ זה מפעיל את שרת האינטרנט HTTPS וגם, באמצעות מסגרת Cylon.js, משתמש ב- socket.io כדי להאזין לבקשות של שקע אינטרנט ביציאה נפרדת.
כדי לגשת לאתר, עליך לפתוח דפדפן אינטרנט במחשב הראשי שלך (בדקתי זאת רק ב- Chrome) ולהשתמש בכתובת ה- IP של ה- Raspberry Pi, למשל.
10.0.1.2/
תוכל לברר את כתובת ה- IP שלך משורת הפקודה Raspberry Pi.
ifconfig
שרת האינטרנט יגיש כל תוכן תחת התיקיה הציבורית. ברירת המחדל היא להציג את דף index.html.
Cylon.js יוצר נקודת סיום בה ניתן לחבר את Socket.io.
10.0.1.2:1443/api/robots/colour-pi
תוכל לשלוח הודעת set_colour דרך השקע כדי להגדיר את הערכים האדומים, הירוקים והכחולים
device.emit ('set_colour', r, g, b)
המכנה את הפקודה set_colour, המכנה את הפונקציה setColour ב- app.js. פונקציה זו קובעת את רמות הבהירות, עבור כל אחד מערכי R, G ו- B, בין 0 ל -255. כאשר 0 כבוי ו -255 מופעל במלואו.
לְמָשָׁל
אדום r = 255, g = 0, b = 0
ירוק r = 0, g = 255, b = 0 כחול r = 0, g = 0, b = 255 לבן r = 255, g = 255, b = 255 שחור / כבוי r = 0, g = 0, b = 0
שלב 8: קוד אתר
כללי
האתר משתמש בזיהוי קולי לבחירת צבעים מתוך רשימה מוגדרת מראש. כדי להוסיף צבע לרשימה, ערוך את הקובץ בשרת: public/data/colours.json
לְמָשָׁל
"אדום": "#FF0000", כאשר נמצא צבע או נבחר מהתפריט הנפתח, תיבת הפלט תוגדר לצבע זה והודעה תישלח דרך socket.io אל ה- Raspnerry Pi, אשר יגדיר את נוריות אותו צבע.
הערה: תלוי כמה טוב הנורות שלך אתה עשוי לראות או לא לראות צבע דומה. חלקם קלים יותר לשכפל מאחרים
כשתטען את האתר לראשונה, כאשר אתה משתמש בתעודת SSL בחתימה עצמית, יהיה עליך לאשר זאת בדפדפן. אתה אמור לראות התראת אבטחה לגבי האישור.
זיהוי קולי
בתיבה זו יש סמל של מיקרופון. אם תלחץ על הסמל כשהוא ירוק, הוא יתחיל להאזין לצבעים. בזמן שהוא מקשיב, הוא יהפוך לאדום. הוא יקשיב לזמן קצר ואז יפסיק. לחיצה על סמל המיקרופון כשהוא אדום תפסיק אותו גם מהאזנה.
מכיוון שאתר זה צריך לגשת למיקרופון שלך, יהיה עליך לתת לו הרשאה כאשר תתבקש
הערה: אתה צריך מיקרופון בשביל החלק הזה. אני משתמש במצלמת האינטרנט שלי.
תמליל ביניים
תיבה זו עוקבת אחר הניחושים של המילים שאתה אומר, כפי שאתה אומר אותן.
תמליל סופי
התיבה הזו עוקבת אחר הניחוש הסופי הם מה שאמרת.
צבעים ידועים
זוהי רשימה של כל הצבעים שהדף יודע עליהם. הוא נוצר מהקובץ colours.json. אם תבחר באחד הצבעים האלה, הדף ידבר את הצבע ויגדיר את צבע הפלט.
הערה: אתה צריך רמקולים או אוזניות כדי לשמוע את הנאום
מצאו צבעים
דף אינטרנט זה תומך כרגע רק בהתאמת הצבע. אם המילה או המילים שדיברת במיקרופון תואמות את השם של צבע ידוע, או שאתה בוחר צבע מרשימת הצבעים הידועה, הוא יתווסף כאן כיומן.
תְפוּקָה
הצבע האחרון שנמצא יוצג כאן. ערך צבע Hex (למשל #7cb9e8) וערך RGB (למשל 124, 185, 232) יוצגו כטקסט והרקע של התיבה באמצע יוגדר לצבע האמיתי.
צבע זה נשלח גם ל- Raspberry Pi וכדאי שתראה את צבע רצועת ה- LED משתנה.
הערה: אם אינך רואה את שינוי צבע LED, נסה להפעיל מחדש את pi-blaster ו/או את האפליקציה node.js
sudo service pi-blaster הפעלה מחדש
sudo npm התחלה
קולות ידועים
תיבה זו מציגה רשימה של "קולות ידועים" מתוך דיבור הסינתזה הנתמך. בחירה באחד הקולות הללו תשנה את הקול ואת השפה שתשמע, והיא תדבר את שם הקול.
זה ישנה גם את השפה של SpeechRegognition להיות זהה לזה שנבחר ברשימה.
שלב 9: לבסוף
להלן דוגמא למה שאתה צריך לראות.
אנא יידע אותי אם יש לך בעיה ואני יכול לעדכן לפי הצורך.
מוּמלָץ:
כיצד להשתמש ב- Detect Color TCS3200 עם SkiiiD: 9 שלבים
כיצד להשתמש ב- Detect Color TCS3200 עם SkiiiD: מדריך לפיתוח Detect Color TCS3200 עם skiiiD
DIY Arduino LED Color Organ 2.0: 5 שלבים
DIY Arduino LED Color Organ 2.0: בפרויקט זה אראה לך כיצד לבנות עוגת צבע LED Arduino המגיבה להקות תדרים שונות במוזיקה שלך עם מופעי אורות. במקרה שלי האור האדום מייצג את הבס, תדרי הביניים של אור ירוק וכחול הוא הצליל הגבוה
Macintosh Classic II Color Hackintosh: 7 שלבים (עם תמונות)
Macintosh Classic II Color Hackintosh: Mac Classic II (M4150 שנבנה בשנת 1992), סיפורו של האקינטוש Classic II. הגעתי לרשותו של Mac Classic II בציר 1992 וחשבתי שהוא יעשה המרה נהדרת. לאחר זמן רב של חיפוש אחר לוח ה- LCD בגודל הנכון להחלפה
רמזור / Feu Tri-Color!: 11 שלבים
רמזור / Feu Tri-Color!: Aujourd'hui nous allons לבנות מתכנת Feu de circulation en Arduino! Pour ce faire nous aurons besoin de: -Plaques de bois de 3 mm d'épaisseur-Papiers Calques épais-Colle-Perceuse- Arduino-Fiche זכר -Câble électrique-Kit soudure-Un ordina
Arduino + Sensor De Color TCS230: 4 שלבים
Arduino + Sensor De Color TCS230: AbstractARDUINO + COLOR SENSOR TCS230 הוא פרויקט המכוון לסביבת תלמידים כך שהמורה משתמש בו כאובייקט למידה אינטראקטיבי וגם לתלמידים, כשהוא משיג שהמטרות ישיגו מושגיות, מתודולוגיות ותפקודיות