Шестиногий робот-муравей на Arduino


В этом уроке мы рассмотрим создание шестиногого (гексапода) робота-муравья на основе платы Arduino. Как следует из названия, у нашего гексапода 6 ног, но помимо этого у него также есть хвост или брюшко, голова, усики, жвалы и даже функциональные глаза. Все это делает наш гексапод похожим на муравья, поэтому мы можем также назвать его роботом-муравьем на Arduino.

Шестиногий робот-муравей на Arduino

Обзор проекта

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

Управление роботом-муравьем с помощью приложения для Android

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

Робот-муравей готовится к атаке

Если мы отойдём назад, робот отклонит атаку, но если мы поднесём к нему руку ближе, он нападёт и укусит нас. Так насколько это круто? Оставайтесь здесь, и вы узнаете, как именно я это строю и как все работает.

3D модель робота-муравья

Как обычно, я начал с проектирования гексапода с помощью программы для 3D-моделирования. У шестиногих 6 ног, каждая из которых состоит из 3 суставов или 3 сервоприводов. Это означает, что нам нужно всего 18 сервоприводов, и в моем случае я использовал сервоприводы MG996R.

3D модель робота-муравья (вид спереди)

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

3D модель робота-муравья (вид сбоку)

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

Вы можете найти и скачать эту 3D-модель, а также изучить ее в своем браузере на сервисе Thangs.

3D модель робота-муравья в сервисе Thangs

STL-файлы: STL-файлы Arduino Ant Robot

3D-печать деталей робота-муравья

Думаю, вы уже знаете, что будет дальше: 3D-печать частей робота. Для всех отпечатков я использовал 3D-принтер Creality CR-10, и он отлично справился со своей задачей. Самой сложной частью печати была голова, потому что я хотел сделать один отпечаток.

Модель головы робота-муравья

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

Печать головы робота-муравья на принтере Creality CR-10

Сборка робота-муравья

После того, как мы напечатали все детали нашего робота-муравья, мы можем перейти к его сборке. Я начал со сборки его ног. Для крепления сервоприводов к печатным деталям я использовал болты и гайки М3, а также пружинные шайбы. Длина болтов должна быть не менее 12 мм, в моем случае я использовал болты длиной 16 мм.

Сборка ног робота-муравья

На всю сборку нам понадобится около 200 болтов. Для соединения звеньев друг с другом мы используем круглые рожки, которые входят в комплект сервопривода в качестве аксессуаров. Однако нам нужно просверлить в каждом из них отверстия диаметром 3 мм, чтобы болты могли пройти, или мы можем использовать металлические круглые рожки с резьбой М3, которые можно купить отдельно.

Круглые рожки для соединения звеньев друг с другом

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

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

Закрепление серводвигателей на ноге робота-муравья

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

Нога робота-муравья в сборе

Когда все ноги будут готовы, мы можем перейти к их установке на тело робота или на две пластины. Сначала нам нужно закрепить круглые рожки на верхней платформе тем же методом, что и раньше, с помощью болтов и гаек М3. Затем мы можем просто соединить их с валами сервоприводов с помощью болтов, но прежде чем мы это сделаем, нам нужно отрегулировать положение сервоприводов так, чтобы они находились точно посередине.

Прикрепление ног к туловищу робота-муравья

Это необходимо для того, чтобы мы могли получить полный диапазон движения сервоприводов, а также сократили процесс настройки/калибровки при программировании платы Arduino.

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

Остов робота-муравья

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

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

Закрепление нижней пластины

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

Закрепление серводвигателя, обеспечивающего крен

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

Закрепление U-образного кронштейна

Далее идет кронштейн сервопривода наклона. Итак, сначала нам нужно вставить болт М4 и закрепить его на U-образном кронштейне. Перед установкой двигателя наклона нам также необходимо вставить четыре болта М3, которые позже будут использоваться для крепления головки. Затем мы можем вставить сервопривод наклона в кронштейн и аккуратно прикрепить вал к круглому рупору. Здесь немного туговато, но U-образный кронштейн может немного прогнуться.

Закрепление серводвигателя, обеспечивающего наклон

Наконец, нам нужно закрепить сервопривод болтами М3, и на этом механизм головки готов. Теперь он может как катиться, так и наклоняться.

Прежде чем прикрепить головку к механизму, нам необходимо предварительно собрать ее или прикрепить нижние челюсти с помощью небольшого сервопривода SG90 и ультразвукового датчика. Опять же, здесь немного туговато, но мне все же удалось вставить первую нижнюю челюсть и прикрепить ее к голове с помощью болта М4.

Сборка головы робота-муравья

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

Закрепление головы робота-муравья

Затем устанавливается микросервопривод и закрепляется двумя винтами. На вторую нижнюю челюсть нам сначала нужно прикрепить рожок для сервопривода SG90.

Закрепление сервопривода SG90 в голове робота-муравья

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

Закрепление нижней челюсти головы робота-муравья

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

Закрепление ультразвукового датчика в голове робота-муравья

К голове нужно добавить еще одну деталь — это антенны. Для этой цели я использовал проволоку толщиной 3 мм, обрезал ее примерно на 13 см и слегка согнул, чтобы получить желаемую форму. Я снова использовал несколько капель клея, чтобы прикрепить их к голове. Наконец, мы можем прикрепить головку к механизму поворота и наклона с помощью четырех болтов, которые мы ранее вставили.

Прикрепление головы робота-муравья к его телу

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

Робот-муравей в собранном виде

Принципиальная схема робота-муравья на Arduino

Принципиальная схема шестиного робота-муравья на основе платы Arduino представлена на следующем рисунке.

Принципиальная схема шестиного робота-муравья на основе платы Arduino

Помимо 22 сервоприводов нам понадобится модуль Bluetooth HC-05 для связи со смартфоном, а также несколько конденсаторов и резисторов. Конечно, мозгом робота является плата Arduino, и в данном случае это Arduino Mega, потому что это единственная плата, которая может управлять более чем 12 сервоприводами с помощью библиотеки Servo.

Для питания робота я буду использовать аккумулятор 3S LiPo напряжением около 12 В. Батареи LiPo могут выдерживать больший ток, поэтому они подходят для этого проекта, потому что, если все сервоприводы задействованы одновременно при полной нагрузке, они могут потреблять ток около 10 ампер. Однако рабочее напряжение сервоприводов ограничено от 4,8 до 7,2 В, а это означает, что мне нужно использовать понижающий преобразователь постоянного тока для преобразования 12 В в 5 В. Даже если мы используем 2S LiPo аккумулятор, напряжение которого при полной нагрузке составляет около 7,4 В или 8,4 В, нам все равно необходимо использовать понижающий преобразователь. Понижающий преобразователь, который я буду использовать в этом проекте, может выдерживать ток до 8 А, но я бы рекомендовал использовать преобразователь от 10 до 15 А, просто чтобы быть уверенным, что у вас будет достаточно мощности и он не перегреется. В моем случае максимальное потребление тока, которое я заметил у робота при движении, составило около 6 ампер.

Необходимые компоненты

  1. Плата Arduino Mega 2560 (купить на AliExpress).
  2. Bluetooth модуль HC-05 (купить на AliExpress).
  3. Сервомотор SG90 (купить на AliExpress).
  4. Серводвигатель MG996R (21 шт.) (купить на AliExpress).
  5. 3S LiPo аккумулятор.
  6. Понижающий преобразователь постоянного тока в постоянный.

Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158

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

Теперь, если мы попытаемся соединить все вместе, это будет полный беспорядок из-за множества сервоподключений. Поэтому я разработал специальную печатную плату, используя бесплатное онлайн-программное обеспечение для проектирования схем EasyEDA. Эта печатная плата на самом деле будет действовать как Mega Shield Arduno для нашего робота-муравья, потому что мы сможем напрямую подключить ее поверх платы Arduino Mega. Я расположил соединения сервоприводов близко друг к другу и поставил рядом с ними два больших конденсатора, чтобы напряжение было более стабильным. Также я включил подключение модуля приемопередатчика NRF24L01 на случай, если мы захотим управлять роботом с помощью радиоуправления. Имеется несколько цифровых и аналоговых контактов, разъемы 5 В и заземления, два разъема для светодиодов, а также разъем для контроля напряжения батареи. Напряжение батареи 12 В будет проходить через делитель напряжения, состоящий из двух резисторов R1 и R2, который снизит напряжение ниже 5 В, чтобы аналоговый вывод мог безопасно его считывать. Таким образом, мы будем знать, когда аккумулятор необходимо будет подзарядить.

Печатная плата для робота-муравья в редакторе EasyEDA

Вот ссылка на  файлы проекта этой печатной платы. Итак, как только я закончил проектирование, я создал файл Gerber, необходимый для изготовления печатной платы.

Гербер-файл: Gerber_Hexapod Робот-муравей.

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

Внешний вид изготовленной печатной платы для нашего робота-муравья

Сборка электронной части проекта

Я начал с припаивания штекерных разъемов к печатной плате, которые используются для подключения к плате Arduino. Как только мы разместим разъемы контактов на нижней стороне, мы сможем использовать какую-нибудь пластину, удерживая контакты и переворачивая плату. Теперь нам нужно припаять их все к печатной плате. Закончив с этим, мы можем перейти к соединениям сервопривода, для которых нам также понадобятся штыревые разъемы.

Закрепление штыревых разъемов на печатной плате

На этом этапе мы фактически можем вставить разъемы контактов для всех соединений и использовать тот же метод, чтобы перевернуть печатную плату и припаять к ней все контакты. В конце нам нужно припаять резисторы, конденсаторы и клеммники. И всё, Arduino Mega Shield для нашего робота-муравья теперь готов. Теперь мы можем просто вставить его в плату Arduino.

Печатная плата в собранном виде

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

Установка выходного напряжения понижающего преобразователя

Помните, что основной вход на печатную плату должен иметь напряжение 5 В.

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

Объяснение кода программы

Ссылка на скачивание полного кода программы приведена в конце статьи, здесь же мы кратко рассмотрим основные фрагменты этого кода.

Для управления сервоприводами мы будем использовать базовую библиотеку Servo, а для связи Bluetooth нам также необходимо подключить библиотеку SoftwareSerial. Сначала нам нужно определить все сервообъекты, а также некоторые переменные, необходимые для программы.

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

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

Когда дело доходит до программирования движения гексапода, есть несколько способов, например, использование прямой или обратной кинематики. Эти методы включают в себя серьезную математику, где положение каждого сустава рассчитывается на основе входных данных для желаемого конечного положения тела. Однако я решил сделать задачу немного проще, потому что в любом случае сервоприводы, которые я использую, недостаточно хороши для такой задачи. Это потому, что мои сервоприводы — дешевая версия сервопривода MG996R. У них нет нужного крутящего момента, и они не всегда располагаются в нужном положении.

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

Принцип передвижения вперед робота-муравья

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

Итак, сначала два внешних сервопривода поднимают ногу, а третий сервопривод, соединенный с телом, начинает вращаться в определенном направлении. Когда третий сервопривод находится за 10 шагов до того, как он перестанет вращаться, мы начинаем перемещать два внешних сервопривода назад в то же положение, чтобы коснуться земли. На этом фаза маха завершается, или нога перемещается из исходного положения в конечное. Затем мы поворачиваем третий сервопривод из конечного положения в исходное, и это завершает фазу опоры. После того, как ветвь выполнит один цикл, счетчики сбрасываются, и ветвь будет повторять цикл снова и снова. Каждая итерация или шаг выполняется в разделе основного цикла, где также есть время задержки, которое контролирует скорость сервоприводов. Я сделал подобные функции для всех остальных ног, а также некоторые дополнительные функции для перемещения ног в противоположном направлении для достижения движений назад, влево и вправо. Аналогичным образом, используя счетчики для отслеживания шагов, я запрограммировал остальные функции, такие как перемещение головы, хвоста, челюстей и так далее.

Например, если мы хотим переместить робота вперед, нам нужно вызвать шесть пользовательских функций moveLeg(), которые будут постоянно повторяться в основном цикле.

Вы можете заметить, что три ноги смещены, поэтому, когда ноги номер 1, 3 и 5 находятся в фазе переноса, остальные три ноги, 2, 4 и 6, находятся в фазе опоры. Если мы хотим переместиться влево, мы вызываем соответствующие функции moveLeft().

Эти команды на самом деле поступают от модуля Bluetooth или специального приложения Android на нашем смартфоне.

Android-приложение для управления роботом-муравьем

Давайте теперь посмотрим на приложение и посмотрим, какие данные оно на самом деле отправляет на Arduino. Я создал приложение с помощью онлайн-приложения MIT App Inventor, и вот как оно работает. Более подробно про создание собственного Android-приложения для платы Arduino можно прочитать в этой статье.

Главный экран Android-приложения для управления роботом-муравьем

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

Android-приложение для управления роботом-муравьем в MIT App Inventor

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

Структурные блоки Android-приложения для управления роботом-муравьем в MIT App Inventor

Например, если мы нажмем кнопку «Вперед», блоки в операторе «if» будут выполнены. Это означает, что мы отправим число 2 на Arduino, и она выполнит набор функций для движения робота вперед. В то же время мы можем заметить, что меняем изображение кнопки на другую выделенную версию того же изображения. Если мы снова нажмем ту же кнопку, теперь блоки в операторе «else» будут выполнены, и это отправит число 0 в Arduino, который сбросит все счетчики и переместит робота в исходное положение. Также мы возвращаем исходное изображение этой кнопки. Поэтому я использовал тот же принцип для всех остальных кнопок.

Вот загружаемый файл вышеупомянутого проекта MIT App Inventor, а также приложение Android, готовое к установке на ваш смартфон: файл проекта приложения MIT Inventor для управления роботом-муравьем.

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

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

Если впереди больше нет объекта, атака будет прекращена, а если объект все еще присутствует и находится ближе к голове, робот нападет.

Полный код программы

Его вы можете скачать по следующей ссылке.

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

Видео, демонстрирующее процесс сборки и работу проекта

Источник статьи

(Проголосуй первым!)
Загрузка...
51 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *