Go Down

Topic: Trying to find out the direction from which a sound is coming from. (Read 1 time) previous topic - next topic

so for my A-level computing project i have decided to make an owl that will have several microphones, probably four, then i shall use the arduino board to look at the inputs from the microphones to find the postition of the sound within the rooom. then a motor is likley to drive the head of the owl to make it face the source of the sound, so it should look at anyone who is talking and creep them out a bit. however to do this i would have to not only compare the amplitude of each microphone but also the delay between the peaks, does anybody happen to know weather the arduino board can sample the microphones fast enough to do this? -Thanks for any help.


I am really interested in your project and would like to know as well. I can tell you, you will probably need these, https://www.sparkfun.com/products/9964 a basic microphone with a opamp.


The Arduino can be used to locate sounds. But a lot may depend on what sound you are trying to locate and in what environment. Locating a human voice in a noisy environment would be a completely different task to locating a pre-determined signal at a known frequency in a quiet location.

Here is a good article on how humans and other animals locate sounds.

If you have four microphones around the owl and the owl acustically shades each microphone from sound coming from behind it, then, in a quiet room, I imagine you could get within 45degrees of the source just using volume.

Owls cannot move their eyes (the muscles required would be too large) so they have to rotate their heads.
If you had an InfraRed sensor that might then fine tune you onto the target, but again it depends on the environment e.g. radiators or other hot spots.

Leon Heller

The standard technique for that is beamforming. It needs a lot of processing power, however.
Leon Heller


Easiest method is to use zoning. For each zone you need a microphone, op-amp and analogue channel. The analogue part will be the most annoying part. an analogue multiplexer IC will do the job nicely though.

Just cycle through the analogue pins and take a rolling average of each pin's (Root Mean Squared) value. This should approximate the volume on each mic. So long as you partially shield the microphones, it should be quite directional.

If you use maybe 16 microphones, that needs:

1x Arduino
2x 8 way analogue multiplexer IC
4x quad op-amp IC

various resistors for balancing op-amps etc.

Enough to look impressive in a breadboard, but not too hard, or expensive to build.


Owls cannot move their eyes (the muscles required would be too large) so they have to rotate their heads.

Wow, I never knew that!
I only provide help via the forum - please do not contact me for private consultancy.


First try doing a little geometry. Get out some graph paper and your calaculator
[with sine,tangent keys], and figure out the time difference in sound impingement
on 2 microphones placed about an owl's head size apart. And assuming sound
velocity is about 1100 ft/sec.

You will find the time difference is about 300 usec max [sound source to the side],
and much less for angles towards the front. If you do envelope detection differencing
as a first cut at a measurement, you'll probably find the Arduino A/D converter is a
little too slow for the job.


It is quite easy


I can give anyone the sketch and circuit.

Go Up