Якісний USB кабель своїми руками. Саморобний портативний mp3 плеєр USB, microSD



У моєму розпорядженні були такі конектори: USB гніздо, призначене для встановлення в друковану плату та 80 сантиметровий шматок кабелю з USB вилкою на кінці.


Спочатку я спробував виготовити гнучкий подовжувач із 4-метрового аудіо-відео кабелю, але спроба не увінчалася успіхом. Коли я вставив флешку в цей кабель, ОС сказала, що пристрій працює неправильно.



Отже, було вирішено використовувати кручені пари, тим більше що я мав кілька шматків мережевого Ethernet-івського кабелю, що залишився з часів роздачі Інтернету через локальну мережу. Мережевий кабель виявився найнижчою якістю, тому що ніяких екранів не мали. У всіх шматках кабелю було по чотири кручені пари в пластиковій ізоляції. Судячи з кольору і жорсткості самих жил, вони були виготовлені з якогось мідного сплаву, схожого на латунь.

Для передачі сигналу та живлення у форматі USB2.0, на відстань до 5-ти метрів, цілком достатньо двох кручених пар. Виті пари, що залишилися, можна не використовувати.


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


Давайте розглянемо цей момент докладніше.

Наприклад, якщо споживаний USB пристроєм струм становить 400мА, а опір однієї пари 2 Ома (в обидва кінці), то опір USB пристрою дорівнює:


5 / 0,4 = 12,5 (Ом)


При цьому падіння напруги на кабелі становитиме:


5 * 2/ (12,5 + 2) ≈ 0,69 (Вольт)


Що, звичайно, забагато.


Але, якщо використовувати одразу три пари:


2 / 3 ≈ 0,67 (Вольт)

5 * 0,67/ (12,5 + 0,67) ≈ 0,25 (Вольт)


Те падіння напруги на кабелі знизиться і вже не буде таким критичним.

Про цоколівку (розпинання) USB виделок і гнізд

На малюнку показано цоколівку гнізда та вилки USB 2.0.


Для передачі даних (+Data і –Data) можна використовувати будь-яку з чотирьох кручених пар.


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


Як закріпити гніздо USB на жорсткому мережевому кабелі

Складання мого кабелю дещо ускладнилося через те, що в моєму розпорядженні виявилося не кабельне USB гніздо, а гніздо для друкованих плат.


Довелося спочатку ізолювати контакти від задньої стінки корпусу.


А потім від нижньої стінки корпусу (на фото показано зверху).

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


Спочатку за допомогою швейних ниток кріпимо до кабелю відрізок поліхлорвінілової трубки (кембрика). Кінець нитки можна закріпити розплавленою каніфоллю. На кембрику та ізоляції кабелю робимо по два поздовжні розрізи.


Повинно вийти приблизно так. «Пелюстки», що утворилися, повинні бути розташовані у вигляді хреста.


Потім можна припаяти кінці кручених пар до відповідних висновків.


Кріпимо «пелюстки» до корпусу гнізда швейними нитками. Кінець нитки закріплюємо каніфоллю.

Тепер можна облагородити гніздо, надівши термозбіжну трубку або покривши поліетиленом (з пістолета).

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


Спочатку я намотав на край кабелю мідний провід діаметром 1,3мм. Потім припаяли кінці цього дроту до бокових стінок гнізда USB.


Для надання додаткової жорсткості конструкції покрив місце з'єднання кабелю з гніздом USB низькотемпературним термоклеєм.



Для надання більш благообразної форми і поліпшення зовнішнього вигляду роз'єму, покрив його термозбіжною трубкою. У

Увага! Під час усадки трубки термоклей може просочитися через щілини у внутрішню частину гнізда. Щоб запобігти цьому, можна вставити прокладку між трубкою та корпусом гнізда або вилку у гніздо. Тоді не доведеться виколупувати термоклей із гнізда.

Розповім про те, як я зробив свій бездротовий 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. Тому якщо ваш джойстик може видавати негативні значення, то у вас будуть проблеми з його калібруванням в FPVF. Це стосується лише 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 це можна зробити у програмі stest-gtk. Якщо її не встановлено, то ставимо:

# sudo apt-get install stest-gtk

У самій програмі заходимо в калібрування та скидаємо значення кнопкою Raw Events.


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

# sudo jscal-store /dev/input/js0

У Windows можна перевірити діапазон роботи USB-адаптера за допомогою програми Joystick Tester . Значення по осях повинні змінюватися від 32 767 до 65 535, а центр повинен бути на значенні 49 150. Як я вже говорив, це зроблено для того, щоб 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. Це має ще більше підняти точність керування у симуляторі. Успішних тренувань!


Хороший кабель, з хорошим, міцним штекером для заряджання телефону, підібрати в магазині вкрай не просто. Найчастіше заявлена ​​на упаковці якість товару не відповідає дійсності. Якщо сам штекер micro usb, який підключається до роз'єму Вашого телефону, або іншого гаджета, виконаний з неякісної сталі, він дуже скоро розбовтається, або погнеться, і буде нещільно сидіти в роз'ємі, викликаючи цим збої при зарядці акумулятора. Або перестане передавати та приймати файли з інших пристроїв, наприклад, з комп'ютера або флеш-накопичувача. І дуже неприємно, коли наявний у Вас кабель з хорошим штекером раптом перестав працювати через розрив жив кабелю, біля цього самого штекера. Це відбувається від постійних перегинів кабелю під час використання. Коли це станеться – питання часу. Залежно від інтенсивності використання. Можна піти і купити новий, а можна відремонтувати старий – це справа кожного індивідуальна. Особисто мені, більше до вподоби другий варіант. Не стільки через суєту вибору та ходіння по салонах зв'язку, скільки заради власного інтересу. Та й витрачатися, знову ж таки, не доведеться... Загалом, нещодавно мені принесла такий несправний кабель дочка. Вже не знаю, що вона з ним робила, але пошкоджений він опинився біля підстав відразу обох штекерів - usb, і micro usb.


Взявся я за цю справу, ще й тому, що цей кабель був "рідним" від її телефону, який йшов у комплекті з телефоном, зарядкою та навушниками. Користуватися іншим вона категорично відмовилася через страх зіпсувати телефон. І купувати оригінальний кабель також не захотіла. Довелося віддати їй свій (благо, у нас телефони однакові), а собі ремонтувати зламаний. Робота зайняла у мене близько години.

Знадобиться

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

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

Для початку, не церемонячись, відрізаємо пошкоджений штекер від кабелю. У моєму випадку обидва штекери.


Далі за допомогою канцелярського ножа розрізаємо штекер по шву. У мене корпуси штекерів були спаяні по шву, тому мені довелося повозитися. Але бувають штекери з розбірним корпусом - тут кому як пощастить. Проте, провівши кілька разів новим лезом канцелярського ножа швами корпусу, я відокремив його досить легко і швидко. Знявши корпус, розбираємо штекер на складові.



Тут треба бути уважним. У плані контактів штекера: до якого з них припаяний якийсь провід. Щоб не заплутатися, можна помічати контакти різнокольоровими маркерами, колір проводів. Мені це ні до чого, я давно знаю розкладку usb напам'ять... Ось про всяк випадок:


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


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


Переконавшись, що все знаходиться на своїх місцях, нічого й ніде не стирчить, приклеюємо секундним клеєм пластмасовий корпус до штекеру. Уважно стежимо, щоб клей не потрапив на контакти штекера.


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



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


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


Далі збираємо штекер докупи, як і попередній.


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


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

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

Коротко описати роботу пристрою можна так:

Електретний мікрофон → Підсилювач 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 тип A male)
$0.50 - стабілізатор NCP3335A на 3.3V

Разом: $ 7.01 (~ 420 руб) на один девайс.

Ціни можуть відрізнятися у зв'язку з останніми подіями Ali. У вартості не враховано програматора та розсипуху.

Дякую за увагу!

Запитання та пропозиції пишіть у коментарі. Також допускається контакт або телеграм, нік скрізь один.

Практично вся сучасна апаратура управління радіомоделями (як 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 за схемою нижче.