2016-07-23 31 views
3

我想創建一個聲音計量器來測量房間中的分貝,我目前使用nodemcu 12e,因爲我想將這些措施插入一行在一個mySQL服務器和一個「大聲音模塊」(https://tkkrlab.nl/wiki/Arduino_KY-038_Microphone_sound_sensor_module)中。使用「大聲音」模塊與arduino創建一個分貝計

Sound detection schematics

到目前爲止,我已經實現的唯一的事情是讓傳感器的原始價值,因爲他們似乎沒有改變,雖然我試圖調節增益的麥克風轉動螺桿,沒有結果,因爲即使在播放嘈雜的音樂時,它仍然保持相同的值。

這似乎大聲喧譁反應,拍手使輸出秒殺了 - 讓我來控制照明瞭連接的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之間:

Obtained values正如你所看到的,在鼓掌,我得到的價值激增。

問題是,當嘈雜的音樂播放時,數值根本不會改變,只有當它檢測到巨大的噪音(如鼓掌)時纔會得到不同的值。我如何更改代碼或系統以獲取分貝值?

回答

1

您可能無法使用此麥克風模塊執行此操作。

該模塊充當開關。開關門限由話筒模塊板上的電位器設定。

您需要的是低級揚聲器。然後你會得到一個從0(無噪聲)到1023(巨大噪聲)的輸入範圍。這個值然後可以被映射到分貝。但是,再次 - 不是這個模塊。

Regards Harry