使用带有arduino的“大声音”模块来创建分贝计

我正在尝试创建一个声音计来测量房间中的分贝,我正在使用nodemcu 12e,因为我想将这些度量插入mySQL服务器和“大声音模块”(
https://tkkrlab.nl/wiki/Arduino_KY-038_Microphone_sound_sensor_module)中的一行.

《使用带有arduino的“大声音”模块来创建分贝计》

到目前为止,我唯一能做到的就是得到传感器的原始值,因为它们似乎没有改变,虽然我试图调整增益来调整麦克风中的螺丝,没有结果,因为它似乎即使在播放嘈杂的音乐时也能保持相同的价值.

它似乎对大声的噪音做出反应,鼓掌使输出加速 – 允许我控制连接灯的照明:

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

const char* ssid = "yourssid";
const char* password = "yourpass";

ESP8266WebServer server(80);

const int led = 13;

int sensorPin = A0; // select the input pin for the potentiometer
int ledPin = D7; // select the pin for the LED
int sensorValue = 0; // variable to store the value coming from the sensor

void setup(void){
  pinMode(led, OUTPUT);
  digitalWrite(led, 0);
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  Serial.println("");

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  if (MDNS.begin("esp8266")) {
    Serial.println("MDNS responder started");
  }

  });

  //SETUP SOUND SENSOR 
  pinMode (ledPin, OUTPUT);
}

void loop(void){
  sensorValue = analogRead (sensorPin);
  Serial.println (sensorValue);//, DEC);
  if (sensorValue > 100){
    digitalWrite (ledPin, HIGH);
    delay (1000);
    digitalWrite (ledPin, LOW);
  }
}

我正在读取传感器的模拟值,我试图获得较低的值,因为我正在尝试校准麦克风.我不断得到的价值在19到20之间:

《使用带有arduino的“大声音”模块来创建分贝计》

正如你所看到的,在拍手时我得到了价值的高峰.

问题在于,当播放嘈杂的音乐时,这些值根本不会改变,只有在检测到巨大的噪音(如拍手)时才会获得不同的值.如何更改代码或系统以获得分贝值?

最佳答案 您可能无法使用此麦克风模块运行此功能.

mdule充当开关.切换阈值由麦克风模块的板上电位器设定.

你需要的是一个低级放大的麦克风.然后你会得到一个从0(无噪音)到1023(高噪音)的输入范围.然后可以将该值映射到分贝.但是再次 – 不是这个模块.

问候
掠夺

点赞