+1

Сенсор Starline EC-1: логика

sorokin96 2 years ago updated 2 years ago 4

Дорого дня. В дополнение к StartStop наконец встроил EC-1 себе. Подключил к постоянному плюсу и статусному выходу(из постоянного только режим пляж).

И задумался, что хочу оставить возможность ввода экстренного кода разблокировки через ручку, на случай если метка потеряется/телефон разрядится. Задумался как это сделать, так как без метки датчик работать не будет, а если сделать постоянную массу - то датчик будет работать неадекватно так как, если я правильно понял, то там автокалибровка только при включении, а не автоматически переодическая.

Задумался как можно сделать, чтобы калибровка происходила периодически автоматически.

Условное обозначение:

Программа 15 - текущая программа

Питание - выход, который подключен к питанию сенсора

300 сек - 5 минут

Ничего не делать - замораживаем логику, делаем отсрочку перезапуска

Есть идея написать логику формата:

Есл

(программа 15: завершила работу),

то

(питание: выключить);

задержка перед выполнением 0.3 сек:(питание включить);

задержка перед выполнением 300.3 сек:(ничего не делать:ничего не делать, прервать если - метка(любая):появилась; дверь:открылась)

Опишу что в ней вижу, кто не вник:

Программа по порядку - 15ая.

Делаем её цикличной, запуская её заново, когда она закончит работать. 

Первым действием выключаем питание сенсора

2ым действием включаем питание снова через 30 милисекунд. Сенсор перезапускается и калибруется.

3им действием замораживаем исполнение программы на 5 минут, после чего программа перезапустится. Но прерываем эту паузу если откроют дверь или появится метка, чтобы программа перезапустилась. А с ней перезапустилось питание, запустилась калибровка и таймер начался заново.

Соотвественно вопрос возник: хватит ли 30 милисекунд сенсора обесточится? Нет ли там конденсатора, остаточного питания со стабилизатора и тп. Никто не эксперементировал?


Или может кто уже похожее делал и я велосипед изобретаю? Или ещё у кого какие идеи есть?

+1

Ах да, забыл, саму ту же программу же нельзя контролировать на перезапуск. Надо контролировать перезапуск выходом дополнительным, как переменной, например 

+1

В общем подумал пока что, решил сделать так:

Посмотрим, прокатит ли


В текстовом формате:

Если: Питание сенсора - стало неактивно

То Задержка 0,3 сек Питание сенсора - подать импульсы 4700мсек, прервать если - появилась метка или открыта дверь водителя

Чуть позже проверю

А вообще было бы удобно, если бы в функциях каналов была бы функция Питание сенсора, которая выполняла бы похожий алгоритм(там написать более правильную логику легче)

+1

Вобщем сделал так:

т.е. ручка не работает в сервисном режиме. И есть 3 нюанса:

1. Ввиду того, что в самом начале и после перезагрузки(мягкой и полной) входы выключаются - логика не отрабатывает - цикл завершается - нужно вручную первый раз выполнить. Первый цикл выполняется из приложения. После программа переходит в самоподдерживающий режим.

2. Подачу импульса нельзя ограничить более 1 минуты. Поэтому пока поставил интервал в минуту. Чуть позже сделаю по другому - Через включить и выключить с отсрочкой. Там получится.

3. Перезагрузка может прервать касание - не критично(в принципе ничего такого я в этот момент не встретил). Но хочется, чтобы можно было при нажатии, если осталось меньше 10 секунд - добавить 60 секунд к таймеру перезагрузки

А в целом - работает адекватно. В течении этих суток артефактов не нашел. Ввод экстренного кода работает исправно. Падение чувствительности не встречал. Правда сегодня жарко, без дождя, но в целом - алгоритм рабочий.

+1

3 дня теста. Был дождь и жара - нареканий не заметил. Ведет себя адекватно.

Правда сейчас у меня сделано на интервале 5 минут. Последим дальше что будет.
Завтра напишу предложение в раздел идеи. Потому что если будет встроено в логику сигналки - как минимум не потребуется стартовый импульс, можно будет сделать отсрочку перезагрузки при касании. И сделать настройку интервала перезапуска.

Надеюсь снова не отправят в "Самостоятельную установку":)