Digital Signal Processing¶
TinyDSP — Signal Processing for Edge Devices
TinyDSP wraps and extends ESP-DSP for edge devices, adding SHM-specific algorithms not found in ESP-DSP.
TinyMath → Math / Matrix / DotProduct
TinyDSP → all remaining DSP modules + DWT / ICA / Resample
Architecture¶
-
Signal Processing
tiny_conv· Convolution
tiny_corr· Correlation
tiny_resample· Resampling -
Digital Filtering
tiny_fir· FIR (window design)
tiny_iir· IIR (bilinear transform) -
Signal Transforms
tiny_fft· FFT/IFFT spectrum analysis
tiny_dwt· Discrete Wavelet Transform
tiny_ica· ICA (C++ API) -
Debug Support
tiny_view· ASCII waveform plot
tiny_view· Spectrum · Statistics
Use Case Index¶
-
Dominant frequency
→ FFT —
tiny_fft_find_peak_frequency -
Denoising / Smoothing
→ FIR / DWT
-
Source separation
→ ICA —
ICA::decompose(C++) -
Delay estimation
→ Cross-correlation —
tiny_ccorr_f32 -
Template matching
→ Sliding correlation —
tiny_corr_f32 -
Sample rate conversion
→ Resampling —
tiny_resample_f32 -
Time-frequency analysis
→ DWT —
tiny_dwt_multilevel_decompose_f32 -
Headless debugging
→ Support —
tiny_view_signal_f32
Quick Start¶
#include "tiny_dsp.h"
void app_main(void) {
tiny_fft_init(1024); // one-time init
float data[1024] = { /* sensor data */ };
float spectrum[2048]; // [Re0,Im0,Re1,Im1,...]
tiny_fft_f32(data, 1024, spectrum, // windowed FFT
TINY_FFT_WINDOW_HANNING);
float freq, mag;
tiny_fft_find_peak_frequency( // find dominant freq
spectrum, 1024, 100.0f, &freq, &mag);
}
ESP32 Speedup¶
| Function | DSP Backend | Speedup |
|---|---|---|
tiny_conv_f32 | dsps_conv_f32 | 2–4× |
tiny_fft_f32 | dsps_fft2r_fc32 | 3–5× |
tiny_fir_filter_f32 | dsps_fir_f32 | 2–3× |
tiny_corr_f32 | dsps_corr_f32 | 2–4× |
Non-ESP32 platforms fall back to pure C; API is identical.