פרסומת

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

הנה מה שתצטרך

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

  • פטל Pi (כל דוגמנית תעשה).
  • חיישן תנועה (~ $ 3).
  • חוטי חיבור.
  • רמקול קווי (לרוב רמקולי ה- Bluetooth תהיה אפשרות להשתמש ב- line-in).
  • כבל סטריאו 3.5 מ"מ, זכר לזכר.

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

מגדיר

אנו משתמשים בג'סי לייט ו- Python 2.7 Raspbian, אבל כל הפצת לינוקס שתפעל על ה- Pi שלך צריכה להיות בסדר. השארתי אותו בשם המארח הסטנדרטי "raspberrypi.local", אז התחל על ידי כניסה מרחוק באמצעות SSH (פתח חלון מסוף אם אתה נמצא ב- Mac. הנה

instagram viewer
כיצד לעשות את אותו הדבר ב- Windows - - 4 דרכים קלות לשימוש ב- SSH במערכת WindowsSSH הוא פיתרון דה-פקטו לגישה מאובטחת למסופים מרוחקים במערכות לינוקס ומערכות אחרות כמו UNIX. אם יש לך שרת SSH מרוחק אליו ברצונך לגשת, תצטרך להוריד לקוח SSH ... קרא עוד ) - או אם בחרת להשתמש ב- Raspbian מלא עם GUI לשולחן העבודה, אל תהסס לדלג לעדכון.

ssh [email protected]. (הזן פטל כסיסמא) עדכון sudo apt-get. sudo apt - לקבל התקנת פיתון-פיפ. להתקין gpiozero - -. 

זה מתקין ספרייה פשוטה לעבודה עם סיכות ה- GPIO בפיתון עם סוגים רבים של חיישנים וכפתורים מובנים. חבר את החיישן שלך באמצעות סיכת האות ב- GPIO4, ה- VCC המחובר ל- 5V וה- GND מחובר ל- GND. זה עשוי להשתנות בהתאם לדגם המדויק שלך, לכן אשר באמצעות תרשים הצמדה.

תרשים פטל Pi GPIO
אשראי תמונה: raspberrypi.org

בעזרה, למארז ה- Pi 2 שלי מפימורוני יש תרשים של צירוף שנחרט לייזר ישירות עליו.

מארז פי פטל עם תווית

עכשיו בואו נעשה את סקריפט זיהוי התנועה שלנו.

ננו תנועה. 

הדבק פנימה:

מ- gpiozero יבוא MotionSensor pir = MotionSensor (4) אמנם נכון: אם pir.motion_detected: הדפס ("התגלה זיהוי!") אחר: הדפס ("ללא תנועה")

לחץ על CTRL-X ואז Y כדי לשמור ולצאת, ואז לרוץ עם:

תנועת הפיתון. 

אתה אמור לראות את ההודעה "ללא תנועה" חוזרת על המסך עד שתנופף בידך מול החיישן, כשהוא ישהה ​​על "תנועה שתזהה!"

תנועה זוהה בטרמינל

אם ההודעה לא משתנה כלל, חיווטת אותה לא נכון.

אם אתה מעוניין ללמוד עוד אודות ספריית GPIOZero הפשוטה הזו, הסתכל גיליון הבוגדים הפנטסטי הזה.

מנגן סאונד

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

sudo apt - לקבל התקנת python-pygame. 

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

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

scp thunder.ogg [email protected]: 

שנה שם של thunder.ogg כנדרש, אך אל תשכח את הגמר הזה : (הפקודה תושלם בלעדיה, אך היא לא תעשה את מה שאנחנו רוצים שהיא תעשה). כברירת מחדל, זה יעביר את הקובץ לספרייה הביתית של המשתמש של Pi.

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

יבוא pygame.mixer. מ- pygame.mixer יבוא סאונד. 

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

pygame.init () pygame.mixer.init () # טען קובץ קול, בספרייה הביתית של משתמש Pi (ללא mp3). רעם = pygame.mixer. סאונד ("/ home / pi / thunder.ogg") ואילו True: thunder.play () שינה (10) thunder.stop ()

שים לב שכשניסיתי את התהליך במקור, הצליל סירב לנגן ופשוט לחץ במקום זאת. גודל הקובץ או קצב הסיביות היה האשם: הוא היה 24 סיביות ומעל 5 מגהבייט לקליפ של 15 שניות. קנה המידה שלה עד 16 סיביות באמצעות הממיר אליו קישרתי למעלה גרם לכל דבר לעבוד יפה, והגודל הצטמצם ל 260KB בלבד!

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

sudo nano /boot/config.txt. 

והוסף שורה זו בסוף:

disable_audio_dither = 1. 

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

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

אמנם נכון: אם pir.motion_detected: הדפיס ("תנועה זוהה!") thunder.play () # להבטיח שההשמעה הושלמה במלואה הושלם לפני חידוש זיהוי התנועה, מונע "ספאם" של שינה קול (15) thunder.stop () אחר: הדפס ("לא תנועה ")

התחל אוטומטית

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

sudo crontab -e. 

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

@reboot python /home/pi/motion.py &

משמעות הדבר היא כי הסקריפט של motion.py יפעל בכל הפעלה, ותעשה זאת בשקט (כך שתתעלם מכל פלט מהתסריט). אתחל מחדש כדי לנסות את זה.

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

הוסף צלילים נוספים

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

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

צלילים = [pygame.mixer. סאונד ("/ home / pi / thunder.ogg"), pygame.mixer. סאונד ("/ home / pi / scary_scream.ogg"), pygame.mixer. סאונד ("/ home / pi / girl_scream.ogg"), pygame.mixer. סאונד ("/ home / pi / psycho_scream.ogg")]

הבא, ייבא את הספרייה האקראית לקובץ שלך, עם:

יבוא אקראי. 

כעת שנה את לולאת חישת התנועה העיקרית באופן הבא:

אמנם נכון: אם pir.motion_detected: הדפס ("תנועה זוהה!") playSound = random.choice (נשמע) playSound.play () # להבטיח שיש להפעלה הושלם במלואו לפני חידוש זיהוי התנועה, מונע "ספאם" של שינה מהקול (15) playSound.stop () אחרת: הדפס ("לא תנועה ")

שימו לב לשינוי הקטין: במקום לשחק במשתנה ה- Sound Single, אנו משתמשים ב- אקראי פונקציה לבחור צליל אקראי ממערך הצלילים שלנו, ואז לנגן את זה.

הנה הקוד המלא במקרה שאתה נתקל בבעיות:

יבוא pygame. מ- pygame.mixer יבוא סאונד. מ- gpiozero יבוא MotionSensor. מזמן יבוא שינה. ייבא pygame.init אקראי () pygame.mixer.init () # טען קובץ קול, אותו ספריה כמו סקריפט (ללא mp3) נשמע = [pygame.mixer. סאונד ("/ home / pi / thunder.ogg"), pygame.mixer. סאונד ("/ home / pi / scary_scream.ogg"), pygame.mixer. סאונד ("/ home / pi / girl_scream.ogg"), pygame.mixer. סאונד ("/ home / pi / psycho_scream.ogg")] pir = MotionSensor (4) אמנם נכון: אם pir.motion_detected: הדפס ("תנועה זוהה!") playSound = random.choice (נשמע) playSound.play () # להבטיח שיש להפעלה הושלם במלואו לפני חידוש זיהוי התנועה, מונע "ספאם" של שינה מהקול (15) playSound.stop () אחרת: הדפס ("לא תנועה ")

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

זהו זה! הסתר אותו בשיחים עם כמה עיני מפלצת LED מפחידות כיצד לגרום לעיניים זוהרות של ליל כל הקדושים מפחידות פחות מ 5 $רוצה לתבל את קישוטי ליל כל הקדושים שלך השנה? למדו כיצד ליצור עיני LED בפחות מ- $ 5 בפרויקט אלקטרוניקה למתחילים זה. קרא עוד , ואתה אמור להיות מסוגל לחסוך לעצמך מעט ממתקים כשכל הילדים בורחים בצרחות לפני שהם אפילו מגיעים לדלת. או לכי להתחבא בארון כי אמא זועמת מחפשת דם אחרי שגרמת לג'וני הקטן לבכות.

הצהרת אחריות: MakeUseOf אינה אחראית לכל פגיעה אישית שעלולה לנבוע מהשימוש שלך בפרויקט זה!

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

ג'יימס הוא בעל תואר ראשון בבינה מלאכותית, והוא מוסמך CompTIA A + ו- Network +. הוא המפתח הראשי של MakeUseOf, ומבלה את זמנו הפנוי במשחקי פיינטבול VR ומשחקי לוח. הוא בנה מחשבים אישיים מאז שהיה ילד.