Erschrecken Sie Trick-or-Treater mit einer bewegungsaktivierten DIY-Soundbox

| Von

Bewegungsaktivierte-Soundbox

Es ist wieder die Zeit des Jahres, in der es als gesellschaftlich angemessen angesehen wird, kleine Kinder zu erschrecken und süß zu machen. Oh Glück. Ich bin unten, um Ihnen die Arbeit zu erleichtern, indem ich Ihnen genau verrate, wie Sie eine grundlegende Raspberry Pi-Halloween-Soundbox mit Bewegungssensor erstellen. Hier ist ein Versuch:

Hier ist, was Sie brauchen

Höchstwahrscheinlich ist das einzige Teil, das Sie derzeit nicht haben, die Bewegungssensoreinheit, ein kleines und erschwingliches Teil, das Sie in Ihrem regionalen Microcenter oder Maplin finden müssen.

  • Raspberry Pi (jede Art von Version wird sicherlich tun).
  • Bewegungsmelder (~ $ 3).
  • Verbindungskabel.
  • Kabelgebundener Audiolautsprecher (die meisten Bluetooth-Audiolautsprecher haben die Wahl, Line-In zu verwenden).
  • 3,5-mm-Stereo-Kabelfernsehen, männlich-zu-männlich.

Sobald Sie fertig sind, möchten Sie vielleicht auch einige synchronisierte Lichtergebnisse hinzufügen, aber in diesem Tutorial werden wir nur die beängstigenden Geräusche behandeln!

Festlegung

Wir verwenden Raspbian Jessie Lite und Python 2.7, aber jede Linux-Distribution, die auf Ihrem Pi läuft, muss in Ordnung sein. Ich habe es auf dem grundlegenden Hostnamen „raspberrypi.local“ belassen. Beginnen Sie also mit dem Besuch von einem anderen Ort aus mit SSH (öffnen Sie ein Terminal-Startfenster, wenn Sie auf einem Mac sind. So machen Sie genau das gleiche in Windows) – – oder wenn Sie sich für ein vollständiges Raspbian mit Desktop-GUI entschieden haben, zögern Sie nicht, ein Upgrade zu vermeiden.

ssh pi@raspberrypi.local
(enter raspberry as the password)
sudo apt-get update
sudo apt-get install python-pip
sudo pip install gpiozero

Dies installiert eine Basisbibliothek für den Umgang mit den GPIO-Pins in Python mit zahlreichen Arten von integrierten Sensoreinheiten und auch Schaltern. Verdrahten Sie Ihre Sensoreinheit mit dem Signalstift an GPIO4, dem VCC mit 5 V und dem GND mit GND. Dies kann je nach Ihrer spezifischen Version variieren. Bestätigen Sie dies mit einem Pinbelegungsdiagramm.

Raspberry Pi GPIO-Diagramm Bildnachweis: raspberrypi.org

Erfreulicherweise hat meine Pi 2 Instanz von Pimoroni eine direkt darauf lasergeätzte Pinbelegung.

Beschriftetes Raspberry Pi-Gehäuse

Erlauben Sie uns derzeit unser Bewegungserkennungsskript.

nano motion.py

Einfügen:

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

Drücken Sie STRG-X, dann Y, um zu speichern und zu verlassen, danach weitermachen:

python motion.py

Sie müssen die Meldung „Keine Bewegung“ auf dem Display duplizieren sehen, bis Sie mit der Hand vor der Sensoreinheit wedeln, wenn sie auf der Anzeige „Bewegung erkannt!“

Bewegung im Terminal erkannt

Wenn sich die Nachricht nicht ändert, haben Sie sie falsch verkabelt.

Wenn Sie mehr über diese einfache GPIOZero-Bibliothek erfahren möchten, werfen Sie einen Blick auf dieser fantastische Spickzettel

Ton abspielen

Verbinden Sie Ihren mobilen Lautsprecher und stellen Sie sicher, dass er bei Bedarf mit Strom versorgt wird. Wir nutzen die Pygame Bibliothek, um Sounds abzuspielen, also fahren Sie fort und installieren Sie sie:

sudo apt-get install python-pygame

Zuerst benötigen wir ein Audiodokument zum Abspielen. Wenn Sie dies in den Desktop-Computereinstellungen tun, fahren Sie fort und laden Sie a . herunter WAV oder OGG Dokumente von irgendwo (ich habe eine ausgezeichnete Auswahl an kostenloses Halloween erscheint genau hier , und fügen Sie es auch in Ihre Hausverzeichnis-Site ein. Ich würde auf jeden Fall vorschlagen, das Anfangs- und das Downsampling zu reduzieren Umwandlung in ein winziges OGG-Layout wie auch immer.

Wenn Sie sich von einem anderen Standort aus verbinden und auch nur die Befehlszeile verwenden, haben wir mit einigen Sites ein bisschen mehr Probleme, da die wget Befehl ruft möglicherweise nicht die eigentliche Datei ab. Vielmehr können wir es in Ihrer Nähe auf unseren Desktop herunterladen sowie das scp (sichere Kopie) Befehl zum Kopieren über die Befehlszeile. Sie können mehr erfahren bezüglich scp gleich hier, aber vorerst, öffne einen brandneuen Terminal-Tab und auch freundlich:

scp thunder.ogg pi@raspberrypi.local:

Benenne thunder.ogg als richtig um, aber vergiss das Finale nicht : (Der Befehl wird ohne ihn beendet, aber er wird nicht das tun, was wir wollen). Dadurch werden die Dokumente standardmäßig in das Home-Verzeichnis des Pi-Benutzers übertragen.

Derzeit können wir das Manuskript ändern, um ein Audio abzuspielen. Beginnen Sie mit dem Importieren einiger neuer Module:

import pygame.mixer
from pygame.mixer import Sound

Danach werden wir im Anschluss an die bestehenden Importerklärungen das gleiche Audio zu Screening-Zwecken über- und wieder durchlöchern. Lassen Sie den Rest Ihres Aktivitätserfassungscodes in der Zwischenzeit so, wie er ist – er wird einfach nicht ausgeführt, da er für immer in diese Soundspiel-Lücke eingebettet ist.

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()

Beachten Sie, dass, als ich dieses Verfahren ursprünglich versuchte, das Audio die Wiedergabe verweigerte und stattdessen einfach darauf klickte. Schuld daran war die Größe der Dokumente bzw. die Bitrate: Sie betrug sowohl 24 Bit als auch über 5 MB für einen 15-Sekunden-Clip. Das Herunterskalieren auf 16-Bit mit dem von mir verlinkten Konverter hat dazu geführt, dass jede Kleinigkeit gut funktionierte, und die Größe wurde auf nur 260 KB reduziert!

Wenn Sie ein unangenehmes Zischen aus Ihren Lautsprechern bemerken, während Ihre Python-App ausgeführt wird, geben Sie Folgendes ein:

sudo nano /boot/config.txt

Fügen Sie auch diese Zeile am Ende hinzu:

disable_audio_dither=1

Reaktivieren Sie, damit die Anpassungen funktionieren. Oder mach dir keine Mühe, denn es klang für mich sowieso nach Regen.

Letztlich können wir die Hauptschleife für die Bewegungsprüfung so anpassen, dass der Ton abgespielt wird, wenn eine Bewegung erkannt wird. Wir verwenden einen 15-Sekunden-Überfall, um sicherzustellen, dass das gesamte Schlupfloch abgespielt werden kann, und um als Spam-Puffer zu fungieren, wenn es viel Non-Stop-Motion gibt.

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")

Automatisch starten

Wir möchten dies wahrscheinlich irgendwo mit einer Batterie und ohne Webverbindung einrichten, sodass das Skript beim Neustart ausgeführt werden muss, ohne dass eine Befehlszeile geöffnet werden muss. Dazu verwenden wir den einfachsten Ansatz: die crontab. Art:

sudo crontab -e

Wenn Sie diesen Befehl zum ersten Mal ausführen, werden Sie zunächst gefragt, welcher Editor verwendet werden soll. Ich habe Alternative 2 für Nano gewählt. Es bootet direkt in Ihren ausgewählten Editor, also fügen Sie die folgende Zeile hinzu:

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

Dies impliziert, dass Ihr motion.py-Manuskript bei jedem Start funktioniert und dies auch ruhig (damit wird jede Art von Ausgabe des Manuskripts ignoriert). Starten Sie neu, um es auszuprobieren.

Wenn trotz Bewegung nichts abgespielt wird oder Sie nur einen kleinen Klick hören, haben Sie möglicherweise nicht den vollständigen Datenpfad genutzt oder Ihre Dokumente müssen möglicherweise auf eine niedrigere Bitrate sowie eine kleinere Datengröße umgewandelt werden.

Weitere Sounds hinzufügen

Es ist ein wenig langweilig, denselben Effekt immer wieder zu spielen, also fügen wir ihm etwas Zufälligkeit hinzu. Laden Sie weitere Halloween-Erscheinungen herunter und denken Sie daran, sie auf eine praktische Dimension und Bitrate zu skalieren, und senden Sie sie dann unter Verwendung von an Ihren Pi scp wie vorher. Ich habe drei verschiedene Arten von Schreien hinzugefügt.

Passen Sie den Code an, um sicherzustellen, dass wir nicht eine einzelne pygame.mixer.Sound-Variable definieren, sondern wirklich eine Vielzahl von Geräuschen erzeugen. Dies ist mit Python unkompliziert, grenzen Sie einfach eine durch Kommas getrennte Checkliste mit eckigen Klammern ein, also:

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")
]

Als nächstes importieren Sie die zufällige Sammlung in Ihre Dokumente mit:

import random

Passen Sie nun die große Bewegungserkennungslücke wie folgt an:

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")

Beachten Sie die kleine Anpassung: Im Gegensatz zum Spielen der einzelnen Sound-Variablen verwenden wir die random.choice Funktion, um ein beliebiges Geräusch aus unserer Geräuschvarietät auszuwählen und dieses dann abzuspielen.

Hier ist der vollständige Code für die Situation, in der Sie Probleme haben:

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")

Bei nur 4 Beispielen besteht jedes Mal eine hohe Wiederholungswahrscheinlichkeit, aber Sie können weitere Beispiele hinzufügen, wenn dies erschwerend ist.

Das ist es! Verstecken Sie es in den Büschen mit einigen furchterregenden LED-Monsteraugen, und Sie sollten die Möglichkeit haben, selbst etwas Süßes zu sparen, da alle Jugendlichen dem Schreien entkommen, bevor sie auch zur Tür kommen. Oder versteck dich im Kleiderschrank, weil eine verrückte Mama zielstrebig ist, nachdem du den kleinen Johnny zum Weinen gebracht hast.

Haftungsausschluss: virtualworldnews.de ist nicht verantwortlich für jegliche Art von Verletzungen, die durch die Verwendung dieser Aufgabe entstehen können!

Werden Sie diese bewegungsaktivierte Soundbox herstellen, um die lokalen Trick-oder-Treater zu erschrecken? Haben Sie an diesem Halloween mit einem Raspberry Pi irgendwelche erschreckenden Ergebnisse erzielt? Bitte erlauben Sie uns, dies in den folgenden Bemerkungen zu erfahren!

Wir brauchen eine Sounddatei zum Abspielen. Derzeit können wir das Skript ändern, um ein Audio abzuspielen. Beachten Sie, dass, als ich diesen Vorgang ursprünglich ausprobierte, die Wiedergabe des Tons abgelehnt wurde und stattdessen einfach geklickt wurde. Erlauben Sie uns, die primäre Bewegungsprüfschleife zu ändern, um das Geräusch abzuspielen, wenn eine Bewegung erkannt wird.[

Klicken Sie, um diesen Beitrag zu bewerten!
[Gesamt: 0 Durchschnitt: 0]

Andere verwandte Artikel

Schreibe einen Kommentar