Retour à l'accueil

Détection acoustique de drones sur ESP32-S3

L'article décrit l'implémentation d'un détecteur acoustique de drones sur ESP32-S3 avec microphone ICS-43434. L'algorithme Goertzel est utilisé pour l'analyse locale des fréquences des hélices. Couvre le schéma, la calibration, la comparaison avec ML et les radars.

ESP32 contre les drones : Acoustique et algorithme Goertzel
Advertisement 728x90

Détection de drones par signatures acoustiques sur ESP32-S3

L'ESP32-S3 avec le microphone I2S ICS-43434 permet la détection de quadricoptères pour seulement 15 $. L'algorithme Goertzel analyse les fréquences caractéristiques des hélices localement, sans services cloud. Cela résout les problèmes de latence et de dépendance à une infrastructure externe typiques des radars ou des modèles d'IA basés sur serveur.

Les quadricoptères génèrent un bruit prévisible dans des bandes de fréquences étroites. Le filtre Goertzel extrait efficacement ces signaux du flux audio I2S, en minimisant les calculs. L'ESP32-S3 gère le traitement en temps réel grâce à son processeur double cœur et au support des instructions DSP.

Comment fonctionne l'algorithme Goertzel

L'algorithme Goertzel est une DFT optimisée pour une seule fréquence. Il nécessite moins de ressources que FFT, ce qui le rend idéal pour les systèmes embarqués. La formule du filtre récursif :

Google AdInline article slot

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

Où $k$ est la fréquence cible, $N$ la taille de la fenêtre. Un pic de puissance du signal à $k$ indique la présence d'un drone.

L'implémentation sur ESP32 inclut un tampon audio (16 kHz, 16 bits), appliquant le filtre sur une fenêtre glissante de 1024–4096 échantillons. Le seuil de déclenchement est ajustable via calibration.

Google AdInline article slot

Comparaison avec les alternatives

  • Radars : Coût à partir de 100 $, consommation élevée en énergie, nécessitent des licences de fréquences.
  • IA cloud (Azure/AWS) : Dépendance réseau, latence 100–500 ms, risques pour la confidentialité des données.
  • TensorFlow Lite / ESP32-NN : Nécessitent un entraînement de modèle, 50–200 Ko RAM, plus difficile à déboguer.
  • Goertzel sur ATtiny85 : Fonctionne sur MCU 8 bits avec 8 Ko flash, mais pas d'I2S—nécessite ADC.

L'algorithme Goertzel l'emporte en simplicité : 1–2 Ko de code, <10 % CPU à 240 MHz.

Implémentation pratique et calibration

Schéma : ESP32-S3-WROOM + ICS-43434 (I2S : BCLK=GPIO4, WS=GPIO5, DATA=GPIO6). Alimentation 3,3 V, consommation ~100 mA.

Calibration :

Google AdInline article slot
  • Enregistrer le bruit ambiant de base (ville, forêt).
  • Identifier les fréquences des drones (typiquement 150–300 Hz pour les hélices).
  • Définir le seuil : power_k > 10 * baseline.

Protection contre les interférences :

  • Pare-vent en mousse sur le microphone (réduit le bruit du vent de 20 dB).
  • Amplificateur acoustique directionnel (comme les anciennes « trompettes de guerre »).
  • Filtrage des basses fréquences (<100 Hz) pour exclure le trafic.

Portée de détection : 50–200 m en environnements calmes, selon la puissance du drone et le vent.

Perspectives d'intégration IA

ESP32-S3 supporte ESP-DL et TensorFlow Lite Micro. Un CNN léger (10–50 Ko) peut classer les spectrogrammes pour reconnaître les types de drones. Cependant, pour les développeurs intermédiaires/seniors, le Goertzel de base est un excellent point de départ : facile à prototyper et à étendre à plusieurs fréquences.

Tests : Comparer le SNR sur des enregistrements réels (DJI Mavic—pics à 180/220 Hz).

Points clés

  • L'algorithme Goertzel permet l'analyse en temps réel sur ESP32 sans le cloud.
  • Coût < 15 USD, compatible avec ATtiny pour des solutions ultra-compactes.
  • La calibration spécifique à l'environnement est essentielle pour réduire les faux positifs.
  • Portée 50–200 m, améliorée avec des amplificateurs directionnels.
  • Futur : ESP-NN pour la classification des types de drones.

— Editorial Team

Advertisement 728x90

Lire ensuite