I am working on a project where I want to use 3 electret microphones to triangulate the origin of a noise. I will add a 4th microphone for some additional accuracy. The microphones will be around 30cm apart from one another and I am looking for decent accuracy, so sampling speed will be very important. I want to triangulating the sound by capturing the difference in time from the microphones hearing the noise.
Example reading: mic1 = 0s => 0mm; mic2 = .1ms => 3.43mm; mic3 = 1ms = > 34.3mm
Using speed of sound through air at a given temp we turn this into distances and from knowing the position of the mics are we can find the original point through some linear algebra.
Due to proximity of the microphones to each other and accuracy goals of around than .1mm I would need to sample at a rate of around 10Msps.
speed_of_sound/sampling rate = possible distance traveled between samples 343,000/10*10^6 = .0343mm of tolerance due to sampling rate
From research online, this seems impossible for just an external ADC and Raspberry Pi 4. Typically I have read that the SPI between the ADC and the RPI is typically going to be slower than my goal.
I found the following post where someone got 380ksps but seemingly was slowed down by the SPI.
How to achieve a high sampling speed using an ADC with Raspberry Pi?
I was thinking about using an arduino MicroController to do this counting, but the onboard ADC is way too slow. So I am wondering, are there any microcontrollers like arduino that specialize in this type of thing? I do not need many inputs or output, just the 4 microphones attached to the microcontroller and then passing some info back and forth to the raspberry pi.