Самодельный беспроводной USB-адаптер для симулятора повышенной точности. Самодельный портативный mp3 плеер USB, microSD Процесс изготовления удлинителя

Расскажу о том, как я сделал свой беспроводной USB-адаптер повышенной точности для симулятора. USB-адаптер был опробован в Heli-X , FPVFreeRider и LiftOff и показал прекрасный результат, оправдал все мои ожидания!


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


Открываем файл Joystick.cpp внутри каталога...\Arduino\libraries\Joystick\src, находим строчку:

#define JOYSTICK_AXIS_MINIMUM -32767

и заменяем ее на:

#define JOYSTICK_AXIS_MINIMUM 0

Дело в том, что FPVFreeRider в Windows получает данные с джойстика в обход системы и никакая системная калибровка джойстика не нужна. Но тут есть маленький подвох. Симулятор FPVFreeRider понимает значения с осей джойстика в диапазоне от 0 до 32767, а системный джойстик может работать в диапазоне -32767 до 32767. Поэтому, если ваш джойстик может выдавать отрицательные значения, то у вас будут проблемы с его калибровкой в FPVFreeRider . Это касается только Windows, в других системах такой проблемы нет и ничего менять не надо.

Скачиваем код скетча , открываем его в среде Arduino и сразу же загружаем в USB-адаптер кнопкой "Загрузка". Все должно пройти без проблем и ошибок.


В общем, USB-адаптер уже может работать, но пока что не настроен. Надо определить максимальное, минимальное и центральное значения PPM-импульса, поступающего на вход адаптера с приемника или тренерского разъема. В передатчике все каналы должны быть выставлены +/-100% и убраны все триммеры в ноль. В Ubuntu значения можно получить, выполнив в консоли простую команду:

# cat /dev/ttyACM0

Для Windows придется установить бесплатную программу TeraTerm . Распаковываем и запускаем ttermpro.exe. Создаем новое соединение, выбираем виртуальный COM-порт, подтверждаем и видим на экране шесть колонок цифр. Это данные шести каналов, которые получает USB-адаптер со своего входа.


Шевелим стиками и смотрим на цифры. Надо определить и записать минимальное, максимальное и значение в центральном положении стика. Значения могут немного плыть на 1-4 единицы. Для минимального надо выбрать максимально минимальное. Для максимального минимально максимальное, для среднего - среднее. Например, у меня минимальное значение гуляет в диапазоне 2210-2214, значит беру 2214. Максимальное гуляет 3810-3812, беру 3810. Среднее гуляет 3011-3013, беру 3012.

Если все получилось, то в программе можно отключить вывод данных, поставив комментарий на следующую строку. Было:

#define SERIALOUT

// #define SERIALOUT

Подставляем полученные значения в переменные ниже.

#define MIN_PULSE_WIDTH 2214 // Minimal pulse
#define CENTER_PULSE_WIDTH 3012 // Middle pulse
#define MAX_PULSE_WIDTH 3810 // Maximal pulse

Если у вас Windows, то меняем значение переменной USB_STICK_MIN на ноль. Для других операционных систем оставляем как есть.

#define USB_STICK_MIN 0

Заливаем скетч в USB-адаптер и проверяем его работу. В Ubuntu это можно сделать в программе jstest-gtk. Если она не установлена, то ставим:

# sudo apt-get install jstest-gtk

В самой программе заходим в калибровку и сбрасываем значения кнопкой Raw Events.


Значения должны изменяться от -32767 до 32765. В около-нулевой зоне стика будет небольшой дребезг. Надо добиться того, чтобы эти значения гуляли как в положительную зону, так и в отрицательную. Придется подкорректировать переменные MIN_PULSE_WIDTH, CENTER_PULSE_WIDTH и MAX_PULSE_WIDTH несколько раз, чтобы добиться нужного результата. При этом не должно быть холостого хода стика в крайних положениях. Калибровку выполнять не надо, а еще лучше сохранить обнуленные значения командой:

# sudo jscal-store /dev/input/js0

В Windows проверку диапазона работы USB-адаптера можно выполнить с помощью программы Joystick Tester . Значения по осям должны изменяться от 32767 до 65535, а центр должен быть на значении 49150. Как я уже говорил, это сделано для того, чтобы FPVFreeRider смог нормально работать с USB-адаптером.


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

Переменная CENTER_PULSE_JITTER убирает дребезг в около-нулевой зоне стика. При нулевом значении фильтр не работает. Если не нравится наличие небольшого дребезга, то можно поставить значение от 5 до 10. Большие значения лучше не ставить, иначе потеряется чувствительность в около-нулевой зоне.

Переменная RC_CHANNELS_COUNT отвечает за количество входящих каналов. У меня с приемника идет восемь каналов, поэтому весь скетч сформирован именно под это число. Это можно изменить, но придется еще глубже залезать в дебри кода.

Следующая строка формирует собственно джойстик с заданными параметрами:

Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_JOYSTICK, 2, 0, true, true, true, true, true, true, false, false, false, false, false);

Третий параметр, там где стоит цифра 2, задает количество кнопок джойстика. Начиная с пятого параметра идет определение наличия осей. Шесть раз подряд true - это шесть осей USB-адаптера. Потом идет false - запрет оси. Всего можно задать 11 осей. Например, для USB-адаптера без кнопок и с четырьмя осями будет вот такая строка:

Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_JOYSTICK, 0, 0, true, true, true, true, false, false, false, false, false, false, false);

Переменная NEWFRAME_PULSE_WIDTH отвечает за определение паузы в микросекундах между PPM-пакетами. Лучше ее не изменять.

Следующий блок задает пороговые значения по осям:





Joystick.setRyAxisRange(USB_STICK_MIN, USB_STICK_MAX);
Joystick.setRzAxisRange(USB_STICK_MIN, USB_STICK_MAX);

Если осей меньше шести, то количество строк можно сократить. Для четырех осей будет так:

Joystick.setXAxisRange(USB_STICK_MIN, USB_STICK_MAX);
Joystick.setYAxisRange(USB_STICK_MIN, USB_STICK_MAX);
Joystick.setZAxisRange(USB_STICK_MIN, USB_STICK_MAX);
Joystick.setRxAxisRange(USB_STICK_MIN, USB_STICK_MAX);
В следующем блоке происходит преобразование полученных на входе значений в данные джойстика:





Joystick.setRyAxis(stickValue(rcValue));
Joystick.setRzAxis(stickValue(rcValue));
Joystick.setButton(0, rcValue > CENTER_PULSE_WIDTH);
Joystick.setButton(1, rcValue > CENTER_PULSE_WIDTH);

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

Joystick.setXAxis(stickValue(rcValue));
Joystick.setYAxis(stickValue(rcValue));
Joystick.setZAxis(stickValue(rcValue));
Joystick.setRxAxis(stickValue(rcValue));

Можно еще немного подчистить код, убирая лишние данные, но пусть это будет "домашним заданием" для желающих копнуть еще глубже:)

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

На следующем этапе попробую заставить работать USB-адаптер с приемником через шину S.BUS. Это должно еще больше поднять точность управления в симуляторе. Успешных тренировок!

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

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

Электретный микрофон → Усилитель 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. В стоимости не учтены программатор и рассыпуха.

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

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

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

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

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

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

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

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

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

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

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

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


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


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


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


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


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

Однако

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

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

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

Содержание:

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

Принцип работы и область применения USB удлинителей

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

Данную проблему успешно решает активный USB удлинитель, коренным образом отличающийся от обычного кабеля. Его полезные качества проявляются за счет активных усилителей, встроенных на каждом конце и получающих питание с разъемов USB в пределах 5 вольт. За счет этого полезный сигнал усиливается многократно, что дает возможность подключения устройств, удаленных от компьютера на расстояние 50 метров и более.

В процессе передачи сигнала наступает его неизбежное ослабление. В связи с этим для больших расстояний (свыше 5 метров) используется подключение лишь по протоколу USB 1.1. На расстоянии до 30 метров необходимо применение более скоростного протокола USB 2.0. Большое значение имеет кабель, соединяющий устройства между собой. Он должен быть высокого качества, гарантирующего такую же высокую скорость подключения.

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

Процесс изготовления удлинителя

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

Прежде всего нужно запастись стандартным USB кабелем небольшой длины. По возможности, в нем должен быть ферритовый сердечник, способный гасить высокочастотные помехи и указывающий на высокое качество кабеля. Такой отрезок можно попросить или недорого купить у людей, занимающихся кабельными линиями. У них же можно попросить и необходимое количество компьютерного кабеля UTP, желательно одной из высоких категорий, например, 5е, 6 или 6е. От этого будет зависеть скорость работы аппаратуры на противоположном конце.

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

Работы начинаются с разрезания кабелей на отрезки необходимой длины и зачистки концов. Изоляция со всех проводников снимается примерно на 3-5 мм. USB кабель содержит 4 проводника, UTP кабель - 8. В состав одной пары UTP кабеля, входит два проводка - цветной и пестрый. Вместо пестрого может быть белый провод. Каждая такая пара припаивается к отдельному проводку USB кабеля с соблюдением соответствующих цветов. По такой же схеме изготавливается USB удлинитель с дополнительным питанием своими руками, известный как активный удлинитель.

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

USB удлинитель из витой пары

Удлинители из витой пары применяются в основном для подключения интернета через 3G модем. Данные устройства используются на дачах и в загородных домах, при отсутствии возможности проведения обычного кабельного интернета. Нередко возникают ситуации, когда уверенный прием сигнала 3G возможен лишь из определенного места, к которому требуется подвести отдельный кабель. Нередко юсб удлинитель нужного размера отсутствует в продаже, поэтому единственным выходом остается его изготовление своими руками.

Для этой цели потребуется нужное количество витой пары, экранированной фольгой, два разъема USB АМ и AF, то есть «папа» и «мама», термоусадочная трубка 16 мм, а также изолента. Из инструментов понадобится нож, бокорезы, паяльник, припой и флюс.

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

Термоусадочная трубка заранее разрезается на части по 4 см каждая и надевается на витую пару. Это позволит в дальнейшем не делать отпаивание разъема. Правильность выполнения распайки следует проверять очень тщательно, поскольку случайная путаница может привести к выходу из строя USB устройства.

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

Практически вся современная аппаратура управления радиомоделями (как то Futaba, Hitec, Multiplex, FlySky и др.) имеет на своем борту разъем «TRAINER», с выходом РРМ сигнала (аналоговым принципом кодирования), который используется для подключения к компьютеру передатчика (пульта управления) в режиме обычного джойстика, благодаря чему можно виртуально тренироваться в управлении виртуальной моделью самолета, вертолета и др. не рискуя разбить настоящую модель. Для подключения пульта к компьютеру применяются специальные покупные кабели-адаптеры. (как этот)


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

Шаг 1. Что нам необходимо.

Материалы:

  • Микроконтроллер atmega8
  • Транзистор BC 547 (или КТ315, КТ3102)
  • Два стабилитрона на 3,3-3,6в. (например, 1N5226 , 1N5527, КС133)
  • Резисторы 68Ом.-2 шт., 2,2к., 4,7к., 10к., 200к., конденсатор 0,22
  • Керамический или кварцевый резонатор на 12мГц
  • USB удлинитель 1м. или больше (на запчасти), S-video кабель (на запчасти)

Инструменты:

  • Паяльные принадлежности, текстолит для платы.

Шаг 2. Изготовление штекера для разъема «TRAINER».

Для разъема TRAINER идеально подходит штекер от кабеля S-video, только его надо сперва правильно распаять.

На фото: Так выглядит стандартная распайка S-video кабеля.

На фото: А нам надо переделать его по следующей схеме ниже, этот вариант подходит для пультов от FlySky, для других производителей пультов распиновку кабеля надо смотреть-сверять дополнительно в интернет.

Для работы с симулятором нужен только 1pin — PPM сигнал и GND.

Берем кабель s-video и отрезаем нужный нам штекер.

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

Поэтому вынимаем все внутренности.


Вынимаем ножки (пины) и разъединяем их.


Берем заготовленный USB удлинитель, отрезаем разъем Тип «А» с 20 см. куском кабеля и откладываем пока в сторону для дальнейшего присоединения к плате.

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

Сразу надеваем оболочку на кабель.

Зачищенные провода облагораживаем кусочком термоусадки.

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


Собираем разъем, закрепляем все на термоклей и надеваем оболочку корпуса на место.



Для ремонта разрезанного корпуса, надеваем несколько трубок термоусадки и обжимаем нагревом.




Проверяем работоспособность полученного кабеля тестером, если цепь звонится, замыкания нет, значит кабель готов.

Теперь надо вставить штекер с кабелем в разъем TRAINER, включаем пульт (передатчик) и замеряем на выходе провода PPM сигнала наличие напряжения, оно должно быть около 3 вольт, если этого нет, надо проверить напряжение непосредственно на выходе самого пульта и настроить выход в меню.


Шаг 3. Изготовление платы адаптера.

Вот основная схема адаптера.

По принципиальной схеме проектируем монтажную плату.

У меня получилась вот такая небольшая плата, сделана она в программе Sprint-Layout.

Изготавливаем саму плату одним из доступных вас способом, ЛУТ, ЧПУ или др.


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

Шаг 4. Распайка платы.

Не спешите сразу покупать кварц на 12 мГц, у каждого дома есть ненужная usb компьютерная мышь, старая флешка или другой ненужный USB девайс, проверьте их внутри, наверняка там есть то, что Вам надо.

Мой кварц из этой мыши.




Впаиваем все детали на плату, припаиваем наш изготовленный кабель с s-video штекером и заготовленный 20 см. USB шнурок.



Покрываем плату лаком.

Шаг 5. Прошивка микроконтроллера.

Для прошивки через программу CodeVisionAVR выставляем фьюзы как на фото ниже, для PonyProg соответственно наоборот.

Прошиваем МК через программатор или просто через LPT порт по схеме ниже.


Настройка