Scare Trick-or-Treaters με ένα DIY Motion-Ενεργοποιημένο Soundbox

Είναι και πάλι η εποχή του χρόνου, όταν θεωρείται κοινωνικά αποδεκτό να τρομάζουν μικρά παιδιά και να τους δίνουν καραμέλες. Ω χαρά.

Είναι και πάλι η εποχή του χρόνου, όταν θεωρείται κοινωνικά αποδεκτό να τρομάζουν μικρά παιδιά και να τους δίνουν καραμέλες.  Ω χαρά.
Διαφήμιση

Είναι και πάλι η εποχή του χρόνου, όταν θεωρείται κοινωνικά αποδεκτό να τρομάζουν μικρά παιδιά και να τους δίνουν καραμέλες. Ω χαρά. Είμαι εδώ για να διευκολύνω τη δουλειά σας, δείχνοντάς σας πώς να φτιάξετε ένα απλό ηχητικό κιβώτιο Raspberry Pi Halloween. Ακολουθεί ένα demo:

Εδώ είναι τι χρειάζεστε

Ίσως το μόνο μέρος που δεν έχετε ήδη είναι ο αισθητήρας κίνησης, ένα μικρό και φθηνό μέρος που θα πρέπει να μπορείτε να βρείτε στο τοπικό Microcenter ή στο Maplin.

  • Raspberry Pi (οποιοδήποτε μοντέλο θα κάνει).
  • Αισθητήρας κίνησης (~ $ 3).
  • Συνδέστε καλώδια.
  • Ενσύρματο ηχείο (τα περισσότερα ηχεία Bluetooth θα έχουν τη δυνατότητα χρήσης γραμμής εισόδου).
  • Στερεοφωνικό καλώδιο 3, 5 mm, αρσενικό σε αρσενικό.

Μόλις τελειώσετε, ίσως να θέλετε να προσθέσετε μερικά συγχρονισμένα εφέ φωτισμού Πώς να συγχρονίσετε τα φώτα του σπιτιού και τη μουσική για την Απόκριες Πώς να συγχρονίσετε τα φώτα του σπιτιού και τη μουσική για την Απόκριση Είτε φιλοξενείτε ένα πάρτι house Halloween είτε θέλετε το πιο cool στοιχειωμένο σπίτι στο γειτονιά, κάνοντας τα φώτα σας να αναβοσβήνουν εγκαίρως για τη μουσική και τα ηχητικά εφέ είναι απαραίτητη Διαβάστε περισσότερα, αλλά σε αυτό το σεμινάριο θα καλύψουμε μόνο τους τρομακτικούς ήχους!

Εγκαθιστώ

Χρησιμοποιούμε Raspbian Jessie Lite και Python 2.7, αλλά οποιαδήποτε διανομή Linux που τρέχει στο Pi σας θα πρέπει να είναι μια χαρά. Έχω την αφήσει στο standard hostname "raspberrypi.local", οπότε ξεκινήστε από την απομακρυσμένη σύνδεση με SSH (ανοίξτε ένα παράθυρο τερματικού εάν βρίσκεστε στο Mac.) Εδώ είναι πώς να κάνετε το ίδιο και στα Windows 4 Εύκολοι τρόποι χρήσης του SSH In Windows 4 Εύκολοι τρόποι χρήσης SSH Στα Windows SSH είναι η de facto λύση για την ασφαλή πρόσβαση σε απομακρυσμένα τερματικά σε Linux και άλλα συστήματα που μοιάζουν με UNIX.Αν έχετε απομακρυσμένο SSH server που θέλετε να έχετε πρόσβαση, θα πρέπει να κάνετε λήψη ενός SSH client .... Διαβάστε περισσότερα) - ή εάν έχετε επιλέξει να χρησιμοποιήσετε ένα πλήρες Raspbian με γραφικό περιβάλλον εργασίας γραφείου, μη διστάσετε να μεταβείτε στην ενημέρωση.

ssh [email protected] (enter raspberry as the password) sudo apt-get update sudo apt-get install python-pip sudo pip install gpiozero 

Αυτό εγκαθιστά μια απλή βιβλιοθήκη για εργασία με τους ακροδέκτες GPIO της Python με πολλούς τύπους ενσωματωμένων αισθητήρων και κουμπιών. Συνδέστε το αισθητήριό σας με τον ακροδέκτη σήματος στο GPIO4, τον VCC συνδεδεμένο σε 5V και το GND συνδεδεμένο στο GND. Αυτό μπορεί να διαφέρει ανάλογα με το ακριβές σας μοντέλο, επομένως επιβεβαιώστε με ένα διάγραμμα pinout.

Διάγραμμα Raspberry Pi GPIO
Image Credit: raspberrypi.org

Με βοηθητικό τρόπο, η θήκη μου Pi 2 από το Πιμορόνι έχει ένα διάγραμμα πινακίδας χαραγμένο με λέιζερ απευθείας επάνω σε αυτό.

Ετικέτα υπόθεση Raspberry Pi

Τώρα ας κάνουμε το σενάριο ανίχνευσης κίνησης.

 nano motion.py 

Επικόλληση σε:

 from gpiozero import MotionSensor pir = MotionSensor(4) while True: if pir.motion_detected: print("Motion detected!") else: print ("No motion") 

Χτυπήστε CTRL-X, στη συνέχεια Y για αποθήκευση και έξοδο, στη συνέχεια εκτελέστε με:

 python motion.py 

Θα πρέπει να δείτε το μήνυμα "καμία κίνηση" να επαναλαμβάνεται στην οθόνη μέχρι να κυλάτε το χέρι σας μπροστά από τον αισθητήρα, όταν θα παραμείνει στο "Motion Detected!"

Η κίνηση εντοπίστηκε στο τερματικό

Αν το μήνυμα δεν αλλάξει καθόλου, το έχετε συνδέσει λάθος.

Εάν ενδιαφέρεστε να μάθετε περισσότερα σχετικά με αυτή την απλή βιβλιοθήκη GPIOZero, ρίξτε μια ματιά σε αυτό το φανταστικό cheatsheet.

Αναπαραγωγή ήχου

Συνδέστε το φορητό ηχείο και βεβαιωθείτε ότι είναι τροφοδοτημένο εάν χρειάζεται. Θα χρησιμοποιήσουμε τη βιβλιοθήκη πυγμών για να παίξουμε ήχους, επομένως προχωρήστε και εγκαταστήστε την:

 sudo apt-get install python-pygame 

Πρώτον, χρειαζόμαστε ένα αρχείο ήχου για να παίξουμε. Εάν το κάνετε αυτό μέσα από το περιβάλλον γραφείου, τότε προχωρήστε και κατεβάστε ένα αρχείο WAV ή OGG από κάπου (βρήκα μια καλή επιλογή δωρεάν ήχων Απόκριες εδώ) και το βάζετε στον οικείο κατάλογό σας. Θα πρότεινα πρώτα να υποδειγματοληψία και να μετατρέψω σε μια μικρή μορφή OGG ούτως ή άλλως.

Εάν συνδέεστε από απόσταση και χρησιμοποιείτε μόνο τη γραμμή εντολών, έχουμε κάποιες δυσκολίες με κάποιες τοποθεσίες, καθώς η εντολή wget μπορεί να μην τραβήξει το πραγματικό αρχείο. Αντ 'αυτού, μπορούμε να το κατεβάσουμε τοπικά στην επιφάνεια εργασίας μας και να χρησιμοποιήσουμε την εντολή scp (secure copy) για να αντιγράψετε τη γραμμή εντολών. Μπορείτε να μάθετε περισσότερα για το scp εδώ, αλλά για τώρα ανοίξτε μια νέα καρτέλα Terminal και πληκτρολογήστε:

 scp thunder.ogg [email protected]: 

Μετονομάστε το thunder.ogg όπως αρμόζει, αλλά μην ξεχνάτε τον τελικό : (η εντολή θα ολοκληρωθεί χωρίς αυτό, αλλά δεν θα κάνει αυτό που θέλουμε να κάνει). Από προεπιλογή, αυτό θα μεταφέρει το αρχείο στον αρχικό κατάλογο του χρήστη Pi.

Τώρα ας τροποποιήσουμε το σενάριο για να παίξουμε έναν ήχο. Αρχίστε με την εισαγωγή ορισμένων νέων ενοτήτων:

 import pygame.mixer from pygame.mixer import Sound 

Στη συνέχεια, αμέσως μετά τις υπάρχουσες δηλώσεις εισαγωγής, θα επαναλάβουμε τον ίδιο ήχο για ελέγχους. Αφήστε τον υπόλοιπο κωδικό ανίχνευσης κίνησης όπως είναι για τώρα - απλά δεν θα τρέξει, αφού θα κολλήσει για πάντα σε αυτόν τον ακουστικό.

 pygame.init() pygame.mixer.init() #load a sound file, in the home directory of Pi user (no mp3s) thunder = pygame.mixer.Sound("/home/pi/thunder.ogg") while True: thunder.play() sleep(10) thunder.stop() 

Λάβετε υπόψη ότι όταν προσπάθησα αρχικά αυτή η διαδικασία, ο ήχος αρνήθηκε να παίξει και απλώς έκανε κλικ. Το μέγεθος του αρχείου ή bit-rate ήταν ο ένοχος: ήταν 24-bit και πάνω από 5 MB για κλιπ 15 δευτερολέπτων. Η κλιμάκωση αυτού του ποσοστού σε 16-bit χρησιμοποιώντας τον μετατροπέα που συνδέσαμε παραπάνω δημιούργησε τα πάντα ωραία και το μέγεθος μειώθηκε σε μόλις 260KB!

Εάν παρατηρήσετε ένα άσχημο κούνημα από τα ηχεία σας όταν εκτελείται η εφαρμογή Python, αλλά διαφορετικά, πληκτρολογήστε:

 sudo nano /boot/config.txt 

Και προσθέστε αυτή τη γραμμή στο τέλος:

 disable_audio_dither=1 

Κάντε επανεκκίνηση για να εφαρμοστούν οι αλλαγές. Ή δεν ενοχλείτε, γιατί ούτως ή άλλως μου έμοιαζε σαν βροχή.

Τέλος, ας τροποποιήσουμε τον κύριο βρόχο ελέγχου κίνησης για να παίξουμε τον ήχο όταν ανιχνεύσουμε κίνηση. Θα χρησιμοποιήσουμε καθυστέρηση 15 δευτερολέπτων για να μπορέσουμε να παίξουμε ολόκληρο το βρόχο και να λειτουργήσουμε ως buffer spam, όταν υπάρχει πολλή κίνηση χωρίς διακοπή.

 while True: if pir.motion_detected: print("Motion detected!") thunder.play() # ensure playback has been fully completed before resuming motion detection, prevents "spamming" of sound sleep(15) thunder.stop() else: print ("No motion") 

Ξεκινήστε αυτόματα

Ίσως θέλουμε να το θέσουμε κάπου με μπαταρία και χωρίς σύνδεση στο διαδίκτυο, οπότε το σενάριο πρέπει να τρέξει με επανεκκίνηση χωρίς να χρειαστεί να ανοίξει μια γραμμή εντολών. Για να το κάνετε αυτό, θα χρησιμοποιήσουμε την πιο απλή μέθοδο: crontab Πώς να προγραμματίσετε εργασίες στο Linux με Cron και Crontab Πώς να προγραμματίσετε εργασίες στο Linux με Cron και Crontab Η δυνατότητα αυτοματοποίησης εργασιών είναι μία από τις φουτουριστικές τεχνολογίες που είναι ήδη εδώ . Κάθε χρήστης του Linux μπορεί να επωφεληθεί από το χρονοδιάγραμμα των εργασιών του συστήματος και των χρηστών, χάρη στην cron, μια εύχρηστη υπηρεσία φόντου. Διαβάστε περισσότερα . Τύπος:

 sudo crontab -e 

Αν αυτή είναι η πρώτη φορά που εκτελείται αυτή η εντολή, θα αρχίσει να σας ρωτάει ποιος επεξεργαστής θα χρησιμοποιήσει. Επιλέξαμε την επιλογή 2, για νανο. Θα εκκινήσει στον επεξεργαστή που επιλέξατε, οπότε προσθέστε την ακόλουθη γραμμή:

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

Αυτό σημαίνει ότι το script σας motion.py θα τρέξει σε κάθε εκκίνηση, και θα το κάνει σιωπηλά (έτσι οποιαδήποτε έξοδος από το σενάριο θα αγνοηθεί). Κάντε επανεκκίνηση για να το δοκιμάσετε.

Εάν δεν παίζετε τίποτα παρά να υπάρχει κίνηση ή ακούτε λίγο κλικ, ίσως να μην έχετε χρησιμοποιήσει την πλήρη διαδρομή του αρχείου ή το αρχείο σας ίσως χρειαστεί να μετατρέψετε σε χαμηλότερο bitrate και μικρότερο μέγεθος αρχείου.

Προσθήκη περισσότερων ήχων

Παίζοντας το ίδιο αποτέλεσμα ξανά και ξανά είναι λίγο βαρετό, οπότε ας προσθέσουμε κάποια τυχαιότητα σε αυτό. Κατεβάστε μερικούς περισσότερους ήχους αποκριών, θυμηθείτε να τα κατατάξετε σε ένα λογικό μέγεθος και bitrate, και στη συνέχεια να τα στείλετε στο Pi χρησιμοποιώντας scp όπως και πριν. Πρόσθεσα τρεις διαφορετικούς τύπους κραυγής.

Τροποποιήστε τον κώδικα έτσι ώστε αντί να ορίσετε μια μοναδική μεταβλητή pygame.mixer.Sound, δημιουργούμε πραγματικά μια σειρά από ήχους. Αυτό είναι απλό με την Python, απλά περιβάλλει μια λίστα χωρισμένη με κόμμα τους με αγκύλες, όπως έτσι:

 sounds = [ pygame.mixer.Sound("/home/pi/thunder.ogg"), pygame.mixer.Sound("/home/pi/scary_scream.ogg"), pygame.mixer.Sound("/home/pi/girl_scream.ogg"), pygame.mixer.Sound("/home/pi/psycho_scream.ogg") ] 

Στη συνέχεια, εισαγάγετε την τυχαία βιβλιοθήκη στο αρχείο σας, με:

 import random 

Τώρα τροποποιήστε τον κύριο βρόγχο ανίχνευσης κίνησης ως εξής:

 while True: if pir.motion_detected: print("Motion detected!") playSound = random.choice(sounds) playSound.play() # ensure playback has been fully completed before resuming motion detection, prevents "spamming" of sound sleep(15) playSound.stop() else: print ("No motion") 

Σημειώστε τη μικρή αλλαγή: αντί να παίζουμε τη μοναδική μεταβλητή ήχου, χρησιμοποιούμε τη λειτουργία random.choice για να διαλέξουμε έναν τυχαίο ήχο από τη συστοιχία ήχων μας και στη συνέχεια να την παίξουμε.

Εδώ είναι ο πλήρης κώδικας σε περίπτωση που αντιμετωπίζετε προβλήματα:

 import pygame from pygame.mixer import Sound from gpiozero import MotionSensor from time import sleep import random pygame.init() pygame.mixer.init() #load a sound file, same directory as script (no mp3s) sounds = [ pygame.mixer.Sound("/home/pi/thunder.ogg"), pygame.mixer.Sound("/home/pi/scary_scream.ogg"), pygame.mixer.Sound("/home/pi/girl_scream.ogg"), pygame.mixer.Sound("/home/pi/psycho_scream.ogg") ] pir = MotionSensor(4) while True: if pir.motion_detected: print("Motion detected!") playSound = random.choice(sounds) playSound.play() # ensure playback has been fully completed before resuming motion detection, prevents "spamming" of sound sleep(15) playSound.stop() else: print ("No motion") 

Με μόνο τέσσερα δείγματα, υπάρχει μεγάλη πιθανότητα επανάληψης κάθε φορά, αλλά μπορείτε να προσθέσετε περισσότερα δείγματα εάν αυτό είναι ενοχλητικό.

Αυτό είναι! Απόκρυψη στους θάμνους με μερικά τρομακτικά μάτια τέρας LED Πώς να φτιάξετε Spooky Απόκριες Λαμπερά μάτια για λιγότερο από $ 5 Πώς να κάνει Spooky Απόκριες Λαμπερά μάτια για λιγότερο από $ 5 Θέλετε να μπαχαρικό αποκριών σας Halloween φέτος; Μάθετε πώς να κάνετε τα μάτια των LED για λιγότερο από $ 5 σε αυτό το πρόγραμμα αρχαρίων ηλεκτρονικών. Διαβάστε περισσότερα και θα πρέπει να είστε σε θέση να εξοικονομήσετε κάποια καραμέλα, καθώς όλα τα παιδιά τρέχουν μακριά φωνάζοντας πριν φτάσουν ακόμα και στην πόρτα. Ή πηγαίνετε να κρύβετε στο ντουλάπι επειδή μια θυμωμένη μαμά είναι έξω για το αίμα αφού κάνατε μικρή κραυγή Johnny.

Αποποίηση ευθύνης: Η MakeUseOf δεν φέρει καμία ευθύνη για τυχόν προσωπικούς τραυματισμούς που μπορεί να προκύψουν από τη χρήση αυτού του έργου!

Θα κάνετε αυτό το κιβώτιο ήχου ενεργοποιημένο με κίνηση, για να τρομάξετε τους τοπικούς τεχνίτες; Έχετε δημιουργήσει οποιεσδήποτε τρομακτικές επιπτώσεις με ένα Raspberry Pi αυτό το Halloween; Ενημερώστε μας σχετικά με τα παρακάτω σχόλια!

In this article