Frequency detector

Hi everyone,

I need to create a device that differentiates several continuous whistles at different frequencies in order to classify alarms sounds in a plane's cabin.

I have read LM567 could work but apparently it has only one threshold but as I said I would need to classify several sounds.

Do you know if I could do that with the analog output given by the LM567 or with the KY-038? If you have any advices, I would really appreciate them.

Thanks in advance.

This is a very difficult task in a noisy environment, but you could try with several LM567s, set to different frequencies.

Of course you will need a decent microphone and preamplifier, such as this one from Sparkfun.

I assume there's an associated warning light or something electrical you can tap-into? Or, assuming that each of these warning systems has it's own-separate buzzer/sounder, you can tap-into that signal.

I wouldn't trust sound detection. It's not as easy as you might think when you've got noise/other sounds or when the loudness can vary. Just as an example, you can listen to a song and you can hear the singer and the guitar and you can tell the difference. A computer can't do that... A computer can't remove the guitar from the recording without "damaging" or removing the vocals and other instruments.*

The audio alarms are for humans. What is the Arduino going to do with the information?

I've never used an LM567, but it looks like you'd need one for each tone/frequency. You can also build filters with op-amps or use [u]FFT[/u]/FHT in software.

  • There are "vocal removal" techniques, but these mostly rely on left/right/center location in a stereo recording and they don't work that well.

I guess these things are usually done by analysing data, not analysing a signal in real time. Let the processor take care of it instead of a bunch of LM567:s andmessy circuits. I mean, you have to record some data, like 10000 samples, then perform some arithmetics on the data. 10000samples is like 200 milliseconds. An Arduino like microcontroller may not have enough calculating power for this, but perhaps a Raspberry Pi has.