Creative Commons images are CC BY-NC-SA 3.0

7.95

added to your
shopping cart

quantity
In stock 89 in stock
7.95 1+ units
7.16 10+ units
6.36 100+ units

Description: 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.

Documents:

Comments 83 comments

  • 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

    volume=abs(analogValue-760);
    

    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?

  • 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 ¾ 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.

  • 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

  • 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.

    int currentValue;
    int maxValue;
    int minValue;
    unsigned long timer;
    int sampleSpan = 5; // Amount in milliseconds to sample data
    int volume; // this roughly goes from 0 to 700
    
    void setup() 
    {
        Serial.begin(9600); 
        resetValues();
    }
    
    void loop() 
    {
        currentValue = analogRead(A0);
    
        if (currentValue < minValue) {
            minValue = currentValue;
        } 
        if (currentValue > maxValue) {
            maxValue = currentValue;
        }
    
        if (millis() - timer >= sampleSpan) {
            volume = maxValue - minValue;
    
            Serial.println(volume);
    
            resetValues();
        }
    }
    
    void resetValues()
    {
        maxValue = 0;
        minValue = 1024;
        timer = millis(); 
    }
    
  • 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?

  • 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

  • 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

  • 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


Related Products