Iklan

Ini adalah tahun yang lagi ketika dianggap dapat diterima secara sosial oleh anak-anak yang ketakutan dan memberi mereka permen. Oh sukacita Saya di sini untuk menjadikan pekerjaan Anda lebih mudah, dengan menunjukkan kepada Anda cara membuat kotak suara Raspberry Pi Halloween pengindera gerak sederhana. Ini demo:

Inilah Yang Anda Butuhkan

Mungkin satu-satunya bagian yang belum Anda miliki adalah sensor gerak, bagian kecil dan murah yang seharusnya dapat Anda temukan di Microcenter atau Maplin lokal Anda.

  • Raspberry Pi (model apa pun akan melakukannya).
  • Sensor gerak (~ $ 3).
  • Kabel hookup.
  • Pengeras suara berkabel (sebagian besar pengeras suara Bluetooth memiliki opsi untuk menggunakan saluran masuk).
  • Kabel stereo 3,5mm, pria-ke-pria.

Setelah selesai, Anda mungkin ingin menambahkan beberapa efek pencahayaan yang disinkronkan Cara Menyinkronkan Lampu Rumah dan Musik untuk HalloweenApakah Anda mengadakan pesta rumah Halloween atau menginginkan rumah berhantu paling keren di lingkungan Anda, membuat lampu kilat Anda tepat waktu untuk musik dan efek suara sangat penting. Baca lebih banyak

instagram viewer
juga, tetapi dalam tutorial ini kita hanya akan membahas sedikit suara menakutkan!

Pengaturan

Kami menggunakan Raspbian Jessie Lite dan Python 2.7, tetapi distro Linux apa pun yang berjalan pada Pi Anda harusnya baik-baik saja. Saya meninggalkannya di nama host standar "raspberrypi.local", jadi mulailah dengan login jarak jauh menggunakan SSH (buka jendela Terminal jika Anda menggunakan Mac. Ini dia bagaimana melakukan hal yang sama di Windows 4 Cara Mudah Menggunakan SSH Di WindowsSSH adalah solusi de facto untuk mengakses terminal jarak jauh dengan aman di Linux dan sistem serupa UNIX lainnya. Jika Anda memiliki server SSH jarak jauh yang ingin Anda akses, Anda harus mengunduh klien SSH ... Baca lebih banyak ) - atau jika Anda memilih menggunakan Raspbian lengkap dengan GUI desktop, silakan lewati untuk memperbarui.

ssh [email protected]. (masukkan raspberry sebagai kata sandi) sudo apt-get update. sudo apt-get install python-pip. sudo pip instal gpiozero. 

Ini menginstal pustaka sederhana untuk bekerja dengan pin GPIO di Python dengan banyak jenis sensor dan tombol bawaan. Pasang sensor Anda dengan pin sinyal pada GPIO4, VCC terhubung ke 5V, dan GND terhubung ke GND. Ini dapat bervariasi sesuai dengan model persis Anda, jadi konfirmasikan dengan diagram pinout.

Diagram Raspberry Pi GPIO
Kredit Gambar: raspberrypi.org

Bermanfaat, kasus Pi 2 saya dari Pimoroni memiliki diagram pinout laser-terukir langsung ke sana.

Label Raspberry Pi Case

Sekarang mari kita buat skrip deteksi gerak kami.

nano motion.py. 

Tempel di:

dari gpiozero import MotionSensor pir = MotionSensor (4) while True: if pir.motion_detected: print ("Motion terdeteksi!") lain: print ("No motion")

Tekan CTRL-X lalu Y untuk menyimpan dan keluar, lalu jalankan dengan:

python motion.py. 

Anda akan melihat pesan "tidak ada gerakan" diulang di layar sampai Anda melambaikan tangan di depan sensor, ketika pesan itu berlama-lama di "Motion Detected!"

Gerak terdeteksi di terminal

Jika pesannya tidak berubah sama sekali, Anda salah menghubungkannya.

Jika Anda tertarik untuk mempelajari lebih lanjut tentang perpustakaan GPIOZero sederhana ini, lihatlah cheatsheet yang fantastis ini.

Memainkan Suara

Sambungkan speaker portabel Anda dan pastikan speaker ini bertenaga jika perlu. Kami akan menggunakan pygame pustaka untuk memutar suara, jadi lanjutkan dan instal:

sudo apt-get install python-pygame. 

Pertama, kita perlu file suara untuk diputar. Jika Anda melakukan ini dari dalam lingkungan desktop, lanjutkan dan unduh a WAV atau OGG file dari suatu tempat (saya menemukan pilihan yang baik dari Halloween gratis terdengar di sini), dan letakkan di direktori home Anda. Saya sarankan downsampling dulu dan mengkonversi ke format OGG kecil bagaimanapun.

Jika Anda menghubungkan dari jarak jauh dan hanya menggunakan baris perintah, kami mengalami sedikit kesulitan dengan beberapa situs, sejak wget perintah mungkin tidak mengambil file yang sebenarnya. Sebagai gantinya, kami dapat mengunduhnya secara lokal ke desktop kami dan menggunakan scp Perintah (salinan aman) untuk menyalin di atas baris perintah. Anda bisa belajar lebih banyak tentang scp di sini, tetapi untuk sekarang, buka tab Terminal baru dan ketik:

scp thunder.ogg [email protected]: 

Ganti nama thunder.ogg jika sesuai, tetapi jangan lupa final itu : (perintah akan selesai tanpa itu, tetapi tidak akan melakukan apa yang kita inginkan). Secara default, ini akan mentransfer file ke direktori home Pi pengguna.

Sekarang mari kita modifikasi skrip untuk memutar suara. Mulailah dengan mengimpor beberapa modul baru:

impor pygame.mixer. dari pygame.mixer import Sound. 

Kemudian tepat setelah pernyataan impor yang ada, kami akan mengulangi suara yang sama berulang-ulang untuk tujuan pengujian. Biarkan sisa kode sensor gerak Anda seperti sekarang - kode itu tidak akan berjalan, karena akan terjebak dalam lingkaran pemutaran suara ini selamanya.

pygame.init () pygame.mixer.init () #load file suara, di direktori home pengguna Pi (tidak ada mp3) guntur = pygame.mixer. Suara ("/ home / pi / thunder.ogg") ketika True: thunder.play () sleep (10) thunder.stop ()

Perhatikan bahwa ketika saya awalnya mencoba proses ini, suara menolak untuk diputar dan hanya mengklik saja. Ukuran file atau bit-rate adalah penyebabnya: itu 24-bit dan lebih dari 5 MB untuk klip 15 detik. Menurunkannya hingga 16-bit menggunakan konverter yang saya tautkan di atas membuat semuanya bekerja dengan baik, dan ukurannya dikurangi menjadi hanya 260KB!

Jika Anda mendesis desis buruk dari pengeras suara saat aplikasi Python Anda berjalan, tetapi tidak sebaliknya, ketikkan:

sudo nano /boot/config.txt. 

Dan tambahkan baris ini di akhir:

disable_audio_dither = 1. 

Mulai ulang agar perubahan diterapkan. Atau jangan repot-repot, karena itu terdengar seperti hujan bagiku.

Akhirnya, mari kita memodifikasi lingkaran penguji gerak utama untuk memutar suara ketika gerakan terdeteksi. Kami akan menggunakan penundaan 15 detik sehingga seluruh loop dapat dimainkan, dan untuk bertindak sebagai penyangga spam saat ada banyak gerakan tanpa henti.

while True: if pir.motion_detected: print ("Motion terdeteksi!") thunder.play () # pastikan pemutaran telah sepenuhnya selesai sebelum melanjutkan deteksi gerak, mencegah "spam" dari tidur nyenyak (15) guntur.stop () lain: cetak ("Tidak gerakan")

Mulai secara otomatis

Kami mungkin ingin mengatur ini di suatu tempat dengan baterai dan tanpa koneksi internet, jadi skrip perlu dijalankan saat restart tanpa harus membuka baris perintah. Untuk melakukan ini, kami akan menggunakan metode sesederhana mungkin: crontab Cara Menjadwalkan Tugas di Linux dengan Cron dan CrontabKemampuan untuk mengotomatisasi tugas adalah salah satu teknologi futuristik yang sudah ada di sini. Setiap pengguna Linux dapat mengambil manfaat dari sistem penjadwalan dan tugas-tugas pengguna, berkat cron, layanan latar belakang yang mudah digunakan. Baca lebih banyak . Tipe:

sudo crontab -e. 

Jika ini adalah pertama kalinya menjalankan perintah ini, ia akan mulai dengan menanyakan editor apa yang akan Anda gunakan. Saya memilih opsi 2, untuk nano. Ini akan boot ke editor yang Anda pilih, jadi tambahkan baris berikut:

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

Ini berarti skrip motion.py Anda akan berjalan pada setiap startup, dan melakukannya dengan diam-diam (sehingga setiap output dari skrip akan diabaikan). Nyalakan ulang untuk mencobanya.

Jika tidak ada yang diputar meskipun ada gerakan, atau Anda hanya mendengar sedikit klik, Anda mungkin tidak menggunakan path file lengkap, atau file Anda mungkin perlu mengkonversi ke bitrate yang lebih rendah dan ukuran file yang lebih kecil.

Tambahkan Lebih Banyak Suara

Memainkan efek yang sama berulang-ulang sedikit membosankan, jadi mari kita tambahkan beberapa keacakan. Unduh lebih banyak suara Halloween, ingat untuk menurunkannya ke ukuran yang masuk akal dan bitrate, kemudian kirim ke Pi Anda menggunakan scp seperti sebelumnya. Saya menambahkan tiga jenis jeritan.

Ubah kode sehingga alih-alih mendefinisikan satu pygame.mixer. Suara variabel, kami sebenarnya membuat Himpunan suara. Ini sederhana dengan Python, hanya mengelilingi daftar yang dipisahkan koma mereka dengan tanda kurung, seperti:

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

Selanjutnya, impor pustaka acak ke file Anda, dengan:

impor acak. 

Sekarang ubah loop penginderaan gerak utama sebagai berikut:

sementara Benar: jika pir.motion_detected: print ("Motion terdeteksi!") playSound = random.choice (suara) playSound.play () # memastikan pemutaran telah telah sepenuhnya selesai sebelum melanjutkan deteksi gerakan, mencegah "spam" dari suara tidur (15) playSound.stop () lain-lain: cetak ("Tidak gerakan")

Perhatikan perubahan kecil: alih-alih memainkan variabel Suara tunggal, kami menggunakan pilihan acak berfungsi untuk memilih suara acak dari susunan suara kami, lalu memutarnya.

Berikut kode lengkap jika Anda mengalami masalah:

impor pygame. dari pygame.mixer import Sound. dari gpiozero import MotionSensor. dari waktu tidur impor. import pygame.init () acak pygame.mixer.init () #load file suara, direktori yang sama dengan skrip (tanpa mp3) sounds = [pygame.mixer. Suara ("/ home / pi / thunder.ogg"), pygame.mixer. Suara ("/ home / pi / scary_scream.ogg"), pygame.mixer. Suara ("/ home / pi / girl_scream.ogg"), pygame.mixer. Sound ("/ home / pi / psycho_scream.ogg")] pir = MotionSensor (4) sementara Benar: jika pir.motion_detected: print ("Motion terdeteksi!") playSound = random.choice (suara) playSound.play () # memastikan pemutaran telah telah sepenuhnya selesai sebelum melanjutkan deteksi gerakan, mencegah "spam" dari suara tidur (15) playSound.stop () lain-lain: cetak ("Tidak gerakan")

Dengan hanya empat sampel, ada kemungkinan pengulangan yang tinggi setiap kali, tetapi Anda dapat menambahkan lebih banyak sampel jika itu mengganggu.

Itu dia! Sembunyikan di semak-semak dengan beberapa mata monster LED yang menakutkan Cara Membuat Mata Glowing Halloween Seram dengan Kurang dari $ 5Ingin mempercantik dekorasi Halloween Anda tahun ini? Pelajari cara membuat mata LED kurang dari $ 5 dalam proyek elektronik pemula ini. Baca lebih banyak , dan Anda harus bisa menyelamatkan diri dari permen karena semua anak lari berteriak sebelum mereka mencapai pintu. Atau bersembunyi di lemari karena seorang ibu yang marah keluar untuk darah setelah Anda membuat Johnny kecil menangis.

Penafian: MakeUseOf tidak bertanggung jawab atas cedera pribadi yang mungkin terjadi akibat penggunaan Anda atas proyek ini!

Apakah Anda akan membuat kotak suara yang diaktifkan gerakan ini untuk menakuti trik-atau-treater lokal? Sudahkah Anda mengatur efek menakutkan dengan Raspberry Pi Halloween ini? Beri tahu kami tentang hal ini di komentar di bawah!

James memiliki gelar BSc dalam Artificial Intelligence, dan bersertifikat CompTIA A + dan Network +. Dia adalah pengembang utama MakeUseOf, dan menghabiskan waktu luangnya bermain VR paintball dan boardgames. Dia telah membangun PC sejak dia masih kecil.