Usb панель своими руками

Разъем usb на передней панели компьютера своими руками

Тема достаточно простая, хотя и немного не обычная для этого сайта. В этот раз мы будем не столько ремонтировать, сколько дорабатывать уже имеющееся. Точнее, мы будем добавлять разъем usb в корпус без такового. Мне попался компьютерный корпус, в котором было отверстие, но сам разъем куда-то таинственно пропал. Если отверстия нет, его можно выпилить самостоятельно.

Собственно, фото моего корпуса представлено ниже:

Компьютерный корпус без usb. Корпус без usb изнутри.

Маленькое уточнение, добавлять мы будем разъем usb 2.0.

Еще нам понадобится планка с дополнительными разъемами для задней панели компьютера (смотрим фото ниже).

планка с разъемами usb 2.0

Теперь приступим к работе:


Шаг 1.

  • Открутим металлическую планку с блока разъемов usb.

Открутим металлическую планку с блока разъемов usb.

Шаг 2.

  • Если потребуется, отрезаем лишний разъем.
  • После того, как разъем отрезан, подрежем провода, как показано на фото ниже (чтобы не произошло замыкания между контактами).

После того, как разъем отрезан, подрежем провода

Шаг 3.

  • Заизолируем отрезанные провода.

Заизолируем отрезанные провода.

Шаг 4.

  • Ножом подрежем пластиковую часть с разъемом usb, чтобы она подходила к отверстию.

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

Проверяем совместимость разъема с отверстием.


Шаг 5.

  • Закрепляем разъем с помощью клеевого пистолета.

Закрепляем разъем с помощью клеевого пистолета.

Собственно, результат ниже на фото:

Восстановленный разъем.

Источник

Не покупайте ОСБ плиту (подорожала в 3-4 раза). Есть альтернатива osb (плита своими руками за 300 рублей)

Недавно писал статью про удорожание стройматериалов и чем лучше и недорого покрыть крышу. Кто-то поправил меня, что металл стал дороже в 3 раза, дерево тоже заметно выросло в цене. Я не спорю. Теперь каждую неделю можно заметить, что цена все растет и растет.

Говорил, что вместо профлиста лучше (дешевле) использовать гибкую черепицу или ондулин. Мне написали следующее:

Скриншот комментария на канале РемонтДом

Все верно. Лист ОСБ теперь стоит около 2000 рублей. Подорожал почти в 3 раза. Но его можно заменить более дешевыми аналогами.

В конце статьи расскажу интересную идею – как сделать плиту своими руками. Лист будет стоить всего 300 руб.

Стружечные плиты (ОСБ) выбирают из-за прочности, легкости монтажа, влагостойкости, экологичности. Раньше покупал лист по 500-600 рублей. Теперь «не укупишь». Приходится искать замену.

1. Раньше вместо осб использовали фанеру. Но и она подорожала.

2. В продаже имеется изоплат. Это своеобразные плиты, изготовленные из древесины хвойных пород.

Очень плотная плита и без клея и смол. Хороша для внутренней/наружной обшивки. Защита от ветра, устойчивость в влаге и ультрафиолету. Такие плиты не уступают базальтовой вате. Обшиваются стены или кровля, а так же другие конструкции. Цена на универсальную кровельную плиту от 1000 – 2600 руб. за лист (размер 1800х600). Тоже не дешево.

3. ЦПС вместо ОСБ. Это тоже листовой материал из цемента. Наполнителем служит древесная стружка. Еще есть различные добавки. Разновидности ЦПС: фибролит, арболит и ксилолит. Одна плита размером 3200х1200 весит от 40 кг. ЦПС плита легко режется, шпаклевка ложится идеально. Это экологичный и пожаростойкий материал. Такими плитами обшивают стены, делают перегородки, делают навесной вентилируемый фасад. ЦСП используют для плоских кровель. Листы кладут сверху на утеплитель. Для кровли выбирают плиты (толщина до 20 мм.). Технология кровельного пирога такая же, как с применением деревянных материалов. Плиты служат и для устройства чернового пола (ЦСП на маяки). Цена за плиту ЦПС толщиной 12 мм. (размер 1590х1250 мм.) – от 950 руб.

Читайте также:  Как сделать звукоизоляцию комнаты своими руками

Плиты своими руками (300 руб. за лист)

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

Сначала делаем форму из профиля. Потом берем ведро и готовим смесь. Перлит смешиваем с водой. 3 части перлита, 1 часть цемента. Добавляем воду и перемешиваем миксером. Можно добавить фиброволокно. Должна получиться смесь как мягкий пластилин (чтобы лепить из нее можно было).

Расстилаем пленку, потом на дно формы выкладываем сетку, далее готовую смесь. Разравниваем шпателем. Можно сделать панель толщиной в 3 см. или меньше. Сверху наложить сетку и разровнять. Раствор с перлитом будет сохнуть долго. На солнце нельзя сушить. Зато получается прочные и легкие листы (ЦПС тяжелее в 2 раза).

Источник

USB панель управления космическим кораблем своими руками


Здравствуйте, дорогие читатели!

Пришла мне тут одна идейка, а не собрать ли пульт управления космическим кораблем. На USB. С нативной поддержкой драйверов. Custom HID. Чтобы воткнул и всё работает, без всяких танцев и бубнов. В итоге, получился некий монструозный «геймпад» для космических симуляторов. В общем, судите сами.

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

Прикинув рабочую поверхность моего стола, выбрал размеры пульта по ширине и глубине 500*300 мм. А пошарив по строительным складам и магазинам в поисках стройматериалов, выбрал высоту 125мм. В итоге приобрел лист 4 мм фанеры, рейки 20*12 мм и доску 120*20 мм.

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

Но пока оставим малярные работы в стороне и я расскажу про электронную начинку.

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

Остальная мелочь проблем не вызвала. Контроллер выбрал STM32. В качестве АЦП для джойстиков 16-битные ADS1118. Также был куплен блок питания на 12 В. Собственно такое напряжение объясняется тем, что мне в руки попал указатель уровня топлива от «шахи», который я тоже хотел сюда же пристроить.


На фото блок питания, стабилизаторы на 5 и 3.3 В, STM32, MCP23017, ADS1118

Контроллер 100-выводный STM32F407VET6, к нему подключается:

2 селектора на 4 положения
1 переменный резистор
2 переключателя осей
4 основных оси
2 вспомогательных оси
2 регулирующих оси
4 клавишных переключателя по 2 кнопки каждый
20 кнопок со светодиодами
4 основных выключателя со светодиодами
2 кнопки-грибка со светодиодами
2 кнопки таймеров
3 выключателей со светодиодами
13 переключателей
2 ADS1118 (АЦП)
4 MAX7219 (8-знаковые LED-дисплеи)
2 TM1637 (дисплей-часы)
1 PCF8574 (расширитель I/O, воткнут в знакосинтезирующий дисплей)


Получилась такая структурка

Чего-то многовато будет для сотни ног МК, решил я, и добавил сюда же расширители входов-выходов: четыре штуки MCP23017, на 16 входов или выходов каждый. Забегая вперед, скажу, что задержка опроса входов у расширителя получилась около 0.13 мс на одну микросхему, при скорости шины I2C 400кГц. То есть это с запасом перекрывает минимальное время опроса USB в 1 мс.

Читайте также:  Как сделать кувшины своими руками

Чтобы не гонять шину I2C бесполезными запросами, у MCP23017 есть выхода-прерывания, которые устанавливаются при изменении состояния входов. Их я тоже применил в своем проекте. Как оказалось далее, из-за дребезга контактов эти прерывания оказались бесполезными.

АЦП ADS1118 несколько не успевает за скоростью USB, заявленная производительность у него составляет максимально 820 отсчетов в секунду, что равно 1.2 мс, при этом, он имеет несколько входов, которые внутри через мультиплексор уже подключены к АЦП. Я использовал 2 входа на одну микросхему, поэтому время обновления значений составляет 2.4 мс. Плоховато, но что поделаешь? К сожалению на али других 16-битных быстрых АЦП нет.


Внутри выглядит так, но после монтажа проводов гораздо хуже

Программа CPU написана в стиле программы ПЛК. Никаких блокирующих запросов. Ядро периферию не ждет, не успела и хрен с ним, на следующем цикле опросит. Никаких RTOS в проекте тоже нет, попробовал, уперся в минимальное время ожидания задачи 1 мс — получается медленно, если нам надо отправлять данные по USB с частотой 1 мс. В итоге понял, что буду использовать ОС без osDelay(), а тогда зачем RTOS? Просто, как в ПЛК, располагать инструкции программы один за другим внутри бесконечного цикла вполне достаточно.

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

Девайс у нас будет USB custom HID. HID есть mouse, keyboard, gamepad, joystick, какие-то еще. А есть custom. Всё это не требует драйверов от операционной системы. Точнее, они уже написаны разработчиком. Кастомный девайс хорош тем, что мы сами комбинируем возможности всех вышеназванных устройств по своему усмотрению.

Вообще, USB штука очень сложная, имеет мануал почти в тысячу страниц и с наскока её не взять. Кто не хочет читать тяжелые мануалы, есть великолепная статья USB in a NutShell, погуглите. Также у неё есть перевод. Всё же попытаюсь некоторые моменты объяснить «на пальцах».

USB — пакетированная передача данных с кучей уровней и абстракций. Девайс у нас — никаких данных запрашивать не может, всю передачу инициализирует хост. Хост пишет и запрашивает данные в так называемые конечные точки, физически это некоторые буферы в памяти МК. Чтобы хост понимал по каким конечным точкам можно писать, а какие конечные точки читать и какие данные он может интерпретировать как кнопки и оси нашего устройства и, вообще, что это тут у нас за устройство, в начале коннекта он запрашивает дескрипторы девайса. Этих дескриптеров много и составлять их сложно и можно как угодно, и ошибиться тоже, где угодно. Физически они представляют собой массив байт.

На самом деле, CubeMX сгенерирует код инициализации Custom HID лучше нас.

Прошу обратить внимание на последней картинке под цифрой 3. Это размер дескриптора в байтах, который и определяет какие оси и кнопки есть на нашем девайсе. Генерируется этот дескриптор в программе HID Descriptor Tool. Там есть несколько примеров для самостоятельного изучения. Вообще, вот мой дескриптор. Там пока отсутствуют данные для дисплеев, для простоты понимания, но присутствуют все кнопки и оси джойстиков. Его нужно поместит в файл usbd_custom_hid_if.c. По-умолчанию, куб этот дескриптор делает пустым.

По сути, его можно составлять как угодно, сначала задаются параметры USAGE PAGE и необходимый USAGE, например ось USAGE (Throttle), а затем после слова INPUT (Data,Var,Abs) система будет считать, что у нас есть ось «Газ». Размерность переменной оси и их кол-во задается параметрами LOGICAL_MAXIMUM, MINIMUM, REPORT_SIZE, REPORT_COUNT, которые должны стоять перед INPUT.

Читайте также:  Как сделать бусину дзи своими руками

Более подробно про эти параметры, а также, что такое (Data,Var,Abs), можно прочесть в Device Class Definition for Human Interface Devices (HID) v1.11.

Ниже приведен пример инициализации оси Throttle из моего дескриптора. В данном примере Throttle имеет диапазон значений 0-65535, что соответствует одной переменной uint16_t.

А да, еще, допустим, можно не писать LOGICAL_MAXIMUM, MINIMUM, REPORT_SIZE, REPORT_COUNT каждый раз, хост будет определять это значение по предыдущему параметру. Это иллюстрируют оси, которые идут один за другим, без указания размера и кол-ва:

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

Эту структуру можно посылать хосту функцией

Первый параметр — хендл USB, он у нас уже создан кубом. Возможно, понадобится подключить include-ом необходимый файл, где впервые инициализируется этот хендл и прописать extern USBD_HandleTypeDef hUsbDeviceFS;, чтобы с ним можно было работать. Второй параметр — указатель на нашу структуру и третий — размер структуры в байтах.

После заливки и прошивки контроллера можно заметить, что чего-то USB медленно шевелится. Данные с нашей панели обновляются не быстро. Чтобы было быстро, в файлах usbd_customhid.h нужно поменять #define CUSTOM_HID_EPIN_SIZE на максимальное значение 0x40, #define CUSTOM_HID_EPOUT_SIZE тоже поставить 0x40. В файле usbd_customhid.c найти комментарии в дескрипторе эндпойнтов «/* bInterval: Polling Interval (20 ms) */» и поменять байт дескриптора на 0x01 для каждого эндпойнта, всего два раза. Что будет соответствовать 1 мс обмена данными.


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

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

С дисплеями всё тоже самое, что и с осями. Под них нужно дополнить наш дескриптор HID девайса, только указать что это дисплеи и вместо принятия данных Input, хост будет посылать данные Output.

Дескриптор HID девайса значительно разросся. Здесь я уже применил параметры Report ID, чтобы не забивать буфер приема/передачи и эндпойнты полными данными и различать, что за телеграмма нам пришла. Report ID представляет собой байт uint8_t со значением, который идет вначале телеграммы. Значением мы сами задаем в дескрипторе HID девайса.

Обработка Output происходит в функции static int8_t CUSTOM_HID_OutEvent_FS(uint8_t event_idx, uint8_t state), которая, по-умолчанию, находится в usbd_custom_hid_if.c.

Осталось только написать программу на ПК, которая отправляет нужные репорты, чтобы рулить дисплеями. Впрочем, для проверки кода МК подойдет великолепная программа от ST: USB HID Demonstrator. Она позволяет слать репорты с ПК с каким угодно содержимым.


Тест LED дисплеев

На этом этапе я пока закончил. И не известно, начну ли снова.

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

Надеюсь, вам было интересно. Опечатки, неточности и бред присутствует. Желающие поковыряться в коде могут посмотреть здесь.

Источник

Оцените статью