- Bahan yang Dibutuhkan
- Sensor Suara Bekerja
- Mengukur Frekuensi Audio pada Osiloskop
- Diagram Sirkuit Arduino Whistle Detector
- Mengukur Frekuensi dengan Arduino
- Memprogram Arduino Anda untuk mendeteksi Whistle
- Detektor Peluit Arduino Bekerja
Sebagai seorang anak saya terpesona oleh mobil musik mainan yang terpicu saat Anda bertepuk tangan, dan kemudian ketika saya tumbuh dewasa saya bertanya-tanya apakah kita dapat menggunakan yang sama untuk menyalakan lampu dan kipas di rumah kita. Akan sangat keren untuk menyalakan kipas dan lampu saya hanya dengan bertepuk tangan daripada berjalan malas ke papan saklar. Tetapi sering kali tidak berfungsi karena sirkuit ini akan merespons suara keras apa pun di lingkungan, seperti radio yang keras atau untuk mesin pemotong rumput tetangga saya. Meskipun membangun tombol tepuk juga merupakan proyek yang menyenangkan untuk dilakukan.
Saat itulah, ketika saya menemukan metode Mendeteksi Peluit ini di mana sirkuit akan mendeteksi peluit. Peluit tidak seperti suara lainnya akan memiliki frekuensi yang seragam untuk durasi tertentu dan karenanya dapat dibedakan dari ucapan atau musik. Jadi dalam tutorial ini kita akan belajar bagaimana mendeteksi suara peluit dengan menghubungkan Sensor Suara dengan Arduino dan ketika peluit terdeteksi kita akan mengaktifkan lampu AC melalui relai. Sepanjang jalan kita juga akan mempelajari bagaimana sinyal suara diterima oleh mikrofon dan bagaimana mengukur frekuensi menggunakan Arduino. Kedengarannya menarik, jadi mari kita mulai dengan Proyek Otomasi Rumah berbasis Arduino.
Bahan yang Dibutuhkan
- Arduino UNO
- Modul Sensor Suara
- Modul Relai
- Lampu AC
- Menghubungkan Kabel
- Papan tempat memotong roti
Sensor Suara Bekerja
Sebelum kita menyelami koneksi dan kode perangkat keras untuk Proyek Otomasi Rumah ini, mari kita lihat sensor suara. Sensor suara yang digunakan dalam modul ini ditunjukkan di bawah ini. Prinsip kerja sebagian besar sensor suara yang tersedia di pasaran mirip dengan ini, meskipun tampilannya mungkin sedikit berubah.
Seperti yang kita ketahui komponen primitif dalam sebuah sensor suara adalah mikrofon. Mikrofon adalah jenis transduser yang mengubah gelombang suara (energi akustik) menjadi energi listrik. Pada dasarnya diafragma di dalam mikrofon bergetar mengikuti gelombang suara di atmosfer yang menghasilkan sinyal listrik pada pin keluarannya. Tetapi sinyal ini akan berskala sangat rendah (mV) dan karenanya tidak dapat diproses secara langsung oleh mikrokontroler seperti Arduino. Juga secara default sinyal suara bersifat analog sehingga output dari mikrofon akan menjadi gelombang sinus dengan frekuensi variabel, tetapi mikrokontroler adalah perangkat digital dan karenanya bekerja lebih baik dengan gelombang persegi.
Untuk memperkuat gelombang sinus sinyal rendah ini dan mengubahnya menjadi gelombang persegi, modul menggunakan modul Komparator LM393 terpasang seperti yang ditunjukkan di atas. Output audio tegangan rendah dari mikrofon disuplai ke salah satu pin komparator melalui transistor penguat sedangkan tegangan referensi diatur pada pin lainnya menggunakan rangkaian pembagi tegangan yang melibatkan potensiometer. Ketika tegangan output audio dari mikrofon melebihi tegangan preset, komparator menjadi tinggi dengan 5V (tegangan operasi), jika tidak, komparator tetap rendah pada 0V. Dengan cara ini gelombang sinus sinyal rendah dapat diubah menjadi gelombang persegi tegangan tinggi (5V). Cuplikan osiloskop di bawah ini menunjukkan hal yang sama di mana gelombang kuning adalah gelombang sinus sinyal rendah dan biru pada adalah gelombang persegi keluaran. Itusensitivitas dapat dikontrol dengan memvariasikan potensiometer pada modul.
Mengukur Frekuensi Audio pada Osiloskop
Modul sensor suara ini akan mengubah gelombang suara di atmosfer menjadi gelombang persegi yang frekuensinya akan sama dengan frekuensi gelombang suara tersebut. Jadi dengan mengukur frekuensi gelombang persegi kita dapat mengetahui frekuensi sinyal suara di atmosfer. Untuk memastikan semuanya berfungsi sebagaimana mestinya, saya menghubungkan sensor suara ke teropong saya untuk menyelidiki sinyal outputnya seperti yang ditunjukkan pada video di bawah ini.
Saya menyalakan mode pengukuran pada ruang lingkup saya untuk mengukur frekuensi dan menggunakan aplikasi Android (Generator Suara Frekuensi) dari Play Store untuk menghasilkan sinyal suara dengan frekuensi yang diketahui. Seperti yang Anda lihat di GID di atas, scope dapat mengukur sinyal suara dengan akurasi yang cukup baik, nilai frekuensi yang ditampilkan dalam cakupan sangat dekat dengan yang ditampilkan di ponsel saya. Sekarang, setelah kita tahu bahwa modul tersebut berfungsi, mari lanjutkan dengan menghubungkan sensor Suara dengan Arduino.
Diagram Sirkuit Arduino Whistle Detector
Diagram rangkaian lengkap rangkaian Saklar Arduino Whistle Detector dengan Sound Sensor ditunjukkan di bawah ini. Sirkuit digambar menggunakan software Fritzing.
Sensor suara dan modul Relay didukung oleh pin 5V dari Arduino. Pin keluaran dari sensor Suara terhubung ke pin digital 8 dari Arduino, ini karena properti timer dari pin itu dan kita akan membahas lebih lanjut tentang ini di bagian pemrograman. Modul Relay dipicu oleh pin 13 yang juga terhubung ke LED built-in pada papan UNO.
Pada sisi suplai AC, kabel netral terhubung langsung ke pin Common (C) dari modul Relay sementara Fase terhubung ke pin Relai Terbuka (NO) melalui beban AC (bola lampu). Dengan cara ini ketika relai dipicu, pin NO akan dihubungkan dengan pin C dan dengan demikian bola lampu akan menyala. Jika tidak, blub akan tetap dimatikan. Setelah koneksi dibuat, perangkat keras saya terlihat seperti ini.
Peringatan: Bekerja dengan sirkuit AC bisa berbahaya, berhati-hatilah saat menangani kabel yang hidup dan hindari korsleting. Pemutus arus atau pengawasan orang dewasa direkomendasikan untuk orang yang tidak berpengalaman dengan elektronik. Anda telah diperingatkan!!
Mengukur Frekuensi dengan Arduino
Mirip dengan ruang lingkup kami yang membaca frekuensi gelombang persegi yang masuk, kami harus memprogram Arduino untuk menghitung frekuensi. Kami telah mempelajari cara melakukan ini di tutorial Penghitung Frekuensi kami menggunakan fungsi pulsa. Namun dalam tutorial ini kita akan menggunakan library Freqmeasure untuk mengukur frekuensi guna mendapatkan hasil yang akurat. Library ini menggunakan interupsi timer internal pada pin 8 untuk mengukur berapa lama pulsa tetap ON. Setelah waktu diukur, kita dapat menghitung frekuensi menggunakan rumus F = 1 / T. Namun karena kami menggunakan perpustakaan secara langsung, kami tidak perlu membahas detail register dan matematika tentang bagaimana frekuensi diukur. Perpustakaan dapat diunduh dari tautan di bawah ini:
- Pustaka Ukuran Frekuensi oleh pjrc
Tautan di atas akan mengunduh file zip, Anda kemudian dapat menambahkan file zip ini ke Arduino IDE Anda dengan mengikuti jalur Sketch -> Include Library -> Add.ZIP Library.
Catatan: Menggunakan perpustakaan akan menonaktifkanfungsionalitas analogWrite pada pin 9 dan 10 pada UNO karena timer akan ditempati oleh perpustakaan ini. Juga pin ini akan berubah jika papan lain digunakan.
Memprogram Arduino Anda untuk mendeteksi Whistle
Program lengkap dengan Video Demonstrasi dapat ditemukan di bagian bawah halaman ini. Dalam tajuk ini saya akan menjelaskan program dengan memecahnya menjadi potongan-potongan kecil.
Seperti biasa, kami memulai program dengan memasukkan pustaka yang diperlukan dan mendeklarasikan variabel yang diperlukan. Pastikan Anda telah menambahkan pustaka FreqMeasure.h seperti yang dijelaskan pada tajuk di atas. Keadaan variabel mewakili keadaan LED dan frekuensi variabel dan kontinuitas digunakan untuk mengeluarkan frekuensi yang diukur dan kontinuitasnya masing-masing.
#include
Di dalam fungsi pengaturan void , kami memulai monitor serial pada 9600 baud rate untuk debugging. Kemudian gunakan fungsi FreqMeasure.begin () untuk menginisialisasi pin 8 untuk mengukur frekuensi. Kami juga menyatakan bahwa pin 13 (LED_BUILTIN) adalah keluaran.
void setup () { Serial.begin (9600); FreqMeasure.begin (); // Pengukuran pada pin 8 dengan pinMode default (LED_BUILTIN, OUTPUT); }
Di dalam infinite loop , kami terus mendengarkan pada pin 8 menggunakan fungsi FreqMeasure.available (). Jika ada sinyal yang masuk kita ukur frekuensinya menggunakan FreqMeasure.read (). Untuk menghindari kesalahan akibat kebisingan, kami mengukur 100 sampel dan mengambil rata-ratanya. Kode untuk melakukan hal yang sama ditunjukkan di bawah ini.
if (FreqMeasure.available ()) { // rata-rata beberapa bacaan bersama-sama sum = sum + FreqMeasure.read (); hitung = hitung + 1; if (hitung> 100) { frequency = FreqMeasure.countToFrequency (jumlah / hitung); Serial.println (frekuensi); jumlah = 0; hitung = 0; } }
Anda dapat menggunakan fungsi Serial.println () di sini untuk memeriksa nilai frekuensi peluit Anda. Dalam kasus saya, nilai yang diterima adalah dari 1800Hz hingga 2000Hz. Frekuensi peluit kebanyakan orang akan berada dalam kisaran tertentu ini. Tetapi bahkan suara lain seperti musik atau suara mungkin termasuk dalam frekuensi ini sehingga untuk membedakannya kami akan memantau kontinuitasnya. Jika frekuensinya kontinu sebanyak 3 kali maka kami konfirmasikan sebagai bunyi peluit. Jadi, jika frekuensinya antara 1800 hingga 2000 maka kita menambah variabel yang disebut kontinuitas.
if (frekuensi> 1800 && frekuensi <2000) {kontinuitas ++; Serial.print ("Kontinuitas ->"); Serial.println (kontinuitas); frekuensi = 0;}
Jika nilai kontinuitas mencapai atau melebihi tiga, maka kami mengubah status LED dengan mengaktifkan variabel yang disebut status. Jika state sudah benar kita ubah menjadi false dan sebaliknya.
if (kontinuitas> = 3 && state == false) {state = true; kontinuitas = 0; Serial.println ("Light Turned ON"); delay (1000);} if (kontinuitas> = 3 && state == true) {state = false; kontinuitas = 0; Serial.println ("Lampu Dimatikan"); penundaan (1000);}
Detektor Peluit Arduino Bekerja
Setelah kode dan perangkat keras siap, kami dapat mulai mengujinya. Pastikan koneksi sudah benar dan nyalakan modul. Buka monitor serial dan mulai bersiul, Anda dapat melihat nilai kontinuitas bertambah dan akhirnya menyalakan atau mematikan Lampu. Contoh snap shot dari monitor serial saya ditampilkan di bawah.
Ketika serial monitor mengatakan Light menyala maka pin 13 akan dibuat high dan relay akan terpicu untuk menyalakan Lamp. Demikian pula lampu akan dimatikan ketika monitor serial mengatakan Lampu dimatikan . Setelah Anda menguji kerjanya, Anda dapat menyalakan pengaturan menggunakan adaptor 12V dan mulai mengontrol Peralatan Rumah Tangga AC Anda menggunakan peluit.
Pekerjaan lengkap proyek ini dapat ditemukan di video yang ditautkan di bawah ini. Harap Anda memahami tutorialnya dan menikmati mempelajari sesuatu yang baru. Jika Anda memiliki masalah dalam menyelesaikan sesuatu, tinggalkan di bagian komentar atau gunakan forum kami untuk pertanyaan teknis lainnya.