Главная » Микроконтроллеры
Призовой фонд
на март 2017 г.
1. UNI-T UT-39C
Паяльник
2. Тестер компонентов LCR-T4
Паяльник
3. 100 руб.
От пользователей

XControl

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

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

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

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

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

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

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

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

Печатная плата

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

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

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

  • Напряжение питания 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.

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 колонки:

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

Итак, поставим галочку в колонке «Ярлыки» напротив одного с контактных входов и одного термодатчика. Переходим на вкладку ярлыков.

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

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

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

  1. Не определен – когда данные с устройства не получены.
  2. Активен – вход активен.
  3. Не активен – вход не активен.

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

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

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

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

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

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

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

  1. Не определен – это понятно.
  2. Ниже минимального – когда температура ниже, чем установлена в минимальном уровне.
  3. Норма – когда температура больше минимального уровня и ниже максимального.
  4. Выше максимального - когда температура выше, чем установлена в максимальном уровне.

Сделаем такие установки:

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

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

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

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

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

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

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

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

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

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

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

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

Резисторы можно рассчитать по формуле: 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 Поиск в FivelВ блокнот
МикросхемаАТ24С641 Поиск в FivelВ блокнот
Микросхема2 Поиск в FivelВ блокнот
Полевой транзистор2 Поиск в FivelВ блокнот
Стабилитрон3.6 В2 Поиск в FivelВ блокнот
Диод Шоттки
SS14
3 Поиск в FivelВ блокнот
Диод Шоттки
SS24
1 Поиск в FivelВ блокнот
POWER, WORK Диод2 Поиск в FivelВ блокнот
Диодная сборка6 Поиск в FivelВ блокнот
Конденсатор22 пФ2 Поиск в FivelВ блокнот
Конденсатор470 пФ1 Поиск в FivelВ блокнот
Конденсатор0.1 мкФ6 Поиск в FivelВ блокнот
Электролитический конденсатор10 мкФ2 Поиск в FivelВ блокнот
Электролитический конденсатор10 мкФ 30 В1 Поиск в FivelВ блокнот
Резистор
0.2 Ом
1 Поиск в FivelВ блокнот
Резистор
68 Ом
2 Поиск в FivelВ блокнот
Резистор
1 кОм
2 Поиск в FivelВ блокнот
Резистор
1.5 кОм
3 Поиск в FivelВ блокнот
Резистор
4.7 кОм
5 Поиск в FivelВ блокнот
Резистор
10 кОм
1 Поиск в FivelВ блокнот
Резистор
20 кОм
1 Поиск в FivelВ блокнот
Кварцевый резонатор16 МГц1 Поиск в FivelВ блокнот
Дросель1 Поиск в FivelВ блокнот
Дросель220 мкГн1 Поиск в FivelВ блокнот
ПИТАНИЕ, АНАЛОГ, ВХОДЫ Двойной клеммный зажим3 Поиск в FivelВ блокнот
1-Wire, VCC, ВХОДЫ, ВЫХОДЫ Тройной клеммный зажим5 Поиск в FivelВ блокнот
Разьем для подключения программатора1 Поиск в FivelВ блокнот
IR_ON, BOOT Разьем2-выхода2 Поиск в FivelВ блокнот
TSOP Разьем3-выхода1 Поиск в FivelВ блокнот
Разьем6-выходов1 Поиск в FivelВ блокнот
Схема (коммуникационная часть):
Микроконтроллер1 Поиск в FivelВ блокнот
Линейный регулятор5 В1 Поиск в FivelВ блокнот
МикросхемаHR911105A1 Поиск в FivelВ блокнот
Светодиод2 Поиск в FivelВ блокнот
Конденсатор22 пФ2 Поиск в FivelВ блокнот
Конденсатор0.01 мкФ2 Поиск в FivelВ блокнот
Конденсатор0.1 мкФ1 Поиск в FivelВ блокнот
Электролитический конденсатор10 мкФ1 Поиск в FivelВ блокнот
Электролитический конденсатор100 мкФ1 Поиск в FivelВ блокнот
Резистор
51 Ом
4 Поиск в FivelВ блокнот
Резистор
200 Ом
2 Поиск в FivelВ блокнот
Резистор
2.7 кОм
1 Поиск в FivelВ блокнот
Резистор
10 кОм
5 Поиск в FivelВ блокнот
Кварцевый резонатор25 МГц1 Поиск в FivelВ блокнот
BLM Катушка индуктивности1 Поиск в FivelВ блокнот
Добавить все

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

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

Теги:

Опубликована: 0 1
Я собрал 0 4
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 4.9 Проголосовало: 4 чел.

Комментарии (5) | Я собрал (0) | Подписаться

0
Василий #
Стоило бы наверно указать наименование микросхем коммуникационного интерфейса и микроконтроллера. Первая, наверно, нетрудно и догадаться, это - ENC28J60, а вот с микроконтроллером можно и не угадать… Выражение «представляет из себя» слишком литературное для технического описания, мой совет – пишите «представляет собой».
Ответить
+1
Misha #
Нужно открыть файл DipTrace, там видно, что это ATmega32
Ответить
0
Виталий Якунин #
Ваша разработка очень нужная и полезная в наше время но вы рассматривали управление нагрузками не во всех возможных вариантах. Например вы рассмотрели либо устройство вкл, либо выкл, а как же работает пока держишь кнопку, либо с временной задержкой, например открытие двери - нажал кн замок открылся и через время вернулся в режим закрытия, а дверь нужно захлопнуть. И не мешало бы добавить автоматику по обработке датчиков. Было бы совершенное устройство.
Лично мне ваше устройство захотелось воплотить в жизнь, но куда я хочу применить там как раз нажал кнопку пошел процесс.
Ответить
0
Миша #
На счет временной задержки - эта функция уже реализована, смотрите на сайте
Ответить
0
Артем #
Проглядел я где-то сведения, об ограничениях напряжения внешних реле.
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

AVR-программатор USB ASP
AVR-программатор USB ASP
Осциллограф DSO138 Радиореле 220В
вверх