ARM manipulator

Роботизированная лодка

  • Интсрукция по сборке
  • 3D модель
  • Прошивка

Роболодка

Введение

Умная лодка — это автономная или дистанционно управляемая водная платформа с камерой, GPS и системой мониторинга. Она способна патрулировать водоём, снимать видео над и под водой, собирать данные о состоянии воды и двигаться по заданному маршруту без участия оператора. А в версии с системой погружения — уходить под воду и вести подводное наблюдение.

Умная лодка-катамаран на воде: белый корпус, поворотная камера на мачте, антенна GPS, синяя вода, вид сбоку в три четверти

В отличие от дронов, лодка не ограничена временем полёта и может нести значительно больший груз электроники и оборудования. На одном заряде она способна работать 3–6 часов, тихо скользить по поверхности и не пугать птиц и рыбу. Это делает её отличным инструментом для экологического мониторинга, охраны водоёмов, рыбалки и просто интересным инженерным проектом.

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

Обратите внимание: перед запуском лодки на водоёме ознакомьтесь с местными правилами использования радиоуправляемых судов. В большинстве стран требования к моделям весом до 3 кг минимальны, однако видеосъёмка на отдельных объектах может быть ограничена.

Обзор моделей

Линейка умных лодок включает четыре базовых типа. Каждый оптимизирован под свои задачи, но все используют совместимую электронику и единую систему управления.

Катамаран-наблюдатель

Катамаран-наблюдатель: два параллельных поплавка соединены платформой, на платформе камера и антенна GPS, вид спереди на спокойной воде

Наиболее стабильная платформа в линейке. Два поплавка-понтона соединены жёсткой горизонтальной рамой, на которой размещается вся электроника, камера и GPS. Благодаря широкой базе катамаран практически не качается на волне и идеально подходит для видеосъёмки и мониторинга.

Каждый поплавок оснащён собственным подводным мотором с винтом. Управление — дифференциальное: изменение скорости левого и правого мотора задаёт направление движения, как у гусеничного робота. Поворотный радиус минимален — катамаран разворачивается практически на месте.

Габариты: около 55 × 40 × 20 см. Вес: 1,2–1,8 кг. Скорость: до 1,5 м/с. Время работы: 3–4 часа. Грузоподъёмность: до 800 г дополнительного оборудования на платформе.

Моноплан патрульный

Патрульная лодка-моноплан: вытянутый корпус с килем, мотор с винтом на корме, руль направления, камера на носу, вид сбоку

Классический корпус лодки — вытянутый моноплан с килем. Более скоростная платформа по сравнению с катамараном, лучше держит курс на волнении. Один мотор на корме, руль направления управляется сервоприводом. Оптимален для быстрого патрулирования большой территории.

Габариты: около 65 × 22 × 18 см. Вес: 0,9–1,3 кг. Скорость: до 2,5 м/с. Время работы: 4–5 часов при умеренной скорости. Подходит для открытых водоёмов с волнением.

Лодка-доставщик

Лодка-доставщик: широкий плоскодонный корпус с закрытым грузовым отсеком в центре, два мотора по бокам кормы, вид сверху в три четверти

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

Два мотора по бокам кормы — дифференциальное управление, высокая манёвренность. Грузоподъёмность: до 1,5 кг. Скорость: до 1,2 м/с. Время работы: 3–4 часа при полной загрузке.

Субмарина

Подводная лодка-субмарина: торпедообразный корпус с носовым и кормовым горизонтальными рулями, подводная камера на носу, вид сбоку под углом

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

Система погружения основана на балластной цистерне с сервоприводом: водяной насос закачивает воду для погружения и откачивает для всплытия. Глубина погружения базовой модели: до 3 метров. Время работы под водой: до 45 минут. Управление: по кабелю-привязи до 15 м или автономно по заданной программе.

Обратите внимание: субмарина — сложное устройство, требующее тщательной проверки герметичности перед каждым погружением. Рекомендуем начинать с надводных моделей и переходить к субмарине после получения опыта сборки и эксплуатации.

Принципы работы

Движение и управление

Схема управления катамараном: два мотора, стрелки направлений при разной скорости левого и правого винта — прямо, поворот влево, поворот вправо, разворот на месте

Надводные лодки используют два принципа управления. Дифференциальный привод (катамаран, доставщик) — два независимых мотора по бортам. Изменение скоростей создаёт момент поворота. Поворачивать влево — замедляем левый мотор, вправо — правый. Реверс одного мотора при переднем ходе другого — разворот на месте.

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

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

Система погружения

Схема балластной системы субмарины: балластная цистерна в центре корпуса, мини-насос, клапан, датчик давления — стрелки показывают заполнение и опустошение

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

Балластная цистерна — герметичная камера объёмом 80–150 мл (зависит от размера субмарины). Заполнение происходит самотёком через клапан, управляемый сервоприводом. Откачка — мини-насосом 12В. Датчик давления MS5837 контролирует текущую глубину: давление воды линейно растёт с глубиной (~0,1 атм на каждый метр).

Горизонтальные рули на носу и корме позволяют управлять дифферентом (наклоном) субмарины и поддерживать заданную глубину в движении — как крылья самолёта создают подъёмную силу, рули создают вертикальную силу на ходу. Это значительно экономит энергию балластной системы.

Устойчивость на воде

Сравнение остойчивости трёх типов корпусов: катамаран, моноплан с килем, плоскодонник — диаграммы кренящего момента и центра тяжести для каждого

Остойчивость лодки определяется положением центра тяжести (ЦТ) и метацентра. Чем ниже ЦТ и выше метацентр — тем лодка устойчивее. Практический вывод: тяжёлые компоненты (аккумулятор, моторы) размещайте как можно ниже в корпусе.

Катамаран устойчив за счёт широкой базы — расстояние между понтонами создаёт большое восстанавливающее плечо. Моноплан стабилизируется килем с балластом. Плоскодонник (доставщик) устойчив на тихой воде, но плохо держится на волнении — не подходит для открытых водоёмов.

При проектировании корпуса важно выдержать запас плавучести — объём вытесненной воды должен превышать вес лодки как минимум на 30–50%. Это обеспечит нормальную осадку и запас на случай заливания.

Корпус и герметизация

Материалы и печать

Корпус катамарана на платформе принтера в процессе печати: крупные детали с высоким заполнением, слои видны на разрезе, рядом готовые детали второго понтона

Корпуса всех надводных моделей печатаются из PETG — он не размягчается от воды, устойчив к UV-излучению и достаточно прочен для ударов о берег и камни. PLA для водных проектов не рекомендуется: впитывает влагу, теряет прочность и деформируется на солнце.

Параметры печати для корпуса: заполнение 40–60%, 4 периметра стенок, высота слоя 0,2 мм. Увеличенное количество периметров важнее заполнения — именно стенки обеспечивают водонепроницаемость при правильной пост-обработке. Дно корпуса печатается с заполнением 100% на высоту 3–4 мм для жёсткости.

Корпус субмарины требует особого подхода. Печатается из ABS или ASA — они легче поддаются химической обработке ацетоном для заполнения микропор между слоями. После печати корпус обрабатывается парами ацетона в закрытой ёмкости: поверхность оплавляется и становится монолитной.

Герметизация корпуса

Процесс герметизации: нанесение силиконового герметика на стык крышки и корпуса лодки, рядом тюбик аквариумного силикона и резиновый уплотнитель O-ring

Герметизация — самый критичный этап сборки водного робота. Используются три подхода в зависимости от зоны корпуса.

Аквариумный силикон — для неразборных стыков: между частями корпуса, склеенными намертво. Наносится изнутри по всему периметру стыка. Время отверждения 24 часа. Выдерживает постоянный контакт с водой.

O-ring уплотнители — для разборных крышек люков доступа к электронике. Силиконовое кольцо в проточке крышки при затяжке болтов равномерно обжимается и обеспечивает герметичность. Стандартный размер для крышек корпуса: O-ring 3×2 мм или 5×2 мм.

Эпоксидная смола — для покрытия внешней поверхности корпуса. Тонкий слой эпоксидки закрывает все микропоры между слоями печати и делает поверхность абсолютно водонепроницаемой. Дополнительно увеличивает жёсткость корпуса на 20–30%.

Обратите внимание: перед первым спуском на воду обязательно проверьте герметичность. Закройте все отверстия, кроме одного, подайте в него воздух насосом до давления 0,3–0,5 атм и окуните корпус в воду. Пузырьки укажут место протечки.

Кабельные вводы

Кабельные вводы в корпусе лодки: сальниковые гермовводы PG7 для тонких проводов и PG9 для толстых, установлены в боковой стенке, затянуты гайками

Каждый провод, выходящий из герметичного корпуса наружу, — потенциальная точка протечки. Для надёжного уплотнения используются кабельные сальники (гермовводы) серии PG: PG7 для проводов диаметром 3–6,5 мм, PG9 для 4–8 мм. Они вкручиваются в резьбовое отверстие в корпусе, провод пропускается через резиновый конус и зажимается накидной гайкой.

Минимизируйте количество кабельных вводов — объединяйте провода в жгуты, проходящие через один сальник. Для субмарины это особенно важно: каждое дополнительное отверстие снижает надёжность на глубине.

Провода моторов — самые толстые и несут наибольший ток. Используйте силиконовые провода AWG14–AWG16: они гибкие, не дубеют на холоде и выдерживают постоянный контакт с водой без разрушения изоляции.

Водозащита электроники

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

Конформное покрытие — специальный лак (например, Plastik 71 от Kontakt Chemie) наносится на плату Arduino и драйверы тонким слоем и защищает от влаги и брызг. Не закрывайте лаком разъёмы и кнопки.

Силикагель — мешочек поглотителя влаги размещается внутри герметичного корпуса. Поглощает остаточную влагу после закрытия крышки. Меняйте или регенерируйте (просушивайте в духовке при 120°C) после каждых 5–10 погружений.

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

Двигатели и винты

Подводные моторы

Три подводных мотора рядом: бесколлекторный T100 Thruster, коллекторный мотор в водонепроницаемом корпусе, самодельный мотор в эпоксидной заливке — с подписями тяги и напряжения

Бесколлекторные подводные моторы — лучший выбор по соотношению мощности и надёжности. Ротор вращается в воде без уплотнений — вода сама является смазкой и охладителем. Популярные варианты: T100 Thruster (тяга 2,36 кгс при 12В) и аналоги с AliExpress значительно дешевле. Управляются ESC-регулятором как обычный бесколлекторный мотор.

Коллекторные моторы в водонепроницаемом корпусе — более доступный вариант. Ротор и статор залиты герметично, вал выходит через сальник. Ресурс ниже, чем у бесколлекторных, но для любительских проектов вполне достаточен. Управляются обычным H-мостом или ESC.

Самодельный водонепроницаемый мотор — обычный коллекторный мотор 775 или 550 серии с валом, выходящим через самодельное уплотнение. Статор заливается эпоксидной смолой изнутри через разобранный корпус. Требует аккуратности исполнения, но позволяет получить мощный привод за минимальные деньги.

Выбор винтов

Набор винтов разных диаметров и шагов на белом фоне: двухлопастные и трёхлопастные, размеры от 40 до 90 мм, подписи диаметр×шаг

Винт характеризуется двумя параметрами: диаметром и шагом (дистанция продвижения за один оборот). Для медленных тяжёлых лодок оптимальны крупные винты с большим шагом — высокий КПД при малых оборотах. Для быстрых платформ — меньший диаметр, более высокие обороты.

Для катамарана и доставщика рекомендуется трёхлопастный винт диаметром 60–80 мм. Трёхлопастный даёт меньше вибрации и лучше работает в загрязнённой воде с водорослями. Двухлопастный — проще напечатать и заменить при повреждении.

Направление вращения: правый мотор — правый (clockwise) винт, левый — левый (counter-clockwise). Если использовать одинаковые винты на обоих моторах, реактивный момент будет уводить лодку в сторону. Напечатать зеркальный винт на 3D-принтере не составляет труда — STL-файлы зеркалируются в слайсере.

Рули и стабилизаторы

Руль направления монопланной лодки крепится на сервопривод MG90S через рычажную тягу. Угол отклонения руля ±30° от нейтрали. Сервопривод монтируется внутри герметичного корпуса, тяга выходит наружу через сальник.

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

Электропитание и Arduino

Организация питания водного робота имеет ряд особенностей по сравнению с наземными устройствами. Главное требование — абсолютная герметичность аккумуляторного отсека и защита от короткого замыкания при попадании воды.

Аккумуляторы

Аккумуляторы для лодки: Li-Po 3S 5000 мАч в водонепроницаемом пакете, Li-Po 4S 3000 мАч, PowerBank 20000 мАч — рядом с описанием применения для каждого типа лодки

Li-Po 3S (11,1В) — оптимален для катамарана и монопланной лодки. Высокая энергоплотность, хорошая токоотдача. Ёмкость 3000–5000 мАч обеспечит 3–5 часов работы. Обязательно используйте Li-Po в специальном огнестойком пакете-сумке внутри корпуса.

Li-Po 4S (14,8В) — для мощных моторов вездехода и доставщика с тяжёлым грузом. Больше напряжение — больше мощность моторов при том же токе. Используется с DC-DC преобразователем для питания Arduino и логики.

PowerBank 20000 мАч — неожиданно удобный вариант для небольших лодок с маломощными моторами. Встроенная защита от перегрева, переразряда и КЗ. Заряжается обычным USB-C. Подходит для катамарана со слабыми моторами и ESP32-CAM камерой.

Аккумуляторный отсек должен быть изолирован от остальной электроники: при пробое аккумулятора вода с электролитом не должна попасть на плату управления. Отсек закрывается отдельной крышкой на O-ring уплотнителе.

Схема питания

Принципиальная схема питания лодки: аккумулятор → предохранитель → выключатель → шина моторов и DC-DC 5В → Arduino → ESC → моторы, обозначение токов на каждом участке

Схема питания аналогична роботу-наблюдателю с дополнительным требованием: все соединения должны выдерживать влажную среду. Используйте луженые клеммы и герметичные разъёмы XT30 или XT60 — они стандарт в RC-технике и не окисляются.

Между аккумулятором и остальной схемой устанавливается предохранитель на 20–30А и водонепроницаемый выключатель. Выключатель монтируется в корпус через специальную заглушку с O-ring уплотнением — он должен быть доступен снаружи без разборки лодки.

Обратите внимание: никогда не заряжайте Li-Po аккумулятор внутри закрытого корпуса лодки. При зарядке аккумулятор выделяет газы — в закрытом пространстве возможно возгорание. Всегда извлекайте аккумулятор для зарядки.

Регуляторы хода (ESC)

Для управления бесколлекторными моторами используются ESC (Electronic Speed Controller) — регуляторы хода. Для водных применений нужны водонепроницаемые ESC с маркировкой Waterproof или IP67. Они отличаются от обычных залитым компаундом корпусом.

Рекомендуемые ESC для лодок: Hobbywing Seaking 30A/60A — специально разработаны для водных моделей, имеют встроенный BEC (питание 5В для сервоприводов и приёмника), реверс. Для бюджетных проектов подходят любые водонепроницаемые ESC 30A с AliExpress.

ESC подключается тремя фазными проводами к мотору и двумя силовыми — к шине питания. Сигнальный провод идёт от Arduino (ШИМ-сигнал). Важно: ESC для бесколлекторных моторов управляется тем же ШИМ-сигналом, что и сервопривод (1000–2000 мкс), поэтому отлично работает с библиотекой Servo.h.

Защита от воды

Помимо герметизации корпуса, отдельные компоненты нуждаются в дополнительной защите. Arduino покрывается конформным лаком. Все разъёмы внутри корпуса — герметичные Dupont с силиконовой заливкой или JST с фиксаторами. Контакты аккумулятора смазываются техническим вазелином для предотвращения окисления.

Камера и сенсоры

Камера надводная

Надводная камера на поворотной мачте катамарана: модуль ESP32-CAM в прозрачном боксе, видны отверстия вентиляции закрытые силиконом, угол обзора 120°

Для надводного наблюдения оптимален модуль ESP32-CAM: встроенный Wi-Fi, трансляция MJPEG-потока в браузере, стоимость 250–350 руб. Модуль устанавливается в напечатанный бокс с прозрачным окном из оргстекла. Стык бокса герметизируется силиконом.

Поворотная мачта с сервоприводом позволяет вращать камеру по горизонтали на 180° без поворота всей лодки. Управляется с пульта отдельным каналом. Высота мачты 15–20 см над ватерлинией обеспечивает хороший обзор даже при небольшом волнении.

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

Камера подводная

Подводная камера в герметичном цилиндрическом боксе: прозрачная акриловая трубка, торцевые крышки с O-ring уплотнителями, кабель выходит через гермоввод

Подводная камера размещается в герметичном боксе из акриловой трубки диаметром 50–75 мм. Торцевые крышки уплотняются O-ring кольцами и притягиваются болтами. Такой бокс выдерживает давление воды до 5–10 метров глубины.

Внутрь бокса помещается модуль камеры (ESP32-CAM или плата с IMX219), светодиодный фонарь на 5–10 Вт для подсветки (под водой уже на 2 метрах темно), мешочек силикагеля. Видеосигнал передаётся по кабелю на борт лодки или напрямую транслируется по Wi-Fi если в боксе помещается ESP32.

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

GPS-модуль

Модуль NEO-8M с внешней антенной даёт точность 1,5–2 м — достаточно для навигации по водоёму и ограничения зоны патрулирования. Антенна размещается в самой высокой точке лодки, вне зоны экранирования металлическими деталями.

GPS подключается к Arduino по UART (9600 бод). Принимаемые NMEA-строки парсятся библиотекой TinyGPS++. Из каждого пакета извлекаются координаты, скорость, курс и время. Обновление координат — раз в секунду для стандартного режима, до 10 раз в секунду для модулей с поддержкой high-rate output.

Для автономного патрулирования задаются координаты точек маршрута. Arduino вычисляет курс на следующую точку по формуле bearing (азимут между текущими и целевыми координатами) и корректирует положение рулей или разность скоростей моторов для выдерживания курса.

Датчик глубины

Датчик давления MS5837-30BA — специализированный сенсор для подводного применения, выдерживает давление до 30 бар (глубина 300 м). Подключается по I2C. Измеряет абсолютное давление с разрешением 0,2 мбар, что соответствует точности определения глубины около 2 мм.

Датчик устанавливается в заполненном водой канале корпуса субмарины — вода передаёт давление к сенсору, сам сенсор при этом остаётся в сухой зоне. Либо датчик размещается снаружи корпуса с влагозащищённым корпусом и герметичным кабельным вводом.

Датчик качества воды

Датчики качества воды: зонд мутности TSW-10, датчик pH с электродом, датчик температуры DS18B20 в нержавеющем корпусе — разложены рядом с подписями параметров

Умная лодка превращается в экологическую станцию мониторинга при добавлении датчиков качества воды. Наиболее практичный набор для любительского мониторинга:

DS18B20 — температура воды. Нержавеющий корпус, диапазон −55…+125°C, точность ±0,5°C. Подключается по 1-Wire, несколько датчиков — на один провод. Стоит около 80–120 руб.

Датчик мутности TSW-10 — оптический датчик, измеряет прозрачность воды. Позволяет обнаруживать загрязнения, цветение водорослей. Аналоговый выход на Arduino.

pH-электрод — измерение кислотности воды. Требует калибровки буферными растворами. Данные записываются на SD-карту с GPS-координатами и временем — получается карта качества воды водоёма.

Все данные датчиков логируются на SD-карту и передаются на пульт по радиоканалу в реальном времени. После маршрута данные выгружаются и визуализируются на карте.

Программирование Arduino

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

Переменные

Arduino

// --- Пины ESC и рулей ---
const int ESC_LEFT  = 9;   // левый мотор (ШИМ)
const int ESC_RIGHT = 10;  // правый мотор (ШИМ)
const int SERVO_RUDDER  = 6;  // руль направления
const int SERVO_BALLAST = 5;  // клапан балласта (субмарина)
const int PUMP_PIN      = 7;  // помпа откачки (субмарина)

// --- Параметры движения ---
const int THROTTLE_STOP    = 1500; // нейтраль ESC (мкс)
const int THROTTLE_MAX_FWD = 1900; // полный вперёд
const int THROTTLE_MAX_REV = 1100; // полный назад
const int RUDDER_CENTER    = 90;   // руль прямо (градусы)

// --- GPS и навигация ---
float target_lat = 0.0;
float target_lon = 0.0;
float current_lat = 0.0;
float current_lon = 0.0;
bool  autopilot   = false;

// --- Субмарина: глубина ---
float target_depth  = 0.0;
float current_depth = 0.0;
        

Управление моторами

Arduino

#include <Servo.h>

Servo esc_left;
Servo esc_right;
Servo servo_rudder;

void setup() {
    esc_left.attach(ESC_LEFT);
    esc_right.attach(ESC_RIGHT);
    servo_rudder.attach(SERVO_RUDDER);

    // Инициализация ESC: подаём нейтраль
    esc_left.writeMicroseconds(THROTTLE_STOP);
    esc_right.writeMicroseconds(THROTTLE_STOP);
    delay(3000); // ESC калибруется при старте
}

// Управление катамараном (0–100% вперёд, (-100)–0 назад)
void setMotors(int left_pct, int right_pct) {
    left_pct  = constrain(left_pct,  -100, 100);
    right_pct = constrain(right_pct, -100, 100);

    int l_us = map(left_pct,  -100, 100, THROTTLE_MAX_REV, THROTTLE_MAX_FWD);
    int r_us = map(right_pct, -100, 100, THROTTLE_MAX_REV, THROTTLE_MAX_FWD);

    esc_left.writeMicroseconds(l_us);
    esc_right.writeMicroseconds(r_us);
}
        

Система погружения

Arduino

#include <MS5837.h>  // библиотека датчика давления

MS5837 depth_sensor;

void diveToDepth(float target_m) {
    current_depth = depth_sensor.depth();

    if (current_depth < target_m - 0.05) {
        // Открываем клапан балласта — впускаем воду
        digitalWrite(PUMP_PIN, LOW);       // помпа выкл
        servo_ballast.write(90);           // клапан открыт
    }
    else if (current_depth > target_m + 0.05) {
        // Откачиваем воду — всплываем
        servo_ballast.write(0);            // клапан закрыт
        digitalWrite(PUMP_PIN, HIGH);      // помпа вкл
    }
    else {
        // Удерживаем глубину
        servo_ballast.write(0);
        digitalWrite(PUMP_PIN, LOW);
    }
}

void surfaceEmergency() {
    // Аварийное всплытие: полная откачка балласта
    servo_ballast.write(0);
    digitalWrite(PUMP_PIN, HIGH);
    delay(10000); // 10 секунд откачки
    digitalWrite(PUMP_PIN, LOW);
}
        

Функция surfaceEmergency() вызывается автоматически при потере связи с пультом дольше 5 секунд или при срабатывании датчика влаги внутри корпуса. Это критически важная защита от потери субмарины.

GPS и автопилот

Arduino

#include <TinyGPS++.h>
#include <SoftwareSerial.h>

TinyGPSPlus gps;
SoftwareSerial gps_serial(4, 3); // RX, TX

// Вычисление азимута на целевую точку
float bearingTo(float lat1, float lon1, float lat2, float lon2) {
    float dLon = radians(lon2 - lon1);
    lat1 = radians(lat1);
    lat2 = radians(lat2);
    float y = sin(dLon) * cos(lat2);
    float x = cos(lat1)*sin(lat2) - sin(lat1)*cos(lat2)*cos(dLon);
    return degrees(atan2(y, x));
}

void autopilotTick() {
    if (!autopilot) return;

    float bearing = bearingTo(current_lat, current_lon,
                               target_lat,  target_lon);
    float heading = gps.course.deg(); // текущий курс
    float error   = bearing - heading;

    // Нормализация ошибки в диапазон -180..+180
    while (error >  180) error -= 360;
    while (error < -180) error += 360;

    // Корректировка курса
    int correction = constrain((int)(error * 1.2), -40, 40);
    servo_rudder.write(RUDDER_CENTER + correction);
    setMotors(70, 70); // крейсерская скорость
}
        

Serial и отладка

Arduino

void debugPrint() {
    Serial.print("LAT:");  Serial.print(current_lat, 6);
    Serial.print(" LON:"); Serial.print(current_lon, 6);
    Serial.print(" HDG:"); Serial.print(gps.course.deg());
    Serial.print(" DEP:"); Serial.print(current_depth);
    Serial.print("m AUTO:"); Serial.println(autopilot ? "ON" : "OFF");
}

// Приём команд через Serial (для отладки на берегу)
void handleSerial() {
    if (!Serial.available()) return;
    String cmd = Serial.readStringUntil('\n');
    cmd.trim();

    if (cmd == "SURFACE")  surfaceEmergency();
    if (cmd == "AUTOPILOT") autopilot = !autopilot;
    if (cmd.startsWith("GOTO")) {
        // Формат: GOTO 55.123456 37.654321
        int sp = cmd.indexOf(' ', 5);
        target_lat = cmd.substring(5, sp).toFloat();
        target_lon = cmd.substring(sp+1).toFloat();
        autopilot = true;
    }
}
        

Системы управления

Три варианта управления лодкой: RC-пульт FlySky FS-i6, смартфон с веб-интерфейсом, ноутбук с картой маршрута — стрелки к иконке лодки

Пульт RC

Классический радиоуправляемый пульт — самый надёжный способ управления. Рекомендуется FlySky FS-i6 (6 каналов, 2,4 ГГц, дальность до 500 м) — недорогой, популярный, много документации. Приёмник FS-iA6B устанавливается внутри герметичного корпуса и подключается к Arduino.

Arduino читает ШИМ-сигнал с каналов приёмника функцией pulseIn() — значения 1000–2000 мкс соответствуют положению стиков пульта. Левый стик управляет скоростью, правый — курсом. Дополнительные переключатели на пульте переключают режимы: ручной, автопилот, аварийное всплытие.

Управление по Wi-Fi

Модуль ESP32 на борту лодки создаёт точку доступа Wi-Fi. Оператор подключается смартфоном и открывает веб-страницу управления в браузере. Страница содержит виртуальные стики, кнопки режимов и видеопоток с камеры — всё в одном окне браузера без установки приложений.

Дальность Wi-Fi управления в открытом пространстве над водой — 100–200 м. Для увеличения дальности используют направленные антенны или Wi-Fi усилители. Главный недостаток Wi-Fi — задержка 100–300 мс по сравнению с RC-пультом (10–20 мс). Для точного пилотирования субмарины лучше RC-пульт, для мониторинга с телефона — Wi-Fi вполне достаточно.

Автономный маршрут

Карта водоёма на смартфоне: проложен маршрут из пяти точек, синяя линия пройденного пути, значок лодки на текущей позиции, кнопки старт и стоп маршрута

Для задания маршрута используется простое веб-приложение: оператор кликает на карту водоёма, расставляя точки маршрута. Координаты отправляются на лодку по Wi-Fi и сохраняются в массив. Затем лодка переходит в режим автопилота и последовательно движется к каждой точке, используя GPS и алгоритм удерживания курса из раздела программирования.

Радиус считывания точки маршрута — 3–5 метров. Достигнув точки, лодка делает паузу (можно задать время остановки для съёмки или забора проб воды), затем движется к следующей. После прохождения всего маршрута возвращается к точке старта.

Мониторинг с телефона

Приложение мониторинга отображает в реальном времени: видеопоток с камеры, GPS-трек лодки на карте, показания датчиков воды (температура, pH, мутность), глубину погружения субмарины, уровень заряда аккумулятора, уровень сигнала. Данные сохраняются в лог с привязкой к GPS-координатам и времени.

Простая версия реализуется на базе ESP32 с библиотекой AsyncWebServer — веб-страница с JavaScript обновляет данные каждую секунду через запросы к API лодки. Для продвинутой версии используется MQTT-брокер: лодка публикует данные, приложение на телефоне подписывается на топики.

Мои 3D-модели

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

Концепция

Рендер четырёх моделей умных лодок рядом на воде: катамаран, моноплан, доставщик, субмарина — единый стиль корпусов, вид в три четверти сверху

Все четыре модели разработаны в единой экосистеме: совместимые разъёмы, одинаковый протокол управления, переносимая электроника. Блок управления (Arduino + ESP32 + GPS) одинаков для всех моделей — при переходе с катамарана на субмарину меняется только корпус и добавляется блок управления балластом.

Корпуса оптимизированы под печать на принтере 220×220 мм. Катамаран разделён на восемь частей: два понтона по четыре секции. Секционная конструкция позволяет заменить повреждённый участок, не перепечатывая весь корпус.

Ключевые решения

Съёмный электронный лоток — вся электроника монтируется на плате, которая вставляется в корпус сверху и фиксируется четырьмя болтами. Для обслуживания не нужно разбирать корпус — просто снять крышку и вынуть лоток.

Аварийный поплавок субмарины — внутри корпуса предусмотрен постоянный объём воздуха в непотопляемом отсеке. Даже при полностью заполненной балластной цистерне субмарина сохраняет небольшую положительную плавучесть и медленно всплывает — страховка на случай отказа помпы.

Дренажные заглушки — в нижней части каждого поплавка катамарана предусмотрено дренажное отверстие с резьбовой заглушкой. После выхода из воды заглушки откручиваются и корпус полностью осушается за 2–3 минуты.

Быстросъёмные моторы — моторные гондолы крепятся к поплавкам на двух болтах М4. Замена повреждённого мотора прямо на берегу занимает 5 минут без инструмента.

Унифицированные кабельные вводы — все корпуса используют одинаковые гермовводы PG7. Запасные всегда есть в наличии, установка знакома по предыдущим моделям.

Скачать модели

Превью архива файлов в PrusaSlicer: детали четырёх лодок разложены по папкам, цветовая маркировка по типам, настройки печати для PETG и ABS

В архиве для каждой модели: STL-файлы корпуса и деталей, проекты PrusaSlicer с настройками, принципиальные схемы подключения (PDF), прошивки Arduino с комментариями, список компонентов с ссылками на AliExpress, инструкция по проверке герметичности.

⬇ Скачать 3D-модели и документацию (ZIP)

Сборка и прошивка

Пошаговая сборка

Четыре этапа сборки катамарана: 1-склейка секций понтонов, 2-установка моторных гондол, 3-монтаж электронного лотка, 4-герметизация крышки — фото каждого этапа в сетке

Шаг 1. Склеить секции поплавков суперклеем + сода (для заполнения зазоров) или эпоксидной смолой. Дать полное отверждение 24 часа. Зашлифовать стыки.

Шаг 2. Покрыть внешнюю поверхность корпуса эпоксидной смолой в два слоя. Каждый слой — 4 часа отверждения. Это герметизирует поры между слоями печати.

Шаг 3. Установить гермовводы PG7 в отверстия корпуса. Нанести нитевой герметик на резьбу, затянуть с умеренным усилием.

Шаг 4. Собрать электронный лоток: Arduino, ESP32, GPS, регуляторы, преобразователь питания. Соединить по схеме, проверить все соединения.

Шаг 5. Провести кабели моторов и датчиков через гермовводы. Установить лоток в корпус, подключить разъёмы.

Шаг 6. Установить O-ring уплотнитель на крышку, закрыть корпус. Провести проверку герметичности давлением — см. следующий раздел.

Шаг 7. Установить моторные гондолы, подключить к ESC. Установить камеру и GPS-антенну на верхнюю платформу.

Загрузка прошивки

Подключите Arduino к компьютеру по USB до финальной герметизации корпуса. Установите библиотеки через менеджер: TinyGPS++, MS5837, AsyncWebServer (для ESP32). Откройте файл .ino в Arduino IDE, выберите плату и порт, загрузите прошивку. Откройте Serial Monitor на 9600 бод и убедитесь, что Arduino выводит отладочные данные без ошибок.

Обратите внимание: ESC при первом подключении требует калибровки диапазона газа. Включите питание ESC при нейтральном положении стика газа (сигнал 1500 мкс), дождитесь инициализационного сигнала, затем подайте максимальный газ и снова нейтраль по инструкции вашего ESC. Без калибровки моторы могут работать непредсказуемо.

Проверка герметичности

Проверка герметичности корпуса лодки: корпус опущен в таз с водой, к отверстию подключён насос, видны пузырьки у гермоввода — место протечки найдено

Проверка выполняется до установки электроники, после любого вскрытия корпуса и обязательно после транспортировки. Порядок проверки: закрыть все отверстия корпуса кроме одного, вставить в него ниппель от велокамеры на герметике, накачать корпус до 0,3–0,5 атм ручным насосом. Опустить корпус в ёмкость с водой — пузырьки укажут место протечки.

Типичные места протечек: стыки секций корпуса (недостаточно эпоксидки), гермовводы (не затянуты или без уплотнителя на резьбе), крышка люка (O-ring выпал из проточки или пережат). Устраните протечку, дайте герметику отвердеть и повторите проверку.

Для субмарины дополнительно проверяется герметичность при имитации давления глубины: накачайте 0,5–1,0 атм (соответствует 5–10 м глубины) и оставьте на 30 минут. Если давление не упало — корпус герметичен.

Испытания на воде

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

Включите пульт, дайте небольшой ход и проверьте отклик на управление. Убедитесь, что повороты происходят в нужную сторону. Проверьте работу камеры и GPS — убедитесь, что координаты определяются и трансляция идёт без разрывов. Только после успешной проверки всех систем отвязывайте привязь и выходите на открытую воду.

Для субмарины первое погружение — на 20–30 см в бассейне или мелком водоёме. Проверьте работу балластной системы, горизонтальных рулей и аварийного всплытия. Постепенно увеличивайте глубину, каждый раз проверяя сухость внутри корпуса после всплытия.

Типичные ошибки

Лодка кренится на один борт — неравномерное распределение веса или несимметричный корпус. Переместите аккумулятор к противоположному борту или добавьте свинцовый балласт.

ESC перегревается — превышен допустимый ток. Проверьте не застрял ли винт и не перегружен ли мотор. Уменьшите максимальный газ в прошивке до 80% и оцените, уходит ли перегрев.

GPS не берёт спутники — антенна экранирована металлическими деталями или корпусом из углеволокна. Поднимите антенну выше и вынесите её в сторону от металла. Первый холодный старт GPS может занимать до 3 минут.

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

Вода внутри корпуса после маршрута — конденсат или микропротечка. Проверьте индикатор влаги: синий — конденсат (добавьте силикагель), розовый — была реальная вода (ищите протечку давлением).

Доработки и апгрейд

Схема апгрейдов умной лодки: от базовой модели стрелки к улучшениям — лидар, солнечная панель, подводный прожектор, 4G-модем, эхолот

Солнечная панель — гибкая монокристаллическая панель 20–40 Вт на палубе катамарана. Контроллер заряда MPPT. На ярком солнце компенсирует 30–50% потребления моторов, значительно увеличивая автономность. Особенно эффективна в режиме медленного патрулирования.

Эхолот — ультразвуковой датчик глубины дна (не путать с датчиком глубины погружения субмарины). Подключается к Arduino по UART, отображает глубину и рыбу на дне. Превращает лодку в рыболовного помощника.

4G-модем — замена Wi-Fi на сотовую связь снимает ограничение по дальности. Лодка становится управляемой с любого места, где есть интернет. SIM800L или SIM7600 подключается к Raspberry Pi или ESP32 с поддержкой LTE.

Подводный прожектор — мощный LED 10–20 Вт в герметичном корпусе. На глубине 2–3 метров без подсветки камера видит только темноту. Прожектор управляется реле от Arduino.

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

Замена Arduino на Raspberry Pi — RPi Zero 2W даёт полноценный Linux, OpenCV для обработки видео и возможность запускать нейросети для распознавания объектов на воде. Вес и размер сопоставимы с Arduino Mega.

Автодок (станция зарядки) — плавучая платформа с зарядным контактом. Лодка распознаёт станцию по маркеру на камере, подходит и стыкуется для зарядки. Полностью автономная работа без участия оператора.

Компоненты и стоимость

Ориентировочные стоимости сборки каждой модели при заказе компонентов на AliExpress. Стоимость 3D-печати не включена — зависит от вашего принтера или стоимости заказа у сервиса.

Компоненты катамарана разложены на столе: ESP32-CAM, Arduino Nano, два ESC 30A водонепроницаемых, два подводных мотора, Li-Po 3S, GPS-модуль NEO-8M, гермовводы — с подписями

Компонент Катамаран Моноплан Доставщик Субмарина
КонтроллерArduino NanoArduino NanoArduino UnoArduino Mega
Wi-Fi / камераESP32-CAM ~300 р.ESP32-CAM ~300 р.ESP32 + камераESP32 + подв.камера
Моторы2× подв. ~1200 р.1× подв. ~700 р.2× подв. ~1200 р.1× подв. ~700 р.
ESC2× waterproof ~800 р.1× waterproof ~500 р.2× waterproof ~800 р.1× waterproof ~500 р.
СервоприводыMG90S ~180 р.MG90S ~180 р.3× DS3218 ~1500 р.
GPSNEO-8M ~350 р.NEO-8M ~350 р.NEO-8M ~350 р.NEO-8M ~350 р.
Датчик глубиныMS5837 ~600 р.
АккумуляторLi-Po 3S ~700 р.Li-Po 3S ~700 р.Li-Po 4S ~1200 р.Li-Po 4S ~1200 р.
Гермовводы, силикон~300 р.~200 р.~300 р.~500 р.
Пластик PETG/ABS~600 р.~400 р.~700 р.~800 р.
Крепёж, провода~200 р.~150 р.~250 р.~350 р.
Итого~4 450 р.~3 480 р.~5 980 р.~8 500 р.

Обратите внимание: RC-пульт FlySky FS-i6 с приёмником (~2 500 р.) не включён в таблицу — он универсален и используется для всех моделей. Если у вас уже есть пульт от других RC-проектов, дополнительных затрат нет.

Заключение

Катамаран-наблюдатель плывёт по озеру на рассвете: камера смотрит вперёд, GPS-антенна поднята, спокойная вода, отражение неба — атмосферная живая фотография

Умная лодка — один из самых интересных проектов на стыке механики, электроники и программирования. Здесь есть всё: сложная герметичная конструкция, беспроводная связь, GPS-навигация, видеотрансляция и — в случае субмарины — управление в трёх измерениях. При этом все задачи решаются доступными компонентами и инструментами.

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

Делитесь своими сборками и результатами испытаний в комментариях. Вопросы по конкретным узлам и проблемам при сборке — тоже сюда. Удачи на воде!

Оставьте Ваш комментарий

Защита от ботов: Выберите фигуру "Звезда"
shape
shape
shape
shape

Рекомендуем также

  • Инструкция
  • + чертёж

ЧПУ станок своими руками, качество и минимум затрат

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