[SLOT_n]
mode = sr04m

Программный модуль ультразвукового дальномера SR04M в UART-режиме. Рапортует расстояние до объекта в миллиметрах, дальность до 4500 мм.

Совместимость

Принцип работы

Датчик опрашивается непрерывно; модуль рапортует расстояние, когда оно изменилось больше, чем на deadBand.

Режим работы задаётся опцией threshold:

  • 0 — аналоговый режим: рапортуется само расстояние (distance) и его доля от диапазона измерений (ratio);
  • больше нуля — дискретный режим: рапортуется threshold со значением 1, когда объект ближе порога, и 0, когда дальше.

Диапазон измерений ограничивается опциями minVal и maxVal, дребезг у порога подавляется опциями debounceGap и cooldownTime, шум — фильтром filterK.

Топики

База топика события:

  • <deviceName>/distanceSens_<slot> — например moduleBox/distanceSens_0

База топика действия:

  • <deviceName>/distanceSens_<slot> — например moduleBox/distanceSens_0

Полный топик — база плюс направление и имя: moduleBox/distanceSens_0/event/distance.

Опции

Доступные опции:

  • disableOnStartфлаг, стартовать в выключенном состоянии и ждать action/enable со значением 1. По умолчанию модуль активен сразу.
  • deadBandчисло(int), мертвая зона - минимальное изменение значения для отправки рапорта. Диапазон 1–4096. По умолчанию 10.
  • maxValчисло(int), максимальное значение диапазона измерений в мм. Диапазон 1–4500. По умолчанию 4500.
  • minValчисло(int), минимальное значение диапазона измерений в мм. Диапазон 0–4500. По умолчанию 0.
  • debounceGapчисло(int), антидребезг порога в мс - новое состояние держится это время до рапорта. Диапазон 1–4096. По умолчанию 10.
  • thresholdчисло(int), порог для бинарного выхода - при значении 0 датчик аналоговый. Диапазон 0–4500. По умолчанию 0.
  • cooldownTimeчисло(int), время cooldown после срабатывания порога в мс. Диапазон 0–60000. По умолчанию 0.
  • filterKчисло(float), коэффициент сглаживающего фильтра (скользящее среднее), от 0 до 1. Значение 1 отключает фильтр. По умолчанию 1.

События

ТопикPayloadОписание
distanceSens_<slot>/event/distanceцелое, Текущее значение расстояния в мм
distanceSens_<slot>/event/ratio0.01.0Текущее значение расстояния в формате float от 0 до 1
distanceSens_<slot>/event/threshold0 / 1Состояние порогового датчика 0/1
distanceSens_<slot>/event/enable0 / 1Состояние модуля - активен 1 или спит 0

Пример: топик moduleBox/distanceSens_0/event/distance, payload 156.

В аналоговом режиме (threshold = 0) рапортуются distance и ratio, в дискретном — threshold.

Команды

ТопикPayloadОписание
distanceSens_<slot>/action/enable0 / 1Включить (1) или выключить (0) модуль

Примеры

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

Датчик настроен как дискретный выход с порогом срабатывания 1000 и высокой степенью сглаживания сигнала.

[SLOT_4]
mode = sr04m
options = minVal:100, maxVal:3000, deadBand:20
;расстояние уходит в масштабатор, тот - в яркость подсветки
crosslink = distanceSens_4/event/distance:@->scaler_6/action/pushVal:@

Аналоговый режим: рапортуется расстояние в рабочем диапазоне, изменения меньше 20 единиц игнорируются.

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