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

מחוון אירועי RPi-Zero IoT / מנורת צבע: 6 שלבים (עם תמונות)
מחוון אירועי RPi-Zero IoT / מנורת צבע: 6 שלבים (עם תמונות)

וִידֵאוֹ: מחוון אירועי RPi-Zero IoT / מנורת צבע: 6 שלבים (עם תמונות)

וִידֵאוֹ: מחוון אירועי RPi-Zero IoT / מנורת צבע: 6 שלבים (עם תמונות)
וִידֵאוֹ: 3000+ Common Spanish Words with Pronunciation 2024, יולי
Anonim
מחוון אירועים / מנורת צבע RPi-Zero IoT
מחוון אירועים / מנורת צבע RPi-Zero IoT
מחוון אירועים / מנורת צבע RPi-Zero IoT
מחוון אירועים / מנורת צבע RPi-Zero IoT
מחוון אירועים / מנורת צבע RPi-Zero IoT
מחוון אירועים / מנורת צבע RPi-Zero IoT

אין בקר מיקרו נוסף, ואין צורך במודול הרחבה של HAT. ה- RPi-Zero עושה הכל. עדיף להשתמש ב- RPi-Zero W!

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

ל- Raspberry-Pi יש קו PWM הנתמך על ידי חומרה אחת בלבד. לפרויקט זה דרושים 3 קווי PWM, לכן השתמשתי בספריית PWM 'c' מונעת תוכנה (https://wiringpi.com/reference/software-pwm-library/), שכבר צריכה להיות מותקנת.

פירקתי את העיבוד ל -2 תהליכים. אחת, מונעת מפסיקה, מחליפה את קווי הבקרה למנורת LED לפי הצורך, ומקבלת את פקודות הצעדה שלה מהזרם ה'סטדין 'שלה. השני הוא שרת nodeJS מונע אירועים המנצל IO של שקע. זאת כדי למנוע דברים כמו הבהוב של אור תוך הבטחת היענות. השילוב משתמש בדרך כלל בפחות מ -5% מהמעבד. בזמנים של עדכוני צבע רציפים (באמצעות מחוונים ו/או לקוחות רבים) הוא יכול בקלות להשתמש ביותר מ -50% (במיוחד כאשר משתמשים גם בדפדפן ב- GUI של Pi-Zero). שים לב שכאשר נכנס שינוי, הודעות עדכון יוצאות לכל לקוחות השקעים הפתוחים.

שלב 1: מה שאתה צריך

מה אתה צריך
מה אתה צריך
מה אתה צריך
מה אתה צריך
  • כרטיס מיקרו SD מסוג Pi-Zero, מומלץ 8 GB. עם Raspbian-Linux או NOOBS
  • LED RGB (השתמשתי בזה:
  • 3 עמידות (ערך המבוסס על הזרם הרצוי ו/או הבהירות הרצויה, 1/8 וואט)
  • WiFi, דונגל USB (למשל https://www.ebay.com/itm/252018085448) או אפילו טוב יותר להשתמש ב- Raspberry Pi Z-W (עם WiFi מובנה)
  • מארז (למשל קטן: https://www.ebay.com/itm/131583579374 עם יותר מקום:
  • מפזר (ראה דוגמאות בתמונה)
  • כבלים ומתאמים לפי הצורך.

אופציונלי, תלוי כיצד ברצונך לחבר את הרכיבים

  • כותרת (https://www.ebay.com/itm/14186077616)
  • מגשרים (https://www.ebay.com/itm/262235387520)
  • מתאם מיקרו USB בזווית ישרה (כחול USB 2.0 OTG R)
  • רכזת מיני USB, משמשת רק בשלב ההתקנה

שלב 2: התקנת Pi-Zero והכנה לפיתוח

עקוב אחר ההתקנה הראשונית הזו עבור PiZero שלך, כדי להפוך אותו מוכן לפיתוח …

ברגע שיש לך כרטיס microSD עם הגדרת NOOBS אז:

חבר את כרטיס ה- microSD. מצורף רכזת USB עם צריכת חשמל נמוכה עם דונגל Wifi, מקלדת ועכבר (תוכל להשתמש בעכבר ו/או במקלדת אלחוטית, כך או כך, אך לא סביר שיידרש כוח חיצוני לרכזת). השתמשתי במתאמים ובמרכז שכבר היה לי.

כעת צרף צג ומתאם מתח microUSB והוא יאתחל. המשך וסיים את ההנחיות להגדרת Raspbian, Debian Linux, כפי שניתן לראות בקישור noobs-setup לעיל.

בנוסף, הייתה לי רזולוציה נמוכה מדי. אז הוספתי את השורות האלה ל /boot/config.txt

disable_overscan = 1

hdmi_group = 2 hdmi_mode = 58

ה- hdmi_mode = 58 עובד עבור המסך שלי, שלך עשוי להזדקק למשהו אחר.

עיין: עשה-פטל-פי-שימוש-ברזולוציה מלאה-צג ו

raspberrypi.org/documentation/configuration/config-txt.md

לאחר אתחול ה- Pi-Zero נכנס לממשק ה- GUI.

כדי להשתמש בגודל המלא של כרטיס ה- microSD שלי השתמשתי בבחירת raspi-config #1 'הרחב מערכת קבצים'. משורת הפקודה, בחלון מסוף, הזן 'sudo raspi-config' עיין ב: תיעוד/תצורה/raspi -config.md

כמו כן שיניתי הגדרות אלה תחת מס '5' אפשרויות בינלאומיות '

  • אזור: en_US. UTF-8 UTF-8
  • אזור זמן: אמריקה … Los_Angeles
  • פריסת מקלדת: מחשב כללי עם 105 מקשים (אינטל)… אנגלית (ארה"ב)

בשבילי תקן המקלדת של בריטניה הגדולה (ש- Raspbian מגיע להגדרה מראש) הפך את חלק גדול מהעריכות שלי למלאכה של ממש.

שנה הגדרות אלה לפי הצורך, המתאים עבורך. שים לב שעליך להשתמש במקשי החצים ובמקש Tab כדי לנווט ב- 'raspi-config'; ואחרי בחירה זה עלול להיות איטי מאוד להגיב.

לא מצאתי שום בעיה להתחבר לאינטרנט באמצעות דונגל WiFi-USB (השתמשתי ב -2 מכשירים שונים). פשוט הייתי צריך להזין את סיסמת מפתח הגישה שלי ל- WiFi באמצעות נפתח בפינה השמאלית העליונה של ה- GUI. ברגע שעשיתי את זה הוא יתחבר אוטומטית לאחר כל אתחול/הפעלה מחדש.

עכשיו הייתי מוכן להתפתחות כללית.

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

שלב 3: סביבת פיתוח וכלים

סביבת פיתוח וכלים
סביבת פיתוח וכלים
סביבת פיתוח וכלים
סביבת פיתוח וכלים

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

כדי להתקין Node.js (תמיכת JavaScript/צד-שרת מבוססי I/O בשרת אירועים) עשיתי את הפעולות הבאות …

עדכון sudo apt-get

sudo apt-get להתקין nodejs npm

הוספת חבילות nodeJS אלה (npm הוא מנהל החבילות של Nodejs)

npm להתקין אקספרס

npm התקן את socket.io

הפניות:

www.npmjs.com/package/express מסגרת אינטרנט מהירה ומינימליסטית

www.npmjs.com/package/socket.io Socket. IO מאפשר תקשורת מבוססת אירועים דו-כיוונית בזמן אמת

שלב 4: החומרה

החומרה
החומרה
החומרה
החומרה
החומרה
החומרה
החומרה
החומרה

ערכי ההתנגדות המשמשים כולם שונים, מכיוון שירידת המתח והיעילות שונים עבור כל שלושת מקטעי צבעי LED. רמות התפוקה הגבוהות של GPIO היו כולן כ -3.2 וולט. כל קטע LED נבדק על מנת להבטיח שהוא צורך פחות מ- 20ma מקסימום וכ -40ma יחד (<50ma max מותר), שה- PiZero יכול להתמודד איתו בקלות. קיבלתי כמה שיותר בהירות פלט, והנהגתי ישירות את ה- LED; וזה מספיק לצרכים שלי. כדי להניע זרמים גבוהים יותר, לקבלת תפוקה בהירה בהרבה, ניתן להשתמש בטרנזיסטורים של כונן ביניים עם נורית אנודה משותפת כאשר האנודה שלה מחוברת לקו 5v. PS: מכיוון שרמות הלבן השונות שלי יוצאות מעט כחלחלות, 27 במקום 24 אוהם הייתה בחירה טובה יותר בשבילי.

שימו לב שהשתמשתי בכותרת עם סיכות זכר, והתחברתי לרגלי ה- LED עם מגשרים F-F. זה הוריד את הגובה הכללי. הלחמתי את המתנגדים באמצע הקופצים. שימוש ללא מעגל או לוח ללא הלחמה, יחד עם שימוש במתאם מיקרו- USB ל- USB בזווית ישרה לדונגל ה- WiFi, הפכו את ההרכבה הסופית לקומפקטית למדי.

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

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

שלב 5: תוכנת פרויקטים

תוכנת פרויקטים
תוכנת פרויקטים

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

הנה מה שעשיתי: אבל אתה לא חייב, מכיוון שסיפקתי קובץ tar-gzip המכיל את עץ הקבצים שהתקבל.

הגדרה בצד השרת NodeJS:

תקליטור ~

mkdir node_rgb cd node_rgb mkdir public

הכנס את 'index.html' ו- 'style.css' לספריית '~/node_rgb/public' הספרייה 'rgbDriver.c' ו- 'rgb_main.js' לספריית '~/node_rgb'

הידור/בנה את תהליך c 'rgbDriver':

cd ~/node_rgb

cc -o rgbDriver rgbDriver.c -lwiringPi -lpthread

הורדה והרחבה של השקילות

כדי להוריד את node_rgb.tgz (להלן) ל- Pi-Zero שלך לספריית הבית שלך (~ pi) תוכל לבצע אחת משלוש הפעולות הבאות:

  1. הורד מהדפדפן ב- GU של ה- Pi-Zero שלך העבר את הקובץ ל- ~ pi/
  2. בחלון מסוף המחובר אליך Pi-Zero: cd ~ piwget

    mv FZBF9BDIL6VBHKF.tgz rgb_node.tgz

  3. הורד מדפדפן במחשב השולחני שלך. השתמש ב- WinSCP כדי להעתיק אותו לספריית ~ pi ב- Pi-Zero

לאחר ביצוע מספר 1 או 3 למעלה …

תקליטור ~

tar -xzvf node_rgb.tgz עץ node_rgb … node_rgb ├── ציבורי │ ├── Dow_Jones_Index.html │ ├── index.html │ └── style.css ├── rgbDriver ├── rgbDriver.c ─ js ├── start_rgb ├── kill_rgb └── track_dji

ניתן להשתמש ב- 'rgbDriver' שניתן להריץ (מלמעלה) ללא תלות בתהליך הממשק Node.js.

כדי לוודא שמנהל ההתקן הזה והחומרה פועלים, הזן ערכות של שלושה ערכים (של 0-255), המופרדים ברווח, למנהל ההתקן. כמו 'הד 255 0 0 |./rgbDriver 'לאדום או' הד 0 255 0 |./rgbDriver 'עבור ירוק. שים לב ש- "./" אומר למערכת ההפעלה למצוא את התוכנית 'rgbDriver' שלנו בספרייה הנוכחית. כאשר אתה מוציא a ^c (cntl-c) כדי לעצור את הנהג, הלייד עשוי להישאר דולק או לא. לחלופין, תוכל להאכיל את הערכים שלה באופן אינטראקטיבי. נסה להקליד, משורת הפקודה, את השורות הללו אחת אחרי השנייה ולצפות בנורית ה- LED.

./rgbDriver

0 255 0 100 0 100 255 255 0 … וכו '… ^ג

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

כדי להפעיל את חבילת יישומי התוכנה המלאה, כולל שרת Node.js, השתמש בפקודה זו:

צומת sudo rgb_main.js

לאחר מכן השתמש ב- cntl-c כאשר ברצונך לעצור את שרת Node.js. הפעל אותו עם

צומת sudo rgb_main.js &

כדי שזה יופעל באדמה האחורית, אבל אז תצטרך להשתמש בפקודה 'sudo kill -9 pid' כדי לעצור את זה. אם פקודה זו נראית לך זרה, בדוק את הפלט של פקודות אלה: 'man kill' & 'man sudo'.

השתמש בדפדפן, על שולחן העבודה, הטאבלט או הטלפון שלך, המחובר לרשת המקומית שלך. עבור אל https:// raspberrypi: 8080/או אם זה לא עובד השתמש בכתובת ה- ip של המכשיר (המתקבל מה- cmd 'ifconfig') משהו כמו 192.168.1.15 בתוספת מפרט היציאה: 8080 או אם אתה משתמש ב- Pi-Zero GUI: localhost: 8080 יעבוד.

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

פקודות מועילות אחרות שים לב שאם אתה מפעיל יותר מ- 'rgbDriver' בו זמנית סביר שתקבל התנהגות בלתי צפויה. אם תנסה להריץ עותק שני של rgb_main.js הוא יסתיים.

פקודה זו תפרט את כל התהליכים הקשורים:

ps aux | grep rgb

פקודה זו תהרוג את כל תהליכי nodeJS, יחד עם תהליכי הילד 'rgbDriver':

sudo ps aux | צומת grep.*rgb | awk '{print' sudo kill -9 $ 2} '| ש

מבצע עצמאי

כדי שה- Pi-Zero יפעיל את אפליקציית שרת Node.js בעת האתחול … באמצעות העורך המועדף עליך (למשל nano ~/.bash_profile), הקלד את השורות הבאות ושמור ב- ~/.bash_profile

cd node_rgb

צומת sudo rgb_main.js &

כדי לא לקבל הודעות שגיאה מטרדות בעת פתיחת חלון מסוף השתמש בקידוד מותנה כמו סקריפט המעטפת בקובץ 'start_rgb'

כאשר ה- Pi-Zero פועל מוטבע, ללא מקלדת, עכבר או צג; ממשק המשתמש הגרפי ייקח זמן מעבד מינימלי, מכיוון שלא תהיה אינטראקציה של משתמשים. אני לא מבטל את ההפעלה האוטומטית של GUI, מכיוון של- Pi-Zero יש יותר משאבים מהצורך, במקרה זה; ואני אוהב להיות מסוגל לחבר כמה כבלים ולהשתמש בו, בכל עת בעתיד. עם זאת, אין זה הכרחי מכיוון שאתה יכול להשתמש במסוף SSH מרוחק (למשל PuTTY) לביצוע כל התחזוקה הדרושה.

משתמש בו כצג אירועים

יצרתי דף אינטרנט לניטור השינוי היומי במדד דאו ג'ונס. המקור שלו יכול לשמש קו מנחה לדף שלך שמשתמש בנתוני אינטרנט מסוימים ומניע את מחוון ה- Pi-Zero שלך בהתאם. דף זה מקבל את נתוני (json) שלו משירות אינטרנט של Google. ישנן צורות רבות של שירותי אינטרנט, כך שתצטרך לחקור את זה שבו ברצונך להשתמש כדי לקבוע את קוד JavaScript כדי לגשת אליו.

אם תרצה להשתמש במכשיר שלך, כמוני, כמחוון ייעודי, עצמאי, של מדד דאו, מוסיף שורות אלה לסוף הקובץ ~/.bash_profile, או כרצון SSH הרצוי והוצא את שורת הפקודה השנייה.. אם ברצונך להשתמש בשלט רחוק 'kill -9' בתהליך הדפדפן המתקבל כתוצאה מכך.

לישון 20

epiphany-browser --display =: 0.0 localhost: 8080/Dow_Jones_Index.html &

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

עדכון מאי 2018

יצרתי דף אינטרנט חדש (SolarStorm_devCon.html, המצורף כקובץ.txt, עקב קובץ.html שלא מועלה) שאוסף מידע על סערות גיאומגנטיות (שיכול לחזות CME הורס, EMP) ומשתמש בו להצגת צבע סולם המשקף מעין אינדקס 'DevCon' של Geo-Storm. המציין את פוטנציאל האסון עקב דופק אלקטרומגנטי (EMP) הנובע ממזג אוויר בחלל, ככל הנראה התלקחויות שמש או פליטה המונית קורונלית (CME). השתמש בו כמו שהיית משתמש ב- "Dow_Jones_Index.html".

שלב 6: שליטה מרחוק בדפי אינטרנט

Image
Image

בשלב זה תוכל לשלוט במנורת הצבעים של IOT מכל מקום ברשת המקומית שלך. כיצד להפוך אותו לגלוי ברחבי האינטרנט הציבורי אינו חלק מההנחיה הזו. אם אתה מגדיר IP ציבורי למכשיר שלך, יהיה עליך השתמש בכתובת ה- IP הזו בפקודת הפתוח של שקע ב- JavaScript של הדפים שלך (למשל ~/node_rgb/public/index.html)

אני מתכנן להשתמש במכשיר ה- Pi-Zero IOT שלי כמחוון צבעים בזמן אמת לשינוי היום במדד דאו ג'ונס. יצרתי דף שעושה את זה, שמקבל נתוני json מ- google.com/finance. בנוסף, יצרתי כמה דפי אינטרנט להדגמת מגוון השימושים הרחב של מכשיר IOT קטן זה. במקום לשים את ה- PiZero שלי באינטרנט הציבורי, אני אירח את הדפים בשרת האינטרנט הקיים שלי הפונה לציבור (כיום @ 71.84.135.81 aka: https://raspi.ddns01.com/ כאשר שרת הדומיין הדינמי החינמי שלי פועל), הפועל בגרסה המקורית B Raspberry-Pi.

בקוד בדפים המרוחקים שלי פתחתי חיבורי שקע ל- 192.168.1.41:8080 תיקנתי את ה- IP של ה- Pi-Zero שלי ל- 192.168.1.41. לשם כך בצע את ההנחיות בהגדרת raspberry-pi-with-wifi-and-a-static-ip תחת הכותרת: כתובת IP סטטית., דפים אלה, שנפתחו מאתר האינטרנט שלי, יתקשרו עם המכשיר שלך, מכיוון שהחיבור יתבצע מצד הלקוח.

להלן הדפים שבהם השתמשתי כדי לבדוק ולהפעיל את מכשיר התאורה I-Zero IOT שלי. אם אתה מעלה דפים אלה (https://71.84.135.81/iot/rgbLamp/ aka https://raspi.ddns01.com/iot/rgbLamp/ או כל אחד מהדפים הממוסגרים בדף זה) ה- JavaScript בצד הלקוח להניע את אור IOT שנוצר (בהתחשב בכך שהוא פועל בכתובת אתר זו "192.168.1.41:8080") אם תרצה תוכל להעתיק את המקור של כל אחד מהדפים הללו ולשנות לפי רצונך.

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

דף אחד הוא רמזור פשוט בכפתור הנשלט על ידי כפתור.

יש דף שנועד לעקוב אחר תחרות ספורט (למשל כדורגל, כדורסל, בייסבול), בחירות או אפילו מותאם לגיוס תרומות או מחוון סגנון התראה של DEFCON. ניתן היה להשיג את הציונים (או הצבעות בחירות) באופן אוטומטי משירות אינטרנט או לגרד דף אינטרנט אחר. אין לי הזנה אוטומטית המניעה את דף Contest_demo שלי. מישהו עם הידע הנכון יכול להוסיף נהג כוח להפעיל נורות LED בהספק גבוה ולרחוץ חדר (או בר ספורט) עם צבע של קבוצה כשהם קדימה. לרוע המזל אני מאוחר מדי עם ההנחיה הזו למסיבות הקערה של השנה, אבל בזמן לבחירות 2016.

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

רק הראשון מבין 4 הדפים הללו (יחד עם דף index.html מבוסס Pi-Zero) מאזין להודעות עדכון שרת, ומתרענן בהתאם. כל השאר שולחים רק לשרת.

מוּמלָץ: