Skip to main content
Version: FILS English

ESP32 Ukulele Tuner (Rust)

A real-time ukulele tuner using ESP32 and Rust with visual feedback on a TFT display.

info

Author: Oprea Radu - Gabriel
GitHub Project Link: https://github.com/UPB-PMRust-Students/fils-project-2026-Radur12

Description

A simple real-time ukulele tuner that captures audio using a digital microphone, detects pitch, and displays tuning accuracy (flat, sharp, or correct) on a TFT screen.

Motivation

This project was chosen to explore embedded systems programming with Rust, real-time audio processing, and hardware interfacing. It combines signal processing with a practical and interactive use case (musical instrument tuning), making it both educational and useful.

Architecture

Main components:

Audio Input Module (INMP441 microphone) Signal Processing Module (pitch detection using FFT) Control Unit (ESP32 microcontroller) Output Interface (TFT display)

Connections:

The microphone captures sound via I2S and sends it to the ESP32. The ESP32 processes the signal to detect frequency (pitch detection). The detected pitch is compared with standard ukulele tuning values (G4, C4, E4, A4). Results are sent to the TFT display, showing whether the note is flat, sharp, or in tune.

System Data Flow

Diagram

Log

Week 5 - 11 May

Initial project setup, component selection, and environment configuration for Rust on ESP32.

Week 12 - 18 May

Implemented audio capture via I2S and basic signal processing (FFT).

Week 19 - 25 May

Integrated display output and completed pitch detection logic with visual feedback.

Hardware

ESP32 DevKit1 (ESP-WROOM-32) INMP441 I2S Digital Microphone 1.44" SPI LCD Module with ST7735 Controller (128x128 px)

Schematics

Kicad

Bill of Materials

DeviceUsagePrice
ESP32 DevKit V1Main microcontroller42 RON
INMP441 I2S MicrophoneAudio input for pitch detection20 RON
1.44" SPI LCD Module with ST7735 Controller (128x128 px)Displays tuning feedback30 RON

Software

LibraryDescriptionUsage
embedded-halHardware abstraction layerUsed for interfacing with ESP32 peripherals
rustfftFFT librariesUsed for pitch detection
embedded-graphics2D graphics libraryUsed for drawing to the display
esp-idf-halI2S moduleUsed for audio input processing
espupESP Rust toolingUsed for setting up and building the project

  1. ESP32 INMP441 - audio
  2. embedded-graphics examples
  3. rustfft documentation