Direction of Arrival, Signal Processing

Hello everyone,

I hate to be that guy, but I just completed the starter-kit projects and while working on them I tried to already formulate a general direction or area of knowledge that I want to develop towards, as I go on.

I find signal processing and especially direciton of arrival projects extremely intriguing.

As an absolute newbie I would like to address you guys and solicit advice on how to best approach this - for me very difficult looking - subject.

Has some newbie gone this route before, somewhere? Is there some easy to understand intro material around? Should I not do this at all?

Kind regards and best wishes to everyone!


Find yourself an interesting project (as in: whatever you think is interesting and useful to you) and start chewing on it. That's the best way.

You know now how to read signals, do timing, etc. The fun of real world projects is that you have to apply all those basics in a new way, a way you may or may not find in books.

Also do try to break down your project, any project, in as small as possible parts, which in the end you combine to a big thing. A small thing is easy to debug, a big thing is easy to debug when you know the small things are by themselves working correctly. Also having 10 little successes along the way is much more rewarding and motivating than just that single big one at the end.

Sound localisation is doable with a microcontroller as things happen relatively slowly compared to the processor clock speed.

High speed stuff is more tricky.

Do you have a practical application in mind or are you just interested in learning?

The main thing to remember here is you'll need analogue samples from multiple sensors simultaneously, but you've only got one ADC.

It's hard to point to reference material without knowing your background. There's a wikipedia article for instance that gives the basic equations while the broad topic of digital signal processing is generally taught as a 3xx level engineering course with a calculus prerequisite.

The main thing to remember here is you'll need analogue samples from multiple sensors simultaneously, but you've only got one ADC.

Actually it is sufficient to have sequential samples from a single ADC with multiplexed inputs if one knows the time offset between sampling the individual channels. The conversion speed of the 8 bit Arduinos is a limitation.

I've done some experiments on this topic (acoustic direction finding) and my development approach was to use a 32 bit ARM processor to do the analog sampling and send that data to a PC for processing. This is not to say that it can't be implemented on less capable hardware, but starting with a big hammer allows one to focus on the core algorithms without spending effort on optimization. The ARM (STM32 "maple mini") has a much faster ADC than do the 8 bit Arduinos and native USB so Serial.print is much faster. Using a PC/python for the processing allows easy visualization of the raw and intermediate processed data.

Yes, but it's a slow one, and when you start sharing it around, Mr Nyquist gets a little squeezed.