使用LM393声音传感器检测声音频率

我正在使用声音传感器模块LM393来检测Raspberry Pi 3 B +型设置中打的声音频率,该频率发生在300-500Hz左右。我的小型项目的范围是检测特定范围内的声音,然后将其发送到Firebase实时数据库,以后我可以从该数据库中将其用于Web应用程序前端。当前,LM393传感器检测到使用其内置功能已校准的任何声音,并将该消息发送到firebase。

#!/usr/bin/python
import RPi.GPIO as GPIO
from time import sleep
import datetime
from firebase import firebase
import urllib2,urllib,httplib
import json
import os 
from functools import partial

GPIO.setmode(GPIO.bcm)
GPIO.cleanup()
GPIO.setwarnings(False)

#GPIO SETUP
channel = 24
GPIO.setmode(GPIO.bcm)
GPIO.setup(channel,GPIO.IN)

firebase = firebase.FirebaseApplication('....',None)

def update_firebase():
    print('Sound Detected')
    data = {"Sound": "Sound Detected"}
    firebase.post('/sensor/sound',data)

def update_firebase2():
    print('Sound Detected')
    data2={"Sound": "Sound Not Detected"}
    firebase.post('/sensor/sound',data2)


def callback(channel):
    if GPIO.input(channel):
            update_firebase()
    else:
            update_firebase2()

GPIO.add_event_detect(channel,GPIO.BOTH,bouncetime=300)  # let us know when the pin goes HIGH or LOW
GPIO.add_event_callback(channel,callback)  # assign function to GPIO PIN,Run function on change

# infinite loop
while True:
        callback(channel)
        #sleepTime = int(sleepTime)
        sleep(10)
lucas0421 回答:使用LM393声音传感器检测声音频率

您不能使用lm393传感器检测声音的频率。因此,无论您使用哪种软件,都无法检测频率。但是,通过更改电位器值,可以更改可以检测声音的范围或阈值。

  

此传感器仅识别声音的可用性,无法识别   声音的大小或声音的特定频率。

参考:https://robu.in/product/lm393-sound-detection-sensor-module-black/

使您的问题复杂化的是,您试图检测打a的声音,该打is是声音的混合物。这不是一个简单的正弦波,而是一个复杂的函数。如果要检测正弦波的频率,那将是一个简单的问题。自然声音很复杂,并且是在声音持续时间内变化的频率的混合体。为此,您需要进行傅立叶变换和称为FFT的东西。

您将不得不将声音“分解”为各个频率,并测量或可视化各个频率。

本文链接:https://www.f2er.com/3104044.html

大家都在问