Διαφήμιση
Είναι και πάλι η εποχή του χρόνου, όταν θεωρείται κοινωνικά αποδεκτό να τρομοκρατούν μικρά παιδιά και να τους δίνουν καραμέλα. Ω χαρά. Είμαι εδώ για να διευκολύνω τη δουλειά σας, δείχνοντάς σας πώς να φτιάξετε ένα απλό ηχητικό κιβώτιο Raspberry Pi Halloween. Ακολουθεί ένα demo:
Εδώ είναι τι χρειάζεστε
Πιθανώς το μόνο μέρος που δεν έχετε ήδη είναι ο αισθητήρας κίνησης, ένα μικρό και φθηνό μέρος που θα πρέπει να μπορείτε να βρείτε στο τοπικό Microcenter ή στο Maplin.
- Raspberry Pi (οποιοδήποτε μοντέλο θα κάνει).
- Αισθητήρας κίνησης (~ $ 3).
- Συνδέστε καλώδια.
- Ενσύρματο ηχείο (τα περισσότερα ηχεία Bluetooth θα έχουν τη δυνατότητα χρήσης γραμμής εισόδου).
- Στερεοφωνικό καλώδιο 3,5 mm, αρσενικό σε αρσενικό.
Αφού τελειώσετε, ίσως θελήσετε να προσθέσετε μερικά συγχρονισμένα εφέ φωτισμού Πώς να συγχρονίσετε τα φώτα στο σπίτι και τη μουσική για αποκριέςΕίτε είστε φιλοξενούμενος ένα πάρτι σπίτι Απόκριες ή θέλετε το πιο cool στοιχειωμένο σπίτι στη γειτονιά, κάνοντας τα φώτα σας φλας στο χρόνο για τη μουσική και τα ηχητικά εφέ είναι απαραίτητη. Διαβάστε περισσότερα
επίσης, αλλά σε αυτό το σεμινάριο θα καλύψουμε μόνο τους τρομακτικούς ήχους λίγο!Εγκαθιστώ
Χρησιμοποιούμε Raspbian Jessie Lite και Python 2.7, αλλά οποιαδήποτε διανομή Linux που τρέχει σε Pi σας θα πρέπει να είναι μια χαρά. Έχω την αφήσει στο πρότυπο hostname "raspberrypi.local", οπότε ξεκινήστε από την απομακρυσμένη σύνδεση χρησιμοποιώντας το SSH (ανοίξτε ένα παράθυρο τερματικού εάν βρίσκεστε στο Mac. Εδώ πώς να το κάνετε τα ίδια στα Windows 4 Εύκολοι τρόποι χρήσης του SSH στα WindowsΤο SSH είναι η de facto λύση για την ασφαλή πρόσβαση σε απομακρυσμένα τερματικά στο Linux και σε άλλα συστήματα που μοιάζουν με UNIX. Αν έχετε απομακρυσμένο διακομιστή SSH που θέλετε να έχετε πρόσβαση, θα πρέπει να κάνετε λήψη ενός προγράμματος-πελάτη SSH ... Διαβάστε περισσότερα ) - ή αν έχετε επιλέξει να χρησιμοποιήσετε ένα πλήρες Raspbian με γραφικό περιβάλλον εργασίας γραφείου, μη διστάσετε να μεταβείτε στην ενημέρωση.
ssh [email protected]. (πληκτρολογήστε βατόμουρο ως κωδικό πρόσβασης) sudo apt-get ενημέρωση. sudo apt-get εγκαταστήστε το python-pip. sudo pip εγκαταστήστε το gpiozero.
Αυτό εγκαθιστά μια απλή βιβλιοθήκη για εργασία με τους ακροδέκτες GPIO της Python με πολλούς τύπους ενσωματωμένων αισθητήρων και κουμπιών. Συνδέστε τον αισθητήρα σας με τον ακροδέκτη σήματος στο GPIO4, τον VCC που είναι συνδεδεμένος σε 5V και το GND συνδεδεμένο στο GND. Αυτό μπορεί να διαφέρει ανάλογα με το ακριβές σας μοντέλο, επομένως επιβεβαιώστε με ένα διάγραμμα pinout.
Με ευκολία, η θήκη μου Pi 2 από το Πιμορόνι έχει ένα διάγραμμα πινακίδας χαραγμένο με λέιζερ απευθείας επάνω σε αυτό.
Τώρα ας κάνουμε το σενάριο ανίχνευσης κίνησης.
nano motion.py.
Επικόλληση σε:
από την εισαγωγή gpiozero MotionSensor pir = MotionSensor (4) ενώ True: εάν pir.motion_detected: print ("Motion detected!") else: print ("No motion")
Χτυπήστε CTRL-X, στη συνέχεια Y για αποθήκευση και έξοδο, στη συνέχεια εκτελέστε με:
python motion.py.
Θα πρέπει να δείτε το μήνυμα "καμία κίνηση" να επαναλαμβάνεται στην οθόνη μέχρι να κυλάτε το χέρι σας μπροστά από τον αισθητήρα, όταν θα παραμείνει στο "Motion Detected!"
Αν το μήνυμα δεν αλλάξει καθόλου, το έχετε συνδέσει λάθος.
Εάν ενδιαφέρεστε να μάθετε περισσότερα σχετικά με αυτήν την απλή βιβλιοθήκη GPIOZero, ρίξτε μια ματιά αυτό το φανταστικό cheatsheet.
Αναπαραγωγή ήχου
Συνδέστε το φορητό ηχείο και βεβαιωθείτε ότι είναι τροφοδοτημένο εάν χρειάζεται. Θα χρησιμοποιήσουμε το πυγμή βιβλιοθήκη για να παίξετε ήχους, προχωρήστε και εγκαταστήστε την:
sudo apt-get να εγκαταστήσετε python-pygame.
Πρώτον, χρειαζόμαστε ένα αρχείο ήχου για να παίξουμε. Εάν το κάνετε αυτό μέσα από το περιβάλλον επιφάνειας εργασίας, τότε προχωρήστε και κάντε λήψη ενός WAV ή OGG αρχείο από κάπου (βρήκα μια καλή επιλογή από free Halloween ακούγεται εδώ) και τοποθετήστε το στον κατάλογό σας στο σπίτι. Θα πρότεινα την υποδειγματοληψία πρώτα και μετατρέποντας σε μια μικρή μορφή OGG ΤΕΛΟΣ παντων.
Εάν συνδέεστε από απόσταση και χρησιμοποιείτε μόνο τη γραμμή εντολών, έχουμε κάποιες περισσότερες δυσκολίες με κάποιες τοποθεσίες, δεδομένου ότι το wget η εντολή δεν μπορεί να αρπάξει το πραγματικό αρχείο. Αντ 'αυτού, μπορούμε να το κατεβάσετε τοπικά στην επιφάνεια εργασίας μας και να χρησιμοποιήσετε το scp (ασφαλής αντιγραφή) για να αντιγράψετε τη γραμμή εντολών. Μπορείτε να μάθετε περισσότερα για το scp εδώ, αλλά για τώρα, ανοίξτε μια νέα καρτέλα Terminal και πληκτρολογήστε:
scp thunder.ogg [email protected]:
Μετονομάστε το thunder.ogg όπως αρμόζει, αλλά μην ξεχνάτε αυτόν τον τελικό : (η εντολή θα ολοκληρωθεί χωρίς αυτό, αλλά δεν θα κάνει αυτό που θέλουμε να κάνει). Από προεπιλογή, αυτό θα μεταφέρει το αρχείο στον αρχικό κατάλογο του χρήστη Pi.
Τώρα ας τροποποιήσουμε το σενάριο για να παίξουμε έναν ήχο. Αρχίστε με την εισαγωγή ορισμένων νέων ενοτήτων:
εισαγωγή pygame.mixer. από το αρχείο εισαγωγής pygame.mixer Sound.
Στη συνέχεια, αμέσως μετά τις υπάρχουσες δηλώσεις εισαγωγής, θα επαναλάβουμε τον ίδιο ήχο για έλεγχο. Αφήστε τον υπόλοιπο κώδικα ανίχνευσης κίνησης όπως είναι για τώρα - απλά δεν θα τρέξει, αφού θα κολλήσει για πάντα σε αυτόν τον ακουστικό.
pygame.init () pygame.mixer.init () #load ένα αρχείο ήχου, στον αρχικό κατάλογο του χρήστη Pi (χωρίς mp3) thunder = pygame.mixer. Ήχος ("/ home / pi / thunder.ogg") ενώ True: thunder.play () ύπνος (10) thunder.stop ()
Σημειώστε ότι όταν αρχικά δοκίμασα αυτή τη διαδικασία, ο ήχος αρνήθηκε να παίξει και απλώς έκανε κλικ. Το μέγεθος του αρχείου ή bit-rate ήταν ο ένοχος: ήταν 24-bit και πάνω από 5 MB για κλιπ 15 δευτερολέπτων. Η κλιμάκωση σε 16-bit χρησιμοποιώντας τον μετατροπέα που συνδέσαμε παραπάνω δημιούργησε τα πάντα ωραία και το μέγεθος μειώθηκε σε μόλις 260KB!
Εάν παρατηρήσετε ένα άσχημο κούνημα από τα ηχεία σας όταν εκτελείται η εφαρμογή Python, αλλά διαφορετικά, πληκτρολογήστε:
sudo nano /boot/config.txt.
Και προσθέστε αυτή τη γραμμή στο τέλος:
disable_audio_dither = 1.
Κάντε επανεκκίνηση για να εφαρμοστούν οι αλλαγές. Ή δεν ενοχλείτε, γιατί ούτως ή άλλως μου έμοιαζε σαν βροχή.
Τέλος, ας τροποποιήσουμε τον κύριο βρόχο ελέγχου κίνησης για να παίξουμε τον ήχο όταν ανιχνεύσουμε κίνηση. Θα χρησιμοποιήσουμε καθυστέρηση 15 δευτερολέπτων για να μπορέσουμε να παίξουμε ολόκληρο το βρόχο και να λειτουργήσουμε ως spam buffer για όταν υπάρχει πολλή κίνηση χωρίς διακοπή.
ενώ True: εάν pir.motion_detected: print ("Motion detected!") thunder.play () # εξασφαλίζει την αναπαραγωγή έχει πλήρως (15) thunder.stop () else: εκτύπωση ("Όχι") κίνηση")
Ξεκινήστε αυτόματα
Ίσως θέλουμε να το θέσουμε κάπου με μπαταρία και χωρίς σύνδεση στο διαδίκτυο, οπότε το σενάριο πρέπει να τρέξει με επανεκκίνηση χωρίς να χρειάζεται να ανοίξει μια γραμμή εντολών. Για να γίνει αυτό, θα χρησιμοποιήσουμε την πιο απλή μέθοδο: το crontab Πώς να Schedule Tasks στο Linux με Cron και CrontabΗ δυνατότητα αυτοματοποίησης των εργασιών είναι μία από τις φουτουριστικές τεχνολογίες που είναι ήδη εδώ. Κάθε χρήστης του Linux μπορεί να επωφεληθεί από τον προγραμματισμό των εργασιών του συστήματος και των χρηστών, χάρη στην cron, μια εύχρηστη υπηρεσία φόντου. Διαβάστε περισσότερα . Τύπος:
sudo crontab -e.
Αν αυτή είναι η πρώτη φορά που εκτελείται αυτή η εντολή, θα αρχίσει να σας ρωτάει ποιος επεξεργαστής θα χρησιμοποιήσει. Επιλέξαμε την επιλογή 2, για νανο. Θα εκκινήσει στον επεξεργαστή που επιλέξατε, οπότε προσθέστε την ακόλουθη γραμμή:
@reboot python /home/pi/motion.py &
Αυτό σημαίνει ότι το script σας motion.py θα τρέξει σε κάθε εκκίνηση και θα το κάνει σιωπηλά (έτσι ώστε οποιαδήποτε έξοδος από το σενάριο θα αγνοηθεί). Κάντε επανεκκίνηση για να το δοκιμάσετε.
Εάν δεν παίζετε τίποτα παρά να υπάρχει κίνηση ή ακούτε λίγο κλικ, ίσως να μην έχετε χρησιμοποιήσει τη διαδρομή του πλήρους αρχείου ή το αρχείο σας μπορεί να χρειαστεί να μετατρέψετε σε χαμηλότερο bitrate και μικρότερο μέγεθος αρχείου.
Προσθήκη περισσότερων ήχων
Παίζοντας το ίδιο αποτέλεσμα ξανά και ξανά είναι λίγο βαρετό, οπότε ας προσθέσουμε κάποια τυχαιότητα σε αυτό. Κατεβάστε μερικούς περισσότερους ήχους Απόκρισης, θυμηθείτε να τα μετατρέψετε σε ένα λογικό μέγεθος και bitrate, και στη συνέχεια να τα στείλετε στο Pi χρησιμοποιώντας scp όπως και πριν. Πρόσθεσα τρεις διαφορετικούς τύπους κραυγής.
Τροποποιήστε τον κώδικα έτσι ώστε αντί να ορίσετε ένα ενιαίο pygame.mixer. Ήχος μεταβλητή, δημιουργούμε πραγματικά ένα πίνακας ήχων. Αυτό είναι απλό με την Python, απλά περιβάλλει μια λίστα χωρισμένη με κόμμα τους με αγκύλες, όπως:
ήχοι = [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")]
Στη συνέχεια, εισαγάγετε την τυχαία βιβλιοθήκη στο αρχείο σας, με:
τυχαία εισαγωγή.
Τώρα τροποποιήστε τον κύριο βρόγχο ανίχνευσης κίνησης ως εξής:
ενώ True: εάν pir.motion_detected: print ("Ανίχνευση κίνησης!") playSound = random.choice (ήχοι) playSound.play () # (15) playSound.stop () else: εκτύπωση ("Όχι") κίνηση")
Σημειώστε τη μικρή αλλαγή: αντί να παίζετε τη μεταβλητή Sound, χρησιμοποιούμε το random.choice λειτουργία για να πάρει έναν τυχαίο ήχο από τη σειρά ήχων μας, και στη συνέχεια να παίξει αυτό.
Εδώ είναι ο πλήρης κώδικας σε περίπτωση που αντιμετωπίζετε προβλήματα:
εισαγωγή πυγμαίου. από το αρχείο εισαγωγής pygame.mixer Sound. από την εισαγωγή του gpiozero MotionSensor. από την ώρα εισαγωγής ύπνου. εισαγωγή τυχαίου pygame.init () pygame.mixer.init () #load ένα αρχείο ήχου, τον ίδιο κατάλογο με το script (no mp3s) sounds = [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) ενώ True: εάν pir.motion_detected: print ("Ανίχνευση κίνησης!") playSound = random.choice (ήχοι) playSound.play () # (15) playSound.stop () else: εκτύπωση ("Όχι") κίνηση")
Με μόνο τέσσερα δείγματα, υπάρχει μεγάλη πιθανότητα επανάληψης κάθε φορά, αλλά μπορείτε να προσθέσετε περισσότερα δείγματα εάν αυτό είναι ενοχλητικό.
Αυτό είναι! Κρύψτε το στο θάμνους με μερικούς scary LED μάτια τέρας Πώς να κάνω Spooky Απόκριες λαμπερά μάτια για λιγότερο από $ 5Θέλετε να γευτείτε τα διακοσμητικά σας Halloween φέτος; Μάθετε πώς να κάνετε τα μάτια LED για λιγότερο από $ 5 σε αυτό το πρόγραμμα αρχαρίων ηλεκτρονικών. Διαβάστε περισσότερα , και θα πρέπει να είστε σε θέση να σώσετε τον εαυτό σας κάποια καραμέλα, όπως όλα τα παιδιά τρέχουν μακριά φωνάζοντας πριν φτάσουν ακόμη και στην πόρτα. Ή πηγαίνετε να κρύβετε στο ντουλάπι επειδή μια θυμωμένη μαμά είναι έξω για το αίμα, αφού κάνατε μικρή κραυγή Johnny.
Αποποίηση ευθύνης: Η MakeUseOf δεν φέρει καμία ευθύνη για τυχόν τραυματισμό που μπορεί να προκύψει από τη χρήση αυτού του έργου!
Θα κάνετε αυτό το κιβώτιο ήχου ενεργοποιημένο με κίνηση, για να τρομάξετε τους τοπικούς κόλπους; Έχετε δημιουργήσει οποιεσδήποτε τρομακτικές επιπτώσεις με ένα Raspberry Pi αυτό το Halloween; Ενημερώστε μας για τα σχόλια παρακάτω!
Ο James έχει πτυχίο στην Τεχνητή Νοημοσύνη και είναι πιστοποιημένος με CompTIA A + και Network +. Είναι ο κύριος προγραμματιστής της MakeUseOf, και ξοδεύει τον ελεύθερο χρόνο του παίζοντας VR paintball και boardgames. Κατασκευάζει υπολογιστές από τότε που ήταν παιδί.