Close
0%
0%

A Pocket Digital SINAD Indicator Using ESP32

A standalone ESP32-based SINAD indicator with FFT and waveform monitoring for practical receiver evaluation.

Similar projects worth following
The SG function added to tinySA requires a SINAD meter to measure receiver sensitivity. I prototyped a digital SINAD indicator using the ESP32-C3 function library on Arduino.
This simple device shall be interesting for radio hobbyists.

The tinySA now has an SG function. I needed a SINAD meter for receiver sensitivity tests. So I built one on an ESP32-C3 and also on a Raspberry Pi Pico.

What it does
- SINAD measurement: 10kHz sampling, 1kHz digital notch filter (IIR)
- Waveform display: Real-time audio waveform
- FFT spectrum: Visualize noise and distortion

Why SINAD?
(Signal + Noise + Distortion) / (Noise + Distortion). Includes distortion. Tells you about usable signal quality. Works for FM, AM, and SSB.

The setup
tinySA  ULTRA(SG) → Receiver under test → ESP32 SINAD meter or RPP SINAD meter

Code & hardware
Open source. { https://github.com/Nobcha/R909-SINAD/blob/main/}

This short video shows the ESP32-based SINAD meter in operation, including real-time SINAD readout and FFT display.

👉 https://www.youtube.com/watch?v=a2N7Uo3oPMg

In the video, notice how the SINAD value changes with signal level and how the FFT reveals noise and distortion components.

Referrence:

BLOG:https://hrd-737.hateblo.jp/entry/2025/07/05/165913

*This is a hobby project. Works for me. Maybe it works for you too.*

Key Points Behind the Measurement.txt

Key Points Behind the Measurement Setup (Modulation Depth & Audio Output Level)

plain - 1.31 kB - 04/08/2026 at 09:27

Download

SINAD_indicator SPECs.txt

ESP32-C3 SINAD indicator's SPECs ESP32-C3 dev kit super mini @ Arduino IDE

plain - 3.07 kB - 04/07/2026 at 05:47

Download

  • 1 × ESP3-C3 dev kit super mini
  • 1 × OLED/SSD1306

  • SINAD Indicator Comparison Experiment

    nobcha04/22/2026 at 10:56 0 comments

    I ported the software used for the SINAD indicator on the ESP32-C3 dev kit super mini onto a Python version on a PC (Windows 11). I compared the ESP32-C3 version, which uses a 10kHz ADC sampling rate, with the Python version, which uses PC audio hardware(44kHz, 16bits), using test signal sources.

    The test signal sources used were a 1000Hz signal from a smart phone (Android OPPO A73 with an audio signal generation app installed), and two built-in test signals from the ESP32-C3 R909-SINAD indicator: signal 1 (a 1000Hz sine wave generated by PWM and passed through a low-pass filter) and signal 2 (a 1000Hz pulse that switches ON/OFF every 2000Hz).

    Based on the above test values, the performance limit of the ESP32's built-in ADC can be estimated.

    Signal Source

    Signal condition

    ESP32 SINAD readout

    PC SINAD readout

    Note

    The generator in smart phone (1kHz sine wave)

    Very pure

    29-38 dB

    49-67 dB

    20-30dB difference

    ESP32 DDS (saw toothLPF)

    coursewith harmonics

    10.9-13.8 dB

    12.5 dB

    About 1-2dBdifference

    ESP32 DDS ON/OFF (pulse)

    coursewith harmonics

    6.5 dB

    7.6 dB

    About 1dB difference

    Analogical evaluation from these data

    1. The first experiment (smart phone oscillator) measured the "ADC performance of the ESP32".

    • When a pure sine wave (with very few harmonic components) is input, the nonlinearity and noise of the ESP32's ADC become dominant.

    • As a result, there was a difference of 20-30 dB compared to PC audio → This is the performance limit of the ESP32's ADC.

    2. The remaining experiments measured the "quality of the signal being measured."

    • The "saw tooth wave + LPF" and "square wave" output by the ESP32's built-in DDS inherently contain a lot of harmonic distortion.

    • In this case, because the signal's SINAD is low (10-13dB, 6-7dB), the performance impact of the ADC is relatively small.

    • The 1-2dB difference between the ESP32 version and the PC version is due to the difference in distortion detection capability of the signal being measured.

    3. Conclusion: The ESP32's ADC appears to be usable around a 12dB SINAD.

    SINAD Measurement Range

    ESP32 Version Reliability

    Reason

    10-20dB (Core range for SINAD measurement)

    Usable

    Signal distortion itself is dominant. ADC noise influence is within 1-2dB.

    20-30dB

    Caution required.

    ADC noise influence begins to appear.

    40dB and above

    Practically impossible.

    ADC self-noise/distortion is dominant.

  • How to assmble the circuit

    nobcha04/12/2026 at 11:22 0 comments

    Components and Circuitry

    The necessary components are the following circuit board components, components for the connection board (audio jacks, battery-related components, variable resistors and step-up transformer), wiring materials, and a case. The circuit diagram for the circuit board and an applied circuit diagram with added external components are shown. The step-up transformer is ST-45(600ohm:10ohm) of Sansui.

    Bill of Materials http://github.com/Nobcha/R909-VFO-ESP/blob/main/5531_esp_25_bom.pdf

    Circuit board schematics http://github.com/Nobcha/R909-VFO-ESP/blob/main/R909-VFO_ESP32_SCM.pdf

    Appliation circuit schematics 

    PCB

    PCB and Assembly

    This PCB needed to be quite compact, so all RC components except the aluminum electrolytic capacitors were surface-mounted.

    I found a heat plate with PTC-controlled maximum temperature on AliExpress. I used this heat plate and solder paste for soldering the surface-mount RC/C components.

    The component density isn't high, so hand soldering is also possible.

    After surface-mounting the components, the DIP components—electrolytic capacitors, sensors, switches, and pin headers—were soldered by hand.

    Assembly Check

    After checking for short circuits between the power supply and ground, a diagnostic sketch for verifying the board's operation was prepared.

    This sketch displays the results of switch operations on the OLED screen.
    https://github.com/Nobcha/R909-VFO-ESP/blob/main/R909_VFO_esp_ol_SWRE_i2c_TEST.ino

    Sketch


    Launch the Arduino IDE (I used V2.3.5) and upload the sketch to the ESP32-C3 dev kit super mini via USB cable. Connect the USB cable, specify the CPU setting as ESP32C3 Dev Module, confirm that it is connected in "Tools" "port", load the following sketch, and compile and upload it. To get the Arduino IDE to recognize the ESP32 module, press the BOOT switch and RESET switch on the module simultaneously, and then release the RESET switch first.

    https://github.com/Nobcha/R909-SINAD/blob/main/try_7_3i_sinad_meter.ino

  • I tried a digital SINAD indicator using an ESP32-C3.

    nobcha04/10/2026 at 11:40 0 comments

    In this setup, the SINAD value changes in real time as the signal level is adjusted.

    I measured the receiving sensitivity at 27MHz (AM 80% Mod) with the ATX-mini HF/FM receiver using the Si4732. The value was -104dBm. To set it to 12dB SINAD, the volume adjustment had to be maximized and a step-up using a transformer was necessary.

    ATX-mini 27MHz 1000Hz 80% AM -104dBm 12dB SINAD

    SINAD measurement in progress   FFT view of the test signal

    In JH1LHV-OM's measurement example, the reading was -100dBm at 26MHz (AM 30% Mod), so the difference is likely due to the modulation depth setting. At 30% modulation, the SINAD did not rise above 12dB at my case. 

    I also checked the R80 Chinese-made airband receiver. This receiver has a configuration of NE602-MC3361-TA7640-LM386. A problem arose. Even with volume adjustment, the SINAD did not rise above 8dB. When using a deeper modulation of 80% at 1000Hz and examining the FFT, a component was found at 500Hz. Could this be due to the MC3361 chip being an FM chipset?

    Therefore, the sensitivity of the R80 airband receiver is equivalent to a SINAD of 8dB.

    R80 118.1MHz 1000Hz 80% AM -105dBm 9.1dB SINAD

    SINAD measurement in progress

    The FFT display helps visualize noise and distortion components.

    Note: When measuring C401, the measurement was smooth.

  • SG modulation depth and receiver audio volume setting

    nobcha04/08/2026 at 09:31 0 comments

    We have compiled a separate document outlining important points to consider when measuring receiver sensitivity using the SINAD indicator. (SG modulation depth and receiver audio volume setting)

View all 4 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates