Because I am a sound lover, and in recent times I have done a lot of research on audio-related products. But I am always curious to measure the sound performance in terms of dB(A). In that way, when the amplifier is in steady state, I can measure the total output noise due to the surroundings. Because decibels are a logarithmic scale, it usually starts from a very light value, and it can also measure very high values. I have many options, as someone on the internet says, there are phone apps that claim to measure sound levels, but let's be honest, a phone microphone is designed for voice calls, not calibrated acoustic measurement.

So if you want to measure actual sound output, there are professional sound level meters, but they start at a couple of hundred dollars. But I wanted something in between a handheld dB meter that's actually accurate and battery-friendly. When I was searching the web, I came across the DFRobot Gravity Analog Sound Level Meter (SEN0232). This little board has a professional-grade MEMS microphone with proper signal conditioning. It has an A-weighting filter and a beautifully simple analog output. The voltage coming out is linearly proportional to decibels. So, no complex DSP, no FFT, just read an analog pin and multiply. I paired it with my own designed Arduino from JLCPCB and a 0.96" OLED display, and that’s how I got myself a proper handheld dB meter.

What is a Sound Level Meter?

Before jumping into the process of building the meter first let’s what actually is dBA and dB. Human ears can hear sounds between 1kHz and 5kHz, and are less sensitive to the other ranges. A-weighting is a frequency response curve that adjusts the measurement to match human perception. Here is the representation over frequency you can see the plots:

When you see dBA, that's a decibel reading with A-weighting applied. This is important because the SEN0232 uses A-weighting, which means the readings represent how loud something sounds to you, not just the raw acoustic energy. That's exactly what you want for a practical sound level meter. Here is the dBA reference scale:

DFRobot Gravity Analog Sound Level Meter:

The SEN0232 is not just a microphone breakout board, but it's a complete sound level measurement module with an onboard signal conditioning circuit.

Key Specifications:

  • Measurement Range: 30 dBA to 130 dBA
  • Measurement Error: ±1.5 dB
  • Frequency Weighting: A-Weighted
  • Frequency Response: 31.5 Hz to 8.5 kHz
  • Time Characteristic: 125 ms (Fast mode)
  • Input Voltage: 3.3V to 5.0V
  • Input Current: 22 mA @ 3.3V / 14 mA @ 5.0V
  • Output Voltage: 0.6V to 2.6V (Analog)

The board comes with a sensitivity MEMS microphone for capturing sound pressure waves, then followed by an A-Weighting Filter that shapes the frequency response to match human hearing. Some signal conditioning and rectification circuitry that converts the AC audio signal into a stable DC voltage. And finally, the output voltage has a direct linear relationship to the decibel value.

Components Required:

  • DFRobot SEN0232 Sound Level Meter
  • Arduino Nano
  • Adafruit SSD1306 0.96" OLED Display
  • Breadboard
  • Jumper Wires
  • USB Cable

Circuit Connections:

The wiring is dead simple; that's the beauty of the Gravity interface of this sensor. Just power the sensor with a 5V supply from the Arduino and plug the output wire into the A0 pin of the Arduino. For the OLED connection:

  • VCC - 5V
  • GND - GND
  • SDA - A4
  • SCL - A5

I am using the board that I have designed on my own; you can see all the details from here. It is an Arduino-compatible board with the same specs, but with some hardware modifications. I got mine from JLCPCB. You can explore and try making one yourself; files attached.

Arduino Code:

Here's the complete Arduino sketch that reads the sound level and displays it on the OLED with a visual bar graph.

Install these from the Arduino Library Manager:

1. Adafruit SSD1306 - For the OLED display
2. Adafruit GFX Library - Graphics primitives (installed...
Read more »