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

Color-pi: 9 שלבים
Color-pi: 9 שלבים

וִידֵאוֹ: Color-pi: 9 שלבים

וִידֵאוֹ: Color-pi: 9 שלבים
וִידֵאוֹ: Кумихимо. Плетение шнуров. Плетение кумихимо. 2024, נוֹבֶמבֶּר
Anonim
Color-pi
Color-pi

מדריך זה מראה כיצד להשתמש ב- 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: ציוד

  1. Raspberry Pi - השתמשתי ב- Raspberry Pi 2B שהיתה לי במקום, אבל אתה יכול לקבל ערכת Starter Raspberry Pi 3 בסביבות 100 CAD
  2. RGB LED Strip Light - שיחקתי עם Minger LED Strip Light 32.8ft/10M 600leds RGB SMD 5050. זה מגיע עם בקר וספק כוח בכ- CAD 40
  3. מחבר חבית חבית - קניתי אחד מחנות האלקטרוניקה המקומית שלי, משהו כזה. רק וודא אם מתאים לאספקת החשמל שלך
  4. מחברי מגשר / חוט - היו לי כמה כבלי חיבור נקבה לזכר וכמה 22 מד חיבור מוצק חוט שוכב מסביב
  5. לוח הלחם הלוח הלוח -הלחמה ללא הלחמה - משהו כזה
  6. 3 x 10kΩ נגדים
  7. 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

הגדר את מעגלי הטרנזיסטור, אחד לכל ערוץ צבע

  1. הכנס את אחד הטרנזיסטורים ללוח הלחם כפי שמופיע בתרשים
  2. הכנס אחד מנגדי 10kΩ לרוחב הניקוז וסיכות המקור של הטרנזיסטור. זהו הסיכה הראשונה והאחרונה
  3. השתמש בחוט כלשהו כדי לחבר את סיכת המקור (סיכה אחרונה) לקרקע על לוח הלחם
  4. חזור על שלבים 1 - 3 פעמיים נוספות, כך שיהיו לך שלוש קבוצות - אחת לכל צבע (אדום, ירוק וכחול)

חבר את סיכות ה- RPi ללוח

  1. חבר את פין 16 לפין השער (סיכה ראשונה) של הטרנזיסטור הראשון - זה יהיה ערוץ ה- LED הכחול
  2. חבר את פין 18 לפין השער (סיכה ראשונה) של הטרנזיסטור הראשון - זה יהיה ערוץ ה- LED האדום
  3. חבר את סיכה 20 לאחד מקווי הקרקע בצד לוח הלחם
  4. חבר את פין 22 לפין השער (סיכה ראשונה) של הטרנזיסטור הראשון - זה יהיה ערוץ הלד הירוק

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

חבר את ג'ק החבית

  1. חבר חוט לבן לקצה + של שקע החבית
  2. חבר חוט שחור לקצה - של שקע החבית
  3. חבר את החוט השחור לאותו קו קרקע בלוח הלחם שאליו חובר פין RPi 20
  4. חבר את החוט הלבן לקו + בלוח הלחם

חיבור פס הלדים

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

  1. הטרנזיסטור הראשון מחובר לפין 16. העברתי חוט כחול מסיכת הניקוז (סיכה אמצעית) אל החוט הכחול במחבר רצועת ה- LED.
  2. הטרנזיסטור השני מחובר לפין 18. העברתי חוט אדום מה-

    לנקז

    סיכה (סיכה אמצעית) לחוט האדום במחבר רצועת ה- LED

  3. הטרנזיסטור השלישי מחובר לפין 22. רצתי חוט ירוק מה-

    לנקז

    סיכה (סיכה אמצעית) לחוט הירוק במחבר רצועת ה- LED

  4. לבסוף, העברתי חוט לבן מקו + בלוח הלחם שהיה מחובר לשקע החבית, אל החוט הלבן במחבר רצועת ה- 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: לבסוף

Image
Image

להלן דוגמא למה שאתה צריך לראות.

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

מוּמלָץ: