Семейство программных модулей датчиков расстояния. Каждый модуль — драйвер конкретного датчика, но наружу все они выглядят одинаково: публикуются под общим именем distanceSens, имеют один набор опций, событий и команд. Автоматизация, написанная для одного дальномера, работает с любым другим.

МодульДатчикПринципЕдиницыДальность
hlk2410HLK-LD2410радар 24 ГГц, датчик присутствиясмдо 800 см
benewakeTOFBenewake TF-сериялазерный (ToF)ммдо 12 м
TOFxxxFTOF050F / TOF200F / TOF400Fлазерный (ToF)мм0,5 / 2 / 4 м
sr04mSR04Mультразвуковойммдо 4500 мм

Все датчики подключаются через модуль интерфейса UART — одно устройство на модуль.

Общий интерфейс

База топика: <deviceName>/distanceSens_<slot> — и для событий, и для команд.

Два режима работы, выбираются опцией threshold:

  • аналоговый (threshold = 0) — рапортуются event/distance (расстояние в единицах датчика) и event/ratio (доля от диапазона minValmaxVal, 0.0–1.0), когда значение изменилось больше, чем на deadBand;
  • дискретный (threshold > 0) — рапортуется event/threshold: 1, когда объект ближе порога, 0, когда дальше. Дребезг у порога гасят debounceGap и cooldownTime.

Шум сглаживает фильтр filterK; модуль поддерживает enable (команда и рапорт) и флаг disableOnStart.

Единицы расстояния, диапазоны и значения по умолчанию у каждого датчика свои — смотрите страницу модуля.

Пример

[SLOT_3]
mode = sr04m
options = threshold:1000, filterK:0.05
;объект ближе метра - проиграть трек 0
crosslink = distanceSens_3/event/threshold:1->player_0/action/play:0

Заменив mode на hlk2410 и порог на 100 (сантиметры), получаем то же поведение с радаром — crosslink менять не нужно.

Подробнее — внутренние связи (crossLink).

в этой папке 4 элемента