Модуль цифровых вводов

Зачем нужен модуль цифровых вводов, я уже говорил. Что же он собой представляет в плане постановки задачи? Модуль дол­жен иметь некоторое количество входов, каждый из которых может быть замкнут на общий провод или разомкнут. В ответ на запрос центрального управляющего устройства модуль пе­редает состояние своих входов. К входам присоединяются дат­чики. Кроме уже упомянутых это могут быть датчики, регист­рирующие состояние бытовой аппаратуры. Например, датчик состояния телевизора, регистрирующий, включен он или вык­лючен. Применение подобного датчика особенно актуально, если телевизор, как это зачастую получается, управляется с помощью ИК-команд. Поясню.

Стандартная ситуация: систему можно построить таким образом, что управление будет происходить по времени су­ток. В час ночи, если вы ложитесь спать раньше, система мо­жет выключить все бытовые приборы, весь свет в доме (или квартире), всю аудио — и видеоаппаратуру, которые могли ос­таться включенными. Однако есть одно «но». ИК-сигнал вык­лючения некоторых телевизоров, многих музыкальных цен­тров и видеомагнитофонов полностью совпадает с сигналом включения. Если одна из команд прошла мимо системы, вме­сто выключения устройства вы включите его. Обычно в про­грамме управления можно устанавливать флаги состояния. Каждое включение телевизора устанавливает флаг TV__ON, а выключение сбрасывает его. А если телевизор оказался вы­ключен из сети? Флаг будет успешно устанавливаться и сбра­сываться, не решая проблемы.

Можно применить релейный модуль, подключая телеви­зор, музыкальный центр и остальное оборудование к сети через контакты реле. Но хотелось бы иметь запасной вари­ант. Таким вариантом станет датчик, который фиксирует ток в проводах подключения бытовой техники. Лучше использо­вать, например, датчик Холла для определения тока в цепи, но можно применить и что-нибудь попроще. Об этом мы по­говорим ниже, но подобный датчик подключить к системе разумнее всего с помощью модуля цифровых вводов или сам модуль сделать частью датчика.

Есть очень удобные и дешевые датчики, которые называ­ют «герконовыми». Они удобны для установки на двери или окна. На основе такого датчика можно организовать автома­тическое включение и выключение света в ванной или туале­те При первом открывании двери свет включается, при вто­ром выключается. «Герконовый» датчик, конечно, к системе подключается через модуль цифровых вводов. Если устано­вить датчик на входную дверь, а в основной программе поста­вить счетчик, можно организовать подпрограмму определе­ния момента, когда все покидают квартиру или дом. Этот момент может быть отправной точкой для принудительного отключения от сети всех электроприборов и перекрывания вводов воды во избежание протечек. Или включения систе­мы имитации присутствия людей в доме, что используется, как часть подсистемы охраны. Позже, когда кто-то приходит домой, такой датчик можно использовать для организации сцены обслуживания, которую я описал в предисловии как «Возвращаюсь я с работы…». Таким образом, модуль цифро­вых вводов вполне можно отнести к базовым и обязательным модулям системы «Умный Дом».

Я хочу обсудить еще одно применение модуля цифровых вводов — в качестве интерфейса к клавишным устройствам управления. Имея 8 входов, подобный модуль может работать с устройством управления, снабженным 8 клавишами Этого достаточно для многих задач управления. Если же использо­вать матрицу 4×4 для построения клавиатуры, количество подаваемых команд увеличится до 16, а количество использу­емых выводов порта останется равным восьми.

Модуль цифровых вводов легко сделать из программы для релейного модуля. Перенаправим все выходы, предназначенные
для подключения реле, на вход. Будем отслеживать состоя­ние всех входов и записывать их. Остается только переда­вать их состояние в ответ на запросы главной программы, как это было с системными ИК-командами в модуле приема ИК-кодов.

Присвоим командам модуля цифровых входов префикс, например D, и получим формат запроса:

Dxx$0S

Где хх — два символа номера модуля от 0 до 15, а 0 после $ — «заставка» для поддержки формата.

Формат ответа модуля тоже, очевидно, будет:

Dxxyyy

Где ууу — символьное представление десятичного числа, ото­бражающего состояние входов (как это было сделано для при­емника ИК-команд).

Updated: 21.01.2012 — 19:29