Управляем нагрузкой по USB с помощью ПК и ATMega8

16 реле, управляемых по сети DAEnetIP2 + DAE-RB/Ro16-JQC-12V

Когда я переехал в оставленный по наследству дом, наличие на участке капитального курятника натолкнула на мысль, что неплохо было бы всегда иметь под рукой свежие яйца. Было принято решение завести цыплят, однако возможности следить за температурным режимом и освещением возможности не было, потому что я постоянно пропадал на работе. Решение проблемы пришло неожиданно – использовать для регуляции освещенности и температуры технологию автоматизации, по типу «умного дома». Это бы позволило мне управлять лампой и нагревателем, не вставая со своего компьютерного кресла в офисе.

Прошерстив несколько десятков сайтов с различными девайсами, остановил свой выбор на отечественной разработке RODOS-8. Это web-реле идеально подходит для подобного решения. Оно позволяет не только включать или отключать электроприборы через Интернет, но и способно «запоминать» их положение. Бесценная функция для моего случая, потому что в нашем поселке электричество могут отключать без предупреждения. А самое главное, на сайте https://silines.ru можно напрямую задать вопрос разработчикам, а все инструкции расписаны подробно и на русском языке, а не на китайском, как на Алиэкспрессе.

Через 4 дня в пункте выдачи я получил вот такие вот две коробки:

В каждом комплекте также находился патч-корд и стандартный блок питания на 12 В

Размер устройства составляет 90 на 50 на 32 мм. Весит белая коробка 85 г – примерно столько же, как и присланный вместе с ней блок питания. Итого доставка посылки обошлась мне совсем недорого. В принципе, даже с затратами на пересылку выходит дешевле, чем заказывать из Китая, но что-то я отвлекся от рассказа про цыплят.

Содержание / Contents

Полезные и проверенные железяки, можно брать

Опробовано в лаборатории редакции или читателями.

Для решения задачи я решил применить микроконтроллер, который должен иметь на борту приемопередатчик UART и минимум три свободных порта для трёх каналов управления (количество их может быть увеличено и зависит от числа нагрузок). Вполне подходящим оказался микроконтроллер семейства AVR — ATMega8, как самый распространенный и недорогой.

Для создания связи устройства через USB-порт с ПК я использовал аппаратный преобразователь USB-UART с использованием микросхемы FT232RL.

Управление силовыми нагрузками по USB (на Ke-USB24A)

Девайс на рабочем месте

Девайс на рабочем месте

С этой задачей сталкивается рано или поздно любой разработчик, который шаманит чего-нибудь на компьютере и сидит с паяльником. Рано или поздно ему приходит в голову Идея: «Управление освещением с компьютера» или что-то подобное. Кто-то хочет чайник кипятить, кликая на иконку в трее, кто-то — включать лампу, не вставая с кресла, кто-то — обогреватель… В общем, заканчивается это всё каким-нибудь iXBT, темами со схожими названиями и LPT-портом.

LPT-порт — это первое, что приходит в голову разработчикам старой закалки, заставшим ещё Windows 3.11 и 95;) Потому что он прост, как два пальца, и его пинами можно легко дёргать, просто записывая байт на выход. В общем, компьютер превращается в некий интерактивный микроконтроллер с одним двунаправленным восьмибитным портом. Но сейчас есть ноуты. Windows Seven и прочие «прелести» цивилизации… Понятие «Умный дом» всё большое входит в наши головы, и надо думать, как заменить старый LPT-порт. Наткнулся я тут, изучая этот вопрос в инете, на прикольный модуль Ke-USB24A, от KernelChip, и решил его купить и потыкать.

UPD: Добавлена схема устройства и исходники программы.

Часть 1. Тестовая сборка.

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

Модуль Ke-USB24A предназначен для сопряжения внешних цифровых и аналоговых устройств, датчиков и исполнительных механизмов с компьютером через шину USB. Определяется как дополнительный (виртуальный) COM порт. Модуль имеет 24 дискретные линии ввода/вывода (либо лог. 0 либо лог. 1) с возможностью настройки направления передачи данных (вход/выход) и встроенный 10-ти разрядный АЦП. Для управления модулем предусмотрен набор текстовых команд управления (KE — команды).

В общем, получаем тот же самый LPT-порт, но управляемый по USB — отличная вещь для всяких игрушек вида «вкл-откл с компьютера». На тот момент (летом) я ваял многоканальный диммер, задачей которого было автономно и с компьютера регулировать (ну или хотя бы включать-выключать) пару ламп освещения в комнате: я люблю местное освещение и рассеянный свет — например в потолок светит лампа, удобно её врубить, когда темнеет — яркий свет не нужен, а глаза при слабом рассеянном свете лучше воспринимают светящийся монитор.

Так вот! С диммером были проблемы, и я решил собрать простейшее устройство, хотя бы «на коленках», чтобы тыкать нагрузки на 220 вольт с компа. Решил, что 4х штук мне как раз хватит, и поехал покупать модуль. Сама контора расположена в бизнес-центре, по звонку на сотик выходит их товарищ, выносит модуль, завёрнутый в полиэтилен с пупырышками (кажется, ничерта не электростатический) и забирает деньги. Цена, наверное, кусается, по меркам микроконтроллерщиков — 1350 рублей, но мне она была приемлема как для «коробочного», готового решения Plug-n-Play — в смысле, всунул USB шнур — и работай. Даже программка-терминал у них своя есть.

Довольный я вернулся домой и первым делом всячески обфоткал модуль со всех сторон.

Модуль Ke-USB24A, вид сверху

Модуль Ke-USB24A, вид сверху

Заодно заскочил в КВАРЦ, где купил макетку, всяких моих любимых фенечек вроде разъёмов, клеммников на плату и реле.

Модуль Ke-USB24A, вид снизу

Модуль Ke-USB24A, вид снизу

Модуль — полная вещь в себе, сделанная на базе Microchip’овского микроконтроллера PIC18F4550. Наверное, и на AVR такое же можно лепить, но узнал я об этом уже позже, благодаря сайту одного челябинского товарища (блин, кажется я начну уважать этот город! Правда! он у меня постоянно на слуху). Торчит только тантал по питанию, кварц, несколько ёмкостей и перемычка, которой выбирается питание — от USB или внешнее.

PDFник с документацией на сайте вполне адекватный, выводы расписаны нормально и понятно, чего куда.

Установка модуля на разъёмы

Установка модуля на разъёмы

В общем, воткнул я его в плату и начал лепить выходные реле из того, что было под рукой: КТ315х 70-80х годов выпуска, каких-то помоечных светодиодов и блока питания от компьютера — так как на данный момент нету никакого лабораторного источника, питаюсь от него.

Транзисторы КТ315 79го года выпуска

Транзисторы КТ315 79го года выпуска

На плату поставил нормальный разъём, чтобы не городить скрутки из проводков, заодно напаял клеммников (синенькие) под силовые выходы реле.

Разъёмы под модуль и клеммники под сеть 220

Разъёмы под модуль и клеммники под сеть 220

Эти клеммники мне нравятся тем, что провод в них зажимается металлической пластинкой, которую в свою очередь прижимает винт — площадь контакта больше, можно смело зажимать многожильные провода как есть (без наконечников), и всё это ещё паяется на плату, и может набираться в ровные линейки (там на каждом клеммнике есть пазы для соединения).

Выходные реле и клеммники под винт

Выходные реле и клеммники под винт

Купил себе два десятка про запас, на три выхода: всегда можно подключить 220 как L, PE, N или как L, N, оставив середину пустой. Офигенная штука!

Для пайки использовал какое-то советское подобие паяльной станции и понижающий трансформатор на 36V (у меня от него питается обычный низковольный паяльник на 36).

Рабочий инструмент

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

Готовая плата с реле

Готовая плата с реле

Кстати, в качестве монтажного провода удобно использовать проволочки от витой пары. Отлично идут многожильные — лудятся и паяются моментально, зачищаются на отлично. А если надо зачистить совсем короткий кусок — я один конец держу пассатижами, а второй зачищаю.

Итак, тем временем плата была готова, спаяно 4 выходных канала, и сами реле напрямую были выведены на клеммники (я взял реле с одной переключающей группой, катушка на 5V).

Подключение блока питания и USB-шнурка для теста

Подключение блока питания и USB-шнурка для теста

Всё было подключено, и для теста заведена обычная лампочка 220V 100W.

К включению готовы!

К включению готовы!

Даём команду с терминала, реле щёлкает, лампочка включается.

Выдаём команду (кусок терминала)

Выдаём команду (кусок терминала)

Заработало!

Итого, что можно отметить:

  • Простота решения — купил, воткнул, используй (обычные ТТЛ выходы);
  • При желании, схема может питаться от USB целиком, без внешнего источника питания;
  • Реле ЖРУТ безумно много! USB-порт тянет 1-2 канала одновременно. Остальным реле не хватает тока, чтобы сработать;
  • Всё это безумно прикольно и интересно, и можно как-то использовать. Хехе!

Плата была собрана, потестена, и заброшена до осени: в окно светило солнце, и никакие подсветки были не нужны 😉

Часть 2. Готовый девайс.

Осень пришла внезапно) А вместе с ней, роясь в куче хлама, я выкопал свитч, на котором недрогнувшей рукой Сурового Админа Миши с одной давней конторы было написано категоричное слово «ТРУП». Его серая коробочка меня привлекла, и меня осенило: «А вот же отличный корпус для моего девайса!», и затем родился концепт устройства. Питаться и питать нагрузки оно должно было через евроразъёмы (как на компьютере и на UPS-ах), возможно иметь автономное управление и быть мелким, чтобы его можно было положить на стол/полку и забыть.

Были куплены компоненты, а в качестве блока питания использован старый зарядник от фотика Casio, который давал 5,5 вольт при токе до 0,5А. Почему-то ток у него такой же, как у USB-порта, но все-все реле он тянул без напряга, нагрева и других проблем. Модуль при напряжении 5,5 вольт вёл себя отлично — итого, за три часа прогона — никакого нагрева микросхем или других деталей схемы. На автономное управление было забито из-за нехватки места в корпусе под выключатели: хотел, чтобы реле их шутнтировали, или сделать аналог «проходного выключателя», но в итоге забил, решив, что ноут у меня и так постоянно работает всё время — подойти и тыкнуть мышкой кнопку — нет никаких препятствий.

Окраска корпуса на лестнице

Окраска корпуса на лестнице

В корпусе были проточены все необходимые дырки и прорези (мелкие — напильником, крупные — элекролобзиком с тонкой пилкой), после чего корпус был покрашен чёрной краской из баллончика прямо на лестнице подъезда 🙂 Газетки помогли мало, и там до сих пор следы 😉

Окрашенный корпус, вышло неплохо!

Окрашенный корпус, вышло неплохо!

Евророзетки не влезали в корпус, и крепить их за «ушки» и на винты не получилось.

Заготовка для монтажа выходных розеток

Заготовка для монтажа выходных розеток

Пришлось делать ужасную порнографию: вырезать кусок макетки, припаять их туда, а макетку на втулках на винтах закрепить к корпусу и улить это всё суперклеем. Усилие на вынимание вилки пережили — держаться будет! 😉

Установленные выходные розетки

Установленные выходные розетки

Последние фотки платы перед установкой в корпус девайса.

Внешний вид итогового монтажа реле и USB-модуля

Внешний вид итогового монтажа реле и USB-модуля

Напаял туда ещё КРЕНку, потом вспомнил, что она всё равно ничего не будет стабилизировать, так как 0,5 вольта (5,5 — 5,0) ей не хватит для работы. КРЕНку так и оставил, но отключил.

Сзади вышел трэш-монтаж.

Кошмарный монтаж соединений на макетной плате

Кошмарный монтаж соединений на макетной плате

Не буду больше макетки использовать. Или буду использовать в разумных пределах.

Блок питания от зарядника

Блок питания от зарядника

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

Монтаж светодиодов цветным кабелем

Монтаж светодиодов цветным кабелем

Обратите внимание, я перешёл на использование плоского цветного кабеля и разъёмов серии BLS-, кажется — кабель удобно на них паять, разъём отламывается на столько пинов, насколько надо, и выглядит красиво.

Вид монтажа спереди

Вид монтажа спереди

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

Итак, вот что получилось в итоге.

Плата USB-модуля, установленная на своё место

Плата USB-модуля, установленная на своё место

Макетка прикрепелена к корпусу (опять на втулках), в неё воткнут USB-модуль, справа торчит блок питания, выключатель и светодиоды. Сзади (по компоновке) торчат розетки питания.

Выключатель сети 220 и блок питания

Выключатель сети 220 и блок питания

К выключателям я паяюсь, а соединения изолирую термоусадкой — получается красиво и аккуратно.

А вот что получилось перед закрытием корпуса.

Готовый монтаж схемы

Готовый монтаж схемы

Проводка 220, конечно жесть, и мне за неё стыдно.

Трэшовое подключение выходных розеток

Трэшовое подключение выходных розеток

Ипнет — переделаю. Не ипнет — пусть работает. Была мысль залить это всё термоклеем из пистолета, но в три ночи было на всё наплевать.

Девайс вид спереди

Девайс вид спереди

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

Вид подключений сзади

Вид подключений сзади

Схема и программа управления

Схема управления очень напоминает такой же модуль, но с релюшками (Ke-USB24R). На выходы модуля, которыми мы управляем через USB, совершенно тупо навешаны транзисторы (из тех, что попались под руку) — КТ315 в ключевом режиме. В коллекторную цепь транзистора включено реле с защитным диодом, спасающим транзистор от напряжения самоиндукции при коммутации реле. Ну дополнительно в моём блоке ещё навешаны обычные светодиоды с ограничительными резисторами, которые светятся и показывают какой канал включён.

Простейшая схема блока управления нагрузками 220 на Ke-USB24A

Дополнительно на схеме дорисовал пример какого-нибудь контактного входа, типа кнопки: внешний резистор подтяжки на +5 вольт ставлю обычно всегда, привычка от микроконтроллеров семейства ВЕ51 (8051). Соответственно на данном примере вход работает инверсно: «0» означает замкнутую кнопку. ИМХО этот способ немного более помехоустойчив ко всяким импульсным выбросам.

Питание в моей схеме бралось от первого попавшегося под руку источника +5V, и реле, соответственно, тоже были с катушкой на 5V. Внешний источник питания нужен лишь тогда, когда мы не укладываемся в выдаваемые USB штатные 500мА. Ток потребления схемы будет равен (4*ТокРеле) + ТокМодуля. В моём случае USB тянуло пару реле из 4х, поэтому я не парился особо (всё равно схема коммутирует 220 — значит там оно есть!) и воткнул сетевой источник питания (перемычку на плате модуля СНЯТЬ!). Особо извращённые люди могут покопать в сторону твёрдотельных реле, которые потребляют гораздо меньше обычных электромагнитных.

Программа управления модулем была такой примитивной, что писалась на Visual Basic 6 за 1 час вместе с отладкой. Кнопки «открыть/закрыть» порт, и четыре кнопки на 4 выхода. Рядом с ней лежит текстовый конфиг-файл (Ke-USBControl.Conf), откуда она при запуске считывает названия этих кнопок — можно менять их без перекомпиляции проги. Первая строка — номер COM-порта, выбираемого по умолчанию для железки (как сменить ей правильный COM-порт — читать вот тут: Изменение номера COM-портов / Отображение скрытых устройств). В планах сделать автопинг модуля и реконнект к нему (см. выводы).

Программу управления модулем (исходники и EXEшник) можно скачать по этой ссылке (~22 кБ). Поставляется As IS. Или Ass IS 😉

Выводы

  • Модуль — забавная игрушка и не более. На самом деле — полное ГАВНО, и использовать можно только как красивый заменитель LPT-порта для старых игрушек или разработок типа моей — ткнул кнопку, включилась лампочка.
  • Теперь я знаю про симисторы и оптопары. Можно сделать так, чтобы питалось только от USB и коммутировало до 2х кВт на канал 220.
  • Протокол управления модулем — тоже гавно. Самое дерьмовое, чего они не сделали, и что вылезло в процессе эксплуатации, это то, что нельзя прочитать состояние пина модуля, настроенного на выход, как в микроконтроллере. Оно обычно и не нужно, но вот даже сам модуль не может выдать информацию — какие пины сейчас «включены». Зачем нужно? Простой пример: у вас что-то включено из программы. Программа так и отображает: это вкл, это — выкл. Тут вам нужен USB-порт. Вы выдрали шнур, закрыли программу (или вообще винды перегрузили), поюзали, сунули назад, запустили программу. И всё. Она не знает, что было включено, а что нет — и получить эту информацию НИКАК нельзя!
  • Дополение к предыдущему. Если дёрнуть шнур и вставить его назад, девайс определяется, но криво. Нужно закрыть порт в программе, ещё раз передёрнуть шнур, и открыть порт. С каким-то полудохлым конвертором USB<>RS-232, у меня такого не наблюдается.

Это так и останется игрушкой, в основном из-за отсутствия обратной связи по выходам — никуда её не применить. Будет включать-выключать лампы, а потом подарю кому-нибудь.

UPD: Вышла новая версия модуля с возможностью определения состояния пинов (включён или нет)!

Технические характеристики

Разрядность АЦП (бит) 10
Напряжение питания (В) 5
Количество встроенных реле управления (шт) 4
Количество линий ввода/вывода 18
Тип питания постоянный, USB
Вес без упаковки, г 70
Вес с упаковкой, г 113
  • Многим понравится управление возможностями модуля с помощью мышки в окне программы Boxer24R, которая специально написана для этого модуля.
  • Но вы не ограничены только приложенной программой Boxer24R. Вы можете с легкостью использовать и другие возможности управления с помощью набора текстовых команд из: — любой терминальной программы – одну из них KeTerm, можно скачать с нашего сайта;
  • Теперь вы можете управлять нестандартной компьютерной периферией из ваших собственных программ и приложений. Скачайте пожалуйста полное техническое описание модуля и системы команд. Все команды описаны с примерами применения…И вперед! Осваивать возможности модуля

Arduino & Pi

1.1K постов 18.9K подписчиков

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте — используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

Мало кому интересно смотреть видео, пусть даже на 6 минут. Текстовый пост с картинками гораздо интересней

А я делал управление ардуиной из Java.

Это значит что можно без проблем сделать терминал с веб-интерфейсом который будет висеть где-нибудь в коридоре и управлять светом в квартире. 🙂

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

Описание программы для управления реле с компьютера при помощи Arduino и bluetooth.

Пред тем как делать программу, нужно определиться с её функциями и возможностями. По планам, мое приложение для ПК должно иметь кнопку включения и выключения реле или светодиода. Изначально планировал сделать по 2 кнопки управления, одна включает, вторая выключает реле. Но потом понял, что гораздо нагляднее будет сделать 1 кнопку для управления реле и вывести статус «включено» или «выключено» реле. В итоге получился вот такой интерфейс.

Изначально планировал сделать по 2 кнопки управления, одна включает, вторая выключает реле.

Чтобы сделать программу более функциональной, решил изменить количество управляемого оборудования. Для этого достаточно поменять 1 значение в коде и количество элементов меняется от 1 до 5.

Описание программы для управления реле с компьютера при помощи Arduino и bluetooth.

При нажатии на кнопку происходит изменение цвета обводки. Что наглядно отображает работу кнопки. А также при смене состояния реле меняется цвет шрифта на кнопке и изменяется статус: ВКЛ или ВЫКЛ.

Это мое первое приложение, сделанное в Processing, поэтому прошу строго не судить. Если вдруг увидите костыли, прошу указать на более правильное решение. Оставляйте ваши предложения в «Комментариях».

Для проекта понадобиться следующая электроника:

Описание кода Processing IDE для создания программы управления Arduino.

Сначала подключаем библиотеку для работы с последовательным портом и создадим объект, чтобы включить последовательное соединение, а также создадим массив для хранения статуса реле. Самая важная переменная это int n = 5; Отвечающая за количество управляемых реле.

В разделе настройки нам нужно установить размер окна программы и запустить последовательное соединение. Что касается номера COM-порта. Необходимо перейти в раздел «Панель управленияОборудование и звукУстройства и принтеры».

Панель управленияОборудование и звукУстройства и принтеры

Посмотреть свойства вашего устройства, нажав на иконку правой кнопкой мыши и выбрав в выпадающем меню «Свойства».

Посмотреть свойства вашего устройства, нажав на иконку правой кнопкой мыши

В открывшемся окне переходим на вкладку «Службы». Тут мы увидим «Последовательный порт», в моем случае это «COM18». У вас будет другой.

увидим «Последовательный порт», в моем случае это «COM18»

В основной функции draw (), которая постоянно повторяется, мы делаем всю графику и функции программы. Итак, сначала нам нужно установить цвет фона, цвет заливки, размер и цвет обводки, а затем с помощью функции rect () рисуем кнопку. Используя функцию text (), мы выводим весь текст, включая строку ledStatus.

Теперь осталось сделать кнопки работоспособными. Для этого используем оператор «if», при нажатии кнопки символ команды будет отправлен через последовательный порт на Arduino, и это включит или выключит реле. Следующие строки используются для выделения кнопки при ее нажатии.

Изменения значения flag в массиве, изменяет состояние кнопки и статуса которые выводим ниже.

И для вывода определённого количества элементов управления необходим цикл.

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

Схема подключения модуля с четырьмя реле и bluetooth hc-06 к Arduino.

Схема подключения модуля с четырьмя реле и bluetooth hc-06 к Arduino.

Подключить реле можно в количестве от 1 до 5 шт. На схеме приведен пример подключения модуля с 4 реле и bluetooth hc-06 к Arduino. Вы можете использовать другое количество реле и другой модуль bluetooth. А также подключить твердотельное реле. В связи с тем, что твердотельное реле чаще всего высокоуровневое, в прошивке есть переменная, отвечающая за выбор логического уровня реле.

Пример исходного кода Arduino управления реле по Bluetooth.

Пример исходного кода Arduino управления реле по Bluetooth.

В связи с тем, что программа для ПК получилась универсальная и можно изменять количество управляемых реле. Скетч для Arduino нужно также сделать максимально универсальным.

Первым делом подключим библиотеку для создания программного Serial порта. И укажем переменные, к которым подключим модуль Bluetooth.

Также в скетче я предусмотрел настройки для изменения типа рел. Значение 1 – позволит управлять реле высокого уровня. Значение 0 – в свою очередь позволит управлять реле низкого уровня.

Следующие 2 переменные определяют, сколько реле мы планируем подключить и номер пина, с которого будет вестись подключение. Соответственно, если мы начинаем с 5 pin и подключим 2 реле, это означает, что реле нужно будет подключить к пинам 5,6. Если нам нужно подключить 4 реле, то для этого будем использовать уже pin 5,6,7,8. И так далее.

Это основные настройки которые нужно знать. Всю программу разбирать не буду. Если вы разбираетесь в программировании, то вы без труда в ней разберётесь. Также в программе есть один костыль. Если у вас есть решение как его исправить пишите в комментариях.

Оцените статью
Fobosworld.ru
Добавить комментарий

Adblock
detector