Управление светодиодами через USB

Содержание

Управление устройством USB HID на Windows 7

Управление светодиодами через USB

В статье сделана попытка предоставить пошаговую инструкцию — как соединить самодельное устройство USB HID на микроконтроллере AVR и компьютер с операционной системой Windows 7 x64, чтобы обмениваться данными и управлять портами микроконтроллера. Пример приложения управляет через USB ножкой порта микроконтроллера (к ней подключен индикационный светодиод). Есть возможность также прочитать состояние состояние светодиода — потушен он или горит.

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

1. Для микроконтроллера — библиотека V-USB [1] компании Objective Development и IDE Atmel Studio 6 [2] компании Atmel.

Нужно также скачать и установить тулчейн WinAVR [3] для компиляции firmware микроконтроллера (для спецов это необязательно, потому что можно обойтись тулчейном, который входит в состав Atmel Studio).
2. Для написания программы Windows (ПО хоста) использовалась библиотека LibUsbDotNet [4] Тревиса Робинсона и IDE Visual Studio C# 2010 [5] компании Microsoft.

Все программное обеспечение, кроме Visual Studio 2010, бесплатное, хотя есть возможность использовать Visual Studio C# 2010 Express бесплатно в течение ограниченного срока. Все действия проводились в среде операционной системы Windows 7 x64, но наверняка подойдет и любая другая операционная система семейства Windows (Windows XP и более свежая).

Используемое железо

Благодаря библиотеке V-USB для создания устройства USB HID подойдет любой микроконтроллер AVR. Если Вы дружите с паяльником, то даже можете собрать подключение к USB самостоятельно по одной из опубликованных схем. Такая схема (взята из пакета V-USB [1]) в качестве примера приведена на картинке. Чтобы экономить время и усилия, лучше использовать готовую макетную плату.

Особенно удобно, если в плату будет записан USB-загрузчик (bootloader), тогда не понадобится покупать программатор для перепрошивки платы. Я использовал макетную плату AVR-USB-MEGA16 с микроконтроллером ATmega32A, в ней загрузчик есть (USBasploader, эмулирующий поведение программатора USBasp).

Вот так платка выглядит в натуральную величину:

Можно взять также metaboard (на нем стоит ATmega168 или ATmega328), или даже программатор на микроконтроллере ATmega8. Подобные железки можно дешево купить на ebay.com или dx.com.

Создание firmware микроконтроллера с помощью Atmel Studio 6 и библиотеки V-USB

Сделайте новый проект в Atmel Studio 6 (далее просто AS6). Когда AS6 предложит выбрать микроконтроллер, выберите Atmega32 без буквы A, не Atmega32A (хотя на плате стоит Atmega32A) — это важно, так как тулчейн WinAVR не видит разницы, он знает только Atmega32. Эти микроконтроллеры по внутреннему устройству идентичны, так что для нас разницы нет, а для AS6 есть.

Теперь нужно правильно настроить компилятор. В верхнем меню AS6 нажите Tools, далее Options.. и появится вот такое окно:

Слева в списке выберите Toolchain. Справа появится список Flavours. Этим словечком Atmel закодировала возможные варианты используемого инструментария (тулчейны).

Примечание. В списке уже присутствует тулчейн Native, который используется по умолчанию (Default). Тулчейн Native — это компилятор GCC вместе с заголовочными файлами и библиотеками, которые предоставляют необходимую среду компилирования исходного кода для микроконтроллера. Этот тулчейн предоставила Atmel, он устанавливается автоматически вместе с установкой AS6. Как я уже упоминал, для компиляции можно использовать и этот тулчейн, но тогда в исходный код примеров V-USB (на основе примера USB HID будет работать наше устройство USB) придется вручную вносить исправления. Они несложные, но для новичков будет лучше добавить сюда тулчейн WinAVR, и использовать для компиляции именно его.
Для добавления в список Flavours тулчейна WinAVR нажмите кнопку Add Flavour, появится следующее окно:

В верхней строчке этого окна введите имя компилятора WinAVR (произвольное), а в нижней строке введите полный путь, куда установлен сам компилятор тулчейна (с указанием папки \bin) и нажмите кнопку Add. В списке Flavours появится добавленный компилятор, как показано на скриншоте.

Выделите мышкой наш новый добавленный компилятор WinAVR и нажмите кнопку Set As Default (сделать его тулченом по умолчанию), и нажмите OK. После этой процедуры наша AS6 будет использовать компилятор WinAVR.

Пора настроить свойства нашего проекта, для этого курсором в Solution Explorer левым щелчком выберите имя проекта и нажмите Alt+F7 (меню Project -> Properties), появится окно с настройками:

Сделайте следующие настройки:

  • В разделе AVR/GNU C Compiler -> Symbols добавляем в поле -D строчку F_CPU=12000000UL — это соответствует частоте микроконтроллера 12 МГц (такой кварц установлен на моей макетной плате AVR-USB-MEGA16).
  • В разделе AVR/GNU Assemler -> General в поле Assembler flag надо добавить -DF_CPU=12000000UL.
  • В разделе AVR/GNU C Compiler -> Optimization в поле Optimization Level должно стоять Optimize for size (-Os).

Далее очень важный момент — в левой части окна, в списке выберите раздел Advanced, как показано на рисунке ниже.

В выпадающем списке Toolchain Flavour выберите добавленный компилятор WinAVR, чтобы при компилировании проекта AS6 использовала его. На этом настрока AS6 закончена.

Далее необходимо в созданный проект добавить файлы исходного кода проекта [6] — см. папку firmware\VUSB, файлы VUSB.c, usbdrv.c, usbdrvasm.S и oddebug.c. Проект ASS6 создан на основе одного из примеров библиотеки V-USB: hid-custom-rq, который изначально компилировался с помощью утилиты make из командной строки. На основе библиотеки V-USB можно найти много других примеров кода — в основном это устройства USB HID (мыши, клавиатуры, устройства ввода и вывода), но есть также и устройства USB CDC (виртуальный COM-порт). Если Вам лень самому создавать проект, просто откройте в AS6 файл проекта VUSB.atsln, в нем уже сделаны все необходимые настройки и добавлены все нужные файлы.

Если у Вас используется другая макетная плата, то нужно правильно настроить файл usbconfig.h. Это конфигурационный файл библиотеки V-USB, в нем задаются многие настройки и параметры (VID, PID, ножки микроконтроллера, значения для дескрипторов и другие настройки). Подробное описание всех настроек дано в комментриях этого файла.

Основное внимание следует уделить назначению выводов микроконтроллера, которые используются под сигналы USD D+ и D- (макроопределения USB_CFG_IOPORTNAME, USB_CFG_DMINUS_BIT, USB_CFG_DPLUS_BIT), к этим ножкам предъявляются особые требования. Конфигурационный файл usbconfig.h из архива [6] предназначен под разводку ножек макетной платы AVR-USB-MEGA16, и он гарантированно работает.

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

Создание программы для компьютера (ПО хоста)

Наша программа должна посылать через подключение USB пакеты, которые будут управлять микроконтроллером. Примечание. Программа была создана на основе примера консольного приложения из той же библиотеки V-USB. Компиляция исходного кода консольного приложения выполнялась с помощью makefile и пакета MinGW, и использовала библиотеку LibUSB. В нашем примере мы будем использовать графическую среду Visual Studio и библиотеку LibUsbDotNet.

Однако главный цимус использования LibUsbDotNet вовсе не в том, что теперь легко и удобно можно делать не только консольные, но и графические приложения. Самый большой плюс — теперь не нужен драйвер фильтра, который таскала за собой библиотека LibUSB много лет. Для тех, кто в танке, драйвер фильтра — это особая программная надстройка над библиотекой LibUSB, через которую осуществлялся обмен данными с устройствами USB на платформе Windows. Теперь этот атавизм не нужен.
Запустите Microsoft Visual C# 2010 Express и создайте новый проект на основе Windows Form.

Теперь нужно подключить к проекту библиотеку LibUsbDotNet.dll. В обозревателе решений нажмите правой кнопкой мыши на названии проекта, и выберите «Добавить ссылку». появится ещё одно окно здесь нужно найти путь на диске, где находится библиотека LinUsbDotNet.dll (по умолчанию она устанавливается папку C:\Program Files\LibUsbDotNet, но лучше сделать копию файла DLL в рабочий каталог проекта. После подключения библиотеки её нужно объявить в проекте, для этого добавьте в главный модуль программы (файл Form1.cs) строки: using LibUsbDotNet;using LibUsbDotNet.Info;using LibUsbDotNet.

Main; Перейдите к визуальному редактору формы, и приведите её приблизительно к такому виду (добавьте 3 кнопки Button и 3 текстовых метки Label): Сделайте обработчик события загрузки формы. Он нужен для того, чтобы при старте программы происходила инициализации экземпляра класса LibUsbDotNet, через который осуществляется обмен с устройством USB. Перед началом обмена необходимо открыть доступ именно к нашему устройству, потому что к компьютеру может быть подключено несклько устройств USB HID, и необходимо уметь обращаться к каждому по отдельности.

Для целей идентификации USB-устройств служат специальные идентификаторы, которые имеют абсолютно все устройства USB, это VID и PID. Примечание. Иногда для идентификации устройства дополнительно используется уникальный серийный номер или отдельный текстовый дескриптор — когда к компьютеру подключено несколько устройств USB с одинаковыми VID и PID, но это не наш случай. Поскольку обычно у каждого USB-устройства, подключенного к компьтеру, своя пара VID/PID, отличающаяся от других устройств, то найти нужное устройство и обратиться к нему не составляет проблем.

VID это идентификатор производителя (Vendor ID), а PID — идентификатор устройства (Product ID). Наше USB-устройство имеет VID: 0x16C0, PID: 0x05DF, эти значение указаны в конфигурационном файле usbconfig.h (об этом файле мы уже упоминали) проекта микроконтроллера AS6. Чтобы ПО хоста обратилась к именно к нашему USB-устройству, нужно инициализировать объект MyUsbFinder такими же параметрами VID: 0x16c0, PID: 0x05df, как указаны в файле usbconfig.h.

Читайте также  Инфракрасные светодиоды против камер

Для этого в область определения глобальных переменных класса Form1 добавьте следующий код: public static UsbDevice MyUsbDevice; public static UsbDeviceFinder MyUsbFinder = new UsbDeviceFinder(0x16c0, 0x05df); После того как мы определились с каким USB-устройством будем работать, можно к нему подключаться, и это удобно сделать в момент старта программы (открытия окна формы). Для этого выберите основную форму программы, и в редакторе свойств создайте обработчик события загрузки Form1_Load.

В теле обработчика введите следующий код: private void Form1_Load(object sender, EventArgs e){ MyUsbDevice = UsbDevice.OpenUsbDevice(MyUsbFinder); if (MyUsbDevice != null) { label2.Text = » подключено !»; } else label2.Text = » не найдено !»;} Сделайте обработчик события клика на кнопке button1 («Вкл»), для этого сделайте в визуальном редакторе на кнопке двойной щелчок, и добавьте в тело обработчика события код: private void button1_Click(object sender, EventArgs e){ // Передать пакет, который включает светодиод на макетной плате AVR-USB-MEGA16.

UsbSetupPacket packet = new UsbSetupPacket((byte)(UsbCtrlFlags.RequestType_Vendor | UsbCtrlFlags.Recipient_Device | UsbCtrlFlags.Direction_Out), 1, (short)1, 0, 0); int countIn; byte[] data = new byte[1]; MyUsbDevice.ControlTransfer(ref packet, data, 0, out countIn);} Для обработчика кнопки «Выкл» добавьте код: private void button3_Click(object sender, EventArgs e){ // Передать пакет, который погасит светодиод на макетной плате AVR-USB-MEGA16. UsbSetupPacket packet = new UsbSetupPacket((byte)(UsbCtrlFlags.RequestType_Vendor | UsbCtrlFlags.Recipient_Device | UsbCtrlFlags.

Direction_Out), 1, (short)0, 0, 0); int countIn; byte[] data = new byte[1]; MyUsbDevice.ControlTransfer(ref packet, data, 0, out countIn);} Код для обработки кнопки «Чтение»: private void button2_Click(object sender, EventArgs e){ //Получение данных от макетной платы AVR-USB-MEGA16 — состояние светодиода. UsbSetupPacket packet = new UsbSetupPacket((byte)(UsbCtrlFlags.RequestType_Vendor | UsbCtrlFlags.Recipient_Device | UsbCtrlFlags.Direction_In), 2, (short)0, (short)0, (short)0); int countIn; byte[] data = new byte[1]; if (MyUsbDevice.

ControlTransfer(ref packet, data, 1, out countIn) && (countIn == 1)) { label3.Text = «Прочитано значение » + data[0].ToString(); }} Обработчик события закрытия формы (завершение работы программы) гасит светодиод, если он горит: private void Form1_FormClosed(object sender, FormClosedEventArgs e){ UsbSetupPacket packet = new UsbSetupPacket((byte)(UsbCtrlFlags.RequestType_Vendor | UsbCtrlFlags.Recipient_Device | UsbCtrlFlags.Direction_Out), 1, (short)0, 0, 0); int countIn; byte[] data = new byte[1]; MyUsbDevice.ControlTransfer(ref packet, data, 0, out countIn);}

Как пакеты USB декодируются в firmware микроконтроллера

Прием и обработка данных на стороне микроконтроллера осуществляется в функции usbFunctionSetup

Источник: https://habr.com/post/210736/

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

Управление светодиодами через USB

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

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

 

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

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

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

Торчит только тантал по питанию, кварц, несколько ёмкостей и перемычка, которой выбирается питание — от USB или внешнее. PDFник с документацией на сайте вполне адекватный, выводы расписаны нормально и понятно, чего куда.

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

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

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

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

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

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

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

  

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

 

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

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

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

 

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

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

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

 

Заработало!

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

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

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

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

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

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

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

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

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

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

Читайте также  Как определить параметры светодиода?

 

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

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

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

 

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

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

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

 

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

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

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

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

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

 

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

 

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

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

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

 

Выключатель сети 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-порт. Вы выдрали шнур, закрыли программу (или вообще винды перегрузили), поюзали, сунули назад, запустили программу. И всё. Она не знает, что было включено, а что нет — и получить эту информацию НИКАК нельзя!
  • Дополение к предыдущему. Если дёрнуть шнур и вставить его назад, девайс определяется, но криво. Нужно закрыть порт в программе, ещё раз передёрнуть шнур, и открыть порт. С каким-то полудохлым конвертором USBRS-232, у меня такого не наблюдается.

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

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

Послесловие

В принципе, для решения проблемы с мониторингом выходов, можно использовать какой-то из входов — замкнуть его через резистор в 1кОм на нужный вход и опрашивать его. Я попробую доапгрейдить схему и, если найдётся красивое решение — выложу апдейт статьи.

Источник: http://cs-cs.net/upravlenie-silovymi-nagruzkami-po-usb-na-ke-usb24a

Светодиодная лента USB для компьютера: как сделать доп освещение

Управление светодиодами через USB

На данный момент рынок предлагает множество вариантов организации освещения места за компьютером или рабочей зоны возле него. Как один из наиболее оптимальных — это светодиодные ленты, электропитание которых осуществляется от USB разъема. В этой статье разберем, какие светодиодные ленты можно подсоединять к USB порту, схемы подключения, некоторые нюансы и особенности. Также рассмотрим технологию запитывания светодиодной ленты непосредственно от блока питания компьютера.

Для чего подключать светодиодную ленту к компьютеру

В зоне расположения компьютерной техники часто бывает, необходим монтаж дополнительного освещения. Например, чтобы не использовать основное освещение комнаты. Оно может мешать другим членам семьи при использовании компьютера в темное время суток. Или отключаться в целях экономии. Света от монитора может быть недостаточно. Также наличие фоновой подсветки облегчает нагрузку на зрение при работе на ПК.

Вариант подсветки USB лентой самого системного блокаПодсветка рабочего места компьютера светодиодной лентой

Электропитание светодиодной ленты от ПК позволяет решить эти проблемы. Монтаж ленты возможен в любом необходимом месте и для выполнения различных функций:

  • фоновая подсветка монитора;
  • подсветка клавиатуры;
  • дополнительное освещение рабочей зоны.
  • декоративное оформление стола или интерьера помещения.

Запитать ленту возможно через USB выход или от напрямую от БП компьютера. Применение таких источников питания избавляет от необходимости:

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

Использование светодиодной ленты USB позволяет сэкономить электропотребление, так как лента берет немного – до 5 Вт.

Какие светодиодные ленты можно подключить к ПК через USB

На выходе в USB порте компьютера уровень напряжения не высок (до 5 вольт). Вариантов для подключения в основном два:

  1. Подключение готовой модели светодиодной ленты со встроенным преобразователем и USB штекером. Такая лента заводского исполнения подразумевает напряжение на входе 5 В, для эксплуатации необходимо просто подключить ее к USB порту.
  2. Второй вариант – это сборка схемы с использованием светодиодной ленты 12 В и преобразователя уровня напряжения с 5 В на 12 В.

Также светодиодные ленты подключаемые к USB порту разделяются по излучаемому цвету:

    • Монохромные – излучает белый постоянный свет;
    • RGB или трехцветные – излучает три основных цвета, красный, зеленый и синий.

Особенности подключения

Подсоединение светодиодной ленты через USB порт осуществляется в случае невозможности или нежелания лезть внутрь компьютера, а также при использовании ноутбука. При сборке схемы необходимо учесть, что для питания ленты необходим уровень напряжения — 12 В. Для этого нужно изготовить или купить в магазине радиодеталей уже готовый преобразователь напряжения с 5 на 12 В.

Стоит учесть, что USB порт выдает не более 500 мА. При внедрении в схему преобразователя, сила тока уменьшается до 200 мА. Поэтому следует использовать светодиодную ленту с такими или меньшими параметрами по силе тока.

Для сборки преобразователя можно использовать заводской ШИМ – контроллер, например LM2577, это снизит количество деталей преобразователя. Также необходимы следующие детали согласно схемы: USB штекер, соединительный шнур.

Схема преобразователя:

Схема преобразователя для подключения светодиодной ленты к ПК

Данная схема считается универсальной, и дает возможность получать на выходе нужное напряжение. Его параметры зависят от резисторов R1 и R2. В итоге получается широтно-импульсный преобразователь. Емкость конденсаторов на входе и выходе питания должна быть в интервале указанном на схеме. Эти конденсаторы предназначены для сглаживания пульсаций постоянного напряжения.

Резистор и конденсатор на выводе 1 являются частотозадающей цепью. Их параметры необходимо соблюдать четко по схеме. Индуктивность катушки между точками 4 и 5 должна быть четко 100 мкГн. Особым условиям должен соответствовать диод. Он должен обладать высоким быстродействием, и к тому же небольшим снижением напряжения на переходе. Идеальный вариант высокочастотный диод Шоттки. Марка диода не сильно важна, так как в этой схеме незначительный уровень напряжения и тока.

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

Читайте также  От чего зависит яркость свечения светодиода?

Схема монтируется на печатной плате из фольгированного стеклотекстолита, и в результате прибор имеет примерно такой внешний вид:

Готовый преобразователь питания для led ленты, подключаемой к компьютеру

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

Подключение светодиодной ленты от блока питания ПК

Технология подключения от блока питания ПК немного проще предыдущего способа. При таком подключении не надо нарушать гарантийной пломбы на БП и разбирать его. Практически каждый БП оборудован дополнительными разъемами. Провода могут быть такие:

Разъемы блока питания персонального компьютера. В нашем случае используем 1 или 2 вариант.

Для присоединения светодиодной ленты подойдут разъемы 1 и 2 типа. Первый служит для подключения уже практически не используемого «флопика» для дискет. Номер 2 для подключения винчестера и CD/DVD-ROM. Оба разъема имеют выход 12 вольт, и они доступны для использования. Для подключения нужны провода черного и желтого цвета. Черный это минус.

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

Если разъем планируется использовать или просто не хочется нарушать цепь, то можно купить переходник, и обрезать провода на нем.

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

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

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

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

Примерный расчет длины ленты. Если блок питания имеет запас по току 4 или более ампера, то можно спокойно подключать ленту SMD 3528 с плотностью 120 диодов на метр длиной 4 метра или 3-х метровую SMD 5050 с плотностью 60 диодов.

Подобно рассчитывается длина и вид ленты при подключении от USB порта.

Готовые решения

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

Первый вариант — светодиодная лента RGB подключаемая к USB порту компьютераВторой вариант — одноцветная светодиодная лента для подключения к компьютеру через USB порт

Первый вариант представляет собой RGB ленту с подсоединенным RGB преобразователем. В комплекте идет пульт управления, который позволяет регулировать яркость цветов и их оттенки. Второй вариант – монохромная светодиодная лента длиной 30 см. Оба варианта просто подключаются к USB порту и не требуют дополнительных устройств.

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

Источник: http://ledno.ru/lenty/svetodiodnaya-usb.html

Управление светодиодами через usb

Управление светодиодами через USB

Включение светодиода через usb. Рассмотрим схему:. Рисунок 1 — Включение светодиода через usb. Далее открываем cmd командная строка и переходим в этой командной строке в папку «firmware», если например папка v-usb находиться на диске d то сделать это можно 3мя командами:. Если компиляция прошла успешно то в папке «firmware» должен появиться файл «main. Обратите внимание на «-U lfuse:w:0x9f:m -U hfuse:w:0xc9:m» -это установка фьюзов если их неправильно установить то можно испортить микроконтроллер.

Поиск данных по Вашему запросу:

Схемы, справочники, даташиты:Обсуждения, статьи, мануалы:

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

ПОСМОТРИТЕ ВИДЕО ПО ТЕМЕ: Подключение через виртуальные COM-порты

Подключение светодиода или светодиодной ленты к USB

Мы подключаем резистор сопротивлением Ом к выходу номер 13 pin 13 , к резистору в свою очередь подключаем анод обычно длинная ножка светодиода. Катод подсоединяем к земле Grd. Затем подключаем контроллер через USB кабель к компьютеру и загружаем приведенный ниже код на котроллер Arduino. Большинство плат Arduino имеют встроенный SMT Surface-mount techology светодиод, подключенный к выходу Если вы запустите код на таких платах без подключения внешниего светодиода, то вы должны увидеть мигание встроенного светодиода на плате.

Для того чтобы человеческий глаз успевал замечать переключение светодиода введем задержку с помощью функции delay. Изменяем яркость светодиода — плавное изменение яркости светодиода функцией analogWrite. Мигаем светодиодом — пример подключения светодиода к Arduino и работы с ним. Мигаем светодиодом без delay — еще один, более практичный способ мигать светодиодом.

Управление сервой фоторезистором — угол зависит от освещения. Что такое Ардуино? Необходимые компоненты контроллер Arduino светодиод резистор Ом Подключение Мы подключаем резистор сопротивлением Ом к выходу номер 13 pin 13 , к резистору в свою очередь подключаем анод обычно длинная ножка светодиода.

Светодиод зажигается. Регистрация Забыли пароль? Примеры Изменяем яркость светодиода — плавное изменение яркости светодиода функцией analogWrite. Мигаем светодиодом — пример подключения светодиода к Arduino и работы с ним Тактовая кнопка — считывание состояния кнопки Мигаем светодиодом без delay — еще один, более практичный способ мигать светодиодом Управление сервой фоторезистором — угол зависит от освещения.

Электропочта для связи:.

Управление Ардуино с клавиатуры

Мы подключаем резистор сопротивлением Ом к выходу номер 13 pin 13 , к резистору в свою очередь подключаем анод обычно длинная ножка светодиода. Катод подсоединяем к земле Grd. Затем подключаем контроллер через USB кабель к компьютеру и загружаем приведенный ниже код на котроллер Arduino. Большинство плат Arduino имеют встроенный SMT Surface-mount techology светодиод, подключенный к выходу Если вы запустите код на таких платах без подключения внешниего светодиода, то вы должны увидеть мигание встроенного светодиода на плате.

Драйвер LED на x1W Input: AC V 50/60Hz Output: DCV mA +/-5%. Особенности: 1. Устройство плавного пуска 2. Защита от.

Arduino для начинающих. Урок 1. Мигающий светодиод

Специализация модуля — управление внешними нагрузками через порт USB. Он в чем-то похож на порт LPT в режиме прямого управления пинами. Подаем команду — определенный бит порта устанавливается в логическую еденицу, подаем другую — сбрасывается в ноль. В этом модуле таких «битов», то есть линий управления, 24 штуки. Каждая из них может быть настроена либо на выход можем управлять светодиодами, реле, и др.

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

Благодаря тому что команды текстовые, модулем можно управлять из любой программы-терминала для COM портов, например HyperTerminal, входящей в состав Windows.

JoyLED — нестандартное управление RGB-светодиодом

Чтобы подсветить клавиатуру компьютера необязательно покупать портативный светодиодный модуль. Решить вопрос можно самостоятельно с помощью одного или нескольких светодиодов, резистора и USB разъёма. Вся конструкция легко собирается своими руками в считаные минуты. Но обо всём по порядку. Всем известно, что телефон при подключении к компьютеру начинает заряжаться. Этот факт говорит о том, что на контактах USB присутствует напряжение, которое можно использовать для питания светодиода.

Адресная светодиодная лента

Используя наш сайт, вы подтверждаете, что прочитали и поняли политику о куки , политику конфиденциальности и пользовательское соглашение. Stack Overflow на русском — это сайт вопросов и ответов для программистов. Регистрация займёт не больше минуты. Уважаемые программисты, подскажите с чего начать?! Нужно через jeck разъем android смартфона управлять тремя внешними светодиодами включать, выключать, мигать через интерфейс самого смартфона. Реализуема ли эта затея и с чего начать писать приложение?!

Внимание! Переходники USB-to-LPT для этого категорически не подходят. Управление классическими 8-ю светодиодами осуществляется по порту.

Подключаем светодиоды к usb и другим разьемам компьютера своими руками

Когда я в Windows7 извлекаю USB Flash у меня продолжает гореть светодиод, мне надо его выключить программно. Это вообще возможно, если да, то как? Еще б знать, о каком светодиоде речь. А что за очевидная причина?

Подключение двенадцати светодиодов к LPT порту

ВИДЕО ПО ТЕМЕ: Включение светодиода через usb.

Рассмотрим управление Arduino с компьютера через USB. Представим несколько программ скетчей для управления платы Ардуино через USB с компьютера. Как управлять Ардуино с компьютера через USB. Функция Serial.

Войдите , пожалуйста. Хабр Geektimes Тостер Мой круг Фрилансим. Войти Регистрация. NET DIY или Сделай сам Подобная вещь, собранная из малого количества деталей, может пригодиться для моддинга или просто для подсветки клавиатуры. Что, собственно, и делается при первом подключении устройства. Далее идет программный USB-стек, так что ресурсов у микроконтроллера остается не много.

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

Источник: https://all-audio.pro/c2/datashiti/upravlenie-svetodiodami-cherez-usb.php