Arduino bot que puede encontrar una señal de sonido específica

5

Estoy trabajando en mi proyecto de diseño senior. Es un robot controlado por Arduino. Estoy tratando de descubrir la mejor manera de implementar la localización de sonido. Parece directo, al menos dos micrófonos, la señal de Fourier Transform, calcula la diferencia de fase.

Mi problema es que me gustaría poder concentrarme en una frecuencia en particular, por lo que no solo se trata de encontrar la fuente con la mayor amplitud. ¿Alguien tiene alguna recomendación sobre cómo hacer algo como esto? Nunca he usado micrófonos, ¿alguien puede recomendar uno bueno?

Me gustaría que tuviera un rango bastante decente, como una pequeña sala de estar o un dormitorio. Estoy pensando en usar una frecuencia muy baja para no tener que preocuparme por una tasa de muestreo tan alta.

Estoy usando un Arduino Uno para cualquiera que esté familiarizado con él. Estoy haciendo Ingeniería Informática, por lo que estoy bastante familiarizado con los términos de EE, pero todavía estoy aprendiendo sobre el procesamiento de señales este semestre, sé que debería usar un filtro de paso de banda de algún tipo, pero ¿cuál sería la mejor manera de hacerlo? / p>

Si conoces algún ejemplo que hayan hecho otras personas, o esquemas, sería muy útil.

    
pregunta Brad

2 respuestas

1

El " algoritmo de Goertzel " requiere menos recursos (RAM, espacio de código) y menos ciclos de CPU para una sola frecuencia específica.

Wiki tiene un buen conjunto de enlaces para profundizar.

He usado Goertzel en ATMega328P y P8X32A con excelentes resultados. Buena suerte con tu proyecto.

    
respondido por el Wossname
0

La mejor solución es utilizar la formación de haz acústico. Le sugiero que publique en el stackexchange de DSP pero le puedo dar algunos consejos.

La teoría básica es tener una matriz de micrófonos que separe los micrófonos 1/2 a una longitud de onda aparte (obviamente, la longitud de onda depende de la frecuencia de interés).

Esta matriz de micrófonos se puede usar para crear un filtro espacial. Es posible entonces escanear digitalmente buscando la dirección con la intensidad máxima de la señal. El algoritmo más simple se llama el método de demora y suma. Matlab tiene una caja de herramientas de matriz en fase conveniente para ayudar con la implementación.

Todavía hay algunos trucos de los que debe preocuparse, como el ancho de banda de la señal de entrada. Para la formación de haz, generalmente se necesita una banda estrecha para el procesamiento, por lo que es posible que necesite implementar un filtro de paso de banda en la señal acústica de entrada porque las señales acústicas son de banda ancha (20Hz - 20kHz).

Un buen recurso para comenzar: enlace

    
respondido por el Makoto

Lea otras preguntas en las etiquetas