XControl

XControl представляет из себя программно-аппаратный комплекс, который состоит из основного аппаратного блока и 2-х программ – XControl, которая  предоставляет возможность просматривать одновременно за несколькими аппаратными блоками, а так же, программы XControl-Configer, с помощью которой устанавливаются основные настройки блока.

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

Схема (основная часть):

Схема (коммуникационная часть):

В прилагаемых файлах есть схема и разводка в DipTrace.

Плата получилась 10х5 см 2-хсторонняя:

Естественно, делать ее вручную я не стал и заказал на заводе, вот что получилось:

Основной аппаратный модуль

Параметры основного модуля:

  • Напряжение питания 8-30 В.
  • Ток потребления – от 0,3А до 4А в зависимости от количества и характеристик подключаемых датчиков или исполнительный устройств (например, реле).
  • Количество контактных выходов – 7. Максимальный ток каждого 500мА.
  • Количество контактных входов – 4. Имеют защиту от статики.
  • Количество аналоговых входов – 2. Имеют защиту от статики. Пределы измерения – от 0 до 2,56В. Так же, есть возможность производить 4 математические операции над каждым входом, поэтому, пределы измерения не ограниченные.
  • Количество подключаемых датчиков DS18B20 – 15 шт. Защита от статического электричества.
  • Возможность управления каждым входом через пульт дистанционного управления с кодировкой RC5.
  • Возможность работы выхода в качестве термостата (с настраиваемым гистерезисом), объединив его с одним с термодатчиков.
  • Подключение к сети производится через разъем Ethernet (RJ45). Просмотр/управление устройством через браузер или программу XControl.
  • Настройка устройства осуществляется через USB порт компьютера, с помощью программы XControl-Configer. Перепрошивка устройства так же через USB.
  • Возможность задавать пароль для ограничения доступа к устройству.
  • Возможность управлять устройством с помощью XMLHTTPRequest, что особо полезно для программистов, которые хотят управлять устройством со своей программы или сайта/сервера.

Описание разъемов

Слева разъем Ethernet, с помощью которого модуль подключается к сети. По центру – USB разъем. Справа – разъем питания, полярность подключения обозначена на плате (справа «+»).

Перемычка слева предназначена для включения приемника пульта дистанционного управления(ПДУ), рядом правее – сам приемник. По центру – разъем для подключения датчиков DS18B20. По середине контакт DQ, который предназначен для подключения сигнального контакта датчика. «+» и «-» предназначены для подключения контактов питания датчика, но могут быть использованы для других целей, например, подключение подтяжки контактного датчика. Справа прямо на плате установлен 1 датчик.

Распиновка (цоколевка) датчика

Вроде, все просто и понятно. Все датчики соединяются параллельно. 

Сверху разъем для подключений контактных выходов. Каждый выход работает как открытый коллектор, то есть, при активации выхода контакт замыкается на землю. На разъеме 2 левые контакта – это выход VCC, он на прямую соединен с положительным контактом источника питания. Для подключения любой нагрузки (например, реле) нужно положительный контакт подключить к VCC, отрицательный – к определенному выходу. Соответственно, если потребитель(нагрузка) не полярный (например, реле), то полярность подключения значения не имеет.

Снизу расположен разъем подключения контактных и аналоговых входов. Контактный вход считается активным, если он замкнут на землю (GND), посредине для этого установлен разъем. Справа – два контакта аналоговых входов.

Подключения нагрузки контактным выходам. Для примера, подключим самый часто используемый элемент – реле. Оно имеет, как минимум 4 контакта – 2 контакта катушки, на которую надо подавать напряжение и 2 контакта, которые замыкаются при активации реле.

Запуск устройства и настройка

Подключите источник питания к разъему «ПИТАНИЕ», после этого загорится светодиод POWER и на 2 секунды загорится светодиод WORK, после этого, устройство перейдет в штатный режим работы, но если установить перемычку BOOT, пока горит этот светодиод, то устройство перейдет в режим конфигурации. При первом запуске обязательно нужно сделать процедуру конфигурации. Итак, отключите питание устройства, далее, подключите обратно и пока будет греть светодиод WORK, установите перемычку BOOT, после этого, ПК определит новое устройство и запросит драйверы, установите их, они находятся в прилагаемых файлах. Когда драйверы установлены, запустите программу XControl-Configer.

При запуске программы отобразятся настройки по умолчанию.

Основные настройки. IP – это, собственно, IP адрес самого устройства, через который мы будем к нему обращаться. МАС – просто MAC адрес. Порт – рекомендуется стандартный для сервера – 80. IP роутера вводить желательно, но не обязательно. Пароль используется для ограничения доступа к устройству, если он не нужен, то оставьте поле пустым.

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

Аналоговые входы. Здесь нужно ввести названия для аналоговых входов, а так же, выбрать необходимое действие. Если выбрать «Нет действия», то значение аналогового входа будет такое же, как и напряжение на входе. Но здесь есть ещё такие варианты: «+», «-», «*», «/». Данная опция сделана для того, чтобы можно было проводить математическую операцию. Пример использования: максимальное напряжение на входе – 2,56 В, а вам нужно измерять до 100 вольт. Для этого, ставим на входе аналогового входа резистивный делитель, к примеру, на 40, тогда при 100 вольтах после делителя будет 2,5В. Далее, выбираем действие «*» (умножение) и напротив вводим 40. Теперь, напряжение со входа будет умножаться на 40, а значит, результат (отображаемое значение) будет такое же, как и на входе перед делителем.

Термодатчики. Здесь 3 колонки – ID термодатчика (серийный номер), текущая температура (если не подключен, то 0), и название датчика. Если датчик был найден, но далее отключен, то он всеравно отображается, но как отключенный, чтобы очистить список термодатчиков и отобразить лишь подключенные, нажмите кнопку «Очистить список термодатчиков», после чего обязательно перезапустите устройство. Нажмите «Считать» и в списке отобразятся лишь подключенные датчики.

Итак, при первом включении нужно установить первичные настройки, для этого, просто запустите программу и нажмите «Сохранить». После чего «Считать». Далее установите нужные Вам настройки и ещё раз нажмите «Сохранить».

Устройство готово к запуску!

Отключите питание и перемычку, подключите питание. Теперь, подключите к роутеру, далее откройте браузер и введите в строке адреса IP устройства, если Вы установили порт не 80(стандартный для сервера), то после IP адреса поставьте двоеточие и после него номер порта. Если вы задали пароль, то далее напишите «слэш» и пароль, после него ОБЯЗАТЕЛНО ещё одна «слэш». Переходите по ссылке.

Должна отобразиться примерно такая страница:

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

Выходы:

Здесь отображается название и состояния выходов. OFF — выход выключен, ON – включен. Напротив каждого выхода есть кнопка «Изменить», которая меняет состояние выхода. Если вместо нее написано «Auto», то выход находится в режиме термостата и им нельзя управлять вручную.

Входы:

Все просто – название входа и его состояние.

Термостат:

Здесь есть возможность задать термостат для каждого выхода. Кликаем возле нужного выхода «Задать».

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

Перепрошивка устройства

При выходе новой прошивки у Вас есть возможность обновить ее самостоятельно. Аппаратный блок XControl перепрошивается с помощью того же USB. Отключите питание, установите перемычку BOOT, соедините устройство с ПК через шнур USB, подключите питание. ПК должен найти новое HID устройство, не требующее драйверов. В прилагаемых файлах найдите файл LAN_Control.hex и замените его новым, далее, запустите boot.bat, устройство будет перепрошито.

Пульт дистанционного управления

С помощью пульта можно изменять состояние каждого выхода, за исключением тех, которые находятся в режиме термостата. Изменение состояния выхода производится с помощью цифровых кнопок 1-7. После приема команды, на устройстве загорится светодиод WORK.

XMLHTTPRequest

Если Вы программист и хотите написать собственное приложение для работы с устройством, тогда для вас есть удобная функция XMLHTTPRequest.

Для XMLHTTPRequest запроса нужно открыть ссылку по таком адресу: адрес/пароль/cgi/параметры. Параметры могут быть такими: «t» — получить температуру, i — получить входы, o — получить/установить выходы.

Получаем температуру. У меня подключено 2 датчика с именами Home и out. Для этого оправляем адрес/пароль/cgi/t, у меня это 192.168.1.170/pas/cgi/t . В ответ придут данные в таком виде: «Home:28.5|out:1.2″. Тоесть, формат такой: «имя_датчика:температура|», как видите, термодатчики разделены вертикальной чертой, а имя датчика и температура разделены двоеточием. В PHP и JavaScripts для разделения данных можно использовать стандартную функцию split.

Получаем входы. Почти то же самое, что и для температуры, отправляем адрес/пароль/cgi/i . В ответ приходит текст в таком формате: one:0|two:0|three:1|four:0 . Здесь имя:состояние. Если состояние равно 0 — значит, вход не замкнут (не активен), если 1 — активен.

Получаем выходы. Почти то же самое, что и для температуры, отправляем адрес/пароль/cgi/o . В ответ приходит текст в таком формате: first:0|two:0|three:0|four:0|five:0|six:0|seven:0 . Здесь так само — имя:состояние. Если состояние равно 0 — выход не активен, 1 — активен. Так же, выходами можно управлять, формат такой адрес/пароль/cgi/o+выход+состояние . К примеру: 192.168.1.170/pas/cgi/o21 — установить выход 2 в 1 (активировать), для отключения нужно вместо 1 отправить 0. В ответ приходит тот же текст, что и при запросе.

Пример получения температуры на языке JavaScript:

// Функция для создания объекта XMLHttpRequest. Подходит для любого браузера
function getXmlHttp()
{
var xmlhttp;
try {
xmlhttp = new ActiveXObject(«Msxml2.XMLHTTP»);
} catch (e) {
try {
xmlhttp = new ActiveXObject(«Microsoft.XMLHTTP»);
} catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!=’undefined’) {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}

// А вот так делается сам запрос
var xmlhttp = getXmlHttp();
xmlhttp.open(‘GET’, «192.168.1.170/pas/cgi/t», true);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
if(xmlhttp.status == 200) {
var text = xmlhttp.responseText;
// здесь обрабатываем принятые данные, они находятся в переменной text
}
}
}
xmlhttp.send(null);

Работа с программой XControl

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

При первом запуске ничего не обычного – просто пустая панель устройств и панель ярлыков. При запуске программа отображается на панели задач и в трее, при сворачивание она сворачивается на панель задач, при закрытии – в трей. Для полного закрытия программы нужно кликнуть правой кнопкой по значку в трее и зажать «Выход».

Итак, кликаем «Добавить устройство» в появившимся окошке вводим название, к примеру «Тестовый», подтверждаем и видим такую панель:

Вверху параметры соединения, нужно ввести те же, которые задавали в конфигураторе. Частота опроса – это интервал между запросами в секундах. К примеру, если установить 5, то устройство будет опрашиваться каждые 5 секунд. “Save” – применить введенные установки, «Cancel» — отменить и загрузить предыдущие. Итак, вводим наши настройки и жмем «Save».

Программа запросит данные с устройства, здесь есть 4 колонки:

  • Название сервиса – название, заданное в конфигураторе.
  • Метка – просто пользовательское название, которое можно изменить в любой момент и которое на работу устройства никак не влияет.
  • Значение – значение сервиса. Для контактных выходов – это состояние выхода и термостата. С помощью этих галочек можно управлять выходами и активностью термостата. Для входов вроде понятно. Для термодатчиков – если датчик отключен, то поле выделяется красным. Так же, поле выделяется красным если длительное время не удавалось произвести запрос от устройства.
  • Ярлык – создает ярлык для данного сервиса на панели «Ярлыки».
  • Итак, поставим галочку в колонке «Ярлыки» напротив одного с контактных входов и одного термодатчика. Переходим на вкладку ярлыков.

    Создались 2 ярлыка, да ещё и налезли один на одного, теперь нужно их настроить. Во первых, нужно нормально разместить. Перетяните ярлык в удобное место левой кнопкой мыши и зажатой клавишей «Ctrl»:

    Слева – ярлык контактного датчика, он отображает состояние контактного входа, второй – ярлык термодатчика, показывает температуру датчика. Теперь вы знакомы со скромными возможностями ярлыков. Заглянем по глубже. Для настройки ярлыка кликните по нем правой кнопкой, к примеру, кликаем по контактному, появилось такое окошко:

    У этого датчика есть 3 состояния:

  • Не определен – когда данные с устройства не получены.
  • Активен – вход активен.
  • Не активен – вход не активен.
  • Для каждого состояния можно ввести метку, которая будет отображаться на ярлыке, а так же, картинку или анимацию. Графические элементы для ярлыков должны быть размещены в папке inks_img.

    Ниже ещё три опции: «Отображать картинку» и «Отображать метку» — здесь понятно. «Отображать уровень» — отображение состояния самого сервиса, для контактных входов и выходов это будет «Активен» и «Не активен», для термодатчиков – температура, для аналоговых входов – это напряжение на входе. Итак, данный вход у меня подключен к датчику на окне, устанавливаю для него необходимые опции:

    Кликаем «ОК», вот что получилось:

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

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

    Перейдем к настройке ярлыка температуры:

    Уровни – нужно задать минимальный и максимальный уровни. Состояния будут такими:

  • Не определен – это понятно.
  • Ниже минимального – когда температура ниже, чем установлена в минимальном уровне.
  • Норма – когда температура больше минимального уровня и ниже максимального.
  • Выше максимального — когда температура выше, чем установлена в максимальном уровне.
  • Сделаем такие установки:

    Стоит отметить, что жара.gif – это анимация.

    Теперь панель ярлыков выглядит так:

    Создаем и настраиваем остальные ярлыки, пример полной установки для управления 1 комнатой:

    Управлять контактными выходами можно так же с помощью ярлыков. Для изменения состояния выхода нужно кликнуть по соответствующему ярлыку с зажатой клавишей «Shift», для изменения термостата – с зажатой «Alt».

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

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

    Контактные входы

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

    На картинке изображена рама пластикового окна, стрелками обозначены металлические контакты на ней. Дело в том, что при закрытии окна, эти контакты соединяются. Это значит, что можно подсоединить 2 провода к этим контактам, далее, один провод подключить к одному со входов устройства, второй – к контакту GND. Теперь при закрытии окна контактный вход будет активен, при открытом – не активен. Кстати, подключение проводов к контактам окна не вызывает сложности – на этих контактах есть шурупы, которыми можно прикрутить провода.

    Если таких контактов на окне нет, то можно воспользоваться герконовыми датчиками.

    Аналоговые входы

    Подключение их не на много сложней контактных. Как было выше написано, на вход нужно подавать от 0 до 2,56 вольт. С этим все понятно, что если надо измерять значительно более напряжение? Здесь поможет резистивный делитель, который состоит всего лишь с 2-х резисторов:

    Резисторы можно рассчитать по формуле: Uвых = R2*(Uвх/(R2+R1)).

    К примеру, нужно измерять напряжение от 0 до 50 вольт, подберем резисторы. Допустим, R1 = 190кОм, R2 = 10кОм. 10*(50/(10+190)) = 2,5В. То есть, при 50В на входе будет 2,5В на выходе, которые будут подаваться на аналоговый вход, что вполне допустимо. Так же, в настройках аналогового входа нужно будет установить множитель, у нас делитель равен 50/2,5=20, соответственно, в настройках нужно установить множитель на 20.

    Контактные выходы

    Контактный выход при активации замыкается на землю (GND), при деактивации отмыкается от земли. Если, к примеру, нужно подключить реле, подключите первый контакт обмотки реле к контакту VCC, второй – к нужному выходу. Теперь, при активации выхода реле будет замыкаться, при деактивации размыкаться. Коммутирующими контактами реле можно управлять более мощной нагрузкой.

    Термодатчики

    Все термодатчики подключаются параллельно. Желательно, чтобы общая длина кабеля не превышала 200 метров.

    Доступ к устройству через Интернет

    В настройках программы XControl мы указали локальный IP адрес устройства, который будет работать в районе локальной сети. Для того, чтобы был доступ через Интернет, нужно в настройках роутера сделать проброс порта на IP адрес и порт устройства, тогда в программе XControl в строке «Хост» необходимо ввести IP адрес роутера, а он, при правильных настройках, переадресует трафик на устройство.

    Если IP Вашего роутера не постоянный, а динамический, тогда рекомендуется воспользоваться службой DynDNS.

    Автор: Бражников Михаил (http://kibermaster.net)

    По вопросам приобретения прошитого микроконтроллера или готового устройства обращайтесь на имейл, указанный на сайте автора

    Список радиоэлементовОбозначение
    Тип
    Номинал
    Количество
    ПримечаниеМагазинМой блокнот

    Схема (основная часть):
    Микроконтроллер1

    МикросхемаАТ24С641

    Микросхема2

    Полевой транзистор2

    Стабилитрон3.6 В2

    Диод ШотткиSS143

    Диод ШотткиSS241
    POWER, WORK
    Диод2

    Диодная сборка6

    Конденсатор22 пФ2

    Конденсатор470 пФ1

    Конденсатор0.1 мкФ6

    Электролитический конденсатор10 мкФ2

    Электролитический конденсатор10 мкФ 30 В1

    Резистор0.2 Ом1

    Резистор68 Ом2

    Резистор1 кОм2

    Резистор1.5 кОм3

    Резистор4.7 кОм5

    Резистор10 кОм1

    Резистор20 кОм1

    Кварцевый резонатор16 МГц1

    Дросель1

    Дросель220 мкГн1
    ПИТАНИЕ, АНАЛОГ, ВХОДЫ
    Двойной клеммный зажим3
    1-Wire, VCC, ВХОДЫ, ВЫХОДЫ
    Тройной клеммный зажим5

    Разьем для подключения программатора1
    IR_ON, BOOT
    Разьем2-выхода2
    TSOP
    Разьем3-выхода1

    Разьем6-выходов1
    Схема (коммуникационная часть):
    Микроконтроллер1

    Линейный регулятор5 В1

    МикросхемаHR911105A1

    Светодиод2

    Конденсатор22 пФ2

    Конденсатор0.01 мкФ2

    Конденсатор0.1 мкФ1

    Электролитический конденсатор10 мкФ1

    Электролитический конденсатор100 мкФ1

    Резистор51 Ом4

    Резистор200 Ом2

    Резистор2.7 кОм1

    Резистор10 кОм5

    Кварцевый резонатор25 МГц1
    BLM
    Катушка индуктивности1
    Добавить все

    Скачать список элементов (PDF)

    Прикрепленные файлы:

    Добавить комментарий

    Ваш адрес email не будет опубликован.