Дополнительные порты usb своими руками

На ноутбуке не хватает USB портов: варианты решений

Здравствуйте.

Многие ноутбуки имеют всего 2-3 USB-порта, которых иногда явно недостаточно (например, подключили вы к USB мышку и 3G модем, а внешний диск воткнуть уже некуда. 😒).

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

Причем, что интересно, сталкиваются с нехваткой USB как на старых, так и на современных ноутбуках.

К счастью, эта «проблема» достаточно легко решается.

Как настроить ноутбук на максимальную производительность — 10 заметок в помощь

Как увеличить кол-во USB-портов

Наиболее простым вариантом решения проблемы может стать покупка USB-хаба (его еще называют разветвителем или концентратором ).

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

Показательный пример: USB 2.0 (слева) и USB3.0 (справа)

Кроме того, хабы различаются на:

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

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

Китайские интернет-магазины на русском (где самые дешевые товары) — см. подборку

Кстати, если у вас современный ноутбук — обратите внимание на то, что скорее всего у вас имеется в наличии «новомодный» USB Type-C (см. на фото ниже, как он выглядит 👀) .

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

USB Type-C — переходник

Кстати, весьма неплохим вариантом может стать небольшая док-станция: на ней будут доступны не только USB-порты, но и HDMI, LAN-порт, MicroSD и SD слоты и пр.

Если вы имеете дело со старым ноутбуком — скорее всего он поддерживает интерфейс ExpressCard (позволяющий подключать различное периферийное оборудование). Подобный интерфейс шел на ноутбуках примерно с 2005 до 2010 года (далее проиграл «борьбу» USB 3.0).

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

Express Card (34 мм)

Обратите внимание, что Express Card могут быть разных форм факторов: 34 и 54 мм. Более подробно.

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

Например, современные мышки и джойстики можно подключить через Bluetooth (даже без доп. USB адаптера), принтеры сейчас всё чаще оснащаются Wi-Fi модулем, и т.д. и т.п.

Как подключить беспроводную мышку к компьютеру/ноутбуку— см. пошаговую инструкцию

Мышь беспроводная Microsoft Bluetooth Mobile 3600

Совсем не обязательно сразу приобретать кучу нового оборудования, но заменив 1-2 устройства — можно освободить часть USB и продолжить спокойно использовать ноутбук (без дискомфорта 👌).

Первая публикация: 28.08.2019

  • Видео-Монтаж
    Отличное ПО для создания своих первых видеороликов (все действия идут по шагам!).
    Видео сделает даже новичок!
  • Ускоритель компьютера
    Программа для очистки Windows от «мусора» (удаляет временные файлы, ускоряет систему, оптимизирует реестр).

Здравствуйте.
Забыли еще один вариант: поменять ноутбук на другой!

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

Еще один лайфхак (для новых ноутов) — подключаете к ноутбуку монитор по USB 3.1 (DP). На мониторе используете встроенный хаб (сейчас в продаже есть мониторы с 4-6 портами).
В сумме 2 порта на ноуте + 6 портов на мониторе — получаем 8! Для дома 100% хватит!

Читайте также:  Браслеты своими руками с бусинок схемы

Доброго времени. Кстати, да.

Добрый день!
Господа, прошу помощи. Пытаюсь на ПК с Windows 7 (макс.) установить 3 веб-камеры.
2 камеры — коннект успешен. 3-ю камеру не принимает. Восклицает, что в программе «IP CAMERA VIEWER try different usb port».
Делал всяческие опыты — результат «НОЛЬ».
Мой ПК: материнская плата ASRrock n68c ucc, ЦП QuadCore AMD Phenom x4 9850 2500mhz,
чипсет Nvidia nforce 7025-630 amd k10, BIOS AMI (9/19/11).
Очень прошу вашей помощи. Спасибо!

Доброго времени.
Ваше сообщение очень «сбивчиво» написано, и мне пришлось его серьезно поправить (а то вообще было ничего непонятно).
Ошибка, судя по всему, показывает, что к USB-порту не подключена камера (ПК ее не видит). Что у вас отображается во вкладке «Панель управления\Оборудование и звук\Устройства и принтеры»? (и да, эта веб-камера на др. ПК проверялась?)

Александр, спасибо за ответ!

Поясню. Имеем семь ноут.-камер снятых с корпусов. Камеры разные. Шесть камер не имеют имени. Седьмая имеет название «Тошиба». В диспетчере имеются все 3-4 камеры. Изображение есть только с двух камер. Испытания проводились на разных ПК. Один ПК Windows 7, другой c Windows XP.

В настройках всех ПК была снята экономия энергии USB. 2 программы для изображения поддерживают 4 веб-камеры и 4 ip-камеры. Всякие манёвры не помогли. Программы для картинки тестировались разных версий. Хаб USB был в тесте (провальный).
На хабе имеется 3 свето-диода. Так как хаб имеет 3 USB разъёма. При попытке подключить третью ноут.-камеру — свето-диод включается, а затем по не понятной мне причине выключается.

Все операционки (XP/7) устанавливали самостоятельно софт для камер. В 2020 году устанавливали настольные веб-камеры, на те же ПК, с теми же ОС, и с тем же ПО для картинки. Все было успешно.

Источник

Как сделать дополнительный разъём USB в клавиатуре?

Как было бы удобно подключить флешку прямо в клавиатуру и не лезть под стол к системному блоку.

В ноутбуке, конечно проще, но тут часто проблема нехватки свободных USB-портов.

Также не хочется захламлять стол лишними проводами.

Попробуем решить эту проблему предложенным способом ниже:

Клавиатура со встроенным USB-хабом — отличное решение, но вот только выбор готовых решений не особо велик. Рассмотрим как своими руками можно добавить USB-хаб в свою любимую клавиатуру.

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

Вот так все станет:

Для начала нам понадобиться USB-хаб 2.0, вот такой можно купить недорого (особенно в на ebay или алиэкспресс):

Разбираем корпус, достаем плату и смотрим куда ее удобнее разместить. Наиболее удобное размещение — левая сторона клавиатуры, справа — мышке мешать будет, сверху — не удобно в разъемы попадать.

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

Разбираем клавиатуру и прокладываем внутри USB-кабель: от входа кабеля в клавиатуру до USB-хаба и от контроллера клавиатуры до одного из USB-портов хаба. Здесь нам понадобится кусок USB-кабеля длиной порядка 50см. Можно взять, например от старой мышки. Припаиваем все соблюдая распиновку:

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

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

Конечно жесткий диск через такой хаб не подключишь, не хватить силы тока. Учитывая, что на каждом порту по 100mA — для флешек, картридеров, телефона, модема, фотоаппарата… вполне хватит.

Источник

Создаем простейшее usb-устройство для общения со своей программой

В продолжение темы о создании собственного USB-гаджета.
Создание простого устройства.

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

Самым простым вариантом передачи данных является использование класса коммуникационных устройств USB (CDC).
При таком подключении устройство будет видно в системе как обычный виртуальный COM-порт.
Плюсом такого подключения является отсутствие необходимости писать собственные драйвера.
Так же радует простота приема и передачи данных: для работы с портом в Windows достаточно открыть его как текстовый файл и производить обычные операции чтения\записи.

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

Железо.

Возьмем схему с минимальной обвязкой МК.

На этот раз нам нужно добавить только 4 контакта к USB и одну кнопку (кнопка нужна только для бутлоадера: куда проще нажать ее и заменить прошивку в устройстве по USB, нежели переставлять чип в программатор).

Не сильно стараясь сделать красиво, разводка может выглядеть так:

Но при желании часто экспериментировать с подключаемыми компонентами лучше сразу развести каждую ногу МК сделав аналог ардуино — Jaluino.

Прошивка

include 18f2455 — библиотека для используемого МК

enable_digital_io () — переключение всех входов на цифровой режим

alias Button is pin_B7 — раз уж у нас подключена кнопка, объявим ее
pin_B7_direction = input — кнопка у нас работает на вход

— одна строчка — и у нас есть все необходимое для работы с USB CDC
include usb_serial — бибилотека для работы с usb

usb_serial_init () — —инициализируем USB CDC
forever loop — основной цикл, выполняется постоянно
usb_serial_flush () — обновление usb. Данная процедура выполняет все необходимые
— действия для поддержания соединения с ПК
end loop

Скомпилировав данный код, записав полученный HEX файл в МК при помощи бутлоадера и запустив устройство можно будет наблюдать как в системе опрделится новое устройство: Виртуальный сom-порт.

Теперь, когда устройство уже работает, научим его общаться.

Для чтения принятого байта существует функция usb_serial_read(byte):boolean. При наличии полученного байта она заносит его в указанную переменную и возвращает true, иначе возвращает false.

Для отправки байта существует процедура usb_serial_data. Она замаскирована под переменную, потому для отправки байта достаточно присвоить ей значение отправляемого байта.

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

include 18f2455

enable_digital_io ()

alias Button is pin_B7
pin_B7_direction = input


include usb_serial

usb_serial_init ()
var byte ch — объявляем переменную
forever loop — основной цикл
usb_serial_flush ()
if ( usb_serial_read ( ch ) ) then — если байт получен, он будет записан в ch
usb_serial_data = ch — отправляем полученный байт обратно
end if
end loop

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

Пока у нас нет своего, используем готовый терминал: я использовал программу RealTerm.
Открываем порт с нужным номером и отправляем данные.


И нам в ответ приходит то, что мы отправили. Значит, все работает как надо.

Итак, наш микроконтроллер умеет принимать байты и тут же отправлять их обратно. Теперь напишем свой софт для общения с ним (я буду использовать Delphi).

Создаем новый проект, раскидываем по форме необходимые компоненты:
SpinEdit1 — для указания номера порта
Button1 — для установки соединения
Button2 — для разрыва соединения
SpinEdit2 — для ввода байта в десятичном виде
Button3 — для отправки байта
Memo1 — для вывода принятой информации.

Как уже было сказано выше, с com-портом нужно работать так же, как и с обычным текстовым файлом: используя функции CreateFile, WriteFile и ReadFile.

Дабы не вдаваться в подробности, возьмем готовую библиотеку для работы с com-портом: ComPort.

Вешаем на каждую кнопку необходимую задачу и получаем конечный код:

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics , Controls, Forms,
Dialogs, StdCtrls, Spin,ComPort;

type
TForm1 = class (TForm)
SpinEdit1: TSpinEdit;
Button1: TButton;
Button2: TButton;
SpinEdit2: TSpinEdit;
Button3: TButton;
Memo1: TMemo;
procedure OnRead(Sender: TObject; ReadBytes: array of Byte );
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
< Private declarations >
Port: TComPort;
public
< Public declarations >
end;

var
Form1: TForm1;
num: integer;
implementation

procedure TForm1.Button1Click(Sender: TObject);
begin
Port := TComPort.Create(SpinEdit1.Value, br115200); //создаем соединение
Port.OnRead := OnRead; //создаем поток чтения принятых данных
Button2.Enabled := true ; //активируем кнопку закрытия соединения
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Port.Free; //закрываем соединение
Button2.Enabled := false ; //отключаем кнопку
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
if Button2.Enabled then Port.Write([SpinEdit2.Value]);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
if Button2.Enabled then
Port.Free;
end;

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

procedure TForm1.OnRead(Sender: TObject; ReadBytes: array of Byte );
var
i:integer;
begin
for i := Low(ReadBytes) to High(ReadBytes) do //проходим по массиву принятых байт
begin
Memo1.Text := Memo1.Text + ‘.’ +InttoHex(ReadBytes[i],2); //добавляем его HEX значение в окно
inc(num); //считаем колв-о принятых байт
end;
if num > 10 then begin
Memo1.Lines.Add( » ); //переносим строку
num := 0;
end;
end;

Запускаем, устанавливаем соединение, отправляем байты:

Вот и готов наш самый простой терминал для работы с самым простым usb-устройством.

Как видно, чтение и запись происходит динамическими массивами байт.

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

include 18f2455

enable_digital_io ()

alias Button is pin_B7
pin_B7_direction = input


include usb_serial

usb_serial_init ()
var byte ch
var byte i — объявляем вторую переменную
forever loop — основной цикл
usb_serial_flush ()
if ( usb_serial_read ( ch ) ) then — если байт получен выполняем необходимые действия
case ch of — перебираем номер байта
0 : usb_serial_data = 0xff
1 : usb_serial_data = Button — отправка состояния кнопки
OTHERWISE block — если получено что-то иное
for 16 using i loop — отправляем 10 байт с данными
usb_serial_data = ch + i — от ch до ch+15
end loop
end block
end case
end if
end loop

Дополнительные возможности

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

Упрощение отправки данных

Отправлять информацию по одному байту — не всегда удобно. Очень часто может пригодиться библиотека print. Она содержит процедуры по отправке данных всевозможной длины всевозможными форматами: byte,hex,dec,bin,boolean что может упростить вывод данных в программе.

> include print
.
var dword data
print_dword_hex ( usb_serial_data , data )

Название всех команд можно посмотреть в файле библиотеки.

Ожидание подключения к ПК

Если перед стартом основного цикла микроконтроллера необходимо предварительно установить соединение с ПК, то можно дописать перед ним строчки

while ( usb_cdc_line_status () == 0x00 ) loop
end loop

Привязываем к устройству номер порта

Если оставить все как есть, система при каждом новом подключении будет выделять первый свободный номер порта. А это значит что за ним придется всегда следить.
Для того, что бы этого не происходило, необходимо устройству присвоить уникальное значение серийного номера до подключения библиотеки usb:
Номер может быть любой длины и содержать различные символы.

Меняем имя устройства на свое

Поменять имя устройства, видимое в системе до установки драйверов можно объявив массив с именем, как и серийный номер, это необходимо сделать до подключения библиотеки USB.

Но увы, после установки драйверов устройство поменяет имя на указанное в .inf файле, потому поменяем имя и там

Организуем автоподключение устройства

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

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

Прошивка:
В прошивке необходимо объявить две переменные до подключения библиотеки USB

const word USB_SERIAL_PRODUCT_ID = 0xFF10
const word USB_SERIAL_VENDOR_ID = 0xFF10

Вместо FF10 можно вставить любые два слова (2 байта). Конечный результат содержится в прилагаемом архиве.

Драйвера:
Так как драйвера не предназначены для нашей комбинации VID и PID, допишем наши значения в .inf файл вручную:

[DeviceList]
%DESCRIPTION%=DriverInstall, USB\VID_FF10&PID_FF10

[DeviceList.NTamd64]
%DESCRIPTION%=DriverInstall, USB\VID_FF10&PID_FF10

Софт:
Для отлова событий подключения\отключения устройства подключим библиотеку ComponentUSB. Не считаю нужным пояснять каждую строчку: все изменения можно увидеть в прилагаемом проекте.

Результат

На скриншоте сложно разглядеть, но кнопка отправки активна только в момент наличия подключенного устройства, при этом каждые 50мс программа подает запрос на получение состояния кнопки (что, впрочем, неправильно, потому как нажатие кнопки должно обрабатываться на МК).

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

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

Источник

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