Как сделать длинный USB удлинитель из сетевого кабеля? Чиним USB-шнур на коленке Что такое OTG.

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

Коротко описать работу устройства можно так:

Электретный микрофон → Усилитель Max9812 → Микроконтроллер STM32F103 → Программное детектирование наличия звука → Кодирование звука в Speex → Отправка через ESP8266 на сервер → Скрипт PHP приема данных и оформления в звуковой контейнер Ogg. Кому интересно, прошу под кат.

Зачем все это надо?

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

Возможно кто-то увидит другое применение такой поделке, но уверяю Вас, устройство не создается с целью негласного получения информации (ст.138.1 УК РФ) и любая такая попытка будет преследоваться по закону .

Попрошу сразу не критиковать саму идею, работа со звуком и Wi-Fi мне нужна в другом проекте, над которым я пока только думаю. А это - отдельный кусок, реализованный в самостоятельный девайс.

Корпус

По принципу “Design first” начал думать в каком конструктиве делать устройство. В поисках готовых корпусов на Ali наткнулся на корпуса для usb с отверстием под кабель и подумал про себя, что это идеальный вариант - дырку займет микрофон, а остальное как-нибудь впихнем.

Только вот заказывать 10шт за $5 я не хотел и начал искать варианты. В итоге заказал переходник USB-RS485 в точно таком корпусе за $0.84. А сам переходник пригодится на работе, а то Bolid’ы, стоимостью 1.5 тыс рублей, уходят как расходный материал.

Закупаем все необходимое

Во-первых, при ознакомлении с предметной областью предстоящей поделки, я наткнулся на статью Распознавание речи на STM32F4-Discovery . Там и прочитал про кодек Speex и его применение на микроконтроллерах. Признаюсь, это мой первый опыт работы с микроконтроллерами фирмы STM.

Итак, заказываем самую распространенную отладку с микроконтроллером STM32F103C8T6, к ней отладчик St-link v2, допиливаем его на коленке и уже можно жить. По приблизительным подсчетам ресурсов STM32F103C8T6 должно было хватить, но speex весьма прожорлив, да и сами драйвера HAL не такие уж компактные, в общем памяти для всех библиотек оказалось маловато. В конечном девайсе стоит STM32F103CBT6 с удвоенным количеством flash.

Во-вторых, нужен микрофон. Первой строчкой в поиске берем микрофонный модуль с усилителем max9812, а в довесок горстку более миниатюрных микрофонов типоразмера 6050 (ведь у нас уже есть корпус с отверстием, куда должен пролезть данный микрофон).

В-третьих, нужно подобрать модуль wi-fi, да такой, чтоб влез в купленный корпус. Выбор был сделан на миниатюрный ESP-03 с керамической антенной и несколько штук ESP-12 для макетирования.

Макетирование и программирование

В STM32CubeMX быстренько собираем необходимую периферию и идем дальше, в процессе работы все равно придется часто возвращаться к Кубу. Тут главное писать код в специально отведенных местах /* USER CODE */ и тогда новая генерация проекта никак не скажется на уже написанном.

Семплирование АЦП идет через DMA по триггеру таймера на частоте 8кГц в два кольцевых буфера размером 160 семплов, один буфер получается равен 20мс. Столкнулся с таким моментом, который не знал и потерял на этом время: DMA продолжает работать на брейкпоинте отладчика, при этом оба флага HT (половина передачи) и TC (передача закончена) установлены, а буферы заполнены всегда полностью.

С библиотекой Speex разобрался не сразу, контроллер постоянно вылетал в HardFault. Оказалось просто не хватало размеров стека и кучи. Нашел Application Note от Silicon Labs с описание необходимых ресурсов для кодирования/декодирования, в конце статьи есть ссылка. Установил значения с небольшим запасом CSTACK 0x800 и HEAP 0x1600. На выходе кодирования получаем размер фрейма 20 байт. Собираем их в пакеты для отправки.

Модуль Esp8266 за раз может принять не более 2048 байт данных. Формат команды отправки: POST-заголовок + данные. Размер пакета данных я ограничил до 1800 байт (90 фреймов по 20мс).

Прием данных сделал на PHP. Мне было стыдновато выкладывать код, тем более это мой первый опыт ООП в жизни. Прошу не хейтить, это не моя область, лучше научите как правильно. Суть скрипта в том, чтобы забрать данные из php://input, сформировать заголовок, посчитать необходимые контрольные суммы и сохранить все в файл Ogg (либо дописать старый, либо создать новый). Но у меня есть жуткое предчуствие, что принимать аудио через POST запросы очень глупо…

Вопрос к сообществу: что посоветуете для серверной части? В перспективе хочется получать стрим аудио в реальном времени. У меня лично есть небольшое желание познакомиться с Node.js.

Принципиальная схема и разводка печатной платы

Схему и разводку нарисовал в бесплатной версии Eagle CAD, благо размер платы небольшой. Вот они. Без комментариев.

Заказ плат

Платы заказал в американском OSH Park . Чем примечателен данный сервис, так это тем, что цена формируется от размера платы ($5 за квадратный дюйм), а доставка бесплатная. Ко всему прочему на сайт можно грузить сам файл.brd из Орла и есть предпросмотр, не надо перегонять в Gerber.

Получилось 3 платы за $3.35. Для макетного образца это выгоднее, чем переплачивать китайцам $15 за ненужные 10шт. До сих пор дома валяются горы ненужных плат от других проектов. Да к тому же пришло все это в фирменном пакете с конфетками внутри. Мелочь, а приятно. Трек номера не было, дошло за 40 дней с момента заказа. В производстве были 10 дней (с 29 декабря по 9 января, возможно праздники как-то сказались на сроках).

Качеством плат я остался доволен. Дорожки 8 mil. Переходные 13 mil. Платы пришли с золочением, слой маски относительно площадок везде ровный.

Сборка и настройка

Пока не понял в чем дело, но модуль Esp-03 практически не ловит сигнал, что странно в условиях наличия керамической антенны и расстояния до телефона (который на работе выступает в качестве раздающего wi-fi) в пределах полуметра, при этом модуль ощутимо греется. При поднесении телефона вплотную начинает обнаруживать сеть и подключается к ней. Заказывать новый или в чем может быть дело?

Дальнейшие планы

1. Доработать алгоритм VAD (Voice Activity Detection, запись при обнаружении звука) до более адекватного.
2. Проверить возможность воспроизведения звука на телефоне.
3. Сделать возможность настройки удаленно. Сейчас это реализовано путем ответа сервера (Settings=40,2000,10,), где задается чувствительность нынешнего алгоритма VAD (сигнал должен 40 раз превысить 2000 бубок) и длительность записи в секундах.

Итоговый вариант

Калькуляция
$2.03 - модуль ESP-03
$2.13 - микроконтроллер STM32F103CBT6
$0.39 - микрофоны типоразмера 6050
$1.12 - микрофонный модуль с MAX9812 и обвязкой
$0.84 - преобразователь USB-RS485 (корпус + usb type A male)
$0.50 - стабилизатор NCP3335A на 3.3V

Итого: $7.01 (~420 руб) на один девайс.

Цены могут отличаться в связи с последними событиями на Ali. В стоимости не учтены программатор и рассыпуха.

Спасибо за внимание!

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


Хороший кабель, с хорошим, прочным штекером для зарядки телефона подобрать в магазине крайне не просто. Зачастую, заявленное на упаковке качество товара не соответствует действительности. Если сам штекер micro usb, который подключается к разъёму Вашего телефона, или другого гаджета, выполнен из некачественной стали, он очень скоро разболтается, или погнётся, и будет неплотно сидеть в разъёме, вызвав тем самым сбои при зарядке аккумулятора. Или же перестанет передавать и принимать файлы с других устройств, например, с компьютера или флэш-накопителя. И очень неприятно, когда имеющийся у Вас кабель с хорошим штекером вдруг перестал работать по причине разрыва жил кабеля, возле этого самого штекера. Это случается от постоянных перегибов кабеля при использовании. Когда это произойдёт – вопрос времени. В зависимости от интенсивности использования. Можно пойти, и купить новый, а можно отремонтировать старый – это дело каждого индивидуальное. Лично мне, более по душе второй вариант. Не столько из-за суеты выбора и хождениям по салонам связи, сколько ради собственного интереса. Да и тратиться, опять же, не придётся... В общем, недавно мне принесла такой неисправный кабель дочь. Уж не знаю, что она с ним делала, но повреждён он оказался у оснований сразу обоих штекеров – usb, и micro usb.


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

Понадобится

  • Паяльник, олово и флюс.
  • Ножницы.
  • Нож канцелярский.
  • Секундный клей.
  • Термоусадочная трубка (желательно под цвет кабеля).
  • Зажигалка.
  • Маленькие кусачки.

Ремонт кабеля

Для начала, не церемонясь, отрезаем повреждённый штекер от кабеля. В моём случае оба штекера.


Далее, при помощи канцелярского ножа, разрезаем штекер по шву. У меня корпусы штекеров были спаянные по шву, по этому, мне пришлось повозиться. Но бывают штекеры с разборным корпусом – тут кому как повезёт. Тем не менее, проведя несколько раз новым лезвием канцелярского ножа по швам корпуса, я отделил его довольно легко и быстро. Сняв корпус, разбираем штекер на составляющие части.



Тут надо быть внимательным. В плане контактов штекера: к какому из них припаян какой провод. Чтобы не запутаться, можно помечать контакты разноцветными маркерами, в цвет проводов. Мне это ни к чему, я давно знаю раскладку usb наизусть... Вот на всякий случай:


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


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


Убедившись, что всё находится на своих местах, ничего и нигде не торчит, приклеиваем секундным клеем пластмассовый корпус к штекеру. Внимательно следим, чтобы клей не попал на контакты штекера.


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



Теперь второй штекер – micro usb. Продеваем заранее термотрубку на кабель, чтобы потом не забыть. Разбираем штекер. Так же, как и предыдущий: при помощи канцелярского ножа.


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


Далее собираем штекер воедино, как и предыдущий.


Надеваем на нарушенную оплётку кабеля термотрубку, которую мы заранее продели на кабель. Усаживаем трубку.


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

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

Что такое OTG?

Существует ли способ обходиться без компьютера? Запросто, на рынке уже давно появилось множество переходников под общим названием OTG-кабель. Стоимость их варьируется от нескольких долларов до десятка или даже двух. Однако их отличие от простых кабелей данных настолько незначительное, что можно легко сделать ОТГ-кабель своими руками. Например, из остатков старых и переходников.

Итак, для начала нужно решить, для чего нам нужен кабель OTG. Питание другого устройства за счёт аккумулятора может понадобиться при отсутствии электросетей рядом, например в поездках или туристических походах, но такой вариант не самый эффективный. Нужно сразу определиться, будем ли мы соединять два конкретных устройства постоянно между собой или лучше сделать универсальный ОТГ-кабель своими руками для использования любых USB-устройств, по типу магазинного. Также лучше сразу проверить, способен ли ваш девайс поддерживать такие соединения.

Инструменты и техника безопасности

В работе с кабелями потребуются:

    нож для зачистки от изоляции;

    кусачки или бокорезы (помните поговорку: "7 раз отмерь — 1 отрежь"), лишняя спайка на кабеле ухудшит качество связи между устройствами и повысит сопротивление в целом, что скажется на потере данных или невозможности зарядки из-за сопротивления проводника;

    паяльник, припой и флюс; в конце статьи мы рассмотрим, как можно обойтись без этого прибора.

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

Что к чему?

Для начала стоит разобрать, какие контакты в штекерах и розетках для чего нужны, так как в мини- и микро-вариантах на 1 пин больше, нежели в разъёмах универсальной последовательной шины. Итак, первый пин стандартно маркируется красной изоляцией внутри провода, предназначен для подачи напряжения. Второй и третий пины, маркированные белой и зелёной изоляцией, предназначены для передачи данных. Четвёртый чёрный пин — это ноль или заземление, работающее в паре с первым подающим проводом. В мини- и микро-USB такие функции отведены пятому, последнему пину, а четвёртый является маркировочным или идентификатором. Он предназначен для подачи информации о соединении на устройство и в кабелях данных вообще никуда не подключен.

Простейший вариант

В первую очередь рассмотрим вариант соединения между собой двух конкретных устройств, например планшетного компьютера и фотоаппарата. Поскольку оба они имеют гнёзда с 5 контактами, будь то микро- или мини-USB, нужно просто аккуратно спаять соответствующие провода между собой. Подойдут 2 ненужных кабеля данных с подходящими штекерами. Нужно разрезать их и зачистить провода от изоляции, после чего соединить согласно цветовой дифференциации, то есть чёрный с чёрным, жёлтый с жёлтым и так далее. Каждое соединение нужно изолировать от других с помощью термоклея или хотя бы изоленты. При подключении такого кабеля к устройствам на экранах высветится диалоговое меню, где нужно будет выбрать, какое из устройств будет главным в этой мини-сети. Можно принудительно в самом кабеле обозначить главное и второстепенное устройство. Для этого в штекере главного устройства нужно соединить 4-й и 5-й контакты, а в другом штекере 4-й контакт просто не соединять ни с каким. Таким образом, устройство автоматически определит себя главным в соединении, так как маркерный контакт покажет наличие соединения, тогда как на втором устройстве он будет «пустым».

Для разнообразных устройств

Рассмотрим вариант, как изготовить универсальный ОТГ-кабель своими руками. Кроме штекера микро- или мини-USB, в зависимости от устройства, нам понадобится USB-разъём. Взять его можно из старых материнских плат, отрезать от USB-удлинителя или разобрать USB-разветвитель (так называемый ЮСБ-хаб). Последний вариант предпочтительнее, так как позволит подключать к главному устройству сразу несколько периферийных, как к компьютеру. Последовательность подключения такая же, как и выше, на штекере устройства аналогичным образом принудительно указывается главное устройство, соединяя 4-й и 5-й пины. На рисунках наглядно видна схема подключения пинов в разъёмах и штекерах.

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

Некоторые устройства отличаются повышенным энергопотреблением, что приводит к быстрой разрядке аккумулятора основного гаджета, будь то смартфон или планшет. На этот случай ОТГ-кабель своими руками можно усовершенствовать, добавив питающий кабель с USB-штекером для сетевого адаптера. Для этого можно использовать остатки кабеля данных, от которого был ранее отрезан микро- или мини-USB-штекер. Соединение производят по двум токоведущим контактам, черному и красному, игнорируя провода для передачи данных. Нужно помнить, что на больших расстояниях сопротивление провода, усиленное паяными соединениями, будет снижать напряжение и силу тока, поэтому использование длинных отрезков кабелей, скорее всего, не позволит достичь стабильного соединения устройств. Используйте примерно по 20-30 см кабеля для каждого штекера и разъёма, чтобы избежать обрывов и перебоев соединения.

Напоследок хочется упомянуть, как собрать ОТГ-кабель своими руками без паяльника. Принцип сборки тот же, что и описан выше, однако соединения проводов производятся несколько другими способами. Укажем здесь два из них:

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

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

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

В связи с учебой за границей, пришлось пересесть полностью на ноутбук. С собой взял свою геймерскую мышку SS Kana. Само собой, проводная мышь не рассчитана на частые перемещения, со временем шнур стал заламываться у самого основания, все чаще контакт стал пропадать. В течение последних трех месяцев я старался поддерживать работоспособность мышки, даже перестал брать её на занятия, но наступил день П, и контакт пропал окончательно; никакие манипуляции уже не давали результата.
Мои Жадность за дорогую мышку и Лень идти покупать новую сплотились против меня и заставили чинить контакт. Сразу оговорюсь, что данную статью пишу пост-фактум, пошагово я ничего не записывал, но я покажу на примере, как это делается. Качество фотографий оставляет желать лучшего, но суть уловить можно.

Оборудование

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

Первоначальный вариант

Как я уже сказал, кабель переломился у самого основания. Чтобы хоть немного получить места, я обстрогал ножом штекер и зачистил все четыре провода. Оплетку кабеля скрутил и отвернул в сторону, после чего отправился в универ за паяльником. Мне дали старенький паяльник, катушку с миллиметровым припоем и баночку с флюсом. Опыт пайки у меня есть, поэтому получилось нормально. Единственный недостаток - так как все четыре провода очень короткие, расположены на одном уровне, а изоляции у меня не было, получилась своеобразная «розочка» из проводов, торчащих в разные стороны. Однако, пробный запуск оказался удачным - мышка ожила, и я, гордый собой, вернулся в общежитие.
Но там меня ждало разочарование. Не вдаваясь в подробности, у меня, скорее всего, коротнули черный и красный провода и ноут заблокировал USB-гнездо. Поэтому что бы я дальше не делал, мышка не реагировала.
Я, пытаясь разобраться, стал грешить на оплетку (что она коротит провода), даже отрезал её, он ничего не помогло. В итоге, я полностью отрезал вилку и решил сделать все по-новой. Стоило бы перезагрузить компьютер и попробовать снова, скорее всего, мышь бы заработала. Кто знает...

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

Соединение кабелей

Уже под вечер я достал мышь из ящика стола и принялся за дело. Первым делом, я взял новую вилку от ненужного mini-USB кабеля.

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

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


Расплетаем оплётку и отводим в сторону.


Затем оголяем 4 провода «лесенкой» - красный только самый кончик, чтобы скрутить; белый чуть подлиннее, с расчетом, чтобы не задевать красный; затем зеленый. Черный зачищаем дальше всех. Другой кабель оголяем точно так же, только зеркально - черный только кончик, затем зеленый, белый и красный у самого основания. Таким образом, мы исключаем замыкание проводов между собой.


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


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


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

Однако

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

Спасибо за внимание. Надеюсь, эта статья Вам помогла.

P.S. это моя первая статья на Хабре. Спасибо за инвайт!

Вверх