EdigE
← ЛЕНТА
RF · 03.07.2026

Wi‑Fi как дешёвый датчик движения через стены — без CSI

Карманный Cardputer ADV на ESP32-S3 научили отмечать изменения Wi‑Fi-канала по комплексным CSI-отсчётам. Прошивка анализирует амплитуду и фазу в окне из 50 кадров, но экранные отметки не показывают положение человека: их угол выбирается генератором случайных чисел. Главный инженерный вопрос здесь — насколько устойчив такой детектор после калибровки в реальном помещении.

Проект Cardputer Human Detector превращает M5Stack Cardputer ADV в компактный детектор движения по Wi‑Fi Channel State Information. Вопреки ранним пересказам, измерение не сводится к чтению RSSI. В активной конфигурации прошивки включён режим `RADAR_CSI=1`, а обработчик Wi‑Fi принимает комплексные I/Q-отсчёты состояния канала.

CSI описывает, как конкретный пакет прошёл через многолучевую среду между передатчиком и приёмником. Движение человека меняет геометрию отражений, задержки и фазовые соотношения лучей. Поэтому полезный сигнал возникает даже при неизменном номинальном уровне приёма. В коде для каждого CSI-кадра рассчитываются средняя амплитуда и фазовый признак, полученный из отношения мнимой составляющей к амплитуде. Затем сохраняется окно из 50 кадров, для которого вычисляются вариации обоих признаков.

Итоговый motion score собирается из амплитудной вариации с весом 60% и фазовой с весом 40%. Значение дополнительно нормализуется по скользящим минимуму и максимуму, поэтому проект предлагает калибровку пустой комнаты перед работой. Такой подход удобен для демонстратора на MCU, однако переносимость порога между комнатами остаётся открытой: мебель, работающий вентилятор, двери, люди за пределами зоны и перестановка точки доступа меняют baseline канала.

RSSI в прошивке тоже присутствует, но в вспомогательной роли. Его выводят на дисплей и используют при отрисовке радиуса экранной отметки. Считать этот радиус дальностью нельзя: уровень в помещении определяется затуханием, интерференцией и автоматической регулировкой мощности, а не только расстоянием. Направление также отсутствует. Функция `pickBlipAngle()` назначает угол blip случайно, поэтому круговой интерфейс изображает активность канала, а не азимут цели. В планах репозитория оценка bearing отмечена отдельной будущей задачей.

Talking Sasquach — вероятный автор исходной сборки; фото опубликовано TechEBlog в статье Steve Sun.

Аппаратная часть собрана вокруг Cardputer ADV с ESP32-S3FN8: два ядра Xtensa LX7 работают до 240 МГц, доступно 8 МБ flash, штатный дисплей имеет разрешение 240×135. К шине расширения подключён внешний TFT на контроллере ILI9341; фотография сборки показывает два экрана, соединённые проводами с GPIO. Одно ядро выделено под интерфейс, второе обслуживает Wi‑Fi-телеметрию и расчёт признаков. Автор оценивает комплект примерно в $50, включая Cardputer и два TFT, однако это ориентир, зависящий от региона и состава поставки.

При первом запуске устройство сканирует доступные сети, предлагает выбрать сеть и сохраняет введённые учётные данные. Подключение к выбранной WLAN необходимо для показанного CSI-режима, но не является полноценной моделью защиты от радионаблюдения: в коде есть и promiscuous callback для отдельного поиска устройств по OUI.

Заявления о работе через стены пока следует считать демонстрационными. Репозиторий подтверждает схему обработки и работающий портативный прибор, однако не публикует серию контролируемых измерений с расстоянием, материалом стен, вероятностью обнаружения и частотой ложных тревог. В нынешнем виде это интересный пример CSI sensing на массовом ESP32-S3 и одновременно наглядное напоминание: круговая «радарная» графика способна создать впечатление измерения координат там, где алгоритм фиксирует только изменение радиоканала.