2016-07-23 33 views
3

Ich versuche, einen Schallmesser zu erstellen, um die Dezibel in einem Raum zu messen, und ich verwende derzeit ein nodemcu 12e, wie ich diese Maße in eine Zeile einfügen möchte in einem mySQL-Server und einem "großen Sound-Modul" (https://tkkrlab.nl/wiki/Arduino_KY-038_Microphone_sound_sensor_module).Verwenden eines "großen Klang" -Moduls mit Arduino zum Erstellen eines Dezibelmessers

Sound detection schematics

Das einzige, was ich bisher erreicht haben, ist die Rohwerte des Sensors zu erhalten, da sie nicht zu ändern scheinen, obwohl ich die Verstärkung Drehen der Schraube in das Mikrofon einzustellen versucht haben, , ohne Ergebnis, wie es scheint, in den gleichen Werten zu bleiben, auch wenn laute Musik gespielt wird.

Es auf laute Geräusche zu reagieren scheint, und Klatschen macht die Ausgabe von bis zu Spike - erlaubt mir, dass die Beleuchtung zu steuern führte die Verbindung:

#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); 
    } 
} 

ich den Analogwert des Sensors lese und ich versuchte, die niedrigeren Werte zu erhalten, wie gesehen, versuchte ich das Mikrofon zu kalibrieren. Die Werte, die ich ständig bin immer zwischen 19 und 20:

Obtained values

Wie Sie sehen können, auf Klatschen ich eine Spitze des Wertes erhalten.

Die Sache ist, dass die Werte überhaupt nicht ändern, wenn laute Musik spielt, nur unterschiedliche Werte zu erhalten, wenn es ein lautes Geräusch (wie Klatschen) erkennt. Wie kann ich den Code oder das System ändern, um die Werte in Dezibel zu erhalten?

Antwort

1

Mit diesem Mikrofonmodul wird das möglicherweise nicht ausgeführt.

Die Module fungieren als Schalter. Die Schaltschwelle wird durch das Potentiometer an Bord des Mikrofonmoduls eingestellt.

Was Sie benötigen, ist ein Low-Level-Verstärkermikrofon. Dann würden Sie einen Eingangsbereich von 0 (kein Rauschen) bis 1023 (lautes Rauschen) erhalten. Dieser Wert könnte dann Dezibel zugeordnet werden. Aber nochmal - nicht mit diesem Modul.

Grüße Harry