З FinTech у DefTech: як український розробник у США перейшов від банкінгу до дронів для фронту
Війна застала мене в Києві, і я виявився до неї абсолютно не готовий. Перед вибором «бий або тікай» я обрав друге — і через шість місяців після початку вторгнення опинився в Лос-Анджелесі.
Маючи 15 років досвіду в комерційній розробці ПЗ, останні шість із яких я працював CTO у німецькому стартапі, я досить швидко знайшов роботу в американській фінтех-компанії. Здавалося б, життя налагодилося, але я усвідомив, що війну забрав із собою — вона не виходила з моїх думок. Інтегрувати платіжні системи та перейматися питаннями монополізації ринку було нелегко, коли розумом і серцем ти знаходишся зовсім в іншому місці.
Я жив у двох реальностях. В одній — Південна Каліфорнія, куди я давно хотів переїхати, стабільна робота та гарний дохід. В іншій — моя країна, яку знищують загарбники, а серце палає боротьбою за свободу й справедливість.
Головною проблемою було те, що я не знав, як допомогти Україні, не опинившись в окопі. Фінансова підтримка сім’ї, ЗСУ та волонтерів здавалася недостатньою.
Все змінило інтерв’ю Ярослава Ажнюка з Марією Берлінською. Воно було зваженим, реалістичним, але не безнадійним — навпаки, воно давало розуміння, що війна може бути виграна через правильні дії.
Головна думка: війну можна виграти технологіями, зокрема роботами та дронами. MiliTech — це не просто тренд, а наше сьогодення і майбутнє.
Крім того, мене давно турбувало те, що моя професійна діяльність не створює фізичного продукту, який можна було б потримати в руках і показати як результат роботи. Додайте до цього мій інтерес до штучного інтелекту — і в один момент все зійшлося.
Я вирішив розібратися, як насправді можна зібрати дрон: які компоненти використовуються, яке програмне забезпечення застосовується, як перетворити його на автономний апарат, а також які знання та навички необхідні для досягнення цієї мети.
Мета мого проєкту — створення дрона з комплектуючих та розробка програмного забезпечення для розпізнавання зображень із камери дрона й переслідування виявленого об’єкта. Цей досвід безперечно буде корисним для подальшого занурення в тему та розв’язання актуальних проблем застосування бойових дронів.
Роблячи цей проєкт, я багато чого навчився, дізнався та зробив чимало помилок новачка. Тепер я хочу поділитися своїм досвідом у форматі блогу. Я не відкрию нічого нового з технічної точки зору — про всі ці речі вже багато написано. Але є мій особистий шлях, виклики, з якими я зіткнувся, і рішення, які я знаходив. Сподіваюсь, ця історія зацікавить і надихне спробувати створити робота власноруч.
Ця історія складатиметься з двох частин. У першій я розповім про збірку дрона: які комплектуючі використовував, як налаштовував його для польоту. У другій — про його автономність і розпізнавання зображень на бортовому комп’ютері.
Частина перша : Збірка дрона
Бути українцем і збирати дрон — одне задоволення! В інтернеті є безліч відео, інструкцій і форумів з усією необхідною інформацією українською мовою.
Для свого дрона я використовував інструкцію від Social Drone UA. Нещодавно вийшла оновлена версія відео, яка детальніше пояснює нюанси збирання. Однак я збирав за торішнім відео, тому деякі моменти довелося освоювати методом спроб і помилок.
Варто зазначити, що до цього я ніколи не тримав у руках паяльник, не розумівся на мікроелектроніці, прошивках та радіозв’язку. Я не писав софт для пристроїв, не вмів керувати дроном.Моїми найбільшими інженерними досягненнями були збирання LEGO і підключення фільтра для води до крана.
Вершина моїх інженерних досягнень
Я замовив на AliExpress
Настав час паяти силовий кабель до 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
У цей момент дрон видає досі нечуваний звук і завзято блимає діодом, який повідомляє, що батарея от-от сяде!
Роз’єм 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. Я завжди зацікавлений у складних інженерних задачах і відкритий до співпраці над проектами, що включають робототехніку та автоматизацію для сил оборони. Якщо ваш проєкт пов’язаний із цими напрямками — давайте співпрацювати!
9 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів