spectrum-analyzer

Public

@jadens180

Download board files

Files for version 1. Pick what you came for.

Share spectrum-analyzer

Check access before sharing the link.

Who can open this board

Anyone can open this board. No sign-in is required.

This link opens the latest version. Copying it does not grant additional access.

Loading 3D model… large boards can take a moment.

README

ESP32 Audio Spectrum Analyzer

A real-time audio spectrum analyzer built on the ESP32, featuring a custom-designed PCB. Captures audio via an I2S MEMS microphone, runs FFT processing on-chip, displays a live 16-bar frequency spectrum on an OLED display, and streams real-time FFT data over WiFi to a browser-based visualizer via WebSockets.


Demo Videos

Analyzer reacting to noise:

https://github.com/JadenS180/spectrum-analyzer/raw/main/media/spectrum-DemoNoise.MOV

Analyzer in a quiet environment:

https://github.com/JadenS180/spectrum-analyzer/raw/main/media/spectrum-DemoQuiet.MOV


Web Dashboard

Reacting to noise

Quiet environment


Photos

Full Breadboard Build

Side Views

Components

ESP32-WROOM-32 (front)ESP32-WROOM-32 (back)
INMP441 Microphone (front)INMP441 Microphone (back)
SSD1306 OLED (front)SSD1306 OLED (back)

PCB


Features

  • Real-time FFT using 512-sample windows at 44,100 Hz
  • 16 frequency bars mapped across the audible spectrum
  • Hann windowing to reduce spectral leakage
  • Peak hold indicators on each bar
  • DC/low-frequency noise suppression via bin offset
  • Custom 2-layer PCB designed in KiCad and manufactured by JLCPCB
  • WiFi streaming via WebSockets to a browser-based canvas visualizer

Hardware

ComponentDescription
ESP32-WROOM-32Microcontroller
INMP441I2S MEMS microphone
SSD13060.91" I2C OLED display (128x32)
AMS1117-3.33.3V LDO voltage regulator
USB-C ReceptaclePower input

Pin Mapping

SignalESP32 GPIO
I2S SCK26
I2S WS25
I2S SD33
I2C SDA21
I2C SCL22

Firmware

Written in Arduino C++ using the Espressif ESP32 package (v3.3.10).

Dependencies:

To flash:

  1. Open firmware/spectrum_analyzer.ino in Arduino IDE
  2. Set your WiFi credentials in the firmware
  3. Select board: ESP32 Dev Module under Espressif Systems
  4. Connect ESP32 via USB and select the correct port
  5. Upload

Web Dashboard

The dashboard is a single HTML file in the dashboard/ directory. Open it in a browser while the ESP32 is powered and connected to WiFi. Update the WebSocket IP in index.html to match your ESP32's IP address.


PCB Design

Designed in KiCad. The board is a 2-layer FR-4 PCB with a filled GND copper pour on F.Cu and a keep-out zone over the ESP32 antenna. Manufactured by JLCPCB.

KiCad schematic, PCB layout, and Gerber files are in the hardware/ directory.


Repository Structure

spectrum-analyzer/
├── firmware/
│   └── spectrum_analyzer.ino
├── hardware/
│   ├── spectrum_analyzer.kicad_pro
│   ├── spectrum_analyzer.kicad_sch
│   ├── spectrum_analyzer.kicad_pcb
│   └── gerbers/
├── dashboard/
│   └── index.html
├── media/
│   ├── (photos)
│   └── (videos)
└── README.md

Author

Jaden Smiles — github.com/JadenS180

Comments

No comments yet. Be the first to ask about this board.

Ask about this board

Sign in to BoardRepo

New here? Signing in creates your account; there is no separate sign-up.