Jak zbudować akustyczny wykrywacz dronów z ESP32 za kilka tysięcy rubli
Wykrywanie dronów jest zwykle kojarzone ze złożonymi i kosztownymi radarami, skanerami częstotliwości radiowych lub systemami optycznymi z kamerami termowizyjnymi. Wszystkie te rozwiązania kosztują tysiące dolarów i wymagają poważnej infrastruktury. Ostatnio natknąłem się na interesujący projekt o nazwie Batear, którego autorzy postanowili podejść do problemu z innej strony. Używają mikrofonu i niewielkiego mikrokontrolera kosztującego zaledwie kilkadziesiąt dolarów.
Idea polega na nasłuchiwaniu nieba. Obracające się śmigła dronów wytwarzają charakterystyczny hałas akustyczny ze stabilnymi harmonicznymi. Projekt wykonuje całe przetwarzanie dźwięku bezpośrednio na mikrokontrolerze, bez przesyłania strumieniowego audio do chmury i bez potrzeby stałego połączenia internetowego.
Pod maską
Projekt jest napisany w C dla ESP-IDF i zoptymalizowany pod kątem układów ESP32-S3. Dźwięk z mikrofonu I2S (dokumentacja zaleca sensor MEMS ICS-43434) trafia bezpośrednio do pamięci układu. Tam firmware wykonuje szybką transformatę Fouriera (FFT) i wyszukuje określone szczyty częstotliwości charakterystyczne dla silników i śmigieł dronów.
Wszystkie obliczenia odbywają się lokalnie. Jeśli urządzenie wykryje dźwięk śmigieł, natychmiast wysyła alert przez jeden z dwóch obsługiwanych kanałów komunikacji.
Dwa warianty wdrożenia
Twórcy zaprojektowali firmware tak, aby obejmował dwa różne scenariusze montażu. Konkretna rola jest wybierana podczas kompilacji lub wgrywania:
1. Bezprzewodowy autonomiczny obwód przez LoRa
W tym trybie czujniki można rozmieścić wokół obwodu posesji, zamontować na słupach lub drzewach.
Czujnik oparty na płytce Heltec WiFi LoRa 32 nasłuchuje eteru i wysyła zaszyfrowany pakiet o wielkości 36 bajtów (AES-128-GCM) przez radio LoRa na częstotliwości 915 lub 868 MHz po wyzwoleniu alarmu.
Drugą identyczną płytkę umieszcza się w domu jako bramkę. Bramka odbiera sygnał radiowy, wyświetla status na wbudowanym ekranie OLED i przekazuje zdarzenie przez Wi-Fi przez broker MQTT.
[ Детектор с микрофоном ] ──(LoRa 868/915 МГц, AES-128)──> [ Шлюз Heltec ]
│
WiFi / MQTT
▼
[ Home Assistant ]
2. Przewodowy detektor Ethernet z PoE
Jeśli czujnik jest planowany do stałej instalacji na elewacji lub dachu, prowadzenie oddzielnej bramki radiowej nie ma sensu. Firmware obsługuje płytki takie jak LILYGO T-ETH-Lite S3, która ma wlutowany kontroler Ethernet W5500.
Urządzenie jest zasilane przez skrętkę przez PoE, łączy się z siecią lokalną samodzielnie i wysyła wiadomości MQTT bezpośrednio do serwera automatyki.
[ Проводной детектор (LILYGO) ] ──(Ethernet / PoE)──> [ Home Assistant / MQTT ]
Integracja z inteligentnym domem
Twórcy nie bawili się w wymyślanie własnych aplikacji mobilnych i zamiast tego zaimplementowali natywną obsługę Home Assistant przez MQTT Auto-Discovery. Gdy tylko bramka lub przewodowy czujnik połączy się z brokerem, urządzenie automatycznie pojawi się na panelu sterowania.
Przez interfejs inteligentnego domu można:
- Śledzić status alarmu w czasie rzeczywistym
- Przeglądać diagnostykę kanału radiowego (poziomy RSSI i SNR)
- Konfigurować automatyzacje: uruchamiać syreny, włączać reflektory lub wysyłać powiadomienia do Telegrama po wykryciu podejrzanego hałasu
Jak wgrać firmware
Dla tych, którzy nie chcą konfigurować łańcucha narzędzi ESP-IDF lokalnie, strona projektu oferuje webowy program do wgrywania oparty na WebSerial. Wystarczy otworzyć stronę w przeglądarce opartej na Chromium, podłączyć płytkę kablem USB-C i nacisnąć przycisk instalacji.
Jeśli wolisz kompilację ze źródeł, wszystko buduje się standardowymi narzędziami:
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
Aby zbudować wariant bramki lub przewodowy, wystarczy określić odpowiedni plik konfiguracyjny (sdkconfig.gateway lub sdkconfig.wired_detector).
Przemyślenia i ograniczenia
Projekt jest technicznie interesującym przykładem tego, jak cyfrowe przetwarzanie sygnałów może wycisnąć maksimum z niedrogiego mikrokontrolera.
Oczywiście czysto akustyczna metoda ma fizyczne ograniczenia. Silne podmuchy wiatru, hałas kosiarki sąsiada lub przejeżdżający w pobliżu skuter mogą zakłócać wykrywanie lub powodować fałszywe alarmy. Do dokładnego działania będziesz musiał skalibrować progi czułości przez konfigurację. Niemniej jednak jako fundament do eksperymentów DIY połączonych z Home Assistant, to doskonały, w pełni open-source projekt.
Powiązane projekty