Esta es una tarea bastante simple para un DSP (Digital Signal Processor) como la familia dsPIC de Microchip. El DSPIC33FJ32GP102 por ejemplo, con 32KB de flash y 2KB RAM, cuesta $ 3.19 en cantidades individuales en un paquete DIP fácil de usar.
La forma más eficiente de detectar tonos como este es usar Algoritmo de Goertzel .
Microchip proporciona una biblioteca para los procesadores dsPIC para detectar frecuencias DTMF que he utilizado con éxito en un proyecto. Utiliza el algoritmo de Goertzel para detectar dos tonos simultáneos, seleccionados a partir de 16 frecuencias de hadas espaciadas juntas (unos pocos cientos de Hz). Por lo tanto, su situación es aún más simple, ya que solo necesita buscar un tono (o puede usarlo tal como está para DTMF). Se proporciona el código fuente completo para la biblioteca para que pueda modificarlo según sus necesidades, incluido Goertzel.s
Según lo establecido, la biblioteca utiliza una tolerancia de ± 1.5% para validar las frecuencias (± 1.5 Hz para el tono de 100 Hz, ± 15 Hz para 1 kHz y ± 150 Hz para 10 kHz); y 40 ms mínimo para detectar un tono. Estos parámetros deberían ser bastante fáciles de modificar.
El 1.5% de porcentaje sería necesario si se mantuviera con los tonos DTMF, ya que están bastante cerca (cientos de Hz), pero si tuviera que usar sus 100 Hz, 1kHz y 10kHz, entonces ± 10% debería ser factible.
Aquí hay un proyecto que alguien hizo para detectar Sirenas de ambulancia utilizando un dsPIC. (Utilizó FFT en lugar de Goertzel, pero sigue siendo una lectura interesante).
Tenga en cuenta que si aún no tiene un circuito para generar los tonos, puede usar un segundo dsPIC para eso. Microchip tiene una biblioteca de envío DTMF además de la recepción DTMF que podría modificar (ya sea para usarlo como está para DTMF o para modificar un solo tono).