# 👁️ Теория: PIR-датчик движения AM312

## 1. Принцип работы: пассивный датчик, а не радар

В отличие от активных радаров вроде [HMMD-mmWave](../HMMD-mmWave), которые сами излучают
электромагнитную волну и анализируют отражение, **PIR** (Passive Infrared) ничего не излучает —
только пассивно принимает. Внутри датчика — пироэлектрический кристалл: при попадании на него
инфракрасного излучения в кристалле возникает электрический заряд, пропорциональный интенсивности
излучения.

Любое тело с температурой выше абсолютного нуля излучает в инфракрасном диапазоне; человеческое
тело — преимущественно в районе 9–10 мкм. Ключевой момент: пироэлектрический эффект даёт сигнал
только на **изменение** потока излучения, а не на его абсолютную величину — статичная тёплая
стена не создаёт сигнала, только движущийся источник тепла, пересекающий поле зрения датчика.
Именно поэтому PIR **не видит неподвижного человека** — в этом принципиальное отличие от радара,
который засекает микродвижение (дыхание) через эффект Доплера (см.
[HMMD-mmWave/THEORY.md](../HMMD-mmWave/THEORY.md)).

AM312 использует линзу Френеля, разбивающую поле зрения на несколько зон чувствительности — это
усиливает сигнал при пересечении границ зон движущимся источником тепла, по сравнению с одиночным
чувствительным элементом без линзы.

## 2. Технические характеристики

| Параметр | Значение | Источник |
| :--- | :--- | :--- |
| Напряжение питания | 2.7–3.6 В (типовое 3.3 В) | Типично для модулей AM312 на рынке |
| Логика выхода | HIGH = движение, LOW = покой | Подтверждено на данном экземпляре — см. раздел 3 |
| Длительность выходного импульса | Несколько секунд после каждого срабатывания | Наблюдение на данном экземпляре |
| Угол обзора | Десятки градусов по горизонтали | Типично для модулей этого форм-фактора без даташита под рукой |

Официальный PDF-даташит конкретной партии AM312 на момент написания этого документа недоступен
в окружении разработки. Цифры энергопотребления, точного угла обзора и дальности в предыдущей
версии этого файла были указаны без проверенного источника (не подтверждены даташитом) — здесь
они сознательно убраны, а не заменены новыми недоказанными числами. Если у вас есть даташит на
руках — впишите точные цифры сюда со ссылкой на страницу.

## 3. Логика сигнала — что подтверждено на этом экземпляре

Как и в случае с [HMMD-mmWave](../HMMD-mmWave/THEORY.md) — важно различать, что подтверждено
документацией производителя, а что — только наблюдением на конкретном физическом экземпляре.

Для этого экземпляра подтверждено эмпирически: выход **HIGH** соответствует обнаруженному
движению, **LOW** — покою (прерывание настроено на фронт `RISING`, см.
[`PirSensor::begin()`](src/PirSensor.cpp#L18-L21)). У разных производителей и партий AM312/HW-740
логика выхода может отличаться (встречаются как прямая, так и инвертированная версии) — если ваш
экземпляр ведёт себя иначе (`[MOTION]` не появляется при движении), возможно, у него
инвертированная логика: переключите прерывание на `FALLING` в `PirSensor::begin()`.

## 4. Логика удержания статуса (hold time)

AM312 не выдаёт непрерывный HIGH на всё время движения — реальный выход дискретен и может
ненадолго спадать в LOW между микро-импульсами, даже если человек продолжает двигаться. Наивная
логика "нет сигнала прямо сейчас → сразу гасим статус" даёт заметное мерцание индикации.

Драйвер поэтому не завязан на мгновенный уровень пина, а считает время от **последнего
засчитанного фронта прерывания** ([`PirSensor::update()`](src/PirSensor.cpp#L23-L46),
по умолчанию `holdTimeMs = 2000` мс) — статус "движение" гаснет только после `holdTimeMs`
миллисекунд без единого нового фронта, а не при первом же кратковременном LOW между импульсами.

## 5. Почему нет программной калибровки

В отличие от датчиков с UART-интерфейсом ([HMMD-mmWave](../HMMD-mmWave)), у AM312 нет
интерфейса связи вообще — только один цифровой выход. Настраивать через код нечего: чувствительность
и время удержания импульса зашиты в аналоговую схему датчика на заводе.

Единственное, что реально нужно после подачи питания — **физическая стабилизация**
пироэлектрического элемента: сразу после включения возможны ложные срабатывания, пока элемент и
усилительная схема выходят на рабочий режим. Конкретная длительность этого переходного процесса
не задокументирована производителем для данной модели — [`PirSensor::isWarmingUp()`](include/PirSensor.h#L34-L44)
использует условную оценку (5 секунд по умолчанию в `main.cpp`) как информационную метку в логе,
не как гарантию. Это не блокирующая задержка — в отличие от прежней версии этого компонента,
которая держала `delay(1000)` в цикле 30 секунд при каждом старте, полностью замораживая ESP32:
такая пауза не была основана на реальном требовании датчика, а лишь имитировала "калибровку",
которой у AM312 в принципе не существует.

## 6. Ограничения технологии

- PIR не может определить **количество** людей — только факт движения в поле зрения.
- Не работает сквозь непрозрачные для ИК преграды (стены, стёкла — стекло сильно ослабляет ИК в
  этом диапазоне).
- Не обнаруживает **неподвижные** объекты — в этом ключевое отличие от радаров (раздел 1).
- Даёт ложные срабатывания на любой источник теплового движения в поле зрения: работающий
  обогреватель, прямые солнечные лучи, движение штор на сквозняке, мелкие животные.
- Скорость движения имеет значение: слишком медленное движение может не дать достаточного
  изменения сигнала для срабатывания (зависит от конкретной схемы датчика).

## 7. Когда PIR уместнее радара, и наоборот

PIR дешевле, проще (нет протокола для разбора) и потребляет меньше. Он хорошо подходит там, где
достаточно среагировать на **вход** в зону — освещение коридора, простая охранная сигнализация.
Радар ([HMMD-mmWave](../HMMD-mmWave)) нужен там, где важно не терять цель, пока человек сидит
неподвижно (переговорка, детекция присутствия для климат-контроля) — но за счёт более сложного
протокола и более высокой цены.
