«Tamper» circuit геркона: могу ли я подключить два провода к INPUT и выходу OUTPUT?

Во время работы на стороне автоматизации моего нового дома я сейчас в процессе установки нескольких герконовых переключателей поверх внешних дверей и окон.

Даже если это может быть использовано как инфраструктура безопасности, в настоящее время меня больше интересует «автоматизация» ( проверка состояния дверей и окон без необходимости физически наблюдать за ними ) и как таковой, я собираюсь расширить инфраструктуру на основе arduino, которую я уже запланировал и прототипировал [ подробнее здесь ].

Это языковой переключатель, который я установил (добавлена ​​монета размером 1 € для ссылки на размер):

 фотокамерное фото

и это связанные схемы:

 герконы

Как вы можете видеть, в нем есть две схемы: одна связана с функциональностью «переключателя»; другой - в качестве меры безопасности, чтобы поймать некоторые «порезы» вдоль проводов.

Чтобы проверить его статус, в настоящее время я настроил:

  • "контактная цепь":

    • один конец Arduino GROUND_PIN;
    • другой конец цифрового PIN 52 (REED1_SW_Pin);
  • "схема тампера":

    • один конец Arduino GROUND_PIN (тот же вывод GND, что и выше);
    • другой конец цифрового PIN 50 (REED1_AT_Pin);
  • Настройка Arduino:

      pinMode(REED1_SW_Pin, INPUT_PULLUP) литий> pinMode(REED1_AT_Pin, INPUT_PULLUP) литий>
  • Код Arduino:

    • Ниже перечислены основные события обработки READ-кода.

Даже тяжело все работает нормально, мне интересно, есть ли более эффективные подходы, в высшей степени инспектируя статус двери и окна без необходимости физически наблюдать за ними условия POWER-CONSUMPTION. Итак, вот мои вопросы:

  1. TAMPER-Circuit : по своей природе он всегда будет «замкнутой» схемой с текущим током внутри от REED1_AT_Pin до GND. В настоящее время я проверяю его состояние каждые 1 секунду (#define REED_AT_CHECKDELAY 1000), но частота один раз каждые 5 секунд или даже 10 секунд будет приемлемой (для меня). Поэтому я бы хотел, чтобы текущая текущая ТОЛЬКО во время «проверки-таймфрейма». Что-то вроде:
    • каждые 5 секунд ...
    • активируйте что-то, получив ток, протекающий по цепи;
    • проверить, протекает ли текущий поток;
    • если yes => OK
    • если нет => установить /сохранить состояние ALARM
    • отключить «что-то»

Возможно ли это? Если да, то как? Также: стоит ли это усилий?

  1. Схема REED-переключателя : такая же, как указано выше. Подход к опросу по-прежнему приемлем (для меня), но частота должна быть относительно высокой (максимум 5 секунд), чтобы сохранить вид «почти в реальном времени обратной связи» при открытии /закрытии окон. Лучшим был бы интервал опроса 2 сек. С таким сроком, подходит ли подход к опросу?

  2. с «электронной» точки зрения, что такое «предпочтительный сценарий» для платы Arduino:

    • с небольшим фиксированным постоянным током, вытекающим из ПИН-кода, для YEARS на основе 24/7/365 или ...
    • , имеющий непрерывный переход от LOW-> HIGH-> LOW для цифрового PIN-кода, скажем один раз каждые 5 секунд, снова для ЛЕТ?

Каждый комментарий, побочные эффекты, подсказки, критики, что угодно ... ДЕЙСТВИТЕЛЬНО приветствуется /оценивается.


Обработка кода кода Arduino с помощью REED

BTW: полный код, где переключатель REED обрабатывается с помощью кнопок и реле, он доступен на GitHub

    [...]
    if (reed_sw1_state! = reed_sw1_previous_state) {
        //произошло изменение. Мы находимся в окне «boucing»?
        if (millis () - last_reed_sw1_debounce> REED_DEBOUNCE) {
          //нет. Так что это реальное изменение
          //Давайте обрабатывать событие ...
          Serial.print (Миллис ());
          Serial.print ("[REED] - состояние SW1 ИЗМЕНИТЬ из [");
          Serial.print (reed_sw1_previous_state);
          Serial.print ("] - [");
          Serial.print (reed_sw1_state);
          Serial.println ( "]");
          reed_sw1_previous_state = reed_sw1_state;
          last_reed_sw1_debounce = millis ();
        } else {
          //да. Давайте проигнорируем это
        }
      }

      //Давайте проверим REED-переключатели состояния против несанкционированного доступа
      if (millis () - reed_at1_lastcheck> REED_AT_CHECKDELAY) {reed_at1_state =! digitalRead (REED1_AT_Pin);
         if (reed_at1_state == HIGH) {
            Serial.print (Миллис ());
            Serial.print ("[REED] - состояние AT1 OK [");
            Serial.print (reed_at1_state);
            Serial.println ( "]");
         } else {
            Serial.print (Миллис ());
            Serial.print ("[REED] - состояние AT1 ALARM - OnGoing TAMPER !!! [");
            Serial.print (reed_at1_state);
            Serial.println ( "]");
         }
         reed_at1_lastcheck = millis ();
      }
      [...]
2 голоса | спросил Damiano Verzulli 14 FebruaryEurope/MoscowbSun, 14 Feb 2016 23:36:41 +0300000000pmSun, 14 Feb 2016 23:36:41 +030016 2016, 23:36:41

1 ответ


3
  

Итак, я хотел бы, чтобы ток течет ТОЛЬКО во время «таймфрейма проверки».

Отключите подтягивание до момента проверки. Разрешите несколько миллисекунд для подтягивания, чтобы поднять напряжение.

  

С таким сроком, подходит ли подход к опросу?

Конечно, если вы пытаетесь сэкономить заряд батареи.


Помните, что напряжение падает на длинные кабельные трассы (а также, возможно, индуцированные всплески). Возможно, вам понадобится более мощный подтягивание (например, 10k), а не встроенный 50k. Вы все равно можете организовать это, указав выходной вывод на напряжение до подтягивания. Или, если подтяжка подключена постоянно, но вместо того, чтобы работать на другой стороне, установите «заземленный» провод на OUTPUT и напишите LOW, а затем установите его в INPUT, если вы хотите, чтобы он был неактивным.

См. мой пост о Энергосбережение - вы можете использовать сторожевой таймер, чтобы разбудить устройство (скажем) каждые 4 секунды, чтобы проверить вещи.

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

 Защита ввода

ответил Nick Gammon 15 FebruaryEurope/MoscowbMon, 15 Feb 2016 00:07:56 +0300000000amMon, 15 Feb 2016 00:07:56 +030016 2016, 00:07:56

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132