LINUX.ORG.RU

USB LED контроллер/драйвер

 , ,


0

2

Добрый вечер.

Не подскажет ли кто-нибудь, где купить / как сделать драйвер 3.3-вольтового светодиода с USB-интерфейсом, чтобы с точки зрения ядра Linux он выглядел как LED-устройство с кастомным именем (/sys/class/leds/)?

Убервысокие токи не нужны, это будет подсветка клавиатуры.

★★★★★

Последнее исправление: intelfx (всего исправлений: 3)

LED-устройство

Что это?

Бери любой контроллер с USB, вешай ему на ногу светодиод (3,3 - как раз среднее напряжение питания контроллера), бери libusb и кодь себе спокойно. А, ну и прошивку для контроллера тоже кодь.

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

Что это?

/sys/class/leds, добавил в пост.

вешай ему на ногу светодиод (3,3 - как раз среднее напряжение питания контроллера)

А вот тут ток будет слишком маленький, да и напряжение не 3.3 там, а выше. Если брать ту же FT232, например.

Да и не будет выполнено условие с регистрацией в /sys/class/leds, если не заморачиваться с написанием ядрёного драйвера.

intelfx ★★★★★
() автор топика

sudo cast ncrmnt. Есть ли что-то сравнительно готовое и управляемое хотя бы по I2C, или же придётся городить свой понижающий трансформатор с катушками и транзисторами, а потом героически им рулить из кернел-спейса?

intelfx ★★★★★
() автор топика
Ответ на: комментарий от intelfx

Тебе обязательно привязываться к /sys/class/leds ?

В готовых библиотеках для микроконтроллеров уже есть шаблоны для классов HID, CDC, MSC. Самый простой вариант - использовать класс HID и общаться с контроллером через /dev/hidraw, как с символьным устройством.

Чуть посложнее будет (на стороне контроллера) реализация CDC. Плюс - девайс отображается в /dev/ttyUSB или в /dev/ttyACM. Минус - надо заставлять NetworkManager игнорировать этот виртуальный последовательный порт.

А USB-класса, предназначенного для руления светодиодами, я что-то не припомню.

qbe
()
Последнее исправление: qbe (всего исправлений: 3)
Ответ на: комментарий от qbe

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

Дальше можно взять уже известные мне FT232/FT2232 (USB-UART, USB-I2C и вообще всё что угодно, т. к. битбанг). Соответственно, задача распадается до «чем рулить непосредственно светодиодом».

intelfx ★★★★★
() автор топика
Ответ на: комментарий от intelfx

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

Эта простота хороша, если умеешь программировать контроллеры.

Если программировать контроллеры совсем не вариант, можно на FT232 в параллельном режиме собрать из резисторов толковый ЦАП R2R, и с него записывать диод. Имхо, оверхед по компонентам.

Третий вариант, тоже с FT232 - bitbang для создания шим на соответствующем пине. Недостаток - компьютеру придётся гнать поток на FT232 постоянно, пока светодиод горит в неполную яркость (т.е. пока работает шим)

qbe
()

И озвучь уже требования по току. Или назови тип светодиодов и их количество на один канал управления

qbe
()
Ответ на: комментарий от qbe

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

Насчёт ЦАП из резисторов — годная идея, спасибо. Думаю, 8 мелких мосфетов с резисторами разных номиналов найти не проблема (совершенно точно не проблема — на столе лежит восьмиканальное USB-реле, собранное неделю назад из той же FT232, тех самых мосфетов и собственно реле).

А что светодиоды лучше переносят — ШИМ или напряжение ниже номинального? Или ШИМ предлагается сглаживать конденсатором?

intelfx ★★★★★
() автор топика
Ответ на: комментарий от qbe

Завтра доберусь до лабораторного БП — померяю. Мне только что пришла ноутбучная клавиатура с подсветкой (от похожей модели ноута, механически совместимая), вот я сижу, думаю, от чего же её питать.

intelfx ★★★★★
() автор топика
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Это вопрос к твоим глазам, как они отнесутся к шим ;)

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

Например, хотим запитать белый светодиод током 20мА от шины USB. На шине USB 5В, падение напряжения на белом светодиоде около 3В. Лишние 2 вольта погасим на 100 Ом резисторе.

qbe
()

Сделай й**т! Подсказка: avr + vusb. А если хочешь мощные леды - avr + vusb + PT4115. Ну и чтобы совсем в /sys/class/leds было - придется примитивный драйвер в ведро накостылить, не помню чтобы там леды через usb цеплялись стандартно через какой-то класс.

ncrmnt ★★★★★
()
Последнее исправление: ncrmnt (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.