Przestraszyć Cukierek albo psikus za pomocą aktywowanego ruchem zestawu Soundbox

  • Gabriel Brooks
  • 0
  • 1544
  • 250
Reklama

To znowu ta pora roku, kiedy uważa się, że społecznie akceptowalne jest przerażanie małych dzieci i dawanie im słodyczy. O radości. Jestem tutaj, aby ułatwić ci pracę, pokazując, jak zrobić prosty soundbox Raspberry Pi Halloween z funkcją wykrywania ruchu. Oto demo:

Oto, czego będziesz potrzebować

Prawdopodobnie jedyną częścią, której jeszcze nie masz, jest czujnik ruchu, niewielka i niedroga część, którą powinieneś być w stanie znaleźć w lokalnym Microcenter lub Maplin.

  • Raspberry Pi (wystarczy dowolny model).
  • Czujnik ruchu (~ 3 USD).
  • Przewody przyłączeniowe.
  • Głośnik przewodowy (większość głośników Bluetooth będzie mieć możliwość korzystania z wejścia liniowego).
  • Kabel stereo 3,5 mm, męski na męski.

Gdy skończysz, możesz chcieć dodać zsynchronizowane efekty świetlne Jak zsynchronizować oświetlenie domowe i muzykę na Halloween Jak zsynchronizować oświetlenie domowe i muzykę na Halloween Niezależnie od tego, czy prowadzisz imprezę na Halloween, czy chcesz mieć najfajniejszy nawiedzony dom w sąsiedztwo, sprawiając, że światła migają odpowiednio do muzyki i efektów dźwiękowych. też, ale w tym samouczku omówimy tylko trochę przerażające dźwięki!

Konfiguracja

Używamy Raspbian Jessie Lite i Python 2.7, ale każda dystrybucja Linuksa działająca na twoim Pi powinna być w porządku. Zostawiłem to na standardowej nazwie hosta “raspberrypi.local”, więc zacznij od zalogowania się zdalnie za pomocą SSH (otwórz okno terminala, jeśli korzystasz z komputera Mac. Oto jak zrobić to samo w systemie Windows 4 Łatwe sposoby korzystania z SSH W systemie Windows 4 Łatwe sposoby korzystania z SSH W systemie Windows SSH jest de facto rozwiązaniem do bezpiecznego uzyskiwania dostępu do zdalnych terminali w systemie Linux i innych systemach typu UNIX. Jeśli masz zdalny serwer SSH, do którego chcesz uzyskać dostęp, musisz pobrać klienta SSH…) - lub jeśli zdecydowałeś się korzystać z pełnego Raspbian z komputerem stacjonarnym GUI, możesz przejść do aktualizacji.

ssh [email protected] (wpisz malinę jako hasło) sudo apt-get update sudo apt-get install python-pip sudo pip install gpiozero 

To instaluje prostą bibliotekę do pracy ze stykami GPIO w Pythonie z wieloma typami wbudowanych czujników i przycisków. Połącz czujnik ze stykiem sygnałowym na GPIO4, VCC podłączony do 5 V i GND podłączony do GND. To może się różnić w zależności od modelu, więc potwierdź za pomocą schematu pinout.

Zdjęcie: raspberrypi.org

Pomocnie, moja obudowa Pi 2 od Pimoroni ma wytłoczony laserowo schemat pinouta.

Teraz zróbmy nasz skrypt wykrywania ruchu.

nano motion.py 

Wklej:

z importu gpiozero MotionSensor pir = MotionSensor (4) podczas gdy True: jeśli pir.motion_detected: print („Motion wykryty!”) else: print („No motion”) 

Naciśnij CTRL-X, a następnie Y, aby zapisać i wyjść, a następnie uruchom z:

python motion.py 

Powinieneś zobaczyć “bez ruchu” komunikat powtarzany na ekranie, dopóki nie machniesz ręką przed czujnikiem, gdy zatrzyma się na “Wykryto ruch!”

Jeśli wiadomość w ogóle się nie zmienia, oznacza to, że źle ją podłączyłeś.

Jeśli chcesz dowiedzieć się więcej o tej prostej bibliotece GPIOZero, zajrzyj do tego fantastycznego ściągawki.

Odtwarzanie dźwięku

Podłącz przenośny głośnik i upewnij się, że jest zasilany, jeśli to konieczne. Użyjemy pygame bibliotekę do odtwarzania dźwięków, więc zainstaluj ją:

sudo apt-get install python-pygame 

Po pierwsze potrzebujemy pliku dźwiękowego do odtworzenia. Jeśli robisz to z poziomu środowiska komputerowego, pobierz plik WAV lub OGG skądś plik (znalazłem tutaj duży wybór darmowych dźwięków Halloween) i umieść go w swoim katalogu domowym. Sugerowałbym najpierw próbkowanie w dół i konwersję do małego formatu OGG.

Jeśli łączysz się zdalnie i tylko za pomocą wiersza polecenia, mamy nieco więcej trudności z niektórymi witrynami, ponieważ wget polecenie może nie pobrać rzeczywistego pliku. Zamiast tego możemy pobrać go lokalnie na nasz pulpit i użyć scp (bezpieczne kopiowanie), aby skopiować za pomocą wiersza polecenia. Możesz dowiedzieć się więcej o scp tutaj, ale na razie otwórz nową kartę Terminal i wpisz:

scp thunder.ogg [email protected]: 

Zmień nazwę thunder.ogg na odpowiednią, ale nie zapomnij o finale : (polecenie zakończy się bez niego, ale nie zrobi tego, co chcemy). Domyślnie plik zostanie przeniesiony do katalogu domowego użytkownika Pi.

Teraz zmodyfikujmy skrypt, aby odtworzył dźwięk. Zacznij od zaimportowania nowych modułów:

import pygame.mixer z pygame.mixer import Sound 

Następnie, zaraz po istniejących instrukcjach importu, będziemy zapętlać ten sam dźwięk w kółko dla celów testowych. Pozostaw resztę kodu wykrywającego ruch w obecnej postaci - po prostu nie uruchomi się, ponieważ utknie w tej pętli odtwarzania dźwięku na zawsze.

pygame.init () pygame.mixer.init () # załaduj plik dźwiękowy, w katalogu osobistym użytkownika Pi (brak mp3) thunder = pygame.mixer.Sound ("/ home / pi / thunder.ogg") podczas gdy True : thunder.play () sleep (10) thunder.stop () 

Zauważ, że kiedy próbowałem tego procesu, dźwięk odmówił odtworzenia i po prostu kliknął. Winowajcą był rozmiar pliku lub szybkość transmisji: było to 24 bity i ponad 5 MB na 15 sekund klipu. Skalowanie tego do 16-bitów za pomocą konwertera, do którego podłączyłem powyżej, sprawiło, że wszystko działało ładnie, a rozmiar został zmniejszony do zaledwie 260 KB!

Jeśli zauważysz nieprzyjemny syk z głośników podczas działania aplikacji Python, ale nie inaczej, wpisz:

sudo nano /boot/config.txt 

I dodaj tę linię na końcu:

disable_audio_dither = 1 

Uruchom ponownie, aby zmiany zaczęły obowiązywać. Albo nie przejmuj się, bo i tak dla mnie to brzmiało jak deszcz.

Na koniec zmodyfikujmy główną pętlę sprawdzania ruchu, aby odtwarzać dźwięk po wykryciu ruchu. Wykorzystamy 15-sekundowe opóźnienie, aby można było odtworzyć całą pętlę i działać jako bufor spamu, gdy występuje dużo ruchu non-stop.

while True: jeśli pir.motion_detected: print („Motion wykryty!”) thunder.play () # upewnij się, że odtwarzanie zostało w pełni zakończone przed wznowieniem wykrywania ruchu, zapobiega „spamowaniu” uśpienia dźwięku (15) thunder.stop () else: drukuj („Bez ruchu”) 

Uruchom automatycznie

Prawdopodobnie chcemy to gdzieś ustawić z baterią i bez połączenia z Internetem, więc skrypt musi zostać uruchomiony przy ponownym uruchomieniu bez konieczności otwierania wiersza poleceń. Aby to zrobić, użyjemy najprostszej możliwej metody: crontab Jak zaplanować zadania w Linuksie za pomocą Crona i Crontab Jak zaplanować zadania w Linuksie za pomocą Crona i Crontaba Zdolność do automatyzacji zadań jest jedną z tych futurystycznych technologii, które już tu są . Każdy użytkownik Linuksa może skorzystać z planowania systemu i zadań użytkownika, dzięki cron, łatwej w obsłudze usłudze w tle. . Rodzaj:

sudo crontab -e 

Jeśli uruchamiasz to polecenie po raz pierwszy, zaczniesz od pytania, jakiego edytora użyć. Wybrałem opcję 2 dla nano. Uruchomi się w wybranym edytorze, więc dodaj następujący wiersz:

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

Oznacza to, że skrypt motion.py będzie działał przy każdym uruchomieniu i będzie to robił po cichu (więc wszelkie dane wyjściowe skryptu będą ignorowane). Uruchom ponownie, aby wypróbować.

Jeśli nic nie jest odtwarzane pomimo ruchu lub słychać tylko małe kliknięcie, być może nie użyto pełnej ścieżki pliku lub plik może wymagać konwersji na niższą szybkość transmisji i mniejszy rozmiar pliku.

Dodaj więcej dźwięków

Ciągłe odtwarzanie tego samego efektu jest trochę nudne, więc dodajmy do tego trochę losowości. Pobierz więcej dźwięków Halloween, pamiętając o ich zmniejszeniu do rozsądnego rozmiaru i szybkości transmisji, a następnie prześlij je do swojego Pi za pomocą scp jak wcześniej. Dodałem trzy różne typy krzyku.

Zmodyfikuj kod, aby zamiast definiować pojedynczy pygame.mixer.Sound zmienna, w rzeczywistości tworzymy szyk dźwięków. Jest to proste w Pythonie, wystarczy otoczyć ich listę przecinkami nawiasami kwadratowymi, tak jak:

dźwięki = [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 ")] 

Następnie zaimportuj losową bibliotekę do swojego pliku za pomocą:

importuj losowo 

Teraz zmodyfikuj główną pętlę wykrywania ruchu w następujący sposób:

while True: jeśli pir.motion_detected: print („Wykryto ruch!”) playSound = random.choice (dźwięki) playSound.play () # upewnij się, że odtwarzanie zostało w pełni zakończone przed wznowieniem wykrywania ruchu, zapobiega „spamowaniu” uśpienia dźwięku (15 ) playSound.stop () else: print („No motion”) 

Zwróć uwagę na niewielką zmianę: zamiast odtwarzać pojedynczą zmienną Sound, używamy random.choice wybrać losowy dźwięk z naszej tablicy dźwięków, a następnie go odtworzyć.

Oto pełny kod na wypadek problemów:

importuj pygame z pygame.mixer importuj dźwięk z gpiozero importuj MotionSensor od czasu import uśpienia importuj losowo pygame.init () pygame.mixer.init () # załaduj plik dźwiękowy, ten sam katalog co skrypt (brak mp3s) dźwięki = [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) podczas gdy True: jeśli pir.motion_detected: print („Motion wykryty!”) playSound = random.choice (dźwięki) playSound .play () # upewnij się, że odtwarzanie zostało całkowicie zakończone przed wznowieniem wykrywania ruchu, zapobiega „spamowaniu” uśpienia dźwięku (15) playSound.stop () else: print („No motion”) 

Przy tylko czterech próbkach istnieje wysokie prawdopodobieństwo powtórzenia za każdym razem, ale możesz dodać więcej próbek, jeśli jest to denerwujące.

To jest to! Ukryj go w krzakach przerażającymi oczami potworów LED Jak zrobić upiorne świecące oczy Halloween za mniej niż 5 USD Jak zrobić upiorne świecące oczy Halloween za mniej niż 5 USD Chcesz urozmaicić dekoracje Halloween w tym roku? Dowiedz się, jak zrobić oczy LED za mniej niż 5 USD w projekcie elektroniki dla początkujących. , i powinieneś być w stanie zaoszczędzić sobie trochę słodyczy, ponieważ wszystkie dzieci uciekają krzycząc, zanim jeszcze dojdą do drzwi. Albo chowaj się w szafie, bo wściekła mama wypływa z krwi po tym, jak mały Johnny płacze.

Oświadczenie: MakeUseOf nie ponosi odpowiedzialności za jakiekolwiek obrażenia ciała, które mogą wyniknąć z korzystania z tego projektu!

Czy stworzysz ten aktywowany ruchem soundbox, aby przestraszyć lokalnych oszustów? Czy ustawiłeś jakieś przerażające efekty z Raspberry Pi w Halloween? Daj nam znać o tym w komentarzach poniżej!




Jeszcze bez komentarzy

O nowoczesnej technologii, prostej i niedrogiej.
Twój przewodnik w świecie nowoczesnych technologii. Dowiedz się, jak korzystać z technologii i gadżetów, które nas otaczają każdego dnia i dowiedz się, jak odkrywać ciekawe rzeczy w Internecie.