Категории

DIY-детектор дронов на ESP32 и LoRa: как поймать FPV-дрон за 1500 рублей

18.12.2025 | Статья из категории: Безопасность

DIY-детектор дронов на ESP32 и LoRa

Военные и кустарные FPV-дроны часто управляются по радиоканалу в диапазонах 433, 868 или 915 МГц. Один из самых популярных протоколов — ELRS — работает поверх LoRa. А LoRa — это дёшево, просто и отлично ловится даже на коленке.

В этой статье — как собрать детектор сигнала управления дрона на ESP32 и модуле SX1278. Это не «радар» в военном смысле, но он сообщит, что рядом кто-то передаёт по LoRa — а в тишине полей это почти наверняка дрон.

Что понадобится

Итого: ~900–1500 ₽. Если есть ESP32 — выходит ещё дешевле.

Схема подключения (SPI)

SX1278          ESP32
------          ------
GND    ———>     GND
3.3V   ———>     3.3V   (!не 5V!)
MISO   ———>     GPIO19
MOSI   ———>     GPIO23
SCK    ———>     GPIO18
NSS    ———>     GPIO5
DIO0   ———>     GPIO2
RST    ———>     GPIO14 (опционально, можно к 3.3V)

Код для ESP32

Используем библиотеку arduino-LoRa от Sandeep Mistry. Установи её в Arduino IDE через «Скетч → Подключить библиотеку → Управлять библиотеками…».

Код работает в режиме CAD (Channel Activity Detection) — это когда LoRa-модуль не пытается прочитать пакет, а просто ловит факт передачи в эфире.

// Детектор LoRa-активности (например, ELRS от дрона)
// Пины подключения SX1278 к ESP32
#define SCK  18
#define MISO 19
#define MOSI 23
#define SS   5
#define RST  14
#define DI0  2

#include <SPI.h>
#include <LoRa.h>

void onCadDone(bool signalDetected) {
  if (signalDetected) {
    Serial.println("⚠️ LoRa-сигнал обнаружен!");
    // Можно включить пищалку, LED или отправить по WiFi
  }
  // Сразу запускаем новый поиск
  LoRa.cad();
}

void setup() {
  Serial.begin(115200);
  while (!Serial);

  Serial.println("LoRa Drone Detector запущен...");

  LoRa.setPins(SS, RST, DI0);
  if (!LoRa.begin(915E6)) { // Измени на 433E6, если у тебя 433 МГц
    Serial.println("Ошибка инициализации LoRa!");
    while (1);
  }

  LoRa.onCadDone(onCadDone);
  LoRa.cad(); // Запуск первого сканирования
}

void loop() {
  // Всё обрабатывается в прерывании
  delay(1000);
}

Что это ловит?

Улучшенный LoRa-детектор с оценкой приближения/удаления


// Подходит для обнаружения ELRS-дронов

#define SCK  18
#define MISO 19
#define MOSI 23
#define SS   5
#define RST  14
#define DI0  2

#include <SPI.h>  
#include <LoRa.h>  

const int RSSI_HISTORY_SIZE = 5;  // Сколько замеров хранить
int rssiHistory[RSSI_HISTORY_SIZE];
int historyIndex = 0;
bool historyFull = false;

// Порог активности (ниже — шум)
const int RSSI_THRESHOLD = -90;  // dBm, зависит от антенны и местности

void updateRssiTrend(int rssi) {
  rssiHistory[historyIndex] = rssi;
  historyIndex = (historyIndex + 1) % RSSI_HISTORY_SIZE;
  if (historyIndex == 0) historyFull = true;

  if (!historyFull) return;

  // Простой тренд: сравниваем начало и конец окна
  int startAvg = 0, endAvg = 0;
  for (int i = 0; i < RSSI_HISTORY_SIZE/2; i++) {
    startAvg += rssiHistory[i];
    endAvg += rssiHistory[RSSI_HISTORY_SIZE/2 + i];
  }
  startAvg /= (RSSI_HISTORY_SIZE/2);
  endAvg /= (RSSI_HISTORY_SIZE/2);

  Serial.print("RSSI: ");
  Serial.print(rssi);
  Serial.print(" dBm | тренд: ");

  if (endAvg - startAvg > 3) {
    Serial.println("🟢 ПРИБЛИЖАЕТСЯ");
  } else if (startAvg - endAvg > 3) {
    Serial.println("🔴 УДАЛЯЕТСЯ");
  } else {
    Serial.println("⏸️ НЕИЗВЕСТНО");
  }
}

void onCadDone(bool signalDetected) {
  if (signalDetected) {
    // Быстро включаем приём, чтобы получить RSSI
    LoRa.receive(); // Переключаемся в приём
    delay(2);       // Даём чуть времени (ELRS пакеты короткие)
    
    int rssi = LoRa.packetRssi(); // Читаем RSSI последнего "почти пакета"
    
    if (rssi > RSSI_THRESHOLD) {
      updateRssiTrend(rssi);
    }
  }
  // Сразу возобновляем CAD
  LoRa.cad();
}

void setup() {
  Serial.begin(115200);
  while (!Serial);

  Serial.println("LoRa Drone Detector v2 (с оценкой приближения)");

  LoRa.setPins(SS, RST, DI0);
  // Настройка под ELRS: SF=9, BW=500kHz, CR=4/6 — но для детекции можно и дефолт
  if (!LoRa.begin(915E6)) { // ← МЕНЯЙ НА 433E6, ЕСЛИ НАДО
    Serial.println("Ошибка LoRa!");
    while (1);
  }

  // Опционально: настройка под ELRS-совместимость (не обязательна для детекции)
  // LoRa.setSignalBandwidth(500E3);
  // LoRa.setSpreadingFactor(9);
  // LoRa.setCodingRate4(6);

  LoRa.onCadDone(onCadDone);
  LoRa.cad();
}

void loop() {
  delay(100); // Почти ничего не делаем — всё в прерывании
}

Но! Если в твоём регионе FPV-дроны летают на 915 МГц по ELRS (а так почти везде вне Европы), — этот детектор будет работать.

Какие радиомодули можно купить свободно (2025)

Ниже — список доступных на рынке RF-модулей, которые можно использовать для детекции или анализа эфира. Все продаются без лицензии в РФ и СНГ, если мощность ≤ 10 мВт (в большинстве случаев).

Модуль / Чип Диапазон Цена (RUB) Протоколы Подходит для детекции?
SX1278 433 / 868 / 915 МГц 300–600 ₽ LoRa, FSK ✅ Да (LoRa-сигналы: ELRS, LoRaWAN)
ESP32 (встроенный Wi-Fi/BT) 2.4 ГГц 400–700 ₽ Wi-Fi, Bluetooth ⚠️ Только если дрон использует Wi-Fi (редко у FPV)
nRF24L01+ 2.4 ГГц 100–200 ₽ Proprietary 2.4G, ShockBurst ⚠️ Может ловить некоторые дешёвые игрушечные дроны, но не FPV
CC1101 300–1000 МГц 250–400 ₽ OOK, ASK, FSK, GFSK ✅ Да! FrSky, FlySky, DSMX, некоторые пульты
Si4432 / Si4463 433 / 868 / 915 МГц 400–700 ₽ FSK, GFSK, OOK ✅ Хорош для FrSky, но сложнее в настройке
RTL-SDR Blog V3 24 МГц – 1.7 ГГц 1900–2500 ₽ Любой сигнал в диапазоне ✅✅ Отлично! Универсальный детектор (кроме 5.8 ГГц)
RX5808 5.8 ГГц 400–700 ₽ Аналоговое FPV (AM) ⚠️ Только если сканировать каналы вручную (медленно)
HopeRF RFM69 433 / 868 / 915 МГц 350–500 ₽ FSK, GFSK ⚠️ Может ловить некоторые протоколы, но не ELRS

Примечания:

Как улучшить

Реалистичные ожидания

Это не военный радар. Это индикатор радиоактивности в эфире. Если в тишине полей вдруг загорелся — стоит насторожиться. Особенно если ты рядом с линией фронта, лагерем или заброшенным полигоном.

Но за 1500 рублей и пару часов пайки — это уже настоящий DIY-сигнал-разведчик.

Где купить

Паяльник не обязателен — можно собрать на макетке.

Заключение

LoRa — тихий, дальнобойный, устойчивый к помехам. Именно поэтому его выбирают для дронов. И именно поэтому его легко поймать — даже на коленке в окопе.

Собирай, тестируй, модифицируй. И не забывай: если сигнал есть — где-то рядом пилот.

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку статей

Важно: Блог-эксперимент

Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.

Посетителей сегодня: 0


кто я | книга | контакты

© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA