- Bahan yang Diperlukan
- Sensor Bunyi Berfungsi
- Mengukur Frekuensi Audio pada Osiloskop
- Diagram Litar Arduino Detector Whistle
- Mengukur Kekerapan dengan Arduino
- Memprogram Arduino anda untuk mengesan Whistle
- Arduino Whistle Detector Berfungsi
Sebagai seorang kanak-kanak saya terpesona dengan kereta muzik mainan yang dipicu ketika anda bertepuk tangan, dan ketika saya membesar, saya tertanya-tanya apakah kita dapat menggunakan yang sama untuk menukar lampu dan kipas di rumah kita. Alangkah baiknya hanya dengan menghidupkan Kipas dan lampu saya dengan hanya bertepuk tangan dan bukannya berjalan sendiri yang malas ke papan suis. Tetapi sering kali ia tidak berfungsi kerana litar ini akan bertindak balas terhadap sebarang bunyi yang kuat di persekitaran, seperti radio yang kuat atau mesin pemotong rumput jiran saya. Walaupun membina clap switch juga merupakan projek yang menyeronokkan.
Ketika itulah saya menemui kaedah Whistle Detecting ini di mana litar akan mengesan wisel. Wisel tidak seperti bunyi lain akan mempunyai frekuensi yang seragam untuk jangka masa tertentu dan dengan itu dapat dibezakan dari ucapan atau muzik. Jadi dalam tutorial ini kita akan belajar bagaimana mengesan bunyi wisel dengan menghubungkan Sound Sensor dengan Arduino dan apabila wisel dikesan, kita akan menukar lampu AC melalui relay. Sepanjang perjalanan kami juga akan belajar bagaimana isyarat suara diterima oleh mikrofon dan bagaimana mengukur frekuensi menggunakan Arduino. Kedengarannya menarik jadi mari kita mulakan dengan Projek Automasi Rumah berasaskan Arduino.
Bahan yang Diperlukan
- Arduino UNO
- Modul Sensor Bunyi
- Modul Relay
- Lampu AC
- Wayar Penyambung
- Papan roti
Sensor Bunyi Berfungsi
Sebelum kita menyelidiki sambungan perkakasan dan kod untuk Projek Automasi Rumah ini, mari kita lihat sensor bunyi. Sensor bunyi yang digunakan dalam modul ini ditunjukkan di bawah. Prinsip kerja kebanyakan sensor bunyi yang terdapat di pasaran serupa dengan ini, walaupun penampilannya mungkin sedikit berubah.
Seperti yang kita ketahui komponen primitif dalam sensor suara adalah mikrofon. Mikrofon adalah jenis transduser yang menukar gelombang bunyi (tenaga akustik) menjadi tenaga elektrik. Pada dasarnya diafragma di dalam mikrofon bergetar ke gelombang suara di atmosfer yang menghasilkan isyarat elektrik pada pin outputnya. Tetapi isyarat ini akan berskala sangat rendah (mV) dan oleh itu tidak dapat diproses secara langsung oleh mikrokontroler seperti Arduino. Juga secara default isyarat bunyi bersifat analog sehingga output dari mikrofon akan menjadi gelombang sinus dengan frekuensi berubah-ubah, tetapi mikrokontroler adalah peranti digital dan oleh itu berfungsi lebih baik dengan gelombang persegi.
Untuk menguatkan gelombang sinus isyarat rendah ini dan mengubahnya menjadi gelombang persegi modul menggunakan modul Perbandingan LM393 on-board seperti yang ditunjukkan di atas. Output audio voltan rendah dari mikrofon dibekalkan ke satu pin pembanding melalui transistor penguat sementara voltan rujukan ditetapkan pada pin yang lain menggunakan litar pembahagi voltan yang melibatkan potensiometer. Apabila voltan output audio dari mikrofon melebihi voltan yang telah ditetapkan, pembanding akan naik tinggi dengan 5V (voltan operasi), jika tidak, pembanding tetap rendah pada 0V. Dengan cara ini gelombang sinus isyarat rendah dapat ditukar kepada gelombang persegi voltan tinggi (5V). Petikan osiloskop di bawah menunjukkan yang sama di mana gelombang kuning adalah gelombang sinus isyarat rendah dan biru pada adalah gelombang persegi output. Thekepekaan dapat dikawal dengan mengubah potensiometer pada modul.
Mengukur Frekuensi Audio pada Osiloskop
Modul sensor bunyi ini akan menukar gelombang suara di atmosfer menjadi gelombang persegi yang frekuensi akan sama dengan frekuensi gelombang bunyi. Oleh itu, dengan mengukur frekuensi gelombang persegi, kita dapat mencari frekuensi isyarat bunyi di atmosfera. Untuk memastikan semuanya berfungsi sebagaimana mestinya, saya menyambungkan sensor suara ke ruang lingkup saya untuk memeriksa isyarat outputnya seperti yang ditunjukkan dalam video di bawah.
Saya menghidupkan mod pengukuran pada skop saya untuk mengukur frekuensi dan menggunakan aplikasi Android (Frequency Sound Generator) dari Play Store untuk menghasilkan isyarat bunyi frekuensi yang diketahui. Seperti yang anda lihat di GID di atas, ruang lingkup dapat mengukur isyarat suara dengan ketepatan yang cukup baik, nilai frekuensi yang ditunjukkan dalam ruang lingkup sangat dekat dengan yang dipaparkan di telefon saya. Sekarang, kita tahu modul ini berfungsi, mari kita teruskan dengan menghubungkan antara sensor Suara dengan Arduino.
Diagram Litar Arduino Detector Whistle
Gambarajah litar lengkap untuk litar Arduino Whistle Detector Switch menggunakan Sound Sensor ditunjukkan di bawah. Litar dilukis menggunakan perisian Fritzing.
Sensor Suara dan modul Relay dikuasakan oleh pin 5V Arduino. Pin output sensor Suara disambungkan ke pin digital 8 Arduino, ini kerana sifat pemasa pin itu dan kami akan membincangkan lebih lanjut mengenai perkara ini di bahagian pengaturcaraan. Modul Relay dipicu oleh pin 13 yang juga disambungkan ke LED terpasang pada papan UNO.
Di sisi bekalan AC wayar neutral disambungkan secara langsung ke pin Common (C) modul Relay sementara Fasa disambungkan ke pin relay Normally Open (NO) melalui beban AC (bola lampu). Dengan cara ini apabila relay dipicu pin NO akan dihubungkan dengan pin C dan dengan itu bola lampu akan menyala. Jika tidak, blub akan tetap dimatikan. Setelah sambungan dibuat, perkakasan saya kelihatan seperti ini.
Amaran: Bekerja dengan litar AC boleh menjadi berbahaya, berhati-hati semasa mengendalikan wayar langsung dan mengelakkan litar pintas. Pemutus litar atau pengawasan orang dewasa disyorkan untuk orang yang tidak berpengalaman dengan elektronik. Anda telah diberi amaran !!
Mengukur Kekerapan dengan Arduino
Sama seperti ruang lingkup kita membaca frekuensi gelombang persegi yang masuk, kita harus memprogram Arduino untuk mengira frekuensi. Kami telah belajar bagaimana melakukan ini dalam tutorial Frekuensi Kaunter kami menggunakan fungsi nadi. Tetapi dalam tutorial ini kita akan menggunakan perpustakaan Freqmeasure untuk mengukur frekuensi untuk mendapatkan hasil yang tepat. Perpustakaan ini menggunakan gangguan pemasa dalaman pada pin 8 untuk mengukur berapa lama nadi tetap AKTIF. Setelah waktunya diukur, kita dapat mengira kekerapan menggunakan formula F = 1 / T. Tetapi kerana kami menggunakan perpustakaan secara langsung, kami tidak perlu memasukkan butiran daftar dan matematik bagaimana kekerapan diukur. Perpustakaan boleh dimuat turun dari pautan di bawah:
- Pustaka Pengukuran Kekerapan oleh pjrc
Pautan di atas akan memuat turun fail zip, anda kemudian boleh menambahkan fail zip ini ke Arduino IDE anda dengan mengikuti jalan Sketsa -> Sertakan Perpustakaan -> Tambah.ZIP Library.
Catatan: Menggunakan perpustakaan akan mematikanfungsi analogWrite pada pin 9 dan 10 pada UNO kerana pemasa akan dihuni oleh perpustakaan ini. Juga pin ini akan berubah sekiranya papan lain digunakan.
Memprogram Arduino anda untuk mengesan Whistle
Program lengkap dengan Video Demonstrasi terdapat di bahagian bawah halaman ini. Dalam tajuk ini saya akan menerangkan program dengan memecahnya menjadi potongan kecil.
Seperti biasa kita memulakan program dengan memasukkan perpustakaan yang diperlukan dan menyatakan pemboleh ubah yang diperlukan. Pastikan anda telah menambahkan perpustakaan FreqMeasure.h seperti yang dijelaskan dalam tajuk di atas. Keadaan pemboleh ubah mewakili keadaan LED dan frekuensi dan kesinambungan pemboleh ubah digunakan untuk mengeluarkan frekuensi yang diukur dan kesinambungannya.
#sertakan
Di dalam fungsi penyediaan kekosongan , kita memulakan monitor bersiri dengan kadar baud 9600 untuk debug. Kemudian gunakan fungsi FreqMeasure.begin () untuk memulakan pin 8 untuk mengukur frekuensi. Kami juga menyatakan bahawa pin 13 (LED_BUILTIN) adalah output.
persediaan tidak sah () { Serial.begin (9600); FreqMeasure.begin (); // Langkah-langkah pada pin 8 secara default pinMode (LED_BUILTIN, OUTPUT); }
Di dalam gelung tak terhingga, kami terus mendengarkan pin 8 menggunakan fungsi FreqMeasure.available (). Sekiranya ada isyarat masuk kita mengukur frekuensi menggunakan FreqMeasure.read (). Untuk mengelakkan kesilapan disebabkan oleh kebisingan, kami mengukur 100 sampel dan mengambilnya rata-rata. Kod untuk melakukan perkara yang sama ditunjukkan di bawah.
if (FreqMeasure.available ()) { // rata-rata beberapa bacaan bersama jumlah = jumlah + FreqMeasure.read (); kiraan = hitung + 1; jika (kiraan> 100) { frekuensi = FreqMeasure.countToFrequency (jumlah / kiraan); Serial.println (kekerapan); jumlah = 0; kiraan = 0; } }
Anda boleh menggunakan fungsi Serial.println () di sini untuk memeriksa nilai kekerapan untuk wisel anda. Bagi saya, nilai yang diterima adalah dari 1800Hz hingga 2000Hz. Frekuensi wisel kebanyakan orang akan berada dalam julat tertentu ini. Tetapi bunyi lain seperti muzik atau suara mungkin berada di bawah frekuensi ini, jadi untuk membezakannya, kami akan memantau kesinambungannya. Sekiranya frekuensi berterusan selama 3 kali maka kami mengesahkannya sebagai bunyi wisel. Oleh itu, jika frekuensi antara 1800 hingga 2000 maka kita menambah pemboleh ubah yang disebut kesinambungan.
jika (frekuensi> 1800 && frekuensi <2000) {kesinambungan ++; Serial.print ("Kesinambungan ->"); Serial.println (kesinambungan); kekerapan = 0;}
Sekiranya nilai kesinambungan mencapai atau melebihi tiga, maka kita mengubah keadaan LED dengan menukar keadaan yang disebut pemboleh ubah. Sekiranya keadaan sudah benar, kita mengubahnya menjadi palsu dan sebaliknya.
jika (kesinambungan> = 3 && state == false) {state = true; kesinambungan = 0; Serial.println ("Lampu Dihidupkan"); kelewatan (1000);} jika (kesinambungan> = 3 && state == true) {state = false; kesinambungan = 0; Serial.println ("Lampu Dimatikan"); kelewatan (1000);}
Arduino Whistle Detector Berfungsi
Setelah kod dan perkakasan siap, kita boleh mula mengujinya. Pastikan sambungan betul dan aktifkan modul. Buka monitor bersiri dan mula bersiul, anda dapat melihat nilai kesinambungan bertambah dan akhirnya menyalakan atau mematikan Lampu. Contoh snapshot monitor bersiri saya ditunjukkan di bawah.
Apabila monitor bersiri mengatakan Cahaya yang dihidupkan pin 13 akan dibuat tinggi dan geganti akan dipicu untuk menghidupkan Lampu. Begitu juga lampu akan dimatikan ketika monitor bersiri mengatakan Lampu dimatikan . Sebaik sahaja anda menguji cara kerja, anda dapat menghidupkan pemasangan menggunakan penyesuai 12V dan mula mengendalikan Alat Rumah Tangga AC anda menggunakan wisel.
Penyelesaian sepenuhnya projek ini boleh didapati di video yang dipautkan di bawah. Harap anda memahami tutorial dan menikmati pembelajaran sesuatu yang baru. Sekiranya anda mempunyai masalah dalam menyelesaikan sesuatu, tinggalkan di bahagian komen atau gunakan forum kami untuk pertanyaan teknikal yang lain.