PDA

Просмотр полной версии : FT245R работает со сбоями



Koluna
07.02.2009, 17:06
Здравствуйте!

Наконец-то дело дошло и у меня до практики и сразу столкнулся с трудностями sad.gif

Собрал устройство с FT245 включенной по самой простой схеме с питанием от шины.
Использую VCP (скачал с сайта CDM 2.04.14.zip).
Обмен данными с портом программирую на API (Delphi 7) под WinXP.
На кабеле написано следующее: "28 AWG/IP 28AWG/2C HIGH SPEED USB REVISION 2.0 MD".
4 жилы в фольге + провод экрана.
Длина 1.8 м.

"Бусинки" ферритовой на цепь +5 В не нашлось sad.gif

Сбои следующего рода.
Работает, работает, потом начинаются сбои при записи в порт со стороны ПК... возникает исключение. Далее с портом работать не получается до тех пор, пока не передёрнешь шнур USB... Как я понял, подвисает FT245R.
Сбои возникают спонтанно...

Сделал, как советовали:
1. Со стороны устройства экран кабеля повесил на общую цепь через RC-цепочку 1 МОм, 0.1 мкФ.
2. На линии данных USB - конденсаторы 33 пФ на общую цепь (47 пФ не нашлось).

Ситуация не изменилась...
Почему возникают сбои?
Как их можно устранить?

Попутно несколько вопросов.

1. FT245R гарантирует безошибочную доставку данных? Т. е., в пакетах абсолютно точно не будет испорченных, пропущенных и лишних байтов? Читал, что режим BULK USB гарантирует безошибочную доставку данных, а ISOHRONOUS - не гарантирует. Только вот в каком режиме работает данная микросхема?

2. Как при подсоединении к ПК устройства с FT245 запустить своё приложение?

Спасибо заранее!

Александр Вдовенко
10.02.2009, 18:37
Добрый день!
Недавно сам с FT245 занимался. Схема включения - во вложении, питание - внешнее, кабель - 1м без экрана, колец и бусинок нет. Конденсаторы по питанию - керамика.
Для отладки прошил в микроконтроллер программу, которая после приема определенной последовательности символов запускает счетчик и шлет его содержимое в компьтер. Связь - через ГиперТерминал. Работало несколько часов без сбоев на максимальной скорости.

А вы из FT245 информацию вычитываете? У нее же буфер не бесконечный.

Koluna
10.02.2009, 23:24
Вычитываю.
Дело в том, что новые данные у меня не приходят до тех пор, пока полученные микроконтроллером по USB данные не уйдут обратно в ПК...
Т. е., принял-передал обратно, принял-передал обратно и т. д.
А шлю я всего 62 байта, чтобы USB пакет был 64 байта и не было тайм-аутов передачи FT.

За схему спасибо, но ничего нового я там не увидел :)
Кстати, PWREN# надо к питанию подтянуть, если мне память не изменяет. А супервизор на МК зачем? Там же BOD есть?
А что подключается к вашему устройству?
Какую скорость получить удалось?

Александр Вдовенко
13.02.2009, 15:38
Добрый день!
Возможно рядом выключается/включается что либо мощное? Кабель у вас экранированый, тогда возможно наводка идет на плату преобразователя, или по питанию от USB.
На вашем месте для проверки я бы перешел на питание от внешнего источника (Self Powered Configuration в даташите) и отключил бы в EEPROM все связанное с засыпанием/энергосбережением.
А после сбоя PWREN# в каком состоянии?

Схема моя от даташита ушла недалеко.
PWREN# я не отслеживаю контроллером, заведен на всякий случай.
С внутренним BOD у МК иногда повреждался EEPROM (примерно 3 случая на 200 изделий), с супервизором таких случаев еще не было (>600 шт).
К устройству подключается модуль АЦП.

Koluna
13.02.2009, 22:12
Вот, схему набросал структурную..


Добрый день!
Возможно рядом выключается/включается что либо мощное?


Да. По схеме: тыркаю сетевую вилку прожектора туда-сюда. Мощный бросок тока. Искрение.



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


Экранированный. Но экран кабеля к конвертору не подсоединён.
Как по питанию от USB? Из компа?



На вашем месте для проверки я бы перешел на питание от внешнего источника (Self Powered Configuration в даташите)


У меня конвертор разделён на две гальванически развязанные части. 1 - всё, что подключено непосредственно к USB, 2 - всё, что поключается к устройству управления (прожектор). Вторая часть питается от первой через DC-DC.



А после сбоя PWREN# в каком состоянии?


Спим мы, спим :) В "1".

Koluna
13.02.2009, 22:14
По схеме.
Имеем три блока: персональный компьютер (ПК), USB-DMX конвертор (разделён на две оптически развязанные части) и прожектор.

ПК шлёт с помощью VCP пакеты 62 байта в конвертор. Конвертор принимает пакеты и тут же их отсылает обратно.
По прерыванию от таймера в МК реализовано формирование DMX-пакета для прожектора.
Формируются все 512 каналов.

Следует отметить.
Экран USB кабеля соединён с общей цепью конвертора.
Сбои в основном происходят во время подключения и отключения сетевой вилки прожектора.

Александр Вдовенко
13.02.2009, 23:36
Добрый вечер!


Да. По схеме: тыркаю сетевую вилку прожектора туда-сюда. Мощный бросок тока. Искрение.


У блока питания ток пусковой под 20А, вилкой туда сюда лучше не водить! Лучше такое автоматом включать. Блок питания судя по типу не особо дешевый, медицинского назначения. Любите свой прожектор видимо.

Тогда тем более сбой из-за искрения и наводок на кабели и плату с FT245. Во вложении - файл с рекомендациями по защите USB устройств от помех.

В вашем устройстве и внешний супервизор для контроллера не повредит, и сапрессор по питанию.
-------------------------------------------
С уважением
Александр

Koluna
14.02.2009, 13:57
У блока питания ток пусковой под 20А, вилкой туда сюда лучше не водить! Лучше такое автоматом включать.


30 А :)
Автоматом включать - невозможно. Никто не будет заморачиваться с этим...



Блок питания судя по типу не особо дешевый, медицинского назначения. Любите свой прожектор видимо.


Купил то, что было в наличии, чтобы время сэкономить.



Тогда тем более сбой из-за искрения и наводок на кабели и плату с FT245.


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



Во вложении - файл с рекомендациями по защите USB устройств от помех.


Спасибо. Почитаем! :)

Koluna
16.02.2009, 22:22
Вот ещё что.
После возникновения сбоя SOFа нету!
USBDP - "1",
USBDN - "0",
PWREN# - "1".

Т. е., конвертор спит, и хост ему ничего не шлёт...

Далее докладываю о следующих экспериментах!

Ниже перечисленные эксперименты производил без прожектора и его кабеля. К сожалению, прожектор забрали не неопределённое время. А сбои оставили ;)

1. Запитал вторую половину конвертора (смотри структурную схему выше) от внешнего источника питания (трансформатор + линейный стабилизатор). В месте подключения провода от источника к плате установил электролит 100.0 и керамику 0.1.
Сбоить не перестало. Тыркаем вилку источника питания - иногда сбоит. Т. е., для возникновения сбоя совсем не обязательно наличие огромного пускового тока 30 А AC-DC моего прожектора...

2. Попробовал включать источник питания через автоматический выключатель - ситуация не изменилась.

3. В настройках микросхемы (EEPROM) установил вместо "USB 2.0" "USB 1.1". Скорость обмена упала раз в пять, сбои не прекратились.

Александр Вдовенко
19.02.2009, 09:48
Добрый день!


Запитал вторую половину конвертора (смотри структурную схему выше)

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

FT245 может сброситься при проседании напряжения 3,3V. Допустим это произошло кратковременно, но поддтяжка 1,5k отключилась, а потом снова подключилась. Возможно порт компьютера неадекватно на это реагирует. Посмотрите осциллографом, нет ли просадки напряжения на 17 выводе (3V3Out) при подключении в сеть чего либо? Есть ли на этом выводе конденсатор? Вывод 26 (TEST) на земле?

Можно еще проанализировать весь обмен с компьютером USB сниффером, может какие аномалии видны будут (я пользовался Device Monitoring Studio).

----------------------------------------------------------------
С уважением
Александр

Koluna
19.02.2009, 18:30
Добрый день!
Т.е. ту часть в котрой размещен MAX485?


Да.



И подача питания на нее вызывает сбой?


Или снятие с неё питания. Очень часто вызывают сбой.



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


Всё правильно. Ошибки нет. Схему приложил.



FT245 может сброситься при проседании напряжения 3,3V. Допустим это произошло кратковременно, но поддтяжка 1,5k отключилась, а потом снова подключилась. Возможно порт компьютера неадекватно на это реагирует. Посмотрите осциллографом, нет ли просадки напряжения на 17 выводе (3V3Out) при подключении в сеть чего либо? Есть ли на этом выводе конденсатор? Вывод 26 (TEST) на земле?


Почему питание может просесть? У меня 3.3 В не используется...
Конденсатор есть. Вывод на земле.



Можно еще проанализировать весь обмен с компьютером USB сниффером, может какие аномалии видны будут (я пользовался Device Monitoring Studio).


Это для меня сложно. Я не разберусь в пакетах.
Я USB знаю только по изделиям FTDI...

Koluna
19.02.2009, 18:32
Следующая череда опытов :)

1. Порт закрыт. Обмена нет. Тыркаю вилкой - иногда возникает сбой. Т. е., ни ПК с портом не работает, ни МК в конверторе с FT245R не работает, а сбои возникают...
2. Ток потребления от USB левой части конвертора (по схеме) - не более 43 мА в режиме обмена.
3. Электролит по питанию переставил почти вплотную к распаянному на плату USB-кабелю.
4. Существенно утолщил цепь +5 В от USB-кабеля (пропаял приличным проводом сверху по дорожкам).
5. На вывод VCCIO FT245R повесил 0.1 мкФ (около 5 мм от вывода, ближе не получилось).
6. Сбои возникают даже при незапитанной правой части конвертора, т. е., кабель питания к разъёму питания конвертора не подключен. Вилкой источника питания дёргаем как обычно туда-сюда (напоминаю, что правая часть у меня сейчас запитана через обычный источник питания БПС 5-0.5).
7. Попробовал работать на рядом стоящем компьютере, подключенном к той же розетке, что и первый компьютер. Сбоев нет!

Александр Вдовенко
19.02.2009, 22:48
Добрый вечер!


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

Ну так прогресс!!! Тогда возможно проблема в USB контроллере материнки, или способе питания USB (от 5VSb или 5V), или в БП компьютера. Интересно будет поменять блоки питания у компьютеров местами (если это возможно).


Почему питание может просесть? У меня 3.3 В не используется...


FT245 питается от внутреннего стабилизатора 3.3 В и имеет генератор сброса по этому напряжению.



Вилкой источника питания дёргаем как обычно туда-сюда (напоминаю, что правая часть у меня сейчас запитана через обычный источник питания БПС 5-0.5).


Еще шаг, и можно будет запитать FT245 от отдельного источника, а дергать вилку чего-либо другого :)



Это для меня сложно. Я не разберусь в пакетах.
В Device Monitoring Studio все наглядно, пакеты расшифрованы. Да и в других подобных программах тоже все довольно наглядно.

Александр Вдовенко
22.02.2009, 14:58
Добрый день!
Звучал вопрос :

Какую скорость получить удалось?

Для тестирования скорости файл размером 148922 кБайт порциями передавался в контроллер, а затем с контроллера на компьютер и записывался в новый файл. Все это заняло 422 сек. Т.е скорость обмена составила 2*148922/422 = 706 кБайт/сек. Использовался D2XX драйвер. Ошибок в принятом файле не возникало, FT245 подключалась через USB Hub на мониторе.



С уважением
Александр

Koluna
25.02.2009, 13:26
1. Запитал ещё и левую часть конвертора от внешнего источника. Настроил в Self powered.
2. На RESET# FT245R повесил 10 нФ керамику, по одной из рекомендаций.

Сбои не исчезли.

Пробую с D2XX.
После возникновения сбоя функции чтения/записи возвращают ошибку FT_IO_ERROR = 4.
Пробовал сразу после их вызова в обработчике ошибок FT_CyclePort, FT_ResetPort - возвращают то же самое. Т. е., не работают они...

Александр Вдовенко
25.02.2009, 17:38
Добрый день!
Т.е и при работе на другом компьютере есть сбои?
---------------------------------------------
С уважением
Александр

Koluna
26.02.2009, 14:04
Следующее.

Продолжаю работать с D2XX.
При возникновении сбоя теперь моё приложение не виснет как с VCP.
Обмен данными отменяется. Устройство закрывается. Но при открытии устройства вновь возникает ошибка (FT_INVALID_HANDLE = 1)!
После передёргивания шнурка или после выбора в Диспетчере устройств пунктов меню "Отключить/Задействовать" устройство нормально открывается и функционирует...

Кстати, есть у кого-нибудь подробное описание функций D2XX?
Ошибок, возвращаемых функциями D2XX?

Вот, например, "FT_INVALID_HANDLE", "FT_IO_EROR" - что это значит?

Koluna
26.02.2009, 14:06
Добрый день!
Т.е и при работе на другом компьютере есть сбои?


Пока сбоев на другом компьютере не заметил.
Сейчас работаю на первом компьютере (где сбои возникают).
Хочу данную задачу решить полностью :)

Koluna
05.03.2009, 12:24
Что-то заглох топик...

Проведено множество экспериментов и доработка устройства.
Сбои не удалось устранить.

Задачу решил следующим образом.
Отлавливаю возникновение сбоев и программно с помощью SetupAPI отключаю и включаю устройство. Как советовали.
Если интересно - могу код приаттачить.

Александр Вдовенко
22.03.2009, 21:18
Добрый день!

Сложно дальше что-либо советовать, если сбой проявляется на отдельно взятом компьютере. Напишите если выяснилась причина сбоев.

Повозился и я со своим устройством, получилась скорость передачи из контроллера в компьютер 930 Кбайт/сек, очень близко к тому 1Мбайту который в даташите :)

Какая у Вас загрузка процессора получилась при обмене с FT245?

И еще вопрос к читающим ветку: использует ли кто в работе SDR-IQ? В его интерфейсе тоже FT245 используется. Насколько надежен он при передаче данных в компьютер?

--------------------
Александр

Koluna
23.03.2009, 11:18
Добрый день!
Сложно дальше что-либо советовать, если сбой проявляется на отдельно взятом компьютере. Напишите если выяснилась причина сбоев.


Причин несколько, как я понял...
Железо (хост) + не совсем удачные драйвера FTDI.



Повозился и я со своим устройством, получилась скорость передачи из контроллера в компьютер 930 Кбайт/сек, очень близко к тому 1Мбайту который в даташите :)


Я такую не получил :)
Какими пакетами передаёте?
У меня пакетами по 62 байта обмен. Принял-отправил. Скорость порядка 20 кБ/с.



Какая у Вас загрузка процессора получилась при обмене с FT245?


Не смотрел. Но "тормозов" ПК не заметил :)



И еще вопрос к читающим ветку: использует ли кто в работе SDR-IQ? В его интерфейсе тоже FT245 используется. Насколько надежен он при передаче данных в компьютер?


Что это?

Александр Вдовенко
30.03.2009, 14:49
Добрый день!

Передача идет также по 62 байта, FT_SetTimeouts установлен 1мс. У Вас похоже стоит по умолчанию 16 мс.

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

SDR-IQ это приемник с АЦП на входе, дальше стоит DDC (цифровой смеситель+гетеродин+ дециматор), затем оцифрованый сигнал через микроконтроллер поступает на FT245, и через USB в компьютер. В нем также используется и внутренний EEPROM FT245.

-----------------------------------------------

Александр

Koluna
16.04.2009, 14:23
FT_SetTimeouts установлен 1мс

Это же тайм-ауты приёма/передачи?!
У меня стоит 500 мс.

Может быть Вы имели ввиду FT_SetLatencyTimer?
Но он у меня влияния на скорость не оказывает почему-то...

Александр Вдовенко
17.04.2009, 18:30
Добрый день!
Я устанавливал 1мс именно в FT_SetTimeouts.
Т.е у меня прописано



ftStatus = FT_SetTimeouts(ftHan dle,1,1)

После этого изменения скорость резко возросла.

-----------------------------------------------------------
Александр

Koluna
17.04.2009, 19:42
По FT_SetLatencyTimer понять можно... она определяет время, по истечении которого данные из микросхемы уходят в хост сколько бы их не было...

А вот по поводу FT_SetTimeouts не пойму... она определяет тайм-ауты приёма\передачи. А как тайм-ауты могут влиять на скорость обмена?
Никак. Только если часть пакетов пропадает или приходит через время, большее времени тайм-аута... но это уже - ошибки.
При тайм-аутах 1 мс у меня сплошные ошибки, т. е., не успеваю ничего считывать...

Думаю, что-то Вы путаете ;)
Давайте подробнее обсуждать :)

Александр Вдовенко
20.04.2009, 17:30
Христос Воскрес!

Подробнее - пожалуйста! :)
Во вложении - фрагмент кода на VB6 посылающий тестовую строку 62 байта в контроллер и фото самого контроллера. Строка отсылается один раз. Контроллер записывает ее и начинает слать обратно. Принятая строка записывается в файл указанное количесиво раз. Возможно код выглядит не совсем стройно, но надежно работает, скорость до 930 кбайт/сек. Тестировалось одновременном с копированием с USB флешки на жесткий диск.
Если закомментировать FT_SetTimeouts то скорость падает примерно на 90 кбайт/сек.
Прошивка контроллера особенностей не имеет: 62 байта записываются в память и пересылаются оттуда в порт. Микроконтроллер ATmega8, кварц - 16Мгц. Хотя в таком варианте это пригодно только для тестовых целей (ради чего и делалось).

--------------------------------------------------------------------------
С уважением
Александр

Koluna
27.04.2009, 09:34
Моё мнение следующее.
Вы теряете часть пакетов и даже не знаете об этом :)
FT_SetTimeouts не может влиять на скорость обмена.

Происходит следующее.

1. Если у Вас FT_SetTimeouts(lngHa ndle, 1, 1), то прочитали Вы данные или не прочитали - возвращаетесь по тайм-ауту 1 мс.
Проверки результата выполнения операции чтения я у Вас не вижу, т. е., Вам неизвестно, получен пакет или нет. В данном случае у Вас действительно FT_SetTimeouts влияет на скорость обмена. Но это неправильно.
Контроллер шлёт детерминированное число пакетов или пока не выключишь?
Я бы советовал после каждой операции чтения чистить буфер FT_In_Buffer. Тогда при FT_SetTimeouts(lngHa ndle, 1, 1) в файле Вы увидите нули...
Проверку результата нужно сделать обязательно.

2. Если у Вас закомментирована FT_SetTimeouts(lngHa ndle, 1, 1), то при потере пакета функция не завершится и будет ждать прихода следующего пакета. Время ожидания увеличивается. Скорость падает... Всё правильно :)
FT_SetTimeouts нужна, чтобы избежать "зависона". Но к маленьким значениям тайм-аутов надо подходить осторожно...
Значения тайм-аутов, я думаю, придётся увеличить.

Просто слать данные "в никуда" не получая подтверждения приёма - это неправильно. Нужна синхронизация.

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

Просьба задуматься над моими словами, немного поэкспериментировать и сообщить о результатах :)

Контроллер красивый :)
Позже свой залью.

Koluna
27.04.2009, 09:38
FT_SetTimeouts установлен 1мс. У Вас похоже стоит по умолчанию 16 мс.

Гхм... всё забываю сказать...
16 мс стоит по-умолчанию для FT_SetLatencyTimer.
А для FT_SetTimeouts по-умолчанию стоит бесконечность...

Koluna
27.04.2009, 09:56
Кстати, по поводу загрузки проца - 100% :)
Правда тормозов нет. У меня там несколько потоков трудятся...

Koluna
27.04.2009, 10:12
У меня принцип работы следующий.

Дочерний поток.
Шлю контроллеру пакет.
Принимаю от контроллера пакет.
Если получен верный пакет, то шлю сообщение.

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

Александр Вдовенко
28.04.2009, 13:46
Добрый день!


Просьба задуматься над моими словами, немного поэкспериментировать и сообщить о результатах

Подумал я, поэкспериментировал. ..
Поменял программу в контроллере, теперь каждый пакет имеет свой номер (от 0 до 255, далее сначала). Запускаю... Прокачиваю 32 Мбайта... Смотрю принятый файл. 62 начальных пакетов + неполный пакет ушли в никуда. Закомментировал FT_SetTimeouts, запустил - то же самое. Больше всего смущал неполный пакет ;(
Поменял в программе минимальное количество байт в приемном буфере перед началом приема с 62 до 186. Пропадание начальных пакетов прекратилось (как с FT_SetTimeouts, так и без него) - запускал по 5 раз в каждом режиме. Т.е либо пропадание устранено, либо выпадает ровно 256 пакетов.
Дальше проверяю отдельной программой наличие ошибок внутри файла - без ошибок. Скорость с FT_SetTimeouts - 905 кбайт/сек, без него - 810 кбайт/сек.
Загрузка процессора при этом 3-4% (как по мне - тоже много).
В планах - расширить диапазон номеров пакетов до 2 байт и прогнать на гигабайте информации.
Так что не так страшны таймауты...
С программой в предыдущем посте начальных выпадений не возникало (или они были кратно 62 байтам), возможно из-за удачного соотношения скоростей опустошения/заполнения буферов.
Спасибо за совет задуматься :)

Koluna
28.04.2009, 14:12
Больше всего смущал неполный пакет

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


В планах - расширить диапазон номеров пакетов до 2 байт и прогнать на гигабайте информации.

Замечательная идея :)

В общем, надо копать глубже :)

Koluna
28.04.2009, 14:18
И всё-таки здесь вот:



While i <> 0
ft_status = FT_Read(lngHandle, FT_In_Buffer, FT_In_Buffer_Size, lngBytesReturned) 'читаем из USB устройства в буфер
Put #2, , FT_In_Buffer 'записываем содержимое буфера в файл
i = i - 1
Wend


я бы проверял после каждого приёма значения ft_status и FT_In_Buffer_Size.

Александр Вдовенко
28.04.2009, 16:31
Добрый день!


я бы проверял после каждого приёма значения ft_status и FT_In_Buffer_Size.


Я их как раз все и убрал, чтобы проц не загружало... А то как то ненормально, что перекачка по USB загружала проц от 15 до 50%.

Koluna
28.04.2009, 16:43
Проверки этих значений не должны грузить проц.
Проц грузит функция чтения. Особенно без тайм-аутов...
Можно настроить события и ждать событий - так проц будет грузиться меньше :)

Александр Вдовенко
27.07.2009, 21:34
Добрый день!

Нашел я таки время чтобы FT245 домучить. Прокачивал 1 Гигабайт через USB 10 раз, средняя скорость 900 кбайт/сек. При двухбайтной нумерации пакетов ошибок замечено не было. Сбоев при работе не возникало. Микросхема хорошая и возможно большинство нареканий относятся к ее первым версиям. Жаль только, что скорость маленькая.
В дальнейшем перейду на USB3300(USB2.0), у нас она стоит дешевле FT245.


PS: прожектор Ваш все в памяти сидел, посему собрал на RGB светодиодах (4х3Вт) подсветку с изменяемым цветом, в первом варианте управление через USB от компьютера (не DMX). Красиво!

С уважением
Александр

Koluna
07.08.2009, 20:19
Добрый день!
PS: прожектор Ваш все в памяти сидел, посему собрал на RGB светодиодах (4х3Вт) подсветку с изменяемым цветом, в первом варианте управление через USB от компьютера (не DMX). Красиво!


Красиво :)
Просто DMX это стандарт в этих всех делах, но на USB, конечно, проще :)