Sensor suara KY-037 3 pin Analog out

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:

  1. Kondisikan lokasi hening/minim suara
  2. Baca adc dan tampilkan di serial monitor
  3. 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(F("https://www.semesin.com/project"));
  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)
}