Ready to add audio to your next project? This small breakout board couples a small electret microphone with a 100x opamp to amplify the sounds of voice, door knocks, etc loud enough to be picked up by a microcontroller's Analog to Digital converter. Unit comes fully assembled as shown. Works from 2.7V up to 5.5V.
This skill defines how difficult the soldering is on a particular product. It might be a couple simple solder joints, or require special reflow tools.
Skill Level: Noob - Some basic soldering is required, but it is limited to a just a few pins, basic through-hole soldering, and couple (if any) polarized components. A basic soldering iron is all you should need.
See all skill levels
If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.
Skill Level: Rookie - You will need a better fundamental understand of what code is, and how it works. You will be using beginner-level software and development tools like Arduino. You will be dealing directly with code, but numerous examples and libraries are available. Sensors or shields will communicate with serial or TTL.
See all skill levels
If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.
Skill Level: Noob - You don't need to reference a datasheet, but you will need to know basic power requirements.
See all skill levels
We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.
Based on 5 ratings:
1 of 1 found this helpful:
It's convenient to have a mic with the amp cleanly although I've been trying to make an intercom system with no success, not the mics fault of course , but I have yet to rate the audio quality. One thing I can say is that the board itself is sturdy and forgiving with heat,when I soldered on the connections i was using an iron that got too hot and I had no experience with soldering so I spent some time with the iron very close to the board and connections and nothing was burned or damaged!
2 of 2 found this helpful:
I carefully wired a pair of these into a dynamic voice mic for recording family history in our church group. The audio you can get frim these little mics really good. I was very surprised that this little board could produce pro quality sound. Definitely recommended!
1 of 2 found this helpful:
This microphone was exactly what I needed to design a digital filter using an ARM processor. It worked on the first try without giving any problems at all. Great product!
I needed an adjustable microphone pre-amp and needed it quickly. This board isn't adjustable but I was able to remove C1 and replace it with two caps and a pot and get what I needed. Without modification the OPA344 will clip. This isn't a problem if you want to use the device as a binary sound detector but it's unacceptable if you care about the quality of the audio. I can recommend this device for a quick and easy way to sense sound and with modifications for use as a simple powered microphone.
This tiny pcb with components on the back and microphone on the front, is simply super for example Arduino projects where you want to record or measure sound.
Here's how to wire this thing:
AVD to arduino analog input channel
GND to 5k resistor to arduino ground
VCC to arduino 5V
This gives an analog input value of about 750 when it's quiet. When there is noise, the value fluctuates around 750 by an amount proportional to the volume. So to get volume, use the equation
This is enough to make a sound switch with a reasonably controllable threshold.
wiring diagram
Here is some practical info on this unit. I have no particular expertise in sound engineering but did have to make a VU-meter (volume-level LED bar-graph) project a while ago and learned a lot. If you're anything like me, this should help you decide whether this board is for you.
If you hook this unit up to your analog input, you'll get readings all right, and they will go up and down in response to sound, and they will look OK and usable at first glance. BUT if you try to use those numbers directly to drive a VU-Meter or something, you'll drive yourself batty on a wild goose chase seeking the right values and thresholds and stuff! The unit is not malfunctioning.
This board is actually outputting an analog waveform that is representative of the incoming sound. This is NOT the same as "volume" or "loudness"! (To novices - like me - this is not intuitive, especially from the description.)
From my limited understanding, to get "volume" (Sound Pressure Level) from this unit would require:
Readings from sensor + High Sampling Rate + Calculus = Sound Pressure Level
Don't ask me how to do that because I have no idea. (Probably things like this is why sound processing is a whole separate branch of engineering.)
In short, if you want to give your project ears so that you can just tell it:
soundLevel = analogRead(audioPin);
if (soundLevel > 1000) { Serial.println("SUPER LOUD!!"); }
if (soundLevel > 512 ) { Serial.println("Pretty Loud"); }
if (soundLevel > 127 ) { Serial.println("Normal"); }
if (soundLevel < 100 ) { Serial.println("Ignoring.."); }
This unit will NOT do that.
Instead you probably want the ZX-Sound (others' suggestions) or the Phidgets Sound Sensor (which I used, just putting the output directly to my ADC and using the raw values, which by the way probably uses only a fraction of what that board's capable of, but it worked great.)
I'm having difficulty getting my mic to output consistent values (I'm interfacing with an Arduino). I already bought another one just to see if the first was defective, but they behave the same. I get strange periodic noise (0V and 5V) in the output.
Here's an example of the values in a quiet environment:
638
610
594
586
576
571
0
0
1004
686
628
604
590
581
578
0
0
0
858
780
636
608
593
582
576
572
0
0
1018
672
626
601
589
586
575
569
Could the noise have to do with the Arduino or sampling rate or is there something wrong with the mic board?
Chances are you got the wiring wrong.
This is a good breakout! I get a nearly full swing from minimum to maximum ADC value when speaking into it at normal volume. Here's a plot of the ADC response from me saying "Mississippi one, Mississippi two", using 8-bit conversion, 5V Vcc, 5V ADC reference voltage, and as high a sampling frequency as I could muster on an ATmega328P.
You can see that it covers almost the whole 8-bit range from 0 to 255. The mean value is only slightly offset from the ideal of 127, being around 150... this is easy enough to adjust for with some calibration code.
My only complaint is that I wish they'd used a microphone with a slightly better low-frequency response... this one rolls off below about 100Hz, which is not ideal for working with human speech... I would rather it went down to about 20Hz. Jameco sells such mics for only pennies more than the 100Hz+ mics, so I suppose I could replace the mic on this board with one of those.
That looks awesome. I just bought this breakout for my student design project. I'm looking for a way to plot the ADC response from a cough sound. I was wondering if I could get some help, do you think you can post the source code for making this plot?
OK - I also got this to work as a rudimentary SPL (decibel) meter. I used a picaxe chip 18M2.Code below :
output C.6
input B.4
low C.6
do readadc B.4, b1 if b1 > 140 then high c.6 debug ;sertxd ("b1 is ", #b1, CR, LF) low c.6
end if
loop
You may have to play around with that 140 number depending on if your kids are singing in the background or not LOL
The VCC for the BOB needs to be the same VCC for the picaxe chip (I used 3.3V) and the ground for the picaxe and the BOB needs to be tied together. For some reason connecting the gnd for the picaxe and the ground to my scope made a mess of the signal - I think my picaxe gnd has a lot of junk flowing into it.
Hook the Aud connector to the picaxe pin B.4 in the example above. I also hooked an led (w/ resistor of course) to C.6. If you program your picaxe from the Programming Editor then stand near this and clap or make a loud noise you will see the led flash and in my case since I had lights on my usb connection I see the usb lights flash too AND in the Programming Editor the debug window will open showing u the ADC value, from 140 up to 255. The commented out sertxd line is if you want to see a serial message instead of the debug window.
My next attempt will be to triangulate on a loud sound to determine direction using 3 of these, luckily I got 4 of these as #4 was DOA.
Anyways, this does work, at least for me, altho it was very helpful having a scope to see the signal because on the Aud out if you hook up a multimeter you will NOT see anything other than a fixed voltage that does not change. The real analog signal this puts out needs a scope or similar to see.
I will add - this was extremely useful for understanding the functioning of the opamp circuit on this board - it has almost the exact same circuit as used on the BOB (about 3/4 of the way down the page)
http://neatcircuits.com/op_amp.htm
Hey! Did you manage to have any success with the direction through triangulation? I'm exploring that as an option for a project that I'm working on, but I'm having trouble with some of the sound detection.
I am looking for a microphone to pickup human voice for alphabets, Will this work well or should I opt for the ADMP401 MEMS
Would it be possible to get the decibel (dB) level from this board?
i've tried this and a number of other low-cost integrated sound sensors, and i highly recommend staying away from this one, especially if you are a non-EE interfacing to a Arduino. this is my favorite of the ones i've tried, or look at its circuit in manual to build your own: ZX-Sound
note: their website is terrible to order from, but many other robotics sites and the like carry them.
Hey ericjforman thanks for that reference. Here is what I found, looks like the ZX-sound has an automatic gain adjustment. This is great for small background sound where you don't want to know extra gain and are happy to let it do its own thing. Personally this will be great for some projects, but not where i need to know the gain.
$6.45 board. ok $60 shipping, regardless of country.
+1!!! This!!! Thank you, Eric! The ZX-Sound board is working beautifully in my project.
How to go about setting this up to have the sound frequency driving the output rather than the decibel level?
Here is my code to use the input from this microphone to control LED lights based on the volume level: https://github.com/carolinehardin/SoundResponsiveFairyWings (Thanks to everyone else's comments which gave me huge help!)
hi all, i bought 4 of them for my passive sonar, they are good but i had to modify them, there were too many noise. Modifications : supply filtering from 0.1µ to 1 µ mic resistor : 2.2k to 1k, and not directly to supply ! i added a 1k 10µ rc filter to supply the mic. Then the output is correct, but about 200mV (i had another amps on my board)
Note : wireing : vcc to +5v, AGND to gnd without resistor, audio output to analog input circuit on my board
Suggestions for future products : - add RC filter to supply mic, - lower mic resistor (2.2k is too high) - add a tiny shield on the board to lower noise
so to summ up : they are good for sensor with aditional amp and with some modifications.
I have the VCC connected to another around pin so the power is controllable.
Using a inscrutable example, I sample using the ADC in free running mode with a pre-scaler. The Samples are loaded into a 256 point array and ran though the ardruino FFT library.
For those wanted to use it a sound detector, you can sample into a buffer (100 point?) then run standard DEV to it, there is a nice library that processed this. The larger number of deviation pertains to that sound sample.
I have been trying to use this microphone with an Arduino to make a sound meter, but seem to be having many problems trying to get something reasonable single from microphone. Looking at a scope trace I seem to be getting a lot of noise and little single response from the microphone. I have added cap across the power supply lines, but no improvement on the signal.
I not tired using a 5k resistor to ground, but not sure why that would be improve the audio performance.
I had a question, can this breakout board work without being connected to a microcontroller or is it only designed for that purpose.
I'm trying to get a simple intercom system working where this connects to a speaker. I have this running directly into a little amplifier (this one, from adafruit http://www.adafruit.com/products/987). Do I need to add some sort of preamp to the system or is there an easy tutorial somewhere? I've looked and found very little.
Thanks
Did you get this figured out ever? Looking to do a similar thing and don't want to reinvent the wheel.
Thanks
Alright, I new to audio, so bear with me. If I wire this up to an analog input on my arduino, can I then PWM whatever I get out of the mic to a speaker and get a really basic amplifier?
So, does this just work like a variable resistor for sound?
Did anyone notice a delay from the moment it gets powered until it starts responding? I measure 2-3 seconds (!) from the moment I power-up this BOB until I get some non-silent reading. I thought maybe something was wrong with my readings so I tried replacing it with a bare electret + opamp (LM358) and got a non-silent reading right away... btw I'm powering it with 3V
Hello sir, I got a the weird behavior. When silent, the analyzer reports values on all frequencies that are roughly between 200 and 700. These values oscillate between the low and high values with a period of roughly 10 seconds. If I play music loudly, I seem to get some response that corresponds to the music, but it too oscillates between high and low values with a long period on the oscillation. Could you help me?
What kind of inputs can we get from this Microphone?
would this work wired to an msgeq7?
FYI: http://forum.arduino.cc/index.php?topic=182968.0
I need to know a method to get decibel readings from this mic. Does anyone have any helpful tips? Thanks!
I just bought one of these. I plugged it in and it worked beautifully. I twiddled with the oscilloscope for a while and after an autoset I no longer got a signal?!? My panic response turned everything off and I pulled the breakout board out of the circuit. I noticed that it was hot :O I probed the circuit to try and find the root of the cause. I noticed that VCC was shorted to ground. I am pretty confident that I did nothing wrong. I even checked the power supply voltage before plugging it in. What can I do in this case? Do I have to prove that it wasn't my fault before sparkfun replaces it?
Contact techsupport@ and include your order number and a description of the problem and your circuit. They'll be able to help you further.
Tech support has been very helpful and has replaced the broken circuit. Very nice to deal with and excellent service! Thanks :)
Here's a simple Arduino sketch to check for volume. I hooked the GND pin to a 4.7kΩ resistor.
Your eagle files are wrong. It didnt mach to the schematic.
Could you clarify what the mismatch is? I'd like to get it fixed, but everything I'm seeing matches up.
Are the components on the board supposed to heat up so hot. I plug it into my 5V VCC and it gets so hot you can't touch it.
Worked first time and got sound levels centered around 127 on a 3.3V board as expected.
Managed to feed output through to a piezo as well.
Then I got "clever" and played with feedback, which seems to have rendered it dead as a dodo. However that is my own fault and I have ordered two replacements to much about with.
Finishing up my Ardunio Color organ. I used one of these to feed audio to the SparkFun Audio Spectrum board. I had a little trouble at first, as it didn't seem to light up the LED strips properly. They all just sort of came on with the beat of the music. I traced my problem down to a couple of things. First of all, I am using a hacked computer power supply, which aren't the cleanest source for DC voltage. Secondly, I am using the Electret Microphone attached to a 10 ft. piece of shielded wire. In both cases I am asking for trouble for picking up noise.
The problem appears to have been taken care of when I soldered a 15 uF Tantalum capacitor between the breakout board's GND and VCC terminal.
Here is a youtube video of my color organ - not the best audio, but you get the idea.
Mike's Color Organ
This might also help other people who are having issues with noise too.
-- Mike
Anybody has a code for implementing sound volume on Arduino? Happy 2013
Hi try this code from adafruit. Haven't used it myself but it looks right. http://learn.adafruit.com/adafruit-microphone-amplifier-breakout/measuring-sound-levels
I bought this BOB to implement speech recognition using an Arduino and BitVoicer. It works fine at 3.3V and 8-bit resolution, but I'm getting some noise (+- 5 bits). I followed the instructions on the BitVoicer manual and wired the microphone exactly as they show, but I have not been able to eliminate this noise. Any suggestion?
I 'm getting up and down numbers nothing to do with the sound.. am I getting it wrong or it should react to audio respectively? Can I work it out or shall I go with the parallax sound impact sensor? Please help Thanks
The comments above have good information on using this sensor. Basically, random sampling (and pausing to print out the numbers) will not tell you much about the audio waveform or volume level. One way around this is to program a very tight loop which samples e.g. 100 times as quickly as possible, saving the highest and lowest values recorded. The difference between the highest and lowest will give you the volume during that time.
Thanks Mike for your valuable comment :) I could solve my problem by what you recommended.
For the people getting the constant high values.. I have 2 power sources on my project, a 5v for arduino and a 3.3v for other things. When I connect the mic to the 5v I get those constant high values. If I connect it to the 3.3v the values for silence drop to the 50's and then peak up to 1024 when I yell at it.
I am new to Arduino and want to get a sound sensor input and output in led light when there is a sound. Does this work with a LilyPad Simple Board?
Also what is better this or the Break Board for ADMP401 MEMS Microphone http://www.sparkfun.com/products/9868 I am just trying to get noise level input and don't care too much about the clarity of noise.
You can definitely hook this up to a Lilypad Simple board and get a response from this to simply determine noise levels. Take a look at the comments up above-there are some good examples and library links from other users that should be beneficial for you.
What is the pin spacing and hole size?
Standard 0.1" spacing.
I too had the issue of a midscale reading when ADCing into a Arduino analog pin. To get around this in put a capacitor (10uF) on the output of mic to isolate the dc potential. Worked like a charm.
Looking at the schematic, I see R1 and C1 forming a high pass filter, followed by C3 and R5 forming a low pass filter. The general equation for RC filter corner frequencies is
3db corner freq in hz = 1/(2 * Pi * R in ohms * C in farads)
I calculate (better check my math!)
high pass = 1/(6.28 * 2.210^+3 * 4.710^-6) = 15.4 Hz
That sounds reasonable unless you want infrasound.
low pass = 1/(6.28 * 1010^+3 * 1210^-12) = 1,300,000 Hz
That sounds a little high to me for audio!
If they used C3=12 nanofarads instead of picofarads the low pass would have been 1,300 Hz, which is in the audio ballpark.
I wonder if there is a typo in the schematic, or if the circuit is incorrect? Again, better check my analysis!
Hooked this guy up to the arduino, and got the same symptom many others reported, about the same number for the output no matter what the ambient sound level. ;-(
BUT, I hooked in my trusty 10 MHz BK scope ($5 at fire department sale!) and can clearly see that the output of the mic is varying quite nicely with ambient music. So I suspect the problem has to do with the sampling I am doing in the arduino...
It's sampling speed. Taking low-rate random samples will not tell you much about an audio waveform. A technique that works well is to program a tight loop that takes e.g. 100 samples as fast as possible. While sampling, look for the highest and lowest numbers. The difference between the two will be the peak volume level for that period.
This is similar to what the code does. It takes a max difference, compares new values to it, and also decreases it (to make the thing more sensitive with time, unless another loud sound comes along to reset the max).
It works well with loud dance music! Fortunately (since this is the application I have in mind), such music is a very easy target. The loud bass beat of a dance song really hits this mic, and my light strip pulses nicely.
I found that it's best to randomly vary the color over time, changing about once a second. Any faster, and the eye's POV just causes the colors to blend too much, and it just seems white.
OK, found a site with some code that works pretty well for my application, to respond to music in realtime:
http://arduino.cc/forum/index.php?topic=50021.0
I tried this code and it works great.
This board works great in this Library:
FFT Library for Arduino
http://neuroelec.com/2011/03/fft-library-for-arduino/
I want to second this comment. Received the BOB, installed the library, and went to town. The example is working nicely! Thanks for the easy setup. So far its perfect for what I needed to do.
Hi,I'd like to buy this sensor, but I have a question, so, this one change the frequency to voltage? I'd like to measure the music notes with a microcontroler
Does anyone connected this microphone to VS1053 Breakout board (http://www.sparkfun.com/products/9943) ?
Do you know if a special circuit is required?
Thanks for your help
Is it possible to replace the microphone on this board?
Given that the board was designed for the specifications and sensitivity of the selected Electret perhaps there may be some adjustments needed to do this?
The selected microphone on this unit is quite large. (compared to many mics I have)
I wonder if this choice was made because if it's desired specifications or just a budget choice?
I wish to use a few smaller electrets I have from mp3 player/recorders.
Another thought I had was consolidating this with another device like an mp3 recorder. would it be possible to have a single mic function in this board and input for another device simultaneously?
This device does not seem to work at all. I have measured the voltage with a multimeter and it doesn't change at all... Sparkfun has a good reputation, I hope they will continue to do so and fix this completely worthless board.
A multimeter averages many samples before updating the display, so its unlikely you'd see any changes on the DC scale. So to see audio you'll need a scope (even a very low bandwidth one would do).
Is the amplification on this board suitable for use with a line-in level input?
I would like to interface this to a gumstix, which does not support mic-level input.
Thanks.
Hi,
I connect this board with Arduino. Aud to Analog pin. The serial print I got is always at the same laevel(number), no matter how loud the noise I made. It only shows the numer 0 when I puch the mic.
How can I see a more obvious number change by using the Arduino code?
Thank you!
I wonder if these mic's are bad. Seems like a few have gotten this to work, but I've tried using these with the arduino ADC, and the sensistivity is just not there. If you tap the mic with your finger you get some modulation, otherwise the values just sit pretty constant between 480 and 512. Fooey.
I was hoping to use this to measure volume for an upcoming party and then display the results in an LED grid, but I'm having issues. I've wired it up to my Arduino (VCC -> 5V, GND -> GND, AUD -> Analog 0), but the reading which is gives me is always bounces around the 866-870 range. Even when the room is completely silent or when the room has loud music playing, or when I whistle directly into the speaker.
Is there something I'm missing? Do I need to do something else other than hook up the AUD directly up to the Aruindo's Analog 0?
These aren't defective, there's a lot of high frequency noise. If you check out the FFT library linked below you'll see that loud noises don't necessarily result in a higher amplitude signal overall. Rather the sound shows up as higher amplitude only at certain frequencies.
No, I never did figure this out, and I'm pretty frustrated regarding it. I found someone who was successful, but when I tried their schematic, the readings just stayed around 1000, so that has me think that mine is defective.
This is what I tried, but I just got a blinking red light.
http://marioboehmer.blogspot.com/2011/01/today-i-connected-microphone-mini-board.html
Has anyone tried changing the analog reference voltage to better match the output of the microphone? If you are using the internal 5V reference, this may be the issue with the ADC.
I'm having the same problem. I'm getting output values around 400-550ish even while the room is silent. Is anyone else getting this?
I have the same issue. When powering the mic with a 5V supply, ADC readings from an Arduino are always at or near 866 (4.2V). I can get some dynamic range (ADC readings 331-670) when powering it from the 3.3V supply. I have not messed with voltage dividers or AREF yet. If someone could post a schematic for getting a sound intensity from whisper to shouting for these to cover the full range of the ADC on an ATmega328p it'd be much appreciated.
I did some googling and found where someone put a 5k resistor inline with the ground wire and then it would respond to loud noises like claps with an Arduino. I only have a 10k on hand, but it seems as though I'm not getting some response out of it.
Sparkfun - some help here please?
I tried with a 10k resistor; it seems to work, but the "quiet" level seems to be around 850 or so.
I'm having the issue as well - Tried with a 5.1k resistor and was able to register 400 and 1000 with loud noises, but i am not seeing any modulation outside of the 700 range. Any Help?
Did you ever figure this out? I'm having the same problem now.
in silence, amplifier output constant voltage (mine is 1,7V). It looks like zero level. Sound wave is around this level, i.e. it oscillate: higher voltage, up to Vcc and lower to GND.
I ordered two of these mics for some projects I am working on and they are awesome! The only thing I had to do was replace the 1M ohm resistor on one because it will be exposed to blaring music. The default amplification is perfect for most projects though.
what did you replace the 1M resistor with? Im using this mic with a msgeq7 chip and have too much gain. im hitting the full 5 volts. the msgeq7 is 20db on its own and thats how much id like to reduce. thanks.
N8B: The old one had its low frequency roll off set to high, the amplifier was cutting out too much of the lower frequencies. Also the driving point impedance of the amplifier was too low, so there is less of a loading issue on the microphone now. All around the amp is higher quality but has the same gain.
The mechanical specs have remained the same...there might be a few small footprint changes.
i know this may sound like an odd request, but could you please post what the frequency response of the old one was? i used it in a client project and he complained about tinny sound, and without a good spectrum analyzer, i gave him a bit of a hand-waving explanation. i'd like to be a little more precise if possible. thx!
I actually didn't do the circuit design for the old one, so I don't know it intimately.
Based the fact that the 0.1uF coupling cap in the old design has such a wide tolerance, I'm guessing the low frequency -3dB cut off could have been as high as 250Hz. So, you would have lost a lot of the lower end with the old design.
High frequency roll off should theoretically be the same.
so what is the frequency response of this version?
i bought one of the older ones (bob-08669), and had to change out the C1 to allow for lower frequencies. it lasted a while till the new capacitor broke off, taking some traces. now its toast.
i would like to buy one that does not need modding.
The amp's high frequency roll off is set to 13kHz, low frequency roll off is set to around 10Hz. Seeing as how the mic has a BW of 100Hz to 10kHz, you won't need to do any modifications.
thank you
Im feeding this new version into an MSGEQ7 seven band equalizer chip, pulling out the low band (63 hz) for some bass reactivity in a project. Working very nice. With the original version of the electret board, I got NOTHING at the 63 hz band.
What is the difference between this product and the one you already had?
The old one had its low frequency roll off set to high, the amplifier was cutting out too much of the lower frequencies. Also the driving point impedance of the amplifier was too low, so there is less of a loading issue on the microphone now. All around the amp is higher quality but has the same gain.
The mechanical specs have remained the same...there might be a few small footprint changes.
typo in description: microcontrollers -> microcontroller's
Fixed. Thanks.
Can six of these be connected to the six analog inputs of an Uno R3 to sample frequency response in six locations along the contour of an audio waveguide? Thanks tna