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

ממסר אזעקה להקפאה: 5 שלבים
ממסר אזעקה להקפאה: 5 שלבים

וִידֵאוֹ: ממסר אזעקה להקפאה: 5 שלבים

וִידֵאוֹ: ממסר אזעקה להקפאה: 5 שלבים
וִידֵאוֹ: Days Gone Gameplay Walkthrough משחק מלא (PS5) 4K 60FPS HDR 2024, יולי
Anonim
ממסר אזעקה להקפאה
ממסר אזעקה להקפאה

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

יש 2 חלקים לבעיה זו, אנו זקוקים לשיטה לאיתור האזעקה שהופעלה ושיטה להעברת עובדה זו לחלל המגורים שלנו. העיצוב שהחלטתי עליו היה להשתמש ב- Raspberry Pi כדי להאזין לאזעקת ההקפאה, ואז לשלוח הודעת אזעקה קולית לרדיו הביתי שלי, המאופשר ל- uPNP. אוניברסלי Plug and Play (UpnP) הוא תקן לגילוי ואינטראקציה עם שירותים המוצעים על ידי מכשירים שונים ברשת, כולל שרתי מדיה ונגנים, אם כי אני לא חושב שהקפאים הוצגו בעת פיתוח התקן. הודעת האזהרה נעשתה רועשת ומעצבנת וחוזרת בלי סוף עד כיבוי הרדיו.

בחרתי לזהות את האזעקה עם Raspberry Pi Zero W ו- Seeed ReSpeaker 2-Mics Pi HAT ה- Raspberry PI Zero היא גרסה בעלות נמוכה של ה- Raspberry Pi והאפשרות W כוללת WiFi מובנה, בעוד ה- Seeed Pi HAT קמעונאי בפחות מ- 10 $, כולל נוריות מובנות ולחצן משתמש. Pi HAT הם כרטיסי הרחבה המתחברים ישירות ל- Raspberry Pi ומבצעים הליך הרכבה פשוט מאוד. כל גרסת פי תהיה יותר מסוגלת לתפקיד, וניתן להחליף את המיקרופון שנבחר, אם כי השתמשתי בנורות הלדים המובנות במבנה זה.

קל לבדוק אם רדיו או טלוויזיה יעבדו עבורך. סביר יותר שזה יתואר כ- "DLNA enabled" או דומה. זה משתמש ב- uPNP כדי לתקשר. במחשב Windows, בחר קובץ mp3 ו- "העבר למכשיר". אם המכשיר שלך מופיע ואתה יכול לנגן את הקובץ, אז אתה מוכן ללכת.

חילקתי את התוכנה ל -2 סקריפטים של פייתון, checkFreezer.py בכדי לבדוק אם הופעלה התראה בהקפאה והגבה את alarm.py להעלות את האזעקה. סקריפטים אלה ניתנים לפתח ולבדוק בנפרד וניתן להתאים או להחליף בקלות שיטות שונות להעלאת אזעקות למיקרופונים.

אספקה

  • תוכנה -https://github.com/wapringle/freezer-alarm
  • פטל PI אפס W
  • ראיתי את ReSpeaker 2-Mics Pi HAT
  • רדיו מופעל באמצעות uPNP

שלב 1: תכנון הגלאי

כאשר דלת המקפיא נשארת פתוחה והטמפרטורה עולה, המקפיא נותן אזעקת "ביפ ביפ ביפ". בדומה לרוב הצפצופים האלקטרוניים, מדובר בתדר יחיד. הרעיון הוא לדגום את קלט השמע, לבצע טרנספורמציה מהירה של פורייה (FFT) שהופכת אות מבוסס זמן לאחד המבוסס על תדר, במילים אחרות הוא פירוק אות להצגת התדרים השונים באות. עיין במנתח הספקטרום פי מסוג Raspberry Pi עם רצועת LED RGB נוכל לחפש שיא בתדר הבאזר ולהפעיל את האזעקה כאשר הזמזם פעיל במשך זמן מה.

לגלאי זה יש 2 דרישות

  • הוא אמור לזהות את הזמזם, אפילו בנוכחות רעשי הסביבה (לחסל שלילי שווא)
  • זה לא צריך להיות מופעל על ידי רעש הסביבה (לחסל חיובי שווא)

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

שלב 2: הגדרת הגלאי

הגדרת הגלאי
הגדרת הגלאי
הגדרת הגלאי
הגדרת הגלאי
הגדרת הגלאי
הגדרת הגלאי

עם הטלפון שלי, לקחתי דוגמאות שמע כקבצי WAV של זמזם ההקפאה לבד, עם רקע רועש, ועם ההובר פועל. התאמתי את הקוד לביצוע ה- FFT מהפוסט Reading Audio Stream עבור FFT (במקרה של ספק, plagarise) והשתמשתי בתסריט fourierTest.py כדי לתכנן דוגמאות גולמיות ו- Fourier Transformed של הבאזר ברקע שקט, רועש ורועש מאוד. עליית הרמה בתדר 645 בולטת בעלילה הראשונה ועדיין משמעותית עם רקע רועש מאוד.

שלב 3: בניית הגלאי

הרכבת הגלאי

פשוט מאוד. ה- Pi W מגיע עם Wifi מובנה וה- HAT מחובר באופן סדיר לסיכות GPIO בפי. הגדרת התוכנה דורשת את השלבים

  • התקן distro raspbian ב- Raspberry Pi. יש המון מדריכים בנושא שיכולים להסביר את זה הרבה יותר טוב.
  • הגדר את ה- Wifi (כך גם למעלה)
  • יש צורך בחבילת alsa המותקנת

$ sudo apt-get install libasound-dev

$ pip להתקין pyalsaaudio

  • חבר את הכובע ל- PI פטל
  • עקוב אחר ההוראות באתר הנראה כדי להתקין את מנהלי ההתקנים של HAT.
  • הפעל את האבחון שנראה כדי לבדוק אם ה- HAT פועל ותצורתו תקינה.

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

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

הכשרת הגלאי

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

ישנן 2 דרכים לזהות אם נשמע צפצוף:-

  1. האם תדירות הזמזם הייתה תדירות השיא במדגם?
  2. או שמא רמת ההספק בתדר הבאזר עולה על סף?

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

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

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

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

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

  • www.electricmonk.nl/log/2016/07/05/exploring-upnp-with-python/ יש לזה סקירה נחמדה של איך הכל משתלב
  • developer.sony.com/develop/audio-control-api/get-started/browse-dlna-file.
  • stackoverflow.com/questions/28422609/how-to-send-setavtransporturi-using-upnp-c/35819973

השתמשתי ב- Wireshark פועל במחשב Windows כדי לבטל את הבחירה ברצף ההודעות בעת הפעלת קובץ לדוגמא מהמחשב שלי ברדיו, ולאחר קצת התעסקות קיבלתי רצף פקודות שעבד. זה

  • הפעל שרת אינטרנט קופץ שישרת את הודעת האזהרה כאשר הרדיו מבקש זאת
  • הגדר את עוצמת הקול ל- LOUD (הודעת האזהרה צריכה למשוך את תשומת הלב של כולם)
  • העבר את האורי של הודעת האזהרה לרדיו
  • סקר את הרדיו עד שהמצב הנוכחי הוא "עצור"
  • העבר את הרדיו ל"שחק "את ה- uri
  • חזור על 2 השלבים האחרונים עד שהמצב הנוכחי הוא "NO MEDIA PRESENT", כלומר האזעקה הודתה על ידי כיבוי הרדיו
  • לבסוף סגור את שרת האינטרנט ויצא.

זהו הסקריפט raiseAlarm.py

שלב 5: עשה זאת בעצמך

עושה זאת בעצמך
עושה זאת בעצמך

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

הגדרת ה- PI Zero W, כולל המיקרופון

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

שיבוט $ git

עליך גם להתקין את התוכנה כדי להשתמש בנורות ה- APA102 המשולבות. צירפתי עותק של apa102.py בספריית העבודה של git

הכשרת הגלאי שלך

הוספתי אפשרות הדרכה לתסריט checkFreezer.py. זה מפעיל את זה לבד ומדפיס אבחון לשורת הפקודה, אך ראשית עליך להקליט כמה דוגמאות של האזעקה בסביבה שקטה כקבצי WAV, ולעשות את אותו הדבר בקובץ רועש. כדי להשלים את האימון עליך קודם כל למצוא את תדר ה- FFT עם הרמה הגבוהה ביותר ("תדר השיא") ולאחר מכן רמת סף לתדר זה כדי להגדיר טריגר. לשם כך, הפעל את script scriptFreezer במצב אימון, עם האפשרות '-t' והפעל את הקלטת האזעקה.

$ python checkFreezer.py -t

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

$ python checkFreezer.py -t

תדר שיא מוכן 55 טריגר רמה 1 מופעל? תדירות שיא שגויה 645 רמת ההדק 484 מופעלת? תדירות שיא שקרית 645 רמה 380 מופעלת? שֶׁקֶר

תדירות השיא היא במקרה זה 645 וזה הופך לתדר ההדק. עכשיו כדי לקבל את רמת ההדק, הפעל מחדש את checkFreezer, הגדר את ההדק

$ python checkFreezer.py -t -טריגר = 645

תדר שיא מוכן 645 רמת ההדק 1273 מופעלת? תדר שיא שקרי 645 רמה 653 מופעלת? תדר שיא שקרי 645 רמת ההדק 641 מופעלת? תדירות שיא שקרית 645 רמה 616 מופעלת? שֶׁקֶר

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

$ python checkFreezer.py -t -טריגר = 645 -סף = 500

תדר שיא מוכן 645 רמת ההדק 581 מופעלת? תדר שיא אמיתי 645 רמת ההדק 798 מופעלת? תדירות השיא האמיתית 645 רמת ההדק 521 מופעלת? נָכוֹן

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

מתחבר לרדיו

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

סיפקתי הודעת ברירת מחדל לאזעקה, מקפיא. Mp3. אתה מוזמן להחליף במסר משלך.

ערוך את הסקריפט עם כתובות ה- IP המתאימות והפעל את הסקריפט.

$ python raiseAlarm.py

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

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

יוצא לחיות

הסר את דגל האימון '-t' והפעל את checkFreezer עם הערכים שלך, למשל

$ python checkFreezer.py -טריגר = 645 -סף = 200

כדי לגרום לו להתחיל לאתחל מחדש, הוסף ל- /etc/rc.local, cd/home/pi/freezer-alarm

(python checkFreezer.py --trigger = 645 --threshold = 200> /tmp /freezer 2> /tmp /freezererror &) ויציאה 0

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

סוף כל סוף

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

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

מוּמלָץ: