>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
C

Comment construire un détecteur de drones acoustique avec ESP32 pour quelques milliers de roubles

Logo Batear

La détection de drones est généralement associée à des radars complexes et coûteux, des scanners à radiofréquence ou des systèmes optiques avec caméras thermiques. Toutes ces solutions coûtent des milliers de dollars et nécessitent une infrastructure sérieuse. Récemment, je suis tombé sur un projet intéressant appelé Batear, dont les auteurs ont décidé d'aborder le problème sous un angle différent. Ils utilisent un microphone et un minuscule microcontrôleur coûtant quelques dizaines de dollars.

L'idée est d'écouter le ciel. Les hélices de drones en rotation créent un bruit acoustique caractéristique avec des harmoniques stables. Le projet effectue tout le traitement du son directement sur le microcontrôleur, sans diffuser l'audio vers le cloud et sans avoir besoin d'une connexion internet constante.

Démo Batear

Sous le capot

Le projet est écrit en C pour ESP-IDF et optimisé pour les puces ESP32-S3. Le son du microphone I2S (la documentation recommande le capteur MEMS ICS-43434) va directement dans la mémoire de la puce. Là, le firmware effectue une transformée de Fourier rapide (FFT) et recherche des pics de fréquence spécifiques caractéristiques des moteurs et des hélices de drones.

Tous les calculs se font localement. Si l'appareil détecte le son des hélices, il envoie immédiatement une alerte via l'un des deux canaux de communication pris en charge.

Deux options de déploiement

Les développeurs ont conçu le firmware pour couvrir deux scénarios de montage différents. Le rôle spécifique est sélectionné lors de la compilation ou du flashage :

1. Boucle autonome sans fil via LoRa

Dans ce mode, les capteurs peuvent être dispersés autour du périmètre du site, montés sur des poteaux ou des arbres.

Un capteur basé sur la carte Heltec WiFi LoRa 32 écoute les ondes et envoie un paquet crypté de 36 octets (AES-128-GCM) via radio LoRa à 915 ou 868 MHz lorsqu'une alarme est déclenchée.

Une deuxième carte identique est placée dans la maison comme passerelle. La passerelle reçoit le signal radio, affiche l'état sur l'écran OLED intégré et transmet l'événement via Wi-Fi à travers un broker MQTT.

[ Детектор с микрофоном ] ──(LoRa 868/915 МГц, AES-128)──> [ Шлюз Heltec ]
                                                                   
                                                              WiFi / MQTT
                                                                   
                                                            [ Home Assistant ]

2. Détecteur filaire Ethernet avec PoE

Si le capteur est prévu pour une installation permanente sur une façade ou un toit, installer une passerelle radio séparée n'a pas de sens. Le firmware prend en charge des cartes comme la LILYGO T-ETH-Lite S3, qui dispose d'un contrôleur Ethernet W5500 soudé.

L'appareil est alimenté via paire torsadée à travers PoE, se connecte au réseau local de manière autonome et envoie des messages MQTT directement au serveur domotique.

[ Проводной детектор (LILYGO) ] ──(Ethernet / PoE)──> [ Home Assistant / MQTT ]

Intégration domotique

Les développeurs ne se sont pas embêtés à inventer des applications mobiles personnalisées et ont plutôt implémenté la prise en charge native de Home Assistant via MQTT Auto-Discovery. Dès que la passerelle ou le capteur filaire se connecte au broker, l'appareil apparaît automatiquement sur le panneau de contrôle.

Tableau de bord Home Assistant

À travers l'interface domotique, vous pouvez :

  • Suivre l'état de l'alarme en temps réel
  • Voir les diagnostics du canal radio (niveaux RSSI et SNR)
  • Configurer des automatisations : déclencher des sirènes, allumer des projecteurs ou envoyer des notifications Telegram lorsqu'un bruit suspect est détecté

Comment flasher le firmware

Pour ceux qui ne veulent pas configurer d'outil ESP-IDF en local, le site du projet propose un flasheur web basé sur WebSerial. Il suffit d'ouvrir la page dans un navigateur basé sur Chromium, de connecter la carte via un câble USB-C et d'appuyer sur le bouton d'installation.

Si vous préférez compiler à partir des sources, tout se construit avec les outils standards :

git clone https://github.com/batear-io/batear.git
cd batear

# Сборка прошивки для детектора
idf.py -B build_detector \
  -DSDKCONFIG=build_detector/sdkconfig \
  -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.detector" \
  set-target esp32s3

idf.py -B build_detector -DSDKCONFIG=build_detector/sdkconfig build

# Прошивка в устройство
idf.py -B build_detector -DSDKCONFIG=build_detector/sdkconfig -p /dev/ttyUSB0 flash monitor

Pour construire la variante passerelle ou filaire, spécifiez simplement le fichier de configuration correspondant (sdkconfig.gateway ou sdkconfig.wired_detector).

Réflexions et limitations

Le projet est un exemple techniquement intéressant de la façon dont le traitement numérique du signal peut tirer le maximum d'un microcontrôleur bon marché.

Bien sûr, une méthode purement acoustique a des limitations physiques. Les vents forts et rafaleux, le bruit d'une tondeuse à gazon du voisin ou un scooter qui passe à proximité peuvent interférer avec la détection ou provoquer de fausses alarmes. Pour un fonctionnement précis, vous devrez calibrer les seuils de sensibilité via la configuration. Néanmoins, comme base pour des expériences DIY combinées avec Home Assistant, c'est un excellent projet entièrement open-source.

Projets similaires