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

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

Управление электрическими цепями через USB

Автор: xkp, [email protected]
Опубликовано 01.09.2014
Создано при помощи КотоРед.
Участник Конкурса «Поздравь Кота по-человечески 2014»

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

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

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

Итак, из чего же мы будем его делать? Те, кто интересовался данным вопросом, наверно уже слышали о модуле Ke-USB24A.

Описание:

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

  • интерфейсный модуль для сопряжения по шине USB
  • определяется ОС Windows/Linux как виртуальный COM порт
  • не требует дополнительных схемных элементов, сразу готов к работе
  • 24 дискретные линии ввода/вывода с возможностью независимой настройки направления передачи данных (вход/выход) и сохранения настроек в энергонезависимой памяти модуля
  • встроенный 10-ти разрядный АЦП с гарантированной частотой дискретизации до 400 Гц.
  • динамический диапазон напряжения входного аналогового сигнала для АЦП от 0 до 5 В.
  • набор готовых текстовых команд управления высокого уровня (KE – команды)
  • удобный форм-фактор в виде модуля с DIP-колодкой и разъемом USB-B
  • возможность питания как от шины USB, так и от внешнего источника питания (режим выбирается джампером на плате)
  • возможность сохранения данных пользователя в энергонезависимой памяти модуля (до 32 байт)
  • возможность изменения строкового дескриптора USB устройства
  • каждый модуль имеет уникальный серийный номер доступный программно
  • поддержка ОС Windows 2000, 2003, XP 32/64 bit, Vista 32/64 bit и Windows 7 32/64 bit
  • поддержка OS Linux

Вроде бы это то, что нам нужно, НО… цена этого чуда начинается от $40. Наверно у вас уже пропало желание его покупать.

Давайте лучше сами соберем подобный модуль, только чтобы он был доступный даже голодному студенту!

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

В качестве микроконтроллера возьмем широко распространенный ATmega8 (без индекса L в конце). Характеристики нашего модуля будут такие:

  • Подключение к ПК через USB.
  • определяется ОС Windows как USB HID устройство, не требующее драйверов.
  • Сразу готов к работе.
  • 7 линий вывода с логическим состоянием (активен / неактивен).
  • 2 линии вывода с плавным управлением напряжения от минимума до максимума. Только это не ЦАП (цифро-аналоговый преобразователь) а ШИМ (широтно-импульсная модуляция). Но с помощью фильтра можно легко превратить в ЦАП.
  • 7 линий ввода с логическим состоянием (активен / неактивен).
  • 1 АЦП (аналогово-цифровой преобразователь) с возможностью подключения внешнего источника опорного напряжения (ИОН).
  • Возможность заливать новую прошивку прямо через USB.

Почему я выбрал именно HID, а не виртуальный COM порт (CDC)? Во-первых, не нужны драйвера, во-вторых, HID в несколько раз меньше грузит микроконтроллер, чем CDC, так как данные запрашиваются не постоянно, а только тогда, когда этого требует хост (компьютер), и вообще, COM порт уже отмирает, сейчас аппаратных COM портов уже практически нет, остались только виртуальные. Логические линии вывода предназначены для управления только двумя состояниями – включенный или выключенный, при выключенном на выходе (ножке микроконтроллера) будет 0В при включенном – 5В, сюда вы можете подключить просто светодиод и управлять ним с ПК, а можете подключить реле (через транзистор) и управлять более мощной нагрузкой (освещение и т.д.). Линии вывода с регулировкой напряжения (ШИМ выход) позволяют плавно менять напряжение на ножке микроконтроллера от 0В до +5В с шагом 5/1024В. Линии ввода с логическим состоянием предназначены для мониторинга состояния кнопок, ключей и т.д. Когда линия замкнута на землю (корпус, GND), ее состояние = 0, если не замкнута – 1. АЦП позволяет измерять напряжение, сюда можно подключить потенциометр, аналоговый термодатчик, или еще что то, только напряжение, на этой ножке не должно превышать напряжение питания. В качестве источника опорного напряжения для АЦП можно использовать как внешний ИОН, так и напряжение питания модуля. Чтобы при перепрошивке не приходилось подключать микроконтроллер к программатору, сделаем возможность заливки прошивки прямо через USB, без использования внешнего программатора.

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

Ну и в результате получилось вот что:

Теперь разберемся, что куда будем подключать.

  1. USB – Порт. Думаю, его все знают.
  2. Индикатор питания.
  3. Кнопка сброса (перезагрузка).
  4. Логический вход 1.
  5. Логический вход 2.
  6. Логический вход 3.
  7. Логический вход 4.
  8. Логический вход 5.
  9. Логический вход 6.
  10. Логический вход 7.
  11. Вход АЦП.
  12. Вход для подключения ИОН.
  13. Этот контакт подключен к питанию устройства. Замкните перемычкой 12 и 13 контакты, чтобы напряжение ИОНа было равно напряжения питания.
  14. Логический выход 1.
  15. Логический выход 2.
  16. ШИМ выход 1.
  17. ШИМ выход 2.
  18. Логический выход 3.
  19. Логический выход 4.
  20. Логический выход 5.
  21. Логический выход 6.
  22. Логический выход 7.

Что такое GND?

Даже начинающий радиолюбитель знает, что такое GND, но некоторым людям это кажется страшным буквами. GND – это, так сказать, общий контакт. Его еще называют землей и массой. Провод обычно черного цвета (иногда белого или еще, какого нить). GND также подключается к металлическому корпусу устройства. На плате в большинстве случаев все свободное место заполняет GND в виде больших полигонов. На нашем модуле есть полигоны в виде сеточки, они так же соединяются с корпусом USB – разъема.

Программа для микроконтроллера.

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

Электротехника

суббота, 27 сентября 2014 г.

Включение светодиода через usb.

Для написания программы для микроконтроллера понадобится библиотека v-usb последнюю и самую актуальную версию которой можно скачать с официального сайта http://www.obdev.at/products/vusb/download.html. В скачанном v-usb архиве будет папка «examples» в ней будет пример «hid-custom-rq» который (с небольшими переделками) и будет использоваться для включения светодиода через usb. Для компиляции данного примера понадобится скачать и установить:
WinAVR (для компиляции примера для микроконтроллера),
MinGW-5.1.4.exe (для компиляции примера для микроконтроллера).
Которые для простоты дальнейших действий лучше установить туда куда предлагается по умолчанию, более подробно об установке этих программ на сайте: microsin.net. После установки MinGW-5.1.4.exe в переменную Path необходимо прописать путь c:MinGWbin на сайте microsin.net об этом написано но важно при прописывании этого пути не удалить другие, данный путь дописывается в конец после точки с запятой которую необходимо дописать если её нет. В windows7 чтобы изменить переменную Path:
1) Правой кнопкой мыши нажимается на значок «Компьютер» (или «мой компьютер»),
2) Выбирается «Свойства»,
3) Выбирается «Дополнительные параметры системы»,
4) Нажимается на кнопке «Переменные среды. «,
5) В поле «Системные переменные» выбирается «Path» нажимается кнопка «Изменить. «,
6) В поле «Значение переменной:» дописывается «;c:MinGWbin» (или туда где MinGW установлена если не по умолчанию).
В распакованной папке v-usb лучше ничего не перемещать и не копировать а изменения производить в самом примере (если что можно скачать заново). в папке «hid-custom-rq» есть папка «firmware» в этой папке есть файл «Make» его надо открыть через какой нибудь текстовый редактор и найти строки:
DEVICE = atmega168
F_CPU = 16000000 # in Hz
и заменить на:
DEVICE = atmega8
F_CPU = 12000000 # in Hz
Если кварцевый резонатор на другую частоту и/или микроконтроллер другой то заменить на то что есть на самом деле. Если дополнительные действия с папками и файлами в этой скачанной v-usb папке не проводилось и записывать программу в микроконтроллер через этот Make файл не планируется то далее ничего можно не менять, этот файл сохраняется и закрывается.
В файле usbconfig
Необходимо убедится в том что есть такие записи:
#define USB_CFG_IOPORTNAME D
#define USB_CFG_DMINUS_BIT 4
#define USB_CFG_DPLUS_BIT 2
#define USB_CFG_INTERFACE_CLASS 3
Можно изменить VENDOR_NAME и DEVICE_NAME:
#define USB_CFG_VENDOR_NAME ‘e’,’l’,’e’,’c’,’t’,’e’,’.’,’b’,’l’,’o’,’g’,’s’,’p’,’o’,’t’,’.’,’c’,’o’,’m’
#define USB_CFG_VENDOR_NAME_LEN 19
#define USB_CFG_DEVICE_NAME ‘m’,’y’,’u’,’s’,’b’,’d’,’e’,’v’,’i’,’c’,’e’
#define USB_CFG_DEVICE_NAME_LEN 11

В файле main находим строку:
#define LED_BIT 0
и меняем на:
#define LED_BIT 1
т.к. светодиод подключен к первому биту порта B, если сразу подключить его к биту 0 то эту строку менять не надо, можно подключить к другому биту порта B и внести соответствующие изменения в эту строку.
На всякий случай дописываем строку:
#define F_CPU 12000000UL // 12 MHz

и обязательно проверить и убедиться в том что папки «include» и «gcc» располагаются по указанным путям если нет то их туда надо переместить перед этим найдя где они установлены или скачать и установить заново. Об этом написано на сайте: microsin.net. После внесения всех необходимых изменений Make файл надо сохранить и закрыть.
Далее открываем файл «set-led.c» и меняем исходный код (в первых пяти строках надо заменить #include» » на #include ) на:

#include «windows.h»
#include «stdio.h»
#include «stdlib.h»
#include «string.h»
#include «usb.h» /* this is libusb */
#include «opendevice.h» /* common code moved to separate module */

#include «../firmware/requests.h» /* custom request numbers */
#include «../firmware/usbconfig.h» /* device’s VID/PID and names */

#define USB_CFG_VENDOR_NAME ‘e’,’l’,’e’,’c’,’t’,’e’,’.’,’b’,’l’,’o’,’g’,’s’,’p’,’o’,’t’,’.’,’c’,’o’,’m’
#define USB_CFG_VENDOR_NAME_LEN 19

#define USB_CFG_DEVICE_NAME ‘m’,’y’,’u’,’s’,’b’,’d’,’e’,’v’,’i’,’c’,’e’
#define USB_CFG_DEVICE_NAME_LEN 11

const int BUTTON_ON_OFF=1000;

usb_dev_handle *handle = NULL;
const unsigned char rawVid[2] = , rawPid[2] = ;
char vendor[] = , product[] = ;
char buffer[4];
int vid, pid;
unsigned short key_on_off=0;

/* Declare Windows procedure */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

/* Make the class name into a global variable */
char szClassName[ ] = «WindowsApp»;

int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)

<
HWND hwnd; /* This is the handle for our window */
MSG messages; /* Here messages to the application are saved */
WNDCLASSEX wincl; /* Data structure for the windowclass */

/* The Window structure */
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */
wincl.style = CS_DBLCLKS; /* Catch double-clicks */
wincl.cbSize = sizeof (WNDCLASSEX);

/* Use default icon and mouse-pointer */
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL; /* No menu */
wincl.cbClsExtra = 0; /* No extra bytes after the window class */
wincl.cbWndExtra = 0; /* structure or the window instance */
/* Use Windows’s default color as the background of the window */
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

/* Register the window class, and if it fails quit the program */
if (!RegisterClassEx (&wincl))
return 0;

/* The class is registered, let’s create the program*/
hwnd = CreateWindowEx (
0, /* Extended possibilites for variation */
szClassName, /* Classname */
«Windows App», /* Title Text */
WS_OVERLAPPEDWINDOW, /* default window */
CW_USEDEFAULT, /* Windows decides the position */
CW_USEDEFAULT, /* where the window ends up on the screen */
544, /* The programs width */
375, /* and height in pixels */
HWND_DESKTOP, /* The window is a child-window to desktop */
NULL, /* No menu */
hThisInstance, /* Program Instance handler */
NULL /* No Window Creation data */
);

CreateWindow(«button», «on/off», WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,50, 50, 100,30, hwnd,(HMENU)BUTTON_ON_OFF,hThisInstance,NULL);

usb_init();

vid = rawVid[1] * 256 + rawVid[0];
pid = rawPid[1] * 256 + rawPid[0];

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
<
switch (message)
<
case WM_DESTROY:
PostQuitMessage (0);
break;
case WM_COMMAND:
if(LOWORD(wParam)==BUTTON_ON_OFF)
<
if(key_on_off==1)
<
usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, CUSTOM_RQ_SET_STATUS, 1, 0, buffer, 0, 5000);
key_on_off=0;
>
else
<
usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, CUSTOM_RQ_SET_STATUS, 0, 0, buffer, 0, 5000);
key_on_off=1;
>
>
break;
default:
return DefWindowProc (hwnd, message, wParam, lParam);
>
return 0;
>

поля:
#define USB_CFG_VENDOR_NAME ‘e’,’l’,’e’,’c’,’t’,’e’,’.’,’b’,’l’,’o’,’g’,’s’,’p’,’o’,’t’,’.’,’c’,’o’,’m’
#define USB_CFG_VENDOR_NAME_LEN 19

#define USB_CFG_DEVICE_NAME ‘m’,’y’,’u’,’s’,’b’,’d’,’e’,’v’,’i’,’c’,’e’
#define USB_CFG_DEVICE_NAME_LEN 11
меняем на те что прописаны в файле «usbconfig.h»
Сохраняем и закрываем файл. Файлы «opendevice» (с расширением c и h) менять не надо. Файл «opendevice» с расширением c очень полезный в нём функция для более удобного «открытия» устройства. В папке где установлен libusb должна быть папка «include» в папке «include» должен быть файл «lusb0_usb.h» или что то в этом роде с расширением h этот файл надо скопировать в папку «include» где установлен MinGW и потом переименовать в «usb» расширение должно остаться h.
Открываем cmd (командную строку) и переходим в этой командной строке в папку «commandline»если папка v-usb находиться на диске d то сделать это можно 3мя командами:

USB LED Fader

Данное устройство USB-LED-Fader позволяет управлять несколькими светодиодами (LED) через USB. Я использовал его для отображения статуса моего интернет-соединения, видео-рекордера (VDR) и предупреждения о малом значении свободного дискового пространства. Вы можете использовать его для своих целей и программ.

Управление LED происходит с использованием ШИМ (широтно-импульсной модуляцией). Если кратко то ШИМ позволяет не просто включать-выключать LED, а дает возможность устанавливать любую яркость LED. В устройстве предусмотрено некоторое количество «волновых форм» (т.е. различных эффектов для LED). Каждый LED может отображать несколько разновидностей форм синусоиды или пилы, без какого-либо взаимодействия с внешним устройством (хостом или компьютером).

Каждый LED может управляться отдельно и отображать свой световой эффект.

Вы можете назначить три разных режима световых форм для каждого LED. Первые два (0 и 1) — неизменяемые. Они периодически меняются, пока не будет назначено что-нибудь другое. Третий режим (2) отображается один раз; впоследствии устройство возвращается к периодическому отображению первых двух режимов.

Режим описывается тремя параметрами: световой эффект, продолжительность и количество повторений перед его переходом в следующий режим.

В данной версии USB LED Fader’а предусмотрено управление 4 -мя LED. Количество LED можно легко изменить от одного до восьми. Я не тестировал устройство с более чем 4-мя LED, но могу предположить, что могут возникнуть проблемы с нагрузкой на USB-порт.

Для сборки и работы устройства требуются три вещи: схема, прошивка для микроконтроллера ATmega8 и Linux-клиент командной строки.

Данный проект базируется на примере PowerSwitch от Objective Development. От Objective Development используется только USB-драйвер для микроконтроллеров Atmel AVR. В USB-драйвере от Objective Development реализована поддержка стандарта USB 1.1 (низкая скорость обмена данными) для использования с недорогими микроконтроллерами Atmel AVR, такими как ATtiny2313 и другими. Особенности и ограничения смотрите в файле «firmware/usbdrv/usbdrv.h».

Установка ПО описана в документации к устройству (см. ниже файл).

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

Используйте командную строку для ввода команд:

usb-led-fader clear
usb-led-fader reset
usb-led-fader show
usb-led-fader test

Команда set позволяет устанавливать требуемые параметры.

Параметры:
ledId: ID светодиода (0-n, зависит от количества LED, используемых в схеме).
waveId: ID режима (0-1: неизменяемые световые формы, 2: отмена режима).
waveformId: ID световой формы (0-31: яркость, 32-37: шаблоны). Для начала отображения шаблонов используется команда show
periodDuration: Время в сек/10 для одного повтора световой формы. Значение 0 используется для сброса.
repetitionCount: Количество повторов, перед переходом к следующему режиму. Значение 0 используется для бесконечного цикла повторения.

Примеры использования:

Получить статус всех LED. Команда:
usb-led-fader status
Вернет подобный результат:

Здесь, параметры curvalue, curpos, nextupd и updtime служат для отладки. Они не представляют какого-либо интереса для пользователя.

Пример: устанавливаем яркость для первого LED.

Команда: usb-led-fader set 0 0 15 10 1
Итак, LED под номер 0, режим 0, шаблон номер 15. В данном режиме LED будет оставаться 1 секунду, произойдет одно повторение, после чего устройство перейдет к следующему режиму. Но т.к. следующий режим мы не описали, то LED будет постоянно отсаваться в данном режиме.

Далее, установим второй режим для LED, который будет немного ярче:
Команда: usb-led-fader set 0 1 25 10 1
Это режим 1, для LED под номером 0. Шаблон 25 — это константа уровня яркости. После установки второго режима, будет происходить чередование между режимом 0 и 1, поскольку длительность и число повторений одинаковы. Различается только яркость свечения.

Устанавливаем третий режим для LED.
Команда: usb-led-fader set 0 2 36 20 5
Шаблон 35 — синусоидоподобный сигнал, начинается плавный fade-эффект.Один период fade-эффекта составляет 2 секунды, повторяется 5 раз. После отработки данного режима, устройство вернется к чередованию между режимом 0 и 1, а этот режим сбросится.

Установка нескольких режимов одной командой: usb-led-fader set 0 0 15 10 1 0 1 25 10 1 0 2 36 20 5
Первый LED сначала будет работать по шаблону синусоиды 5 раз, а затем перейдет к чередованию между первым и вторым режимом с двумя уровнями яркости, период — 1 сек.

Очистка первого LED.
Команда: usb-led-fader clear 0
Очищает все 3 режима для первого LED.

Сброс устройства.
Команда: usb-led-fader reset
Все LED один раз моргнут, информируя, что устройство сброшено и готово к работе.

Отображаем шаблон на экране.
Команда: usb-led-fader show 36
Данная команда отображает форму волны:

Помните, что данные отображаются согласно длительности шаблона. Если вы захотите отобразить яркость (формы 0-31), длительность будет 1, т.е. отобразится только одна строка.

Тестирование устройства.
Команда: usb-led-fader test
Данная команда посылает множество пакетов к устройству. Устройство возвращает их, а клиент смотрит различия между отосланными и принятыми данными.

Скачать документацию, прошивки, программы и т.п.

8-канальное управление устройствами по USB с помощью ATiny2313

ATiny2313

Захаров Денис, Украина

Как известно, существует достаточное количество интерфейсов, с помощью которых микроконтроллер (МК) может общаться с внешними устройствами. Если необходимо связать МК с персональным компьютером или ноутбуком, то с уверенностью можно сказать, что лучше всего использовать интерфейс COM-порта RS-232.

Причина такого выбора очевидна – практически все контроллеры имеют аппаратные модули UART, с помощью которых можно передавать информацию при минимальном расходе ресурсов МК. Кроме того, существует множество хорошо зарекомендовавших себя программ, предназначенных для работы с COM-портом. Поскольку сигналы МК имеют уровни TTL, для согласования с интерфейсом RS-232 необходим преобразователь уровней. Часто его выполняют на основе доступной и популярной микросхемы MAX232.

Рисунок 1.

Представленное устройство (Рисунок 1) предназначено для управления приборами с помощью любого ПК, имеющего порт USB. Современные компьютеры и ноутбуки имеют по несколько таких портов. С помощью этого комплекса можно производить управление светом, телевизором и другими приборами. Исполняющие устройства не обязательно должны находиться в непосредственной близости от ПК.

Прибор состоит из вполне доступных и распространенных элементов. Обе микросхемы – микроконтроллеры ATtiny2313 семейства AVR. Первый контроллер подключен к USB-порту компьютера и выполняет функцию конвертора форматов USB-COM. Второй подключается к первому и все время сканирует команды, которые посылаются с ПК через терминальную программу Terminal v1.9b.

Подключенный к выводу 2 USB резистор R4 переводит устройство в низкоскоростной режим LS, позволяющий при обмене данными со скоростью 1.5 Мбит/с с помощью программы выпонять расшифровку посылок от ПК.

С помощью резисторов R2 и R3 происходит устранение переходных процессов. Конденсатор С5 блокирует импульсные помехи в цепи питания. Стабилитроны D1 и D2 необходимы для согласования логических уровней МК и USB входа ПК. Для безошибочной передачи данных между контроллерами частоты кварцевых резонаторов должны быть равны 12 и 4 МГц.
К выводам /RESET следует подключить подтягивающие резисторы, чтобы в дальнейшем избежать произвольного сброса МК из-за влияния помех и статических напряжений. В данной схеме все команды отображаются на светодиодах, подключенных к порту В. Чтобы управлять какими-либо устройствами, необходимо подключать выходы контроллера к реле (Рисунок 2).

Рисунок 2.

Собрать устройство можно на макетной плате, хотя лучше, все же, на полноценной печатной плате. Элементы можно разместить, например, так, как показано на Рисунке 3.

Рисунок 3.

Программа для микроконтроллера U1 разработана товарищем GetChiper в среде Bascom-AVR. Для работы с шиной USB использована библиотека swusb.LBX. С ее помощью выполняется программное декодирование USB протокола в режиме реального времени. Для работы устройства с ПК, нужно установить соответствующие драйверы, скопировав их на жесткий диск. При первом подключении устройство опознается и запросит драйвер. Далее нужно указать путь к папке с файлами, и все заработает.

Рисунок 4.

Программа микроконтроллера U2 была написана мною в среде AVRStudio на языке ассемблера. Блок-схема алгоритма работы МК представлена на Рисунке 4. Аппаратный модуль UART следует настроить на прерывание по завершению приема данных. Сам МК не будет выполнять ни одной функции, пока не наступит прерывание. Для снижения энергопотребления можно воспользоваться режимом sleep, но в данной конструкции этого делать не понадобилось. Как только из терминала ПК последуют команды, МК мгновенно перейдет к их сканированию. На данный момент контроллер поддерживает следующую систему команд:

-on1, on2, on3, on4, on5, on6, on7, on8 – команды установки портов в «лог. 1»;
-off1, off2, off3, off4, off5, off6, off7, off8 – команды установки портов в «лог. 0»;
-ser – установить все порты в активное состояние «лог. 1»;
-clr – сбросить все порты в состояние «лог.0».

После окончания ввода каждой команды необходимо нажимать Enter. Таким образом МК сможет определить конец команды и приступить к ее сканированию. На каждую верную команду контроллер будет отвечать «ok». Если ввести неверные данные, то в терминальную строку вернется «error». Пример выполнения команды показан на Рисунке 5.

Рисунок 5.

Версия прошивки 1.0. Выставлять фьюзы необходимо в соответствии с Рисунком 6. Разрабатывается следующая версия прошивки, где будет происходить самообучение МК и изменение систем команд в терминале.

Рисунок 6.

Программное обеспечение МК, виртуальная модель Proteus и драйвер для ПК — скачать
Протокол передачи данных между МК и ПК- скачать

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

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

Распиновка USB

Всем известно, что телефон при подключении к компьютеру начинает заряжаться. Этот факт говорит о том, что на контактах USB присутствует напряжение, которое можно использовать для питания светодиода. Стандартный разъём USB 2.0 имеет 4 контакта, два из которых нужны для передачи данных, а два – для питания подключаемого устройства. Подробная распиновка USB 2.0 показана на рисунке. Стандартная нагрузочная способность USB порта составляет по току – 500 мА, по напряжению 5В, что позволяет подключать к разъему целую линейку из слаботочных светодиодов.

Схема подключения

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

Светодиода

Схема подключения одного светодиода показана на рисунке. Для её реализации понадобится ответная часть разъёма USB, резистор, двухжильный провод и светодиод с высокой яркостью свечения. Если USB-штекер куплен отдельно, то его необходимо разобрать, освободив внутреннюю часть с контактами под пайку. Определившись со светодиодом, рассчитывают сопротивление резистора:

UПИТ – напряжение питания от USB порта, равное 5В;
ULED – прямое напряжение светодиода, которое зависит от цвета свечения;
ILED – номинальный рабочий ток светодиода.

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

Теперь осталось правильно спаять все имеющиеся детали между собой и придать подсветке привлекательный вид. Сначала с помощью кусачек укорачивают плюсовой вывод светодиода и припаивают к нему резистор. Далее один провод припаивают к свободному выводу резистора, а второй провод – к минусовому выводу светодиода. Выводы, резистор и места пайки скрывают под термоусадочной трубкой. Для придания приличного внешнего вида на оба провода вблизи светодиода надевают термотрубку большего диаметра. С обратной стороны соединительный шнур припаивают к клеммам разобранного USB разъёма. Провод, идущий от резистора, соединяют с клеммой №1 (+5В), а провод, идущий от минуса светодиода, – с клеммой №4 (GND). Проверяют, чтобы после пайки не было замыкания со второй и третьей клеммой и собирают разъём.

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

Светодиодной ленты

Чтобы подсветка обладала более высокой светоотдачей, используют светодиодную ленту. Особенно это актуально для освещения выдвижной полки компьютерного стола. Светодиодный отрезок наклеивают с краю под столешницей, обеспечивая равномерный световой поток на поверхности клавиатуры. Чтобы ленту запитать от USB порта, дополнительно потребуется повышающий преобразователь с 5 до 12 вольт, который придётся сделать своими руками либо приобрести в магазине электроники.

Но проще пойти другим путём. Компьютерный блок питания выдаёт необходимое +12В, которое присутствует на 4-х проводном molex разъёме внутри системного блока. Всё что требуется – это купить ответную часть molex разъёма со штырьками, припаять к нему и к светодиодной ленте провод питания нужной длины, который вывести через заднюю стенку системного блока. Плюс ленты соединяют с жёлтым проводом molex, а минус – с любым чёрным.

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

Как подключить светодиодную ленту через USB

Украшение компьютеров, мониторов или столов подсветкой из светодиодной ленты вошло в моду сравнительно недавно. В продаже появилась USB подсветка, которая подключается к источнику питания 5В. Это позволяет отказаться от громоздкого выпрямителя, требующего подключения к сети 220 В и занимающего лишнее место. Рассмотрим, как подключить эту ленту к компьютеру.

Что из себя представляет

USB LED лента — это цепочка слаботочных светодиодов, рассчитанных на питание 5 В. Она представляет собой узкоспециализированную конструкцию, поэтому производителей таких светильников немного. Большинство из них сосредоточено в странах Юго-Восточной Азии. В интернет-магазинах (Алиэкспресс и подобные) есть масса предложений такой подсветки.

Есть обычные, одноцветные варианты, или многоцветные RGB ленты, для нормальной работы которых потребуется управляющее устройство — контроллер. Все они выпускаются в готовом к использованию виде, с присоединенным разъемом. Остается только включить штекер в гнездо и разместить ленту в запланированное место.

При желании, для работы от 5 В может быть переделана обычная светодиодная лента на 12 В. Однако, этот процесс требует некоторой подготовки как в теоретическом, так и в практическом плане. Некоторые пользователи предлагают собрать преобразователь 5 В на 12 В, но при таком решении допустимый ток с изначального значения 500 мА падает до 250 мА. Кроме того, теряется сам смысл присоединения ленты к USB — тогда можно просто взять штатный БП 12 В и подсоединить его к сети.

Гораздо проще использовать готовые светильники на базе светодиодов SMD 2835, содержащие 60 элементов/метр длины. Есть одно- и многоцветные варианты, с разной степенью защиты. Их можно приобрести и самостоятельно подключить к гнезду USB, выполнив некоторые технические процедуры. Преимуществом такого варианта будет более точная подгонка длины ленты к размерам несущей поверхности, выбор наиболее подходящего цветового оттенка.

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

Варианты использования

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

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

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

Необходимые для работы материалы и инструменты

Для создания и подключения LED ленты USB могут потребоваться:

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

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

Распиновка USB

В современных компьютерах чаще всего используются USB версии 2.0. Они используют 4 провода, два из которых передают данные, а другая пара — плюс и минус питания 5 В. В стандартных устройствах плюсовой провод красный, а минус — черный. Контакты в обычном, плоском гнезде (USB type A) расположены таким образом, что в центре проходят провода передачи данных, а по краям — питание.

Важно! Для гнезд мини USB обоих типов размещение будет такое же, а для USB type B, которые используются для подключения принтеров или иной периферии, питание находится на контактах 1 и 4, расположенных справа один над другим (если скошенные грани сверху). Более точно определить, где плюс и минус, поможет прозвонка с помощью тестера. При соединении необходимо учитывать расположение контактов, так как паять придется штекер, где все расположено в зеркальном порядке.

Схема подключения

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

Прежде всего, необходимо рассчитать номинал токоограничивающего резистора. Формула выглядит следующим образом:

Где Uпит — напряжение питания, равное 5 В;

U LED — падение напряжения на светодиоде, которое зависит от длины излучаемой волны;

I LED — сила тока светодиода в рабочем режиме.

Падение напряжения на разных светодиодах можно наглядно рассмотреть в таблице:

Цвет LED элемента Падение напряжения
Белый 3-3,7 В
Красный 1,6-2,3 В
Синий 2,5-3,7 В
Желтый 2,1-2,2 В
Зеленый 2,2-3,5 В
Оранжевый 2-2,1 В

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

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

Если планируется использовать штекер под пайку, его надо разобрать и припаять к крайним контактам провода. Можно поступить проще — к плюсовому контакту штекера сразу припаять резистор, а к минусовому — соответствующий электрод соединительного шнура. Плюс припаивают к свободному контакту резистора после сборки штекера. Обязательно надо проверить, не замыкают ли контакты между собой. Они расположены очень близко друг к другу, во время пайки можно случайно соединить соседние выводы.

Светодиода

Для подключения одного светодиода необходимо ограничить напряжение питания. Это важно, поскольку LED элементы не переносят превышения напряжения и выходят из строя. Номинал резистора определяется по формуле, приведенной выше. Напряжение питания (Uпит) известно — 5 В. Падение напряжения светодиода находится по таблице, а рабочий его ток указывается в технических характеристиках элемента.

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

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

Светодиодной ленты

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

Существует еще один способ присоединения светодиодной подсветки к компьютеру. Его блок питания выдает качественные 12 В, но на USB это напряжение не подается. Можно найти в системном блоке свободный molex разъём и подключить ленту к нему. Желтый электрод, подходящий к разъему — это +12 В, а минусом может быть любой черный провод.

Этот вариант удобно реализовать с помощью штатного штекера molex, к которому в соответствующем порядке припаиваются контакты светодиодной ленты. Такой вариант годится только для системного блока, у ноутбука можно использовать одно из гнезд USB и специальную ленту 5 В.

Основные выводы

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

  • отдельный светодиод;
  • целая лента 5 В, подключенная к гнезду USB;
  • стандартная светодиодная лента 12 В, присоединенная к molex разъему блока питания компьютера.

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