Powrót do strony głównej

Akustyczne wykrywanie dronów na ESP32-S3

Artykuł opisuje implementację akustycznego detektora dronów na ESP32-S3 z mikrofonem ICS-43434. Używa się algorytmu Goertzel do lokalnej analizy częstotliwości śmigieł. Omówiono schemat, kalibrację, porównanie z ML i radarami.

ESP32 kontra drony: akustyka i algorytm Goertzel
Advertisement 728x90

# Wykrywanie dronów na podstawie sygnatur akustycznych na ESP32-S3

ESP32-S3 z mikrofonem ICS-43434 I2S pozwala na realizację wykrywania quadrocopterów za 15 dolarów. Algorytm Goertzel'a analizuje charakterystyczne częstotliwości śmigieł lokalnie, bez usług chmurowych. Rozwiązuje to problemy z opóźnieniami i zależnością od zewnętrznej infrastruktury, typowe dla radarów lub modeli ML na serwerach.

Drony generują przewidywalny hałas w wąskich zakresach częstotliwości. Filtr Goertzel'a efektywnie wyciąga te sygnały ze strumienia audio I2S, minimalizując obliczenia. ESP32-S3 radzi sobie z przetwarzaniem w czasie rzeczywistym dzięki dwurdzeniowemu procesorowi i wsparciu dla instrukcji DSP.

Zasada działania algorytmu Goertzel'a

Algorytm Goertzel'a to zoptymalizowana DFT dla jednej częstotliwości. Wymaga mniej zasobów niż FFT, idealny dla systemów embedded. Formuła rekurencyjnego filtra:

Google AdInline article slot

$$ Q_k = x(n) + 2 \cos(2\pi k / N) \cdot Q_{k-1} - Q_{k-2} $$

Gdzie $k$ — częstotliwość docelowa, $N$ — rozmiar okna. Pik mocy sygnału na $k$ wskazuje na obecność drona.

Na ESP32 implementacja obejmuje buforowanie audio (16 kHz, 16 bit), zastosowanie filtra na suwającym się oknie 1024–4096 próbek. Próg wyzwalania kalibruje się na podstawie kalibracji.

Google AdInline article slot

Porównanie z alternatywami

  • Radary: Koszt od 100 dolarów, wysokie zużycie energii, wymagają licencji na częstotliwości.
  • Chmurowy ML (Azure/AWS): Zależność od sieci, opóźnienia 100–500 ms, ryzyka prywatności danych.
  • TensorFlow Lite / ESP32-NN: Wymagają treningu modelu, 50–200 KB RAM, trudniejsze w debugowaniu.
  • Goertzel na ATtiny85: Działa na 8-bitowym MCU z 8 KB flash, ale bez I2S — potrzebny ADC.

Algorytm Goertzel'a wygrywa prostotą: 1–2 KB kodu, <10% CPU na 240 MHz.

Praktyczna implementacja i kalibracja

Schemat: ESP32-S3-WROOM + ICS-43434 (I2S: BCLK=GPIO4, WS=GPIO5, DATA=GPIO6). Zasilanie 3.3V, pobór ~100 mA.

Kalibracja:

Google AdInline article slot
  • Zapisać szum bazowy otoczenia (miasto, las).
  • Ustalić częstotliwości dronów (typowe 150–300 Hz dla śmigieł).
  • Ustawić próg: power_k > 10 * baseline.

Ochrona przed zakłóceniami:

  • Piankowa nasadka na mikrofon (redukcja wiatru o 20 dB).
  • Kierunkowy wzmacniacz akustyczny (jak w historycznych „wojennych trąbkach”).
  • Filtrowanie niskich częstotliwości (<100 Hz) w celu wyeliminowania transportu.

Zasięg wykrywania: 50–200 m w cichym otoczeniu, zależy od mocy drona i wiatru.

Perspektywy integracji ML

ESP32-S3 obsługuje ESP-DL i TensorFlow Lite Micro. Lekka CNN (10–50 KB) może klasyfikować spektrogramy, rozpoznając typy dronów. Jednak dla deweloperów średniego i wyższego szczebla podstawowy Goertzel to punkt startowy: łatwo prototypować, skalować do wielu częstotliwości.

Testowanie: Porównaj SNR na rzeczywistych nagraniach (DJI Mavic — piki na 180/220 Hz).

Co ważne

  • Algorytm Goertzel'a zapewnia analizę w czasie rzeczywistym na ESP32 bez chmury.
  • Koszt <15 USD, kompatybilne z ATtiny dla ultra-kompaktowych rozwiązań.
  • Kalibracja pod otoczenie obowiązkowa dla redukcji fałszywych alarmów.
  • Zasięg 50–200 m, poprawiany kierunkowymi wzmacniaczami.
  • Perspektywa: ESP-NN do klasyfikacji typów dronów.

— Editorial Team

Advertisement 728x90

Czytaj dalej