Show HN: VolAnti – 드론용 개방형 음향 탐지기
요약
VolAnti는 드론의 프로펠러 소리(화성 격자음)를 감지하는 개방형 음향 탐지 시스템입니다. 91mm 크기의 박스에 마이크 네 개, ESP32-S3, LoRa 라디오 등을 탑재하여 작동하며, 호버링 상태의 기체도 높은 탐지율로 포착합니다. 이 장치는 소리 감지 시 경보 및 알림 기능을 제공하며, 현장 테스트에서 오경보가 없음을 입증했습니다.
핵심 포인트
- 드론 프로펠러 소리를 듣는 개방형 음향 탐지기입니다.
- ESP32-S3와 LoRa 라디오를 사용하여 구현되었습니다.
- 호버링 상태의 드론도 높은 탐지율로 감지 가능합니다.
- 배터리 수명이 길고, 장치 부품 비용이 저렴합니다.
개방형 음향 드론 탐지 시스템. 라디오가 아닌 프로펠러 소리를 듣습니다.
<img src="https://raw.githubusercontent.com/agamrossen/VolAnti/HEAD/docs/images/hero-render.png" width="78%" alt="VolAnti 장치와 마운트"> <br>Website · 실시간 시뮬레이터 · 브레드보드에 제작하기 · 완전한 장치 제작하기 · 사진 및 비디오
탐지 및 경고 기능만 제공합니다. 재밍(jamming), 교신 가로채기(interception), 대응책은 절대 없습니다.
</div>A 91 mm 크기의 박스에 마이크 네 개, ESP32-S3, E-paper 스크린, LoRa 라디오가 탑재되어 있습니다. 이 장치는 멀티로터(multirotor)가 내는 화성 격자음(harmonic comb)을 감지하며, 소리를 들으면 비프음을 울리고, 빨간색으로 깜빡이며, 진동하고, 전원이 끊겨도 살아남는 스크린에 시간을 기록하며, 네트워크상의 다른 모든 장치에 알립니다.
만약 짧고 그림이 포함된 버전을 원하거나, 통제하는 음향 환경에서 탐지기가 작동하는 것을 보고 싶다면 웹사이트와 시뮬레이터를 이용하시면 됩니다. 이 페이지는 긴 버전이며, 장치를 제작하는 데 필요한 모든 것은 이 저장소에 있습니다.
<table> <tr ><td align="center" width="20%"><h3 >104 m 거리에서 측정된 탐지율,<br>호버링 상태의 기체, 약한 바람</h3> </td> <td align="center" width="20%"><h3 >첫 소리부터 경보까지 0.23초</h3> </td> <td align="center" width="20%"><h3 >현장 테스트에서 오경보 없음</h3> </td> <td align="center" width="20%"><h3 >배터리 한 번 충전으로 18~22시간</h3> </td> <td align="center" width="20%"><h3 >완벽한 장치 부품 비용 £50 ~ £80</h3> </td> </tr> </table>⚠️ [IMG:N] 형식 토큰은 이미지 placeholder 입니다. 번역하지 말고 원래 위치에 그대로 유지하세요.
목차 (Contents)
이해하기 (Understand it): 문제점 · 장치 작동 방식 · 작동 원리 · 라디오 (Radio) · 전원 (Power) · [탐지 범위 및 테스트 (#range-and-testing)]
구축하기 (Build it): 장치 구축 방법 두 가지 · 브레드보드 가이드 · 전체 유닛 가이드 · 펌웨어 플래싱 (Flashing) · 여러 장치 구동
기타 모든 것 (Everything else): 사진 및 비디오 · 테스트 결과 · 배포하기(Deploying) · 기여하기 · 범위 (Scope) · 라이선스 (Licence) · Agam의 메모
파일 (Files): 펌웨어 (firmware) · 참조 탐지기 (reference detector) · PCB, BOM 및 배치 (hardware/pcb/) · 인쇄 가능 외함 (printable enclosure) · 테스트 오디오 (test audio) · 웹사이트 소스 (index.html)
문제점 (The problem)
거의 모든 드론 탐지기는 라디오 신호를 감지하는 방식으로 작동합니다. 조종사와 비행기 사이의 제어 링크를 찾아 디코딩하고, 두 장치의 위치를 보고합니다. 이는 잘 작동하지만, 치명적인 결함이 하나 있습니다: 드론은 반드시 전송(transmit)해야 합니다.
광섬유 FPV 드론은 그렇지 않습니다. 광섬유가 운영자에게까지 가는 실처럼 연결되어 비디오는 섬유를 타고 내려오고 제어 신호는 올라가며, 라디오 스펙트럼은 조용합니다. 찾을 것도 디코딩할 것도 없습니다.
숨길 수 없는 것은 네 개의 모터가 프로펠러를 회전시키는 모습입니다. 2807 클래스 모터에 장착된 세 날개짜리 프로펠러는 블레이드 통과율(blade-passage rate) 간격으로 정밀하게 구조화된 고조파의 빗살무늬 패턴을 공기 중에 발생시키며, 이 간격은 에어프레임이 끌 수 없는 물리적 법칙에 의해 설정됩니다. VolAnti는 바로 그 구조를 감지합니다.
이것은 레이더가 아니며 레이더를 대체하는 것도 아닙니다. 라디오 신호가 없는 상황에서도 작동하며, 학교나 농장에서 자체적으로 구축하고 수리할 수 있는, 마지막 몇백 미터 구간을 위한 저렴한 현장 감지기입니다.
장치의 기능
<img src="https://raw.githubusercontent.com/agamrossen/VolAnti/HEAD/docs/images/face.jpg" align="right" width="320" alt="장치 전면: 네 개의 그릴, 화면, 불빛 및 버튼">이 장치는 지속적으로 작동하며 하나의 임무를 수행합니다. 32ms마다 네 개의 마이크로 소리 샘플을 취하고, 이를 결합하여 스펙트럼의 빗살 모양(comb-like) 정도를 측정하며, 이 패턴이 로터인지 여부를 네 개의 독립적인 감지기에 문의합니다.
그중 하나가 '예'라고 답하면 다섯 가지 일이 동시에 발생합니다.
| 채널 | 발생하는 일 |
|---|---|
| 비퍼(Beeper) | 크고 규칙적입니다. 벽을 통과하는 소리가 납니다. |
| ... | |
| 감지 알림 사이에는 불빛이 느리게 녹색으로 깜박여, 조용한 장치와 작동하지 않는 장치가 절대 같아 보이지 않도록 합니다. 수면 모드(snooze) 버튼을 누르면 감지는 계속되지만 출력은 10초 동안 무음 처리됩니다. |
작동 원리
B개의 블레이드를 가진 프로펠러가 초당 R 회전 속도로 공기를 B×R번 자릅니다. 이것이 기본입니다. 이 '자르는' 행위가 부드러운 사인파(sine)가 아니기 때문에, 에너지 또한 2×, 3×, 4× 등에서도 나타나며, 그 결과는 주기적인 간격으로 피크가 생기고 그 사이에 조용한 간격이 있는 배음 빗살 구조(harmonic comb)를 만듭니다.
<img src="https://raw.githubusercontent.com/agamrossen/VolAnti/HEAD/docs/images/comb.png" width="720" alt="적재된 프로펠러의 측정 스펙트럼, 빗살 구조가 보임">바람, 교통 소음, 비는 전체 스펙트럼에 걸쳐 퍼져나갑니다. 하지만 일정한 간격으로 배열된 이빨(teeth)들은 그렇지 않으며, 그 간격이 바로 로터 속도입니다. 따라서 감지기는 특정 비율을 측정하고 이것이 안정적으로 유지되는지를 확인합니다.
네 개의 마이크로 하나의 시스템. 네 개의 ICS-43434 MEMS 마이크가 플러스(+) 형태로, 모서리 간 거리가 79mm를 이루며 하나의 소스에서 클록됩니다. 이 네 개의 신호 스트림이 합쳐집니다. 해당 주파수 대역에서 79mm는 파장의 1/10에 해당하므로, 모든 방향에서 오는 소리는 위상 일치(in phase)로 더해지고 각 캡슐 자체의 노이즈는 상쇄됩니다. 이는 공짜로 약 6dB의 신호 대 잡음비(SNR)를 제공하며 거의 전방향성(omnidirectional)입니다. 이 크기에서 빔포밍(Beamforming)을 시도했지만 아무런 효과가 없었으므로, 이 배열은 방향 탐지기가 아니라 민감도 장치(sensitivity device)입니다.
스펙트럼. 16kHz 샘플링 속도로 512개 샘플마다 2048 포인트 FFT를 수행하며, 프레임당 32ms 간격으로 처리합니다.
적응형 배경 소음(Adaptive floor). 이 탐지기는 해당 장소에서 모든 주파수 대역별로 정상적으로 들리는 소리의 지속적인 그림을 유지하고 이를 빼줍니다. 조용한 환경은 약 6초 만에 학습되며, 크고 넓은 대역폭의 순간적 폭발음(broadband bursts)은 1초도 안 되어 학습됩니다. 이 기능 덕분에 지나가는 트럭이 노이즈 모델 속에 주차되는 것을 막을 수 있습니다.
콤 점수(Comb score). 70Hz부터 2000Hz까지의 모든 후보 주파수 대역에 대해 해당 콤의 치아(teeth)에 있는 에너지를 더하고, 그 간격(gaps)에 있는 에너지를 빼준 다음 정규화하여 가장 좋은 점수를 유지합니다.
추적 및 유지(Track and hold). 높은 점수를 받은 단일 프레임은 아무 의미가 없습니다. 동일한 주파수 대역이 2% 이내에서 연속으로 6개 프레임 동안 승리해야 합니다. 노이즈는 그렇게 하지 못합니다. 회전하는 로터(rotor)만이 할 수 있습니다.
하나의 스펙트럼에 네 개의 탐지기. 단일 탐지기는 도착하는 드론용인지, 아니면 정지 비행(hovers)하는 드론용인지 둘 중 하나에 맞춰 조정되어야 하므로, 총 네 개가 존재하며 경고는 가장 먼저 확신을 얻은 것이 발동됩니다.
| 등급 (Tier) | 탐지 대상 | 방법 | 지연 시간 (Latency) | |
|---|---|---|---|---|
| 1 | 빠른 콤(Fast comb) | 도착하거나, 접근하거나, 변화하는 항공기 | 빠른 배경 소음 대비 콤 점수 | 0.23 s |
| ... | ||||
| Tier 1은 밀봉되어 있습니다: 황금 테스트 벡터(golden test vectors)가 그 동작을 고정하며, 동일한 오디오는 노트북과 보드 모두에서 마지막 소수점 자리까지 동일한 점수를 제공합니다. Tier 4는 104m 떨어진 곳에서 발동된 것입니다. |
각 단계의 수치에 대한 더 자세한 내용은 docs/how-it-works.md를 참고하십시오. 모든 것은 시뮬레이터에서 실시간으로 작동합니다.
라디오
각 장치에는 Ra-01H LoRa 모듈과 케이스 벽에 놓인 스프링 안테나가 부착되어 있습니다. 경보 패킷은 18바이트로 구성되며, 식별자(identity), 등급(tier), 비율(rate), 점수(score), 시퀀스(sequence)를 포함합니다. 중계기나 메시 네트워크는 없습니다. 모든 장치가 다른 모든 장치를 직접 수신할 수 있으며, 이는 오후 안에 테스트해 볼 수 있는 기능입니다.
이 링크는 경보를 전파하는 것이지, 투표를 하는 것이 아닙니다. 각 장치가 스스로 결정합니다. '두 번째 의견'을 기다리는 것은 시간을 낭비하는 것이고, 시간은 이 제품 전체가 걸린 문제입니다.
주파수는 사용 국가에 맞게 설정해야 합니다: 영국과 EU에서는 868 MHz, 미국에서는 915 MHz를 사용하며, 그 외 지역은 현지 할당 주파수를 따릅니다. 자세한 내용은 docs/deploying.md를 참고하세요.
전원 (Power)
USB-C 입력과 전원 경로가 있는 BQ24074 충전기, 3.3V를 유지하는 TPS63020 벅-부스트(buck-boost), 그리고 1S 2500 mAh LiPo 배터리를 사용합니다. 셀만으로도 약 18시간에서 22시간 동안 작동합니다.
배터리는 상용 전원에 연결된 장치에서도 제자리에 유지됩니다. 이전에 테스트했을 때, USB 전원만으로는 비퍼(beeper), 모터, 라디오가 동시에 작동하면서 보드가 과전류로 인해 고장 난 적이 있습니다. 배터리가 그 급격한 스파이크를 흡수해 줍니다. 배터리가 없는 상용 전원 장치는 가장 중요한 순간에 재부팅되는 문제가 발생할 수 있습니다.
범위 및 테스트 (Range and testing)
<img src="https://raw.githubusercontent.com/agamrossen/VolAnti/HEAD/docs/images/field-104m-map.jpg" align="right" width="300" alt="114 yards on the map">2026년 9월 6일, 104 m. 차량 통행이 있는 벽돌 건물 거리에서 테스트를 진행했습니다. 테스트 장비는 멀리 떠 있었고, 등급 4(Tier 4)가 104.2m 지점에서 작동했으며, 지도상으로는 114야드에 해당합니다. 근처에서 사람들이 이야기하고 있었지만, 차량에서는 아무것도 감지되지 않았습니다. 이 테스트 장비는 본 제품과 동일한 프레임에 부착된 네 개의 2807급 모터와 세 날개 프로펠러를 사용했으며, 각 모터가 독립적인 스로틀을 가져서 표시된 곳 어디든 호버링할 수 있었습니다. 비디오, 지도 및 테스트 화면은 test results와 the gallery에서 확인할 수 있습니다.
이후 테스트를 거쳐 탐지기가 더 세밀하게 조정되었으며, 오경보율(false-alarm rate)을 낮추고 반응 속도를 높였습니다. 이러한 변경 사항은 현재 펌웨어에 반영되어 있습니다.
이전 모습. 8월 21일, 개활지, 바람 변화: 프로펠러가 장착된 상태에서 14m 거리를 비추었으며, 하루 종일 오경보(false alarms) 없이 작동했습니다. 8월 28일, 첫 생산 보드: 탐지기 출력이 골든 벡터(golden vectors)의 기준값과 완벽하게 일치했으며, 최악의 프레임에서 1,938프레임에 걸쳐 32ms 예산 대비 29.4ms로 초과 기록이 없었습니다.
바람에 따라 탐지 범위가 한 자릿수(order of magnitude)만큼 변합니다. 바람이 없고 조용한 장소에서는 100200m를 제공할 수 있습니다. 바람이 불거나 소음이 있는 장소에서는 1550m 정도입니다. 8 m/s 이상일 경우 성능 저하로 간주합니다. docs/deploying.md에 표가 있습니다.
구축 방법 두 가지
<table> <tr ><td width="50%" valign="top"> <img src="https://raw.githubusercontent.com/agamrossen/VolAnti/HEAD/docs/images/breadboard-photo.jpg" width="100%" alt="브레드보드 제작 사진">브레드보드 사용. 개발 보드와 마이크 출력부 4개만 필요합니다. 맞춤형 PCB가 필요 없고, 헤더 핀 외에는 납땜할 것이 없습니다. 동일한 펌웨어, 동일한 탐지기로 드론을 감지할 수 있습니다. 비용은 약 £35~£45이며 하루 저녁 정도 걸립니다.
</td> <td width="50%" valign="top"> <img src="https://raw.githubusercontent.com/agamrossen/VolAnti/HEAD/docs/images/two-units.jpg" width="100%" alt="완성된 장치 두 개">또는 완전한 장치. 4층 보드를 조립하여 주문하고, 부품 4개를 인쇄하며, 공장에서 할 수 없는 몇몇 접합부만 납땜하고, 나사로 조립합니다. 이 단위가 본 페이지의 모든 숫자의 근원입니다. 비용은 약 £50~£80이며 주말 정도 걸립니다.
</td> </tr> </table>여러 단위 실행하기
단일 단위만으로도 완벽합니다. 여러 단위를 사용하면 더 넓은 지역을 커버할 수 있고, 경보를 사람들에게 가까운 곳으로 이동시킬 수 있습니다: 울타리에 설치된 단위가 항공기를 듣고, 주방에 있는 단위가 그 소리를 반복해서 들려줍니다.
모든 장치는 전체 탐지기를 실행하며 자체 증거를 통해 경고합니다. 청취 장치는 접근 측면에 배치되며 커버리지가 닿도록 간격을 두고, 태양광 또는 배터리로 작동합니다. 실내 장치는 사람들이 있는 곳에 전력으로 설치되며 주로 반복됩니다. 조립되어 플래시된 예비품 하나만 선반에 두면 일주일간의 수리가 2분 만에 교체로 끝납니다.
바닥과 평행하게, 그늘진 곳에, 높이 2~4m로, 안정적인 소음으로부터 몇 미터 떨어진 곳에 설치합니다. 장치가 있는 위치를 게시하지 마십시오. 배치, 전력 배선, 서비스 일정 및 계획 계산은 docs/deploying.md에서 확인할 수 있습니다.
기여하기 (Contributing)
빌드 보고서가 보낼 수 있는 가장 유용한 자료입니다. 작동하지 않았던 경우도 포함하여 보내주십시오. 빌드 유형, 펌웨어 버전, 소리의 원인, 탐지되었는지 아닌 거리, 바람, 그리고 오경보를 명시하며 Build report: <대략적인 위치, 월>이라는 제목의 이슈를 열어주세요. 장치가 있는 지도의는 받지 않습니다.
풀 리퀘스트(Pull requests)는 아래 범위 내 모든 것에 환영합니다. 탐지 체인의 변경 사항은 골든 벡터 테스트(golden vector tests)를 변경 없이 통과해야 하거나, 새로운 벡터와 그 이유가 제시되어야 합니다.
범위 (Scope)
VolAnti는 탐지하고 경고하는 기능을 수행합니다. 이 프로젝트나 이름을 공유하는 어떤 포크에서도 재밍(jamming), 스푸핑(spoofing), 가로채기(interception), 표적화(targeting) 또는 기타 어떠한 대응책도 포함하지 않을 것입니다. 해당 방향의 기여는 논의 없이 폐쇄됩니다.
라이선스 (Licence)
AI 자동 생성 콘텐츠
본 콘텐츠는 HN Show HN (AI)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기