Sensor suara KY-037 pcb merah dan pcb biru memiliki perbedaan pada pin analog out.
Gambar KY-037 pcb merah:
Skema KY-037 pcb merah:
Gambar KY-037 pcb biru:
Output analog out pada prinsipnya adalah output mic setelah pre-amp. maka pada pcb biru yang tidak ada pin analog outnya bisa diambil pada titik berikut:
Jumper analog out:
Langkah kalibrasi koding arduino:
- Kondisikan lokasi hening/minim suara
- Baca adc dan tampilkan di serial monitor
- Tentukan rata-rata adc dan masukkan sebagai offset (tengah) dari sinyal analog suara
Contoh koding arduino uno untuk kalibrasi sensor ky037 pcb biru yang mengambil output analog out dari jumper sebelum comparator (jumper analog out ke pin A0 arduino uno):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | #define pinSensor A0 int analogOffset; int bacaSensor() { #define faktorTrim 0.2 //20% #define jumlahSampel 100 int buf[jumlahSampel]; int temp; int rataRata; for ( int i = 0; i < jumlahSampel; i++) { buf[i] = analogRead(pinSensor); delay(10); } //proses pengurutan (sorting) for ( int i = 0; i < jumlahSampel - 1; i++) { for ( int j = i + 1; j < jumlahSampel; j++) { if (buf[i] > buf[j]) { temp = buf[i]; buf[i] = buf[j]; buf[j] = temp; } } } //rata-rata (trimmed mean) rataRata = 0; for ( int i = jumlahSampel * faktorTrim; i < jumlahSampel * (1 - faktorTrim); i++) { rataRata += buf[i]; } rataRata /= jumlahSampel * (1 - (faktorTrim * 2)); return rataRata; } void setup() { Serial.begin(9600); Serial.println(F( "Sensor suara KY-037 3 pin Analog out" )); Serial.println(); //Kalibrasi analogOffset = bacaSensor(); Serial.print( "analogOffset = " ); Serial.println(analogOffset); } void loop() { int analogOut = bacaSensor() - analogOffset; Serial.print( "analogOut = " ); Serial.println(analogOut); delay(100) } |