Iklan

Pernahkah Anda ingin tiba di rumah untuk menyambut pribadi? Dengan Raspberry Pi dan beberapa komponen sederhana, Anda bisa! Dalam proyek sederhana ini, kami akan menggunakan sakelar buluh untuk memicu nada tema saat pintu dibuka. Kami akan menggunakan Raspberry Pi sebagai pengontrol di sini, meskipun Anda dapat menggunakan hampir semua mikrokontroler lainnya $ 5 Mikrokontroler: Arduino, Raspberry Pi Zero, Atau NodeMCU?Dulu jika Anda ingin mendapatkan komputer, Anda harus menukar rumah Anda untuk membayarnya. Sekarang, Anda bisa mendapatkan satu untuk Abraham Lincoln. Baca lebih banyak untuk proyek ini menggunakan sirkuit yang sama. Ini demo.

Anda akan perlu

Anda mungkin sudah memiliki semua bagian yang Anda butuhkan untuk membuat ini kecuali saklar buluh, yaitu sekitar $ 2–3, atau Anda bisa mendapatkan paket 5 untuk hanya lebih dari $ 8 sini.

  • A Raspberry Pi (model apa pun akan berfungsi untuk ini).
  • 1 x 220 Ohm resistor.
  • 1 x 1K Ohm resistor.
  • 3 x 10K Ohm resistor.
  • 1 x Saklar buluh magnet.
  • 1 x LED.
  • instagram viewer
  • 2 x Sakelar tombol.
  • Papan tempat memotong roti.
  • Kabel penghubung.
  • Speaker komputer atau sejenisnya.

Kami akan menggunakan Raspberry Pi untuk memutar lagu ketika ruangan dimasukkan, dan merancang sirkuit dengan tombol di papan tempat memotong roti kami untuk mengaktifkannya pada penundaan, dan menghentikan program.

Proyek ini, walaupun dibuat untuk bersenang-senang, mencakup dasar-dasar untuk banyak aplikasi di Otomatisasi rumah DIY Panduan Otomatisasi Rumah Dengan Raspberry Pi dan ArduinoPasar otomatisasi rumah dibanjiri dengan sistem konsumen yang mahal, tidak kompatibel satu sama lain dan mahal untuk dipasang. Jika Anda memiliki Raspberry Pi dan Arduino, Anda pada dasarnya dapat mencapai hal yang sama di ... Baca lebih banyak dan juga Keamanan rumah DIY Mencari Solusi Sistem Keamanan Rumah DIY? Cobalah salah satunyaDi era teknologi digital dan perangkat keras yang selalu terhubung, pengaturan sistem keamanan rumah harus melampaui seni menempatkan kotak berbentuk alarm di dinding. Baca lebih banyak

Mulai

Mari kita mulai dengan membuat sirkuit kita. Pastikan Pi Anda tidak berdaya, dan atur sirkuit Anda seperti ini:

Fritzing Annotated HQ

LED terhubung ke pin 7 pada pi kami. Dua sakelar tombol tekan dipasang ke pin 11 dan 13, dan sakelar buluh terhubung ke pin 15. Kekuatan kami berlaku untuk pin 1 (3v3) dan pin 6 (Gnd).

diagram pin

Pastikan untuk memeriksa semuanya di tempat yang tepat.

Saat Anda sedang menguji proyek ini, mungkin akan membantu untuk menjaga buluh Anda beralih di depan Anda sehingga Anda dapat dengan mudah menghidupkan atau mematikannya. Dalam hal ini saklar buluh sudah dipasang di atas pintu. Setelah proyek Anda selesai dan berjalan, Anda dapat memasang sakelar sementara di pintu menggunakan selotip, atau jika Anda merasa lebih percaya diri, Anda dapat memasangnya lebih permanen untuk digunakan di masa depan proyek!

saklar buluh diinstal

Hubungkan output jack 3.5mm Pi Anda ke sistem speaker Anda. Setelah semuanya disatukan, akan terlihat seperti ini:

seluruh pengaturan sudah benar

Perhatikan bahwa papan tempat memotong roti yang digunakan di sini memiliki power rails sebaliknya ke diagram Fritzing di atas.

Sekarang hidupkan Pi Anda, dan akses menggunakan SSH sehingga kami dapat mengakses terminal. Jika Anda tidak yakin bagaimana melakukan ini, panduan ini Menyiapkan Raspberry Pi Anda Untuk Penggunaan Tanpa Kepala Dengan SSHRaspberry Pi dapat menerima perintah SSH saat terhubung ke jaringan lokal (baik dengan Ethernet atau Wi-Fi), memungkinkan Anda untuk dengan mudah mengaturnya. Manfaat SSH melampaui menjengkelkan penyaringan harian ... Baca lebih banyak bisa membantumu. Jika Anda menggunakan Raspberry Pi Anda dengan monitor, mouse, dan keyboard, lewati langkah ini dan buka terminal.

Sebelum memulai, ada baiknya memeriksa apakah Anda mutakhir. Tipe sudo apt-get pembaruan ke terminal.

Sekarang kita bisa beralih ke membuat Pi kita berbicara dengan sirkuit kita.

Menguji Pengaturan Kami

Untuk memulai, mari periksa sirkuit kami menggunakan program sederhana. Jika Anda yakin Anda telah menghubungkan semuanya dengan benar sejauh ini, Anda dapat melewati langkah ini, meskipun saya akan merekomendasikannya karena dapat menghemat sakit kepala nanti.

Jika Anda belum pernah diprogram dalam Python sebelumnya dan merasa sedikit takut, ada sejumlah situs web yang bagus 5 Situs Web Terbaik untuk Belajar Pemrograman PythonIngin belajar pemrograman Python? Berikut adalah cara terbaik untuk belajar Python online, banyak di antaranya sepenuhnya gratis. Baca lebih banyak yang dapat membantu Anda memulai.

Di terminal, buat skrip baru:

nano test.py

Setelah terbuka, tambahkan kode ini ke file, dan tekan Ctrl-C untuk berhenti, mengikuti dialog simpan:

#Kode ini ditulis untuk sebuah artikel di www. MakeUseOf.com oleh Ian Buckley. impor RPi. GPIO sebagai GPIO. waktu impor. GPIO.setwarnings (False) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN) sementara True: GPIO.output (7, GPIO.HIGH) if (GPIO.input (11) == 1): cetak ("Tombol pada GPIO 11") time.sleep (1 ) jika (GPIO.input (13) == 1): cetak ("Tombol pada GPIO 13") time.sleep (1) if (GPIO.input (15) == 1): cetak ("Tombol pada GPIO 15") waktu .sleep (1) GPIO.cleanup ()

Kode ini membaca nilai tombol dan mencetak ke layar ketika mereka berubah. Dua tombol memiliki resistor tarik ke bawah, sehingga mereka melaporkan TINGGI saat ditekan. Sakelar magnet buluh melaporkan TINGGI setiap kali magnet yang menyertainya dekat.

sakelar

Jalankan program:

python test.py

Anda akan melihat lampu LED menyala, dan laporan ke layar ketika Anda menekan dua tombol dan menarik magnet dari saklar buluh Anda. Jika Anda tidak mendapatkan umpan balik ketika Anda menekan tombol, periksa sirkuit Anda lagi dan pastikan semuanya terhubung sebagaimana mestinya. Saat Anda selesai menguji, tekan CTRL-C untuk menghentikan program.

uji

Sekarang kita dapat menyusun program sederhana untuk mengatur, memicu dan mengatur ulang sensor pintu kita. Kami akan membahas kode di bagian dan menjelaskan secara singkat apa yang dilakukan masing-masing bagian, meskipun jika Anda ingin melihat kode lengkap gulir ke bawah untuk melihatnya disajikan secara lengkap.

Kita perlu mulai dengan mengimpor beberapa modul:

impor Rpi. GPIO sebagai GPIO. impor pygame.mixer. waktu impor. 

Kami akan menggunakan Pygame modul untuk memutar musik kami. Itu datang sebagai standar dengan Raspbian Jessie, dan merupakan perpustakaan yang hebat untuk semua yang Anda butuhkan untuk membuat game Python dan banyak lainnya proyek luar biasa Cara Membangun Bot Twitter Raspberry PiTwitter adalah tempat penyimpanan pesan pendek terbesar di dunia dari orang-orang yang tidak memiliki apa-apa untuk dikatakan - dan sekarang Anda juga dapat berkontribusi pada proyek epik itu dengan bot Twitter otomatis, yang didukung oleh bot Anda Frambos... Baca lebih banyak .

Kita akan menggunakan variabel bernama aktif untuk memutuskan apakah sistem kami aktif atau tidak. Mari tentukan beberapa fungsi yang akan melakukan ini untuk kita:

def activeSetup (): global active active = 0 print ("Saat Ini Tidak Aktif") def activeState (): global active jika aktif == 1: active = 0 GPIO.output (7, GPIO.LOW) mencetak ("Saat Ini Tidak Aktif") elif aktif == 0: cetak ("Mengaktifkan dalam 10 detik") untuk rentang x dalam kisaran (0,10): GPIO.output (7, GPIO.HIGH) time.sleep (0.5) GPIO.output (7, GPIO.LOW) time.sleep (0.5) aktif = 1 GPIO.output (7, GPIO.HIGH) cetak ("Saat ini Aktif ") lain: kembali. 

Fungsi pertama di sini membuat variabel bernama aktif, dan set ke 0. Memberi status aktif nilai numerik berarti bahwa jika Anda berencana untuk meningkatkan program Anda di kemudian hari untuk memiliki status aktif yang berbeda, Anda dapat menomorinya dengan tepat. Meskipun mungkin bukan pemrograman Python terbaik di dunia, itu akan lebih dari cukup untuk proyek ini.

Fungsi kedua saat dipanggil memeriksa apakah sistem aktif (atau aktif == 1). Jika ya, ini akan mengatur sistem untuk tidak aktif (aktif == 0), mematikan LED, dan mencetak ke konsol. Jika tidak, ini memberi Anda hitungan mundur 10 detik untuk meninggalkan ruangan tempat LED berkedip, sebelum tetap menyala untuk menunjukkan bahwa sistem sedang aktif.

Sekarang kita dapat mendefinisikan fungsi yang akan menonton saklar magnet buluh kita:

def watchDoor (): bermain bermain global = Salah sementara Benar: jika aktif == 1 dan GPIO.input (15) == 1 dan bermain == Salah: bermain = Benar pygame.mixer.music.play () jika GPIO.input (13) == 1: print ("Stop button ditekan: Exiting") pygame.mixer.music.stop () putus jika GPIO.input (11) == 1: activeState () time.sleep (0.5)

Kami membuat variabel lain di sini disebut bermain - ini ada hanya untuk menghentikan program yang mencoba untuk mulai bermain berulang kali ketika saklar dipicu.

Di dalam loop sementara, pernyataan if pertama memulai musik (yang belum kita miliki, tapi jangan khawatir, itu akan datang). Itu hanya memungkinkan musik dimulai jika sistem aktif, saklar buluh terbuka, dan itu belum diputar.

Pernyataan if kedua adalah untuk tombol keluar kami. Jika tombol ini ditekan, musik berhenti dan program keluar.

Pernyataan if if yang ketiga adalah untuk beralih apakah sistem aktif atau tidak. Itu waktu tidur fungsi di sini adalah untuk mencegah pembacaan beberapa tombol saat ditekan.

Sekarang saatnya menyiapkan pin Pi.

GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, awal = GPIO.LOW) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN)

Jika Anda telah melakukan percobaan dengan Pi sebelum ini, Anda akan terbiasa dengan hal ini. Itu initial = GPIO.LOW argumen dalam pengaturan pin 7 menetapkannya menjadi rendah segera setelah diinisialisasi.

Sekarang kita dapat memanggil fungsi kita yang akan mengatur sistem untuk tidak aktif ketika program dimulai.

activeSetup ()

Maestro Musik!

Pada titik ini, kita harus mulai memikirkan musik yang akan diputar. Anda dapat memilih file musik apa saja yang Anda inginkan, tetapi kami akan memilih sesuatu yang tersedia untuk semua orang saat ini. Jika Anda menonton YouTube, Anda mungkin sudah terbiasa dengan musik Kevin MacLeod. Mari unduh lagu yang fantastis dengan dia yang dipanggil "Maestro bermata satu". Ini, bersama dengan banyak musik di situsnya, dilisensikan di bawah Creative Commons, dan ada banyak alasan bagus Apa itu Penggunaan Creative Commons dan Non-Komersial?Apa itu Creative Commons? Apa yang dimaksud dengan "penggunaan non-komersial"? Pelajari tentang lisensi Creative Commons dan cara kerjanya. Baca lebih banyak untuk menggunakan konten dengan lisensi ini untuk proyek Anda.

wget

Kembali ke kode kita, kita perlu memulai mixer Pygame dan memuat nada kita.

pygame.mixer.init (44100, -16,2,1024) pygame.mixer.music.set_volume (1.0) name = "Maestro.mata Satu bermata" pygame.mixer.music.load (nama) print ("Track yang dimuat -" + str (nama))

Baris pertama dari blok ini memulai Pygame pengaduk. Argumen terakhir dalam tanda kurung adalah buffer yang mengontrol latensi suara dimainkan. Jika Anda mengalami pemutaran berombak nanti ketika musik Anda diputar, coba tambah angka ini menjadi 4096. Pengaturan seperti mereka berfungsi tanpa masalah pada Pi 3.

Jika Anda mengunduh file musik ke direktori lain ke file Anda door.py program, Anda harus memberikan path lengkap di dalam tanda kurung ketika Anda mendefinisikan variabel nama.

Sekarang yang perlu dilakukan hanyalah mengatur loop yang menunggu kita untuk mengatur program aktif, atau keluar.

while True: if (GPIO.input (13) == 1): print ("Tombol berhenti ditekan: Keluar") pygame.mixer.music.stop () break if (GPIO.input (11) == 1): activeState () time.sleep (0.5) if (active == 1): watchDoor () break GPIO.cleanup ()

Loop sementara ini menunggu input dari salah satu tombol, dan berhenti atau mengubah status untuk aktif sesuai. Jika status aktif menjadi 1, maka WatchDoor fungsi yang kita definisikan sebelumnya dipanggil dan kali berikutnya pintu terbuka lagu kita akan diputar. Kami juga menelepon GPIO.cleanup () untuk mengatur ulang pin kami saat keluar, yang umumnya merupakan praktik yang baik untuk semua pemrograman di Raspberry Pi.

Itu semua yang perlu kita lakukan untuk menjalankan dan menjalankan proyek ini, berikut adalah kode lengkapnya:

impor RPi. GPIO sebagai GPIO. impor pygame.mixer. import time def activeSetup (): global active active = 0 print ("Saat Ini Tidak Aktif") def activeState (): global active jika aktif == 1: active = 0 GPIO.output (7, GPIO.LOW) print ("Saat ini Tidak Aktif ") elif aktif == 0: cetak (" Mengaktifkan dalam 10 detik ") untuk rentang x dalam (0,10): GPIO.output (7, GPIO.HIGH) time.sleep (0,5) GPIO.output (7, GPIO.LOW) time.sleep (0,5) aktif = 1 GPIO.output (7, GPIO.HIGH) cetak ("Saat Ini Aktif") lain: return def watchDoor (): bermain bermain global = Salah sementara Benar: jika aktif == 1 dan GPIO.input (15) == 1 dan bermain == Salah: playing = Benar pygame.mixer.music.play () jika GPIO.input (13) == 1: print ("Stop button ditekan: Exiting") pygame.mixer.music.stop () putus jika GPIO.input (11) == 1: activeState () time.sleep (0.5) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, awal = GPIO.LOW) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN) activeSetup () pygame.mixer.init (44100, -16,2,1024) pygame.mixer.music.set_volume (1.0) name = "Maestro.mata Satu bermata" pygame.mixer.music.load (nama) print ("Loaded track -" + str (name)) sementara True: if (GPIO.input (13) == 1): print ("Stop tombol ditekan: Keluar") pygame.mixer.music.stop () rusak jika (GPIO.input (11) == 1): activeState () time.sleep (0,5) if (aktif == 1): watchDoor () break GPIO.cleanup ()

Jika Anda menggulir ke bawah di sini untuk langsung mengambil kode lengkap, ingatlah bahwa Anda masih perlu mengunduh musik ke Pi Anda agar bisa berfungsi!

Sekarang Anda harus memiliki lagu tema rumah selamat datang yang berfungsi! Pasang saklar buluh Anda ke pintu Anda, dan cobalah. Menari yang memalukan adalah opsional tetapi disarankan.

Proyek ini membahas dasar-dasar berbagai bentuk pemantauan rumah, keamanan dan otomatisasi, dan semoga juga menyenangkan!

Sekarang Anda sudah sejauh ini, mengapa berhenti di situ? Anda dapat menambahkan lebih banyak lagu dan membuat program memilih satu secara acak dari daftar. Anda bisa tambahkan relay Memulai Dengan GPIO Pada Raspberry PiJika Anda berpikir bahwa Arduino keren, tunggulah sampai Anda mendapatkan Raspberry Pi - hal-hal ini luar biasa. Selain sebagai komputer yang berfungsi penuh, mereka juga memiliki ... Baca lebih banyak dan memiliki objek lain yang dipicu saat masuk. Jika Anda memiliki sistem musik rumah, mengapa tidak memiliki lagu tema untuk setiap kamar?

lampu estafet

Apakah Anda akan merancang pesan selamat datang pribadi Anda sendiri? Apakah Anda telah menemukan dengan saklar buluh di rumah Anda dengan cara lain? Jika demikian, berikan komentar tentang apa yang Anda rencanakan atau lakukan di bagian komentar di bawah!

Ian Buckley adalah jurnalis lepas, musisi, pemain dan produser video yang tinggal di Berlin, Jerman. Ketika dia tidak menulis atau di atas panggung, dia mengutak-atik elektronik atau kode DIY dengan harapan menjadi ilmuwan gila.