З FinTech у DefTech: як український розробник у США перейшов від банкінгу до дронів для фронту

💡 Усі статті, обговорення, новини про оборонні технології — в одному місці. Приєднуйтесь до Defence tech спільноти!

Війна застала мене в Києві, і я виявився до неї абсолютно не готовий. Перед вибором «бий або тікай» я обрав друге — і через шість місяців після початку вторгнення опинився в Лос-Анджелесі.

Маючи 15 років досвіду в комерційній розробці ПЗ, останні шість із яких я працював CTO у німецькому стартапі, я досить швидко знайшов роботу в американській фінтех-компанії. Здавалося б, життя налагодилося, але я усвідомив, що війну забрав із собою — вона не виходила з моїх думок. Інтегрувати платіжні системи та перейматися питаннями монополізації ринку було нелегко, коли розумом і серцем ти знаходишся зовсім в іншому місці.

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

Головною проблемою було те, що я не знав, як допомогти Україні, не опинившись в окопі. Фінансова підтримка сім’ї, ЗСУ та волонтерів здавалася недостатньою.

Все змінило інтерв’ю Ярослава Ажнюка з Марією Берлінською. Воно було зваженим, реалістичним, але не безнадійним — навпаки, воно давало розуміння, що війна може бути виграна через правильні дії.

Головна думка: війну можна виграти технологіями, зокрема роботами та дронами. MiliTech — це не просто тренд, а наше сьогодення і майбутнє.

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

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

Мета мого проєкту — створення дрона з комплектуючих та розробка програмного забезпечення для розпізнавання зображень із камери дрона й переслідування виявленого об’єкта. Цей досвід безперечно буде корисним для подальшого занурення в тему та розв’язання актуальних проблем застосування бойових дронів.

Роблячи цей проєкт, я багато чого навчився, дізнався та зробив чимало помилок новачка. Тепер я хочу поділитися своїм досвідом у форматі блогу. Я не відкрию нічого нового з технічної точки зору — про всі ці речі вже багато написано. Але є мій особистий шлях, виклики, з якими я зіткнувся, і рішення, які я знаходив. Сподіваюсь, ця історія зацікавить і надихне спробувати створити робота власноруч.

Ця історія складатиметься з двох частин. У першій я розповім про збірку дрона: які комплектуючі використовував, як налаштовував його для польоту. У другій — про його автономність і розпізнавання зображень на бортовому комп’ютері.

Частина перша : Збірка дрона

Бути українцем і збирати дрон — одне задоволення! В інтернеті є безліч відео, інструкцій і форумів з усією необхідною інформацією українською мовою.

Для свого дрона я використовував інструкцію від Social Drone UA. Нещодавно вийшла оновлена версія відео, яка детальніше пояснює нюанси збирання. Однак я збирав за торішнім відео, тому деякі моменти довелося освоювати методом спроб і помилок.

Варто зазначити, що до цього я ніколи не тримав у руках паяльник, не розумівся на мікроелектроніці, прошивках та радіозв’язку. Я не писав софт для пристроїв, не вмів керувати дроном.Моїми найбільшими інженерними досягненнями були збирання LEGO і підключення фільтра для води до крана.

Вершина моїх інженерних досягнень

Я замовив на AliExpress 7-дюймову раму, мотори, пропелери, політний стек, камеру, приймач і передавач. На мій подив, все прибуло з Китаю всього за тиждень. Паяльник і набір викруток замовив на Amazon.

Настав час паяти силовий кабель до ESC, і тут почалися перші проблеми.

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

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

Я не розумів, у чому проблема. Я щось роблю не так? Паяльник поганий? А може, винен припій, який приїхав у комплекті з паяльником?

Відповіді у мене не було, але стало ясно: так справа не піде.

Результати паяння ESC дешевим паяльником і дешевим припоєм

Після двох вечорів відчайдушних спроб припаяти дріт я, нарешті, здався і вирішив замінити паяльник, припій і флюс. І це було найкращим рішенням за всю мою пайку! Якісні матеріали — запорука успіху (і збережених нервів).

До речі, відмінне фото-керівництво з паяння зробили хлопці з Victory Drones (www.victory-drones.com/fpv-materials.

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

Варіантів було небагато: сподіватися що плата працює та надалі намагатися видаляти старий припій... або просто замовити нову плату на AliExpress і знову чекати. Я вибрав останнє.

Тут варто зробити невеличкий відступ. Серцем дрона є так званий політний стек, що складається з двох мікросхем: польотного контролера (FC) та контролера управління обертами моторів (ESC).

Польотний стек. Зліва — ESC, справа — FC

ESC відповідає за подачу напруги на мотори, регулюючи швидкість обертання пропелерів для кожного з них окремо. На платі розташовані контакти для підключення силового кабелю до батареї (плюс і мінус), а також по три контакти для кожного з чотирьох моторів квадрокоптера — всього 12 з’єднань.

Схема підключення моторів і силового кабелю до ESC

FC — це мозок дрона. На ньому розташовані процесор, барометр, гіроскоп, а також роз’єми для підключення FPV-камери, приймача, передавача, сигнальних світлодіодів, SD-карти, модуля GPS та USB-C для зв’язку з комп’ютером.

FC приймає керуючі сигнали від оператора, передає телеметрію та віддає команди ESC для управління дроном. Контролер управління обертами моторів (ESC) з’єднується з польотним контролером (FC) через конектор BGAQ.

Схема роз’ємів і елементів FC

Нарешті очікування підійшло до кінця — через тиждень довгоочікуваний ESC прибув!

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

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

9 днів очікування, і я знову в грі!

Цього разу все пішло гладко! За кілька годин я припаяв те, над чим бився безрезультатно кілька днів. Силовий кабель і дроти моторів були припаяні на свої законні місця, а сам ESC з’єднаний з польотним контролером — нарешті можна підключити все до комп’ютера через USB-C і протестувати мотори!

Я вставляю кабель у дрон, і він радісно вітає мене різнокольоровими світлодіодами та звуками. Чудово! Але... як запустити мотори?

Ага, потрібна спеціальна програма, у якій можна налаштувати всі датчики, мотори, перевірити прийом і передачу сигналів — Betaflight Configurator. Встановлюю, підключаюсь, заходжу в меню управління моторами, роблю тест... і нічого. Жоден мотор не реагує.

Може, я щось не так припаяв? Або спалив плату, випадково викликавши коротке замикання краплею припою?

Ні, все простіше — мотори не працюють без батареї. І про це у відео Social Drone не було жодного слова, а я був впевнений, що вони можуть працювати в тестовому режимі через USB.

Ну нічого, тепер у мене є місцевий дилер, який доставляє комплектуючі за один день! Де там мій літій-іон на 3000 мАг?

А його немає.

Але є LiPo. Виявляється, для FPV-дронів використовують літій-полімерні (LiPo) батареї, бо вони забезпечують високу віддачу струму — швидко та у великих обсягах передають енергію дрону. Їхні недоліки — менший ресурс зарядок-розрядок і менший обсяг електроліту порівняно з літій-іонними акумуляторами.

Окей, час замовляти!

Через день я вже тримаю в руках новий акумулятор. Момент істини: підключаю його, з’єдную з комп’ютером через USB, запускаю Betaflight, роблю тест моторів... працює!!! Це неймовірно приємне відчуття — коли шматок металу починає оживати прямо у тебе на очах!

Ну що ж, можна рухатися далі. Ще година — і камера, передавач та приймач уже припаяні до польотного контролера. Закріплюю дроти й деталі пластиковими стяжками, встановлюю антену передавача — і готово!

Зібраний дрон з аналоговою камерою та аналоговим передавачем

Я зібрав його! Настав момент польоту! Хм, а як ним керувати? Мені ж потрібен пульт! Гуглю, дивлюся форуми, консультуюся — RadioMaster TX12 Mark II вже їде до мене з Amazon. Через кілька днів посилка прибула. Відкриваю — ось він, мій пульт! Час літати!

Вмикаю батарею дрона, радісний писк і світлодіоди вітають мене, натискаю велику клавішу «увімкнути» по центру пульта і... нічого. Він не вмикається. Мабуть, треба вставити батарею. Окей, знаходжу кришку знизу, відкриваю — батареї немає. Дивно, що я не помітив її одразу. Дивлюся ще раз — але батареї ніде немає. Так, що там кажуть на Amazon? — «Увага! Пульт постачається без батареї!» Добре, які батареї треба докупити? Дві батареї 18650 Li-ion. Доставка через 3 дні? Ну добре, замовив.

У цей момент дрон видає досі нечуваний звук і завзято блимає діодом, який повідомляє, що батарея от-от сяде!

Роз’єм TX-60.

Зліва — батя, який я припаяв до ESC, справа — мама, що виступає з батареї.

Батарея для дрона використовує специфічний коннектор TX-60, і просто так зарядити його від USB не вийде — потрібен спеціальний живлення. Я трохи пошукав на AliExpress, почитав описи і знайшов його — виглядає солідно, з великою чорною коробкою адаптера. Це саме те, що мені потрібно!

«Зарядка» для батареї з роз’ємом TX-60

Через кілька днів я отримав батареї для пульта, і він нарешті запрацював. Ну що, тепер треба якось підключити його до приймача сигналу на дроні. Виявляється, для цього можна використовувати протокол Express LRS, і як удачно, що і пульт, і приймач його підтримують! Це буде легко! Включаю дрон через USB, натискаю на крихітну кнопку на приймачі, щоб перевести його в режим «прив’язки» — є 3 мигання світлодіода в секунду. Приймач готовий.

Тепер пульт. Налаштування, Express LRS, «прив’язати» — і знову нічого. Так, мабуть, проблема в прошивці! Встановлюю програму для прошивки пристроїв Express LRS — Express LRS Configurator.

Ще кілька годин намагань налаштування точок доступу WiFi на приймачі і пульті для оновлення прошивки, і успіх!

Версія 3.5.3 встановлена на обох пристроях. Спробую знову зв’язати пристрої — не працює! Що не так?! Цікаво, пульт і приймач точно працюють на одній частоті?

Пульт працює на 2.4 ГГц, а приймач... на 915 МГц?!

Ну, слава Богу, хоча б розібрався. Замовляю приймач на 2.4 ГГц за 15 баксів у надійного місцевого дилера, і доставка ще 7 баксів, щоб прийшов на наступний день!

Тим часом приїхала зарядка для батареї — дуже добре! Батарея вже повністю сіла! Вставляю зарядку в розетку однією стороною, іншою в батарею... не з’єднується! Коннектори однакові — мама на батареї і мама на проводі зарядки! Як так?!

Заходжу на AliExpress, а це я купив тільки провод для зарядної станції! Тепер потрібно ще купити саму станцію!

Роз’єм батареї та роз’єм «зарядки»

Зарядна станція з кабелем живлення заряджає батарею.

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

Для подібних задач в безпілотних системах використовується комп’ютер-компаньйон. Це додатковий комп’ютер, у моєму випадку Raspberry Pi Zero 2 W, який підключається до польотного контролера, отримує дані з цифрової камери, обробляє зображення на своєму процесорі і передає управляючі команди на FC. Обробляти зображення самостійно у польотного контролера не вистачить потужності.

Одразу ж з’ясувалося кілька проблем. По-перше, FPV-камера і передавач у мене виявилися аналоговими, а це значить, що не підходять для цифрової обробки зображень. І по-друге, стандартна прошивка польотного контролера Betaflight не підтримує автопілот, і її потрібно замінити на більш підходящу прошивку для цих цілей — ArduPilot.

Замовляю Raspberry Pi Zero 2 W і камеру для нього. Забігаючи наперед, скажу, що стандартний шлейф, з яким йде камера, не підходить до Raspberry Pi Zero 2, тому я окремо замовив адаптер.

Raspberry Pi Camera.

Зліва — перехідник, що дозволяє підключити камеру до Raspberry Pi Zero 2 W, справа — стандартний шлейф.

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

Це, мабуть, єдине з процесу зборки та налаштування дрона, що вийшло у мене відносно швидко. Потрібно було скачати файл прошивки, перевести польотний контролер у режим boot (натискати кнопочку на самому FC) і за допомогою програми STM32 Cube Programmer залити прошивку ArduPilot. Порівняно з попередньою прошивкою — Betaflight, ArduPilot менш дружелюбний до користувача,

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

Незабаром я отримав зарядну станцію і приймач, що працює на потрібній частоті.

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

Дрон робить «бочку» вправо

Щось явно пішло не так — при збільшенні тяги дрон замість того, щоб піднятися вертикально вгору, одразу робить «бочку» вправо.

На квадрокоптері два мотори обертаються за годинниковою стрілкою, а два — проти годинникової. Таким чином вони компенсують момент інерції один одного і не дозволяють дрону обертатися навколо осі обертання моторів. Напрямок обертання можна змінювати для кожного мотора окремо.

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

Пропеллери.

Два зліва для обертання за годинниковою стрілкою, два справа — проти.

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

Схема обертання моторів за замовчуванням в ArduPilot.

CCW — проти годинникової стрілки. CW — за годинниковою стрілкою.

Виробник ESC, який я використовував, компанія SpeedyBee, надає онлайн-утиліту, через яку можна оновити версію прошивки і змінити напрямок обертання моторів.

І все було б чудово, але в мене уперто не хотів визначатися мотор номер 1! Знову питання: кожен з моторів припаяний до ESC трьома проводами, може, я припаяв дроти цього мотора не в тому порядку, як інші? Перевірив — так, не в тому ж. Та й мене сильно бентежило, що тест моторів проходить нормально, всі чотири обертаються як треба. Може, якийсь із проводів передає спеціальний сигнал для перепрошивки, і саме в ньому проблема. Але в якому з трьох?

Потыкав у дроти тестером, я так і не зрозумів, як треба користуватися тестером і як перевірити правильність припаяних проводів. Випив жадний ковток чаю, я вже відчайденно шукав рішення сьогодні, і для різноманітності вирішив натискати непримітну кнопку на інтерфейсі «повернути стандартні налаштування», і о чудо! Мотор номер 1 чудесним чином відобразився, і я зміг змінити напрямок його обертання! Глибокий вдих — видих, вдих — видих...

Інша проблема, яку я виявив, це те, що ArduPilot переплутав розташування моторів. На малюнку видно, що A — це мотор номер 1, B — 4, C — 2, D — 3.

У мене ж відбувалася вакханалія, і це окрема біль — як налаштувати ці мотори через параметри ArduPilot. Через 20 хвилин мотори обертаються в потрібному напрямку і відповідають схемі. Пропелери прикручені. Час істини!

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

В результаті це зайняло більше місяця!
На деталі для самого дрона я витратив 194 долари і додатково 277 доларів на інструменти, які довелося купити один раз (паяльники, викрутки, пульт...).

Роботи захоплюють світ: від безпілотних таксі Waymo, які вже у великих кількостях їздять по містах Каліфорнії, до розумних роботизованих платформ, що керують складами гігантів, таких як Amazon. І, звісно, дронів — ще нещодавно безпечних іграшок, а тепер смертоносного зброї, яка може порівнятися з засобами масового знищення.

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

Далі буде...

P.S. Я завжди зацікавлений у складних інженерних задачах і відкритий до співпраці над проектами, що включають робототехніку та автоматизацію для сил оборони. Якщо ваш проєкт пов’язаний із цими напрямками — давайте співпрацювати!

👍ПодобаєтьсяСподобалось7
До обраногоВ обраному5
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

какой формат сотрудничества предполагается?

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

Wannabe Воїн

Коли живеш в США, але хочеться примазатись до тусовки, типу «о, дрони, дрони я також шарю, дивіться навіть зібрав один по інструкції. вперед до перемоги!!!»

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

Початок топіку був надихаючий:

Перед вибором «бий або тікай» я обрав друге — і через шість місяців після початку вторгнення опинився в Лос-Анджелесі
Я жив у двох реальностях. В одній — Південна Каліфорнія, куди я давно хотів переїхати, стабільна робота та гарний дохід. В іншій — моя країна, яку знищують загарбники, а серце палає боротьбою за свободу й справедливість.

Я очікував історію як автора змучить совість і він кине ту кляту каліфорную, шестизначну зп, фейкові посмішки американців і переїде назад боронити неньку, якщо не в окопі, то в якості hardware-спеціаліста..

А насправді чувак просто знайшов собі нове хобі: зібрати дрон.

Ну ок.

Чекаю топіку від автора з гучною назвою типу «Основи вогневої підготовки для айтішників», а всередині історія як він на вихідних з’їздив в тир.

Чекаю топіку від автора з гучною назвою типу «Основи вогневої підготовки для айтішників», а всередині історія як він на вихідних з’їздив в тир.

Або «Такмед для Айтішника», а всередині історія як чувак сам собі пластиря наклеїв

прикольно... а ще можна робити насіннєві кульки, і засівати ними пустелі...
en.wikipedia.org/wiki/Seed_ball

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

Дякую за вашу працю. Проте здається що це рішення вже існує.

Підписатись на коментарі