Werbung
Es ist wieder diese Jahreszeit, in der es als gesellschaftlich akzeptabel angesehen wird, kleine Kinder zu erschrecken und ihnen Süßigkeiten zu geben. Oh Freude. Ich bin hier, um Ihnen die Arbeit zu erleichtern, indem ich Ihnen zeige, wie Sie eine einfache bewegungsempfindliche Raspberry Pi Halloween-Soundbox erstellen. Hier ist eine Demo:
Folgendes benötigen Sie:
Wahrscheinlich ist der einzige Teil, den Sie noch nicht haben, der Bewegungssensor, ein kleines und kostengünstiges Teil, das Sie in Ihrem örtlichen Microcenter oder Maplin finden sollten.
- Raspberry Pi (jedes Modell reicht aus).
- Bewegungssensor (~ $ 3).
- Anschlussdrähte.
- Kabelgebundener Lautsprecher (die meisten Bluetooth-Lautsprecher können Line-In verwenden).
- 3,5-mm-Stereokabel von Stecker zu Stecker.
Wenn Sie fertig sind, möchten Sie möglicherweise einige hinzufügen synchronisierte Lichteffekte So synchronisieren Sie Home Lights und Musik für HalloweenEgal, ob Sie eine Halloween-Hausparty veranstalten oder das coolste Spukhaus in der Nachbarschaft suchen, es ist wichtig, dass Ihre Lichter rechtzeitig zu Musik und Soundeffekten blinken. Weiterlesen auch, aber in diesem Tutorial werden wir nur die gruseligen Klänge behandeln!
Einrichten
Wir verwenden Raspbian Jessie Lite und Python 2.7, aber jede Linux-Distribution, die auf Ihrem Pi ausgeführt wird, sollte in Ordnung sein. Ich habe es auf dem Standard-Hostnamen "raspberrypi.local" belassen. Melden Sie sich zunächst remote mit SSH an (öffnen Sie ein Terminalfenster, wenn Sie einen Mac verwenden. Hier ist wie man das gleiche in Windows macht 4 einfache Möglichkeiten zur Verwendung von SSH unter WindowsSSH ist die De-facto-Lösung für den sicheren Zugriff auf Remote-Terminals unter Linux und anderen UNIX-ähnlichen Systemen. Wenn Sie einen Remote-SSH-Server haben, auf den Sie zugreifen möchten, müssen Sie einen SSH-Client herunterladen ... Weiterlesen ) - oder wenn Sie sich für die Verwendung eines vollständigen Raspbian mit Desktop-GUI entschieden haben, können Sie mit der Aktualisierung fortfahren.
ssh [email protected]. (Geben Sie Himbeere als Passwort ein) sudo apt-get update. sudo apt-get installiere python-pip. sudo pip installiere gpiozero.
Dadurch wird eine einfache Bibliothek für die Arbeit mit den GPIO-Pins in Python mit vielen Arten von integrierten Sensoren und Schaltflächen installiert. Verdrahten Sie Ihren Sensor mit dem Signalstift am GPIO4, dem an 5 V angeschlossenen VCC und dem an GND angeschlossenen GND. Dies kann je nach Modell variieren. Bestätigen Sie dies mit einem Pinbelegungsdiagramm.
Hilfreich ist, dass auf meinem Pi 2-Gehäuse von Pimoroni ein Pinbelegungsdiagramm direkt darauf lasergeätzt ist.
Lassen Sie uns nun unser Bewegungserkennungsskript erstellen.
nano motion.py.
Einfügen in:
aus gpiozero importieren MotionSensor pir = MotionSensor (4) while True: wenn pir.motion_detected: print ("Bewegung erkannt!") else: print ("Keine Bewegung")
Drücken Sie STRG-X und dann Y, um zu speichern und zu beenden, und führen Sie dann Folgendes aus:
python motion.py.
Die Meldung "Keine Bewegung" sollte auf dem Bildschirm wiederholt werden, bis Sie mit der Hand vor dem Sensor winken, bis die Meldung "Bewegung erkannt!"
Wenn sich die Nachricht überhaupt nicht ändert, haben Sie sie falsch verkabelt.
Wenn Sie mehr über diese einfache GPIOZero-Bibliothek erfahren möchten, schauen Sie sich diese an dieses fantastische Cheatsheet.
Sound abspielen
Schließen Sie Ihren tragbaren Lautsprecher an und stellen Sie sicher, dass er bei Bedarf mit Strom versorgt wird. Wir werden das verwenden Pygame Bibliothek, um Sounds abzuspielen, also installieren Sie sie:
sudo apt-get install python-pygame.
Zuerst brauchen wir eine Sounddatei zum Abspielen. Wenn Sie dies in der Desktop-Umgebung tun, laden Sie a herunter WAV oder OGG Datei von irgendwoher (ich fand eine gute Auswahl an kostenlose Halloween-Sounds hier) und legen Sie es in Ihrem Home-Verzeichnis ab. Ich würde empfehlen, zuerst ein Downsampling durchzuführen und Konvertierung in ein kleines OGG-Format wie auch immer.
Wenn Sie eine Remoteverbindung herstellen und nur die Befehlszeile verwenden, haben wir bei einigen Websites etwas größere Schwierigkeiten, da die wget Befehl greift möglicherweise nicht auf die eigentliche Datei. Stattdessen können wir es lokal auf unseren Desktop herunterladen und das verwenden scp Befehl (sichere Kopie) zum Kopieren über die Befehlszeile. Sie können mehr lernen über scp Öffnen Sie hier, aber vorerst, eine neue Registerkarte "Terminal" und geben Sie Folgendes ein:
scp thunder.ogg [email protected]:
Benennen Sie thunder.ogg entsprechend um, aber vergessen Sie das Finale nicht : (Der Befehl wird ohne ihn ausgeführt, aber er wird nicht das tun, was wir wollen.) Standardmäßig wird die Datei in das Home-Verzeichnis des Pi-Benutzers übertragen.
Ändern wir nun das Skript, um einen Sound abzuspielen. Importieren Sie zunächst einige neue Module:
importiere pygame.mixer. aus pygame.mixer Sound importieren.
Unmittelbar nach den vorhandenen Importanweisungen wird derselbe Sound zu Testzwecken immer wieder wiederholt. Lassen Sie den Rest Ihres Bewegungserkennungscodes unverändert - er wird einfach nicht ausgeführt, da er für immer in dieser Sound-Play-Schleife stecken bleibt.
pygame.init () pygame.mixer.init () #Laden Sie eine Sounddatei im Home-Verzeichnis des Pi-Benutzers (keine MP3s). thunder = pygame.mixer. Sound ("/ home / pi / thunder.ogg") während True: thunder.play () sleep (10) thunder.stop ()
Beachten Sie, dass der Sound bei der ursprünglichen Ausführung dieses Vorgangs nicht abgespielt werden konnte und stattdessen nur geklickt wurde. Die Größe der Datei oder die Bitrate war der Schuldige: Sie betrug 24 Bit und über 5 MB für einen 15-Sekunden-Clip. Wenn Sie das mit dem oben verlinkten Konverter auf 16 Bit skalieren, funktioniert alles einwandfrei, und die Größe wurde auf nur 260 KB reduziert!
Wenn Sie während der Ausführung Ihrer Python-App ein unangenehmes Zischen aus Ihren Lautsprechern bemerken, aber nicht anders, geben Sie Folgendes ein:
sudo nano /boot/config.txt.
Und fügen Sie diese Zeile am Ende hinzu:
disable_audio_dither = 1.
Starten Sie neu, damit die Änderungen wirksam werden. Oder kümmere dich nicht darum, denn es klang für mich sowieso wie Regen.
Lassen Sie uns abschließend die Hauptschleife zur Bewegungsprüfung ändern, um den Ton abzuspielen, wenn eine Bewegung erkannt wird. Wir verwenden eine Verzögerung von 15 Sekunden, damit die gesamte Schleife abgespielt werden kann und als Spam-Puffer fungiert, wenn viele Non-Stop-Bewegungen ausgeführt werden.
while True: Wenn pir.motion_detected: print ("Bewegung erkannt!") thunder.play () # Sicherstellen, dass die Wiedergabe vollständig war Wird abgeschlossen, bevor die Bewegungserkennung fortgesetzt wird. Verhindert das "Spammen" von Sound Sleep (15). thunder.stop () else: print ("No. Bewegung")
Automatisch starten
Wir möchten dies wahrscheinlich irgendwo mit einem Akku und ohne Internetverbindung einrichten, daher muss das Skript beim Neustart ausgeführt werden, ohne dass eine Befehlszeile geöffnet werden muss. Dazu verwenden wir die einfachste Methode: die crontab So planen Sie Aufgaben unter Linux mit Cron und CrontabDie Fähigkeit, Aufgaben zu automatisieren, ist eine dieser futuristischen Technologien, die es bereits gibt. Jeder Linux-Benutzer kann dank cron, einem benutzerfreundlichen Hintergrunddienst, von der Planung von System- und Benutzeraufgaben profitieren. Weiterlesen . Art:
sudo crontab -e.
Wenn Sie diesen Befehl zum ersten Mal ausführen, werden Sie zunächst gefragt, welchen Editor Sie verwenden möchten. Ich habe Option 2 für Nano gewählt. Der von Ihnen ausgewählte Editor wird gestartet. Fügen Sie daher die folgende Zeile hinzu:
@reboot python /home/pi/motion.py &
Dies bedeutet, dass Ihr motion.py-Skript bei jedem Start im Hintergrund ausgeführt wird (sodass alle Ausgaben des Skripts ignoriert werden). Starten Sie neu, um es auszuprobieren.
Wenn trotz Bewegung nichts abgespielt wird oder Sie nur ein kleines Klicken hören, haben Sie möglicherweise nicht den vollständigen Dateipfad verwendet, oder Ihre Datei muss möglicherweise in eine niedrigere Bitrate und eine kleinere Dateigröße konvertiert werden.
Weitere Sounds hinzufügen
Es ist etwas langweilig, immer wieder denselben Effekt zu spielen. Fügen wir also etwas Zufälligkeit hinzu. Laden Sie weitere Halloween-Sounds herunter und denken Sie daran, sie auf eine vernünftige Größe und Bitrate zu verkleinern. Senden Sie sie dann mit an Ihren Pi scp wie vorher. Ich habe drei verschiedene Arten von Schreien hinzugefügt.
Ändern Sie den Code so, dass er keinen einzigen definiert pygame.mixer. Klang Variable erstellen wir tatsächlich eine Array von Geräuschen. Dies ist mit Python ganz einfach. Umgeben Sie einfach eine durch Kommas getrennte Liste mit eckigen Klammern:
Sounds = [pygame.mixer. Sound ("/ home / pi / thunder.ogg"), pygame.mixer. Sound ("/ home / pi / odd_scream.ogg"), pygame.mixer. Sound ("/ home / pi / girl_scream.ogg"), pygame.mixer. Sound ("/ home / pi / psycho_scream.ogg")]
Importieren Sie als Nächstes die Zufallsbibliothek in Ihre Datei mit:
zufällig importieren.
Ändern Sie nun die Hauptbewegungserfassungsschleife wie folgt:
while True: Wenn pir.motion_detected: print ("Bewegung erkannt!") playSound = random.choice (Sounds) playSound.play () # Stellen Sie sicher, dass die Wiedergabe funktioniert wurde vollständig abgeschlossen, bevor die Bewegungserkennung fortgesetzt wird. Verhindert das "Spammen" von Sound Sleep (15). playSound.stop () else: print ("No. Bewegung")
Beachten Sie die geringfügige Änderung: Anstatt die einzelne Soundvariable abzuspielen, verwenden wir die random.choice Funktion, um einen zufälligen Sound aus unserem Sound-Array auszuwählen und diesen dann abzuspielen.
Hier ist der vollständige Code für den Fall, dass Sie Probleme haben:
Pygame importieren. aus pygame.mixer Sound importieren. aus gpiozero MotionSensor importieren. von Zeit importieren Schlaf. importiere zufällige pygame.init () pygame.mixer.init () #Laden Sie eine Sounddatei im selben Verzeichnis wie das Skript (keine MP3s). Sounds = [pygame.mixer. Sound ("/ home / pi / thunder.ogg"), pygame.mixer. Sound ("/ home / pi / odd_scream.ogg"), pygame.mixer. Sound ("/ home / pi / girl_scream.ogg"), pygame.mixer. Sound ("/ home / pi / psycho_scream.ogg")] pir = MotionSensor (4) while True: Wenn pir.motion_detected: print ("Bewegung erkannt!") playSound = random.choice (Sounds) playSound.play () # Stellen Sie sicher, dass die Wiedergabe funktioniert wurde vollständig abgeschlossen, bevor die Bewegungserkennung fortgesetzt wird. Verhindert das "Spammen" von Sound Sleep (15). playSound.stop () else: print ("No. Bewegung")
Bei nur vier Samples besteht jedes Mal eine hohe Wiederholungswahrscheinlichkeit. Sie können jedoch weitere Samples hinzufügen, wenn dies ärgerlich ist.
Das ist es! Verstecke es mit einigen im Gebüsch gruselige LED-Monsteraugen Wie man gruselige Halloween-leuchtende Augen für weniger als 5 US-Dollar machtMöchten Sie Ihre Halloween-Dekoration dieses Jahr aufpeppen? In diesem Elektronikprojekt für Anfänger erfahren Sie, wie Sie LED-Augen für weniger als 5 US-Dollar herstellen. Weiterlesen und Sie sollten in der Lage sein, sich Süßigkeiten zu sparen, während alle Kinder schreiend davonlaufen, bevor sie überhaupt die Tür erreichen. Oder versteck dich im Schrank, weil eine wütende Mutter nach Blut strebt, nachdem du den kleinen Johnny zum Weinen gebracht hast.
Haftungsausschluss: MakeUseOf haftet nicht für Personenschäden, die durch die Nutzung dieses Projekts entstehen können!
Werden Sie diese bewegungsaktivierte Soundbox herstellen, um die lokalen Süßes oder Saures zu erschrecken? Hast du an diesem Halloween irgendwelche gruseligen Effekte mit einem Raspberry Pi eingestellt? Bitte teilen Sie uns dies in den Kommentaren unten mit!
James hat einen BSc in künstlicher Intelligenz und ist CompTIA A + und Network + zertifiziert. Er ist der Hauptentwickler von MakeUseOf und verbringt seine Freizeit mit VR-Paintball und Brettspielen. Er baut seit seiner Kindheit PCs.