Tutorial Arduino mengakses sensor suara

By | February 2, 2017

Penjelasan Singkat

Sensor suara merupakan sensor yang mensensing besaran suara untuk diubah menjadi besaran listrik. Sensor ini bekerja berdasarkan besar kecilnya kekuatan gelombang suara yang diterima. Dimana gelombang suara tersebut mengenai membran sensor, yang menyebabkan bergeraknya membran sensor yang memiliki kumparan kecil sehingga menghasilkan besaran listrik. Kecepatan bergeraknya kumparan kecil tersebut menentukan kuat lemahnya gelombang listrik yang akan dihasilkan. Salah satu contoh komponen yang termasuk dalam sensor ini adalah condeser microphone atau mic. Bentuk fisik dari condeser mic yaitu berbentuk bulat dan memiliki kaki dua, dapat dilihat seperti gambar dibawah ini

Condeser Mic

Prinsip Kerja Condeser

Condenser mic bekerja berdasarkan diafragma atau susunan backplate yang harus tercatu oleh listrik membentuk sound-sensitive capacitor. Gelombang suara yang masuk ke microphone akan menggetarkan komponen diafragma ini. Letak dari diafragma ditempatkan di depan sebuah backplate. Susunan dari elemen ini membentuk sebuah kapasitor yang biasa disebut juga kondenser. Kapasitor memiliki kemampuan untuk menyimpan muatan maupun tegangan. Ketika elemen tersebut terisi dengan muatan, medan listrik akan terbentuk di antara diafragma dan backplate, yang dimana besarnya itu proporsional terhadap ruang yang terbentuk diantaranya. Variasi akan lebar space antara diafragma dengan backplate terjadi dikarenakan adanya pergerakan diafragma relatif terhadap backplate yang disebabkan oleh adanya tekanan suara yang mengenai diafragma. Hal ini akan menghasilkan sinyal elektrik dari gelombang suara yang masuk ke condenser microphone.

Skema dari Condeser Microphone

Karakteristik dari Condeser Mic

  • Susunannya lebih kompleks dibanding dengan jenis microphone lainnya seperti dibanding dengan dynamic Microphone
  • Pada frekuensi tinggi, akan menghasilkan suara yang lebih halus dan natural, serta sensitivitas yang lebih tinggi
  • Mudah akan mencapai respon frekuensi flat dan memiliki range frekuensi yang lebih luas
  • Ukurannya lebih kecil dibanding dengan jenis tipe mikrophone lainnya

Pada pasaran sudah dijual sensor suara menggunakan condeser mic ini dalam bentuk modul, sehingga mudah dan praktis dalam penggunaannya.

 

Modul Sensor Suara

Spesifikasi dari modul sensor suara antara lain

  • Sensitivitas dapat diatur (pengaturan manual pada potensiometer)
  • Condeser yang digunakan memiliki sensitivitas yang tinggi
  • Tegangan kerja antara 3.3V – 5V
  • Terdapat 2 pin keluaran yaitu tegangan analog dan Digital output
  • Sudah terdapat lubang baut untuk instalasi
  • Sudah terdapat indikator led

Bahan yang diperlukan untuk tutorial kali ini antara lain :

Tutorial Pertama

Pembacaan sinyal Digital output

 

Skema yang perlu dirangkaikan

Untuk contoh kode pemrogramannya :

Catatan : setting terlebih dahulu sensitivitas sensor dengan memutarkan potensiometer yang tersedia pada modul.

Tutorial Kedua

Pembacaan sinyal tegangan analog

 

Skema yang perlu dirangkaikan

Program atau code

Pada tutorial kedua diatas sama memiliki kelebihan dan kekurangan masing – masing. Tutorial pertama tidak bisa mengetahui nilai dari suara yang telah ter-sensing hanya dapat mendeteksi nilai 1 atau 0. Tutorial kedua dapat mengetahui nilai dari suara yang ter-sensing hanya saja memerlukan pin khusus ADC agar dapat membaca nilai keluaran.

>> CMIIW <<

37 thoughts on “Tutorial Arduino mengakses sensor suara

  1. kira

    mf gan,sya mau nnya..
    kbtulan sya pnya sensor suara dfrobot 0034 v2 nih,apkah listing program diatas bisa digunakan unt sensor suara dfr 0034 v2 ?

    Reply
    1. Ratna Pratiwi Post author

      Secara fungsi hampir sama,
      diaksesnya menggunakan fitur pin ADC, mengubah sinyal analog menjadi sinyal digital,
      next saya buatkan artikel yang menggunakan penampil LCD yang menunjukan bar sinyal, dari implementasiin sensing sensornya,

      thanks sudah berkunjung.

      Reply
  2. Arianto

    pin khusu adc gimana gan maksudnya.?
    bisa tolong diperjelas gan.?

    Reply
  3. daim

    saya mau nanya gan, apakah sensor suara mic condenser ini bisa di setting perintah nya gaqn,
    contoh, menghidupkan lapu dengan tepukan tangan peritah, tepukan tangan 1 kali gan, dan apakah bisa mematikan lampu dengan tepukan tangan 2 kali gan, mhon bantuannya gan…??
    terimaksih…..

    Reply
    1. Ratna Pratiwi Post author

      bisa aja gan,
      pake metode sampling, counter, sama timer kalo ada kasusnya seperti itu,

      jadi perlu dilakukan trial, buat tingkat dB suara yang ditimbulkan oleh tepuk tangan itu, (sampling)
      kemudian diberikan syarat/kondisi, jika memenuhi masuk ke counter, dan di counter diberikan timer, kemudian action
      misal action ny nyalakan lampu atau matikan lampu,

      untuk project itu, kapan2 bisa dibuatkan artikelnya,
      thanks sudah berkunjung

      Reply
  4. reva

    kalo boleh tau, satuan dari keluaran yang di hasilkan sensor suara itu apa?sudah menjadi desibel atau bagaimana?trims.

    Reply
    1. Ratna Pratiwi Post author

      Keluaran dari module sensor suara itu, tegangan analog
      range tegangannya dari 0-5volt (sesuai dengan nilai vcc input maksimum),

      kalo ingin dijadikan desibel, perlu dikonversi dulu melalui fitur ADC (Analog Digital Converter)
      kemudian diolah dijadikan itu, dengan acuan dibandingan dengan sensor suara yang sudah terkalibrasi,
      sehingga didapat kan rumus yang pas,

      yang dimasukan ke dalam program yang akan dibuat,

      thanks sudah berkunjung.

      Reply
      1. reva

        misalkan,itu keluaran dari serial monitor arduino,kan suka ada keluaran dalam bentuk angka, nah angka nya itu tuh terserah kan, apa bisa kita masukin angka yang bersifat desibel langsung didalam arduino?

        Reply
        1. Ratna Pratiwi Post author

          //ini contoh program sederhana untuk mengubah menjadi desibel

          int sensorValue = 0;
          const int analogInPin = A0;

          void setup() {
          Serial.begin(9600);
          }

          void loop() {
          sensorValue = analogRead(analogInPin);

          Serial.print(“sensor = ” );
          Serial.println(sensorValue);
          double db = (20. * log(10)) * (sensorValue / 5.);
          Serial.print(“db = “);
          Serial.println(db);

          delay(500);
          }

          Reply
          1. reva

            teh saya udah coba, yang teteh kasih. tapi hasil di monitor malah tinggi banget angka nya, misalkan nilai pembacaan sensor = 400 . dB nya menjadi 8000. seperti itu. solusi nya gimana kira kira teh?trimakasih.

          2. Ratna Pratiwi Post author

            oh, itu tinggal dimanipulasi dibagian rumusny saja,
            tetapi dengan beberapa kali sampling,
            jadi disarankan data sampling agak banyak misal 30x, sehingga rumus yg diperoleh lbh akurat dan.mendekati

          3. reva

            teh saya mau nanya lagi, untuk kodingan dari teteh saya ubah dikit untuk bagian db. double db = (10. * log(80 / sensorValue));
            hasil dari outputan misalkan
            nilai pembacaan sensor : 14
            dB : 16.04

            dari masalah tersebut apabila nilai pembacaan sensor nilai nya makin kecil dB makin membesar, malah terbalik. solusi nya bagaimana ya teh?makasih.

          4. Ratna Pratiwi Post author

            bisa dishare,
            nilai pengujian trial yg dilakukan,
            nnt saya buatkan rumusny yg pas,
            tp dlm arti saat pembacaan sensor suara dibandingkan dengan sensor suara yg sudah terkalibrasi

            jd penentuan rumusny, punya nilai toleransi kesalahan yg kecil

          5. reva

            nilai 80 disitu adalah nilai dari CompareSensor saya

  5. sandika

    maaf ka saya mau tanya, agar sensor suara ini mendeteksi suara sirine dari kendaraan darurat untuk sensitifitas sensornya disetting berapa ya?

    Reply
    1. Ratna Pratiwi Post author

      Untuk mengatur sensitivitasnya output “A0” itu dihubungkan ke voltmeter saja, (voltmeter digital)
      setelah itu dilakukan trial untuk objek yang akan dideteksi, dari situ bisa diatur parameter dengan memutar potensiometer
      Setelah ketemu settingan yang pas, dapat dihubungkan ke arduino, untuk di program lebih lanjut,
      thanks sudah berkunjung

      Reply
  6. sandika

    untuk tau parameter yang dihasilkan oleh potensiometer bagaimana caranya ka?
    kalau di tutorial ini kk pake suara apa?

    Reply
    1. Ratna Pratiwi Post author

      kalo output dari potensiometer untuk nilai tegangan analog,

      yang dimaksud dari pertanyaan ny seperti apa ya, bisa dijelaskan lagi,
      nnt saya coba bantu,

      Reply
  7. Angga wahyu

    Maaf gan mau tanya
    Kalau sorcodenya untuk kasus ini gimana ya

    Saya mempunyai 3 led(hijau,kuning dan merah),LCD,sensor suara,arduino uno r3,
    Jika dbny 80 yg nyala lampu hijau trus yg tmpil di lcd “gunakan earplug”,

    Jika 90db nyalanya kuning trus yg tmpil di lcd”gunakan ear muff”

    Jika dbny 100db nyalany merah trus yg tmpil di lcd “jangan bekerja”

    Itu gmana ya gan source code nya
    Mohon sharing ny gan ya

    Tka

    Reply
    1. Ratna Pratiwi Post author

      /* — http://www.ngarep.net — */

      //Inisialisasi pin
      int ledRed = 12; //untuk LED merah
      int ledYellow = 11; //untuk LED kuning
      int ledGreen = 10; //untuk LED hijau

      const int sensorPin = A0; //output dari sensor

      int sensorValue = 0; //Nilai default sensor
      double db;

      void setup() {
      //inisialisasi i/o
      pinMode(ledRed, OUTPUT); pinMode(ledYellow, OUTPUT); pinMode(ledGreen, OUTPUT);
      Serial.begin(9600);
      }

      void loop() {
      sensorValue = analogRead(sensorPin); //Pembacaan sensor
      Serial.print(“Nilai pembacaan sensor: “); //menampilkan nilai pembacaan sensor di serial monitor
      Serial.println(sensorValue);

      db = (20. * log(10)) * (sensorValue / 5.); //konversi nilai sensor analog ke decibel
      Serial.print(“db = “); //menampilkan nilai pembacaan sensor di serial monitor
      Serial.println(db);

      //untuk indikator db dengan kondisi diatas 60 – 80 DB
      if( 60 >= db && 80 < = db){ digitalWrite(ledGreen, HIGH); digitalWrite(ledYellow, LOW); digitalWrite(ledRed, LOW); Serial.println("gunakan earplug");} delay(500); //untuk indikator db dengan kondisi diatas 80 - 90 DB if( 80 >= db && 90 < = db ){ digitalWrite(ledGreen, LOW); digitalWrite(ledYellow, HIGH); digitalWrite(ledRed, LOW); Serial.println("gunakan earplug");} delay(500); //untuk indikator db dengan kondisi diatas 90 - 100 DB if( 90 >= db && 100 <= db ) { digitalWrite(ledGreen, LOW); digitalWrite(ledYellow, LOW); digitalWrite(ledRed, HIGH); Serial.println("gunakan earplug"); } delay(500); ////untuk indikator db dengan kondisi dibawah 60Db if( 60 < db) { digitalWrite(ledGreen, LOW); digitalWrite(ledYellow, LOW); digitalWrite(ledRed, LOW); Serial.println("Aman"); } delay(500); }

      Reply
  8. MRX

    Halo ka, mau tanya nih klo misalkan mendeteksi frekuensi suara bisa ngga dgn sensor ini ? Sya mau coba buat gitar tuner soalnya, hehe
    Terimakasih

    Reply
    1. Ratna Pratiwi Post author

      haloo, bisa banget itu
      yg pntg dipastikan sensor suarany kualitasny bagus,

      jadi carany membandingkan suara kunci gitar yg sudah bener2 sesuai,
      kemudian sensor suara dipasang ke mikrokontroler dengan mode adc
      kemudian downloadkan program awal pembacaan adc, catat.nilai yg muncul per.chord biasa pake range,
      kemudian buat program baru dengan fungsi “if” sesuai range nilai pembacaan td,

      Reply
      1. MRX

        Sya sudah ada program ny, sya juga coba pake modul mic sperti gambar diatas, tpi stelah dicoba ngga ada pengaruhnya atw tdk terdeteksi frekuensinya, apa modul ini kurang bagus ?

        Reply
        1. Ratna Pratiwi Post author

          ada kemungkinan juga seperti.itu, saya udah ada persiapan artikel tentang pembuatan rangkaian sensor suara menggunakan 2 transistor yg lebih efektif,
          untuk itu di subcribe dulu aja ya,
          thanks

          Reply
  9. syaikalrahman

    cara untuk menampilkan nilainya di LCD? atau listing kode nya agar keluaran dari sensor tampil di LCD, mohon bantuannya

    Reply
    1. Ratna Pratiwi Post author

      iya boleh, nnt mlm saya buatkan artikelny itu sekaligus pengaplikasikanny di ruang perpustakaan secara sederhana,
      thanks sudah berkunjung

      Reply
  10. Akbar

    Misi kak, klo output keluaran nilai desibelnya disimpen gt bisa ga ya?(semacam data logger gt)
    Trimakasih

    Reply
    1. Ratna Pratiwi Post author

      iyaa, bisa
      mungkin coba di subcribe dulu saja web ini, saya coba buatkan contoh artikelnya buat itu

      Reply
      1. Akbar

        misi kak,saya udah coba codingannya. kok nilai yg kebaca dari sensor suara 1023 terus ya?

        Reply
        1. Ratna Pratiwi Post author

          kalo kebaca 1023, itu artiny nilai high saja yg terbaca, tidak continuos,

          ada kemungkinan sensorny rusak, ato pengaturan sensor lewat pot yg kurang pas,

          saranku coba buat, sensor suara di artikel.saya yg terbaru, itu lbh stabil.

          Reply
  11. Akbar

    misi kak,saya udah coba codingannya. kok nilai yg kebaca dari sensor suara 1023 terus ya?

    Reply
  12. Angga Wahyu Pradana Siregar

    dear Mbak Ratna,

    Terima kasih atas pengetahuannya,

    jika nilai dbnya di tampilakn di LCD bagaimana mbak ya,
    perlu memasukkan include mbak ya
    =========================
    #include
    #include
    #include

    #define I2_ADDR 0x27
    #define BACKLIGHT_PIN3
    #define En_pin 2
    #define Rw_pin 1
    #define Rs_pin 0
    #define D4_pin 4
    #define D5_pin 5
    #define D6_pin 6
    #define D7_pin 7
    ====================
    kasusnya sama mbak seperti sebelumnya tetapi dengan tambahan
    nilai DB tampil di LCD

    maaf mbak banyak Tanya soalnya masih new bie
    sudah searching juga tapi masih belum nemu

    ini rumusnya dari analog (sensor suara) ke db mbak ya
    db = (20. * log(10)) * (sensorValue / 5.); //konversi nilai sensor analog ke decibel

    terima kasih

    Reply
  13. Angga Wahyu Pradana Siregar

    itu sudah saya baca,
    tapi masih belum paham,
    ini tidak menggunakan push button
    hanya menangkan sensor suara(ADC) ke dalam LCD

    =============
    Serial.print(“Nilai pembacaan sensor: “); //menampilkan nilai pembacaan sensor di serial monitor
    Serial.println(sensorValue);

    db = (20. * log(10)) * (sensorValue / 5.); //konversi nilai sensor analog ke decibel
    Serial.print(“db = “); //menampilkan nilai pembacaan sensor di serial monitor
    Serial.println(db);
    ================

    penangkapan data sensor suara(ADC) decibel di tampilkan ke LCD

    untuk proses sensor suara(ADC) yang di tampilakn ke LCD perlu konversi ya mbak,

    ***************************************************************************
    maaf boleh Tanya lagi
    membuat aplikasi unutk menerima data serial yang dikiri, dari Arduino (menggunakan sensor suara) ke Komputer/Laptop dengan menggunakn VB

    pernah mencoba apa tidak atau mbaknya punya referensi

    terima kasih

    Reply
    1. Ratna Pratiwi Post author

      oh, itu lbh simpel
      kalo mau ditampilin di lcd, ada 2 cara gunain i2c pcf8574 ato langsung dihubungin ke pin (efekny boros pin)

      tp misal gunain i2c lcd, harus download library dan di ekstrak ke libraries software arduino ny,
      kemudian dihubungkan (wiring semua), cek alamat i2c lcd ny dulu
      kemudian ditampilkan di serial monitor
      hbs itu dicatat, dan alamat itu dimasukan ke program lcd,

      dan dipasangkan sensorny, kemudian sesuaiin dulu data variabelny, dan dibuat total program
      dan bisa ditest

      untuk jelas, nnt mlm saya buatin,

      untuk visual basic belum prnh coba,

      Reply

Leave a Reply