Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用arduino的“大声音”模块创建分贝计_Arduino_Iot_Microphone_Esp8266_Nodemcu - Fatal编程技术网

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

使用arduino的“大声音”模块创建分贝计,arduino,iot,microphone,esp8266,nodemcu,Arduino,Iot,Microphone,Esp8266,Nodemcu,我正在尝试创建一个声音计来测量房间中的分贝,目前我正在使用nodemcu 12e,因为我想在mySQL服务器和一个大的声音模块中插入这些测量值 到目前为止,我所取得的唯一成就是获得传感器的原始值,因为它们似乎没有改变,尽管我试图通过转动麦克风上的螺钉来调整增益,但没有结果,因为即使在播放响亮的音乐时,它似乎也保持在相同的值 它似乎对巨大的噪音有反应,拍手使输出尖峰-允许我控制点亮连接的led: #include <ESP8266WiFi.h> #include <WiFiCli

我正在尝试创建一个声音计来测量房间中的分贝,目前我正在使用nodemcu 12e,因为我想在mySQL服务器和一个大的声音模块中插入这些测量值

到目前为止,我所取得的唯一成就是获得传感器的原始值,因为它们似乎没有改变,尽管我试图通过转动麦克风上的螺钉来调整增益,但没有结果,因为即使在播放响亮的音乐时,它似乎也保持在相同的值

它似乎对巨大的噪音有反应,拍手使输出尖峰-允许我控制点亮连接的led:

#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之间:

正如你们所看到的,在鼓掌时,我得到了一个值的峰值


问题是,在播放响亮的音乐时,这些值根本不会改变,只有当它检测到像拍手这样的响亮噪音时,才会得到不同的值。如何更改代码或系统以获取分贝值?

此麦克风模块可能无法运行此功能

mdule充当开关。开关阈值由麦克风模块板上的电位计设置

你需要的是一个低电平的麦克风。然后你会得到一个从0无噪声到1023大噪声的输入范围。然后,该值可以映射为分贝。但再次强调,本模块不适用

问候
Harry

要通过模拟0输入读取音频信号流,您需要一块具有模拟输出的电路板。你正在使用的电路板有一个数字输出,每当它的阈值超过你在电位计上设置的限制时,它就会输出一个信号是的,你正在移动的电位计只需设置麦克风输出数字脉冲时的限制

所以你有你应该购买另一个麦克风一样


您拥有的话筒只会告诉您是否有声音。

嘿,即使您建议的话筒带有模拟输出,我仍然会得到与问题作者相同的结果,即恒定流,只有当我直接敲击话筒上的手指时才会改变。有什么建议吗?也许麦克风的灵敏度设置得太低了。你必须通过转动电位计来调整它,电位计通常是一个顶部有螺丝的蓝色盒子。你用的是哪种型号的话筒?我用的是模拟输出的KY-038。试图转动电位计,但仅改变恒定值流中出现的数字: