Daftar Isi:

Relai Alarm Pembeku: 5 Langkah
Relai Alarm Pembeku: 5 Langkah

Video: Relai Alarm Pembeku: 5 Langkah

Video: Relai Alarm Pembeku: 5 Langkah
Video: Review Remote Control Wireless Relay Switch 1 Ch RF 433 MHZ 2024, Juli
Anonim
Relai Alarm Pembeku
Relai Alarm Pembeku

Freezer kami berada di ruang utilitas yang terisolasi dari ruang hidup kami. Kadang-kadang pintu freezer tidak menutup dengan benar dan alarm berbunyi. Masalahnya adalah kita tidak bisa mendengarnya jika kita berada di ruang hidup kita. Bagaimana kita mendapatkan pesan bahwa pintu freezer terbuka? Ini adalah masalah umum, kami memiliki perangkat di rumah kami yang berbicara kepada kami, tetapi apa yang terjadi jika kami tidak dapat mendengarnya karena alasan apa pun. Saya memulai ini sebagai sedikit kesenangan, tetapi mungkin berguna dalam aplikasi yang lebih serius.

Ada 2 bagian untuk masalah ini, kita memerlukan metode untuk mendeteksi alarm telah berbunyi dan metode untuk menyampaikan fakta ini ke ruang hidup kita. Desain yang saya tetapkan adalah menggunakan Raspberry Pi untuk mendengarkan alarm freezer berbunyi, dan kemudian mengirim pesan alarm yang dapat didengar ke radio domestik saya yang uPNP diaktifkan. Universal Plug and Play (UpnP) adalah standar untuk menemukan dan berinteraksi dengan layanan yang ditawarkan oleh berbagai perangkat di jaringan, termasuk server media dan pemutar, meskipun saya tidak berpikir freezer dipertimbangkan ketika standar dikembangkan. Pesan peringatan dibuat keras dan menjengkelkan dan berulang tanpa henti sampai radio dimatikan.

Saya memilih untuk mendeteksi alarm dengan Raspberry Pi Zero W dan Seeed ReSpeaker 2-Mics Pi HAT Raspberry PI Zero adalah versi murah dari Raspberry Pi dan opsi W memiliki WiFi bawaan, sedangkan Seeed Pi HAT dijual dengan harga kurang dari $10, memiliki LED bawaan dan Tombol Pengguna. Pi HAT adalah kartu ekstensi yang dipasang langsung ke Raspberry Pi membuat prosedur perakitan yang sangat sederhana. Versi Pi apa pun akan lebih dari mampu untuk pekerjaan itu, dan mikrofon yang dipilih dapat diganti, meskipun saya menggunakan LED bawaan dalam build ini.

Sangat mudah untuk memeriksa apakah radio atau TV cocok untuk Anda. Ini lebih mungkin digambarkan sebagai "DLNA diaktifkan" atau serupa. Ini menggunakan uPNP untuk berkomunikasi. Pada PC Windows, pilih file mp3 dan "Cast to Device". Jika perangkat Anda muncul dan Anda dapat memutar file, maka Anda siap melakukannya.

Saya membagi perangkat lunak menjadi 2 skrip python, checkFreezer.py untuk memeriksa apakah peringatan freezer telah dipicu dan raiseAlarm.py untuk membunyikan alarm. Skrip ini dapat dikembangkan dan diuji secara terpisah dan dapat dengan mudah diadaptasi atau diganti dengan metode peningkatan alarm mikrofon yang berbeda.

Perlengkapan

  • Perangkat lunak -https://github.com/waringle/freezer-alarm
  • Raspberry PI Nol W
  • Seeed ReSpeaker 2-Mics Pi HAT
  • radio berkemampuan uPNP

Langkah 1: Merancang Detektor

Ketika pintu freezer dibiarkan terbuka dan suhu naik, freezer akan mengeluarkan alarm "bip bip bip". Secara umum dengan sebagian besar bunyi bip elektronik, ini adalah frekuensi tunggal. Idenya adalah untuk mengambil sampel input audio, melakukan Fast Fourier Transform (FFT) yang mengubah sinyal berbasis waktu menjadi sinyal berbasis frekuensi, dengan kata lain memecah sinyal untuk menampilkan frekuensi yang berbeda dalam sinyal. Lihat Penganalisis Spektrum Raspberry Pi yang Dapat Diinstruksikan Dengan Strip LED RGB Kita dapat mencari puncak pada frekuensi bel dan memicu alarm ketika bel telah aktif selama beberapa waktu.

Detektor ini memiliki 2 persyaratan:

  • Ini harus mendeteksi bel, bahkan di hadapan kebisingan sekitar (menghilangkan negatif palsu)
  • Seharusnya tidak dipicu oleh kebisingan sekitar (hilangkan false positive)

Saya memutuskan bahwa menjalankan Hoover di ruang utilitas akan menjadi ujian yang baik. Seharusnya tidak memicu alarm, dan alarm harus dipicu ketika bel freezer berbunyi dan Hoover sedang berjalan.

Langkah 2: Mengonfigurasi Detektor

Mengonfigurasi Detektor
Mengonfigurasi Detektor
Mengonfigurasi Detektor
Mengonfigurasi Detektor
Mengonfigurasi Detektor
Mengonfigurasi Detektor

Dengan telepon saya, saya mengambil sampel audio sebagai file WAV dari buzzer freezer saja, dengan latar belakang yang bising, dan dengan Hoover yang berjalan. Saya mengadaptasi kode untuk melakukan FFT dari posting Reading Audio Stream untuk FFT (Jika ragu, plagarise) dan menggunakan skrip fourierTest.py untuk memplot sampel buzzer mentah dan Fourier Transformed dalam latar belakang yang tenang, bising, dan sangat bising. Lonjakan level pada frekuensi 645 diucapkan di plot pertama dan masih signifikan dengan latar belakang yang sangat bising.

Langkah 3: Membangun Detektor

Merakit detektor

Sangat sederhana. Pi W dilengkapi dengan Wifi built-in dan HAT dicolokkan langsung ke pin GPIO di Pi. Mengonfigurasi perangkat lunak memerlukan langkah-langkah

  • Instal distro raspbian di Raspberry Pi. Ada banyak panduan tentang ini yang dapat menjelaskannya dengan lebih baik dari yang saya bisa.
  • Siapkan Wifi (demikian di atas)
  • Perlu paket alsa diinstal

$ sudo apt-get install libasound-dev

$ pip instal pyalsaaudio

  • Hubungkan HAT ke raspberry PI
  • Ikuti Instruksi di situs web seed untuk menginstal driver untuk HAT.
  • Jalankan diagnosa seed untuk memeriksa apakah HAT berfungsi dan dikonfigurasi dengan benar.

Program detektor membaca blok data sebagai sampel dari mikrofon, melakukan FFT dan memutuskan apakah telah mendeteksi bel dalam sampel atau tidak. Saya mencoba membuat blok selama mungkin dengan mengurangi laju sampel audio menjadi 16kHz dan menggunakan buffer terbesar yang dapat diterima pembaca. Saya khawatir bahwa perhitungan FFT dapat menyebabkan bingkai dijatuhkan, tetapi itu tidak terjadi.

Memiliki sampel yang direkam sebelumnya di ponsel saya membuat pembuatan detektor lebih mudah karena saya dapat melakukan pembuatan lengkap di bangku sebelum menguji di tempat oleh freezer.

Melatih detektor

Detektor dilatih dengan memindai setiap sampel ketika rekaman WAV dari buzzer diputar ke detektor. Program mengeluarkan posisi dalam spektrum FFT dengan level daya tertinggi (frekuensi puncak), bersama dengan level frekuensi puncak tersebut. Itu masalah sederhana untuk menemukan frekuensi bel dan tingkat daya yang dipancarkannya.

Ada 2 cara untuk mendeteksi jika bunyi bip telah terjadi: -

  1. Apakah frekuensi buzzer merupakan frekuensi puncak dalam sampel?
  2. atau apakah tingkat daya pada frekuensi buzzer melebihi ambang batas?

Metode mana pun bekerja dalam sampel yang tenang, tetapi yang kedua lebih baik dengan sampel yang berisik, jadi saya menggunakannya.

Kadang-kadang sampel menutupi bunyi bip, kadang-kadang di antara bunyi bip, dan setelah setiap 3 bunyi bip ada jeda panjang sebelum bunyi bip berikutnya. Untuk mendeteksi dengan andal bahwa serangkaian bunyi bip telah terjadi, setiap sampel memiliki suara positif jika suara bip terdeteksi dan suara turun jika tidak. Suara ini ditimbang untuk menetapkan hitungan yang akan muncul dengan sampel bip dan perlahan-lahan membusuk di antara waktu. Setelah hitungan mencapai ambang batas, alarm dapat dipicu. Jika suara acak terdeteksi sebagai sampel bip, hitungan akan kembali ke nol.

Kami kemudian membutuhkan bobot untuk upvote dan downvote bersama dengan ambang batas. Ini saya lakukan dengan coba-coba atas sejumlah sampel. Saya tidak perlu menentukan frekuensi buzzer yang sebenarnya, saya hanya mencari frekuensi yang menonjol dalam spektrum fft.

Langkah 4: Mengirim Pesan ke Radio

Meningkatkan alarm dilakukan dengan skrip terpisah. Tugasnya adalah menyalakan radio jika perlu, membobol apa pun yang diputar radio dan mengulangi pesan alarm sampai radio dimatikan lagi. Saya harus merekayasa balik protokol uPnP yang digunakan karena saya mengalami kesulitan besar dalam mendapatkan informasi atau contoh yang dapat diandalkan. Beberapa referensi yang menurut saya berguna adalah

  • www.electricmonk.nl/log/2016/07/05/exploring-upnp-with-python/ Ini memiliki ikhtisar yang bagus tentang bagaimana semuanya cocok bersama
  • developer.sony.com/develop/audio-control-api/get-started/browse-dlna-file.
  • stackoverflow.com/questions/28422609/how-to-send-setavtransporturi-using-upnp-c/35819973

Saya menggunakan Wireshark yang berjalan di PC windows untuk menghapus urutan pesan saat memutar file sampel dari PC saya di radio saya, dan setelah sedikit mengutak-atik saya mendapatkan urutan perintah yang berfungsi. Ini adalah

  • Luncurkan server web popup untuk menyajikan pesan peringatan saat radio memintanya
  • Atur level volume ke LOUD (Pesan peringatan harus menarik perhatian semua orang)
  • Berikan uri pesan peringatan ke radio
  • Polling radio hingga status saat ini "BERHENTI"
  • Dapatkan radio untuk "MAINKAN" uri
  • Ulangi 2 langkah terakhir hingga kondisi saat ini adalah "NO MEDIA PRESENT", yang berarti alarm telah dikenali dengan mematikan radio
  • Terakhir tutup server web dan keluar.

Ini adalah skrip raiseAlarm.py

Langkah 5: Lakukan Sendiri

Melakukannya Sendiri
Melakukannya Sendiri

Model "detektor" dan "naikkan alarm" tidak hanya untuk freezer, tetapi dapat berguna di mana saja di mana alarm otomatis perlu diteruskan melalui media lain. Jika ini menarik, jangan ragu untuk mencobanya.

Menyiapkan PI Zero W, termasuk mikrofon

  • Pasang perangkat keras seperti pada langkah 3
  • Unduh skrip freezer-alarm dari Instructable ini, atau dari repositori git yang menyertakan beberapa trek bonus

$ git clone

Anda juga perlu menginstal perangkat lunak untuk menggunakan LED APA102 terpasang. Saya telah menyertakan salinan apa102.py di direktori kerja git

Latih detektor Anda

Saya telah menambahkan opsi pelatihan ke skrip checkFreezer.py. Ini menjalankannya sendiri dan mencetak diagnostik ke baris perintah, tetapi pertama-tama Anda perlu merekam beberapa sampel alarm di lingkungan yang tenang sebagai file WAV, dan melakukan hal yang sama di lingkungan yang bising. Untuk menyelesaikan pelatihan, Anda harus terlebih dahulu menemukan frekuensi FFT dengan level tertinggi ("frekuensi puncak") dan kemudian level ambang batas frekuensi tersebut untuk menyetel pemicu. Untuk melakukan ini, jalankan skrip checkFreezer dalam mode pelatihan, dengan opsi '-t' dan putar rekaman alarm.

$ python checkFreezer.py -t

Ini menjalankan skrip dalam mode pelatihan. Ini mencetak "siap" ketika HAT benih telah diinisialisasi dan LED berubah menjadi hijau, kemudian garis untuk setiap suara non-sepele yang didengarnya, misalnya

$ python checkFreezer.py -t

Siap frekuensi puncak 55 pemicu level 1 dipicu? Frekuensi puncak palsu 645 memicu level 484? Frekuensi puncak palsu 645 memicu level 380 dipicu? Palsu

Frekuensi puncak adalah, dalam hal ini 645 dan itu menjadi frekuensi pemicu. Sekarang untuk mendapatkan level pemicu, jalankan kembali checkFreezer, atur pemicunya

$ python checkFreezer.py -t --trigger=645

Siap frekuensi puncak 645 pemicu level 1273 dipicu? Frekuensi puncak palsu 645 memicu level 653 dipicu? Frekuensi puncak palsu 645 memicu level 641 dipicu? Frekuensi puncak palsu 645 memicu level 616 dipicu? Palsu

Akhirnya kita membutuhkan ambang pemicu yang menyala ketika bunyi bip terdeteksi, tetapi mengabaikan kebisingan, misalnya

$ python checkFreezer.py -t --trigger=645 --threshold=500

Siap frekuensi puncak 645 pemicu level 581 dipicu? Frekuensi puncak sejati 645 memicu level 798 dipicu? Frekuensi puncak sebenarnya 645 memicu level 521 dipicu? benar

Uji ini terhadap beberapa sampel bising dan Anda harus dapat menetapkan nilai ambang batas yang membedakan antara suara bleeper dan kebisingan sekitar. Anda juga akan melihat LED berubah menjadi merah ketika urutan ulang bip diputar selama beberapa detik. Jika ingin cepat/lambat masuk, edit pengaturan di skrip

Menghubungkan ke radio

Untuk mengonfigurasi skrip untuk pengaturan Anda sendiri, Anda perlu menemukan alamat IP dan nomor port yang digunakan perangkat Anda untuk layanan UPnP. Pengaturan radio harus menyediakan ini. Nomor port default adalah 8080 dan akan mengejutkan jika berbeda.

Saya telah memberikan pesan alarm default, freezer.mp3. Jangan ragu untuk mengganti dengan pesan Anda sendiri.

Edit skrip dengan alamat IP yang sesuai dan jalankan skrip.

$ python raiseAlarm.py

Jika semuanya baik-baik saja, pesan alarm yang keras dan menjengkelkan akan keluar dari radio Anda sampai radio dimatikan, membatalkan alarm.

Sementara skrip berjalan menjalankan server web mini untuk melayani mp3 alarm ke radio, mungkin masalah keamanan, tetapi hanya aktif saat pesan alarm diputar.

Tayang

Hapus tanda pelatihan '-t', dan jalankan checkFreezer dengan nilai Anda sendiri, mis

$ python checkFreezer.py --trigger=645 --threshold=200

Untuk membuatnya mulai saat reboot, tambahkan ke /etc/rc.local, cd /home/pi/freezer-alarm

(python checkFreezer.py --trigger=645 --threshold=200 > /tmp/freezer 2> /tmp/freezererror &) & keluar 0

LED hijau akan menyala dan Anda siap beraksi. Putar rekaman bunyi bip alarm Anda dan setelah beberapa detik LED akan menyala merah dan pesan alarm akan diputar di radio Anda.

Akhirnya

Posisikan PI di lokasi yang dekat dengan freezer, jauh dari jalan dan dengan catu daya. Nyalakan dan LED hijau akan menyala. Uji pemicu alarm dengan membiarkan pintu terbuka. Lampu akan berubah menjadi merah dan pesan alarm diputar di radio.

Kesuksesan !! Anda telah melakukannya. Manjakan diri Anda dengan minuman panjang dengan es dari freezer, tetapi jangan lupa untuk menutup pintu freezer!

Direkomendasikan: