Робот Arduino на колесах, способный двигаться в любом направлении


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

Робот Arduino на колесах, способный двигаться в любом направлении

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

Я на самом деле спроектировал и напечатал эти колеса на 3D-принтере, потому что их покупка может оказаться немного дорогой. Они работают довольно хорошо, и я должен сказать, что управлять этой роботизированной платформой очень весело. Мы можем управлять роботом по беспроводной сети, используя модули радиопередатчика NRF24L01, или, в моем случае, я использую свой RC-передатчик (пульт ДУ), который я сделал в одном из своих предыдущих проектов.

Робот на Arduino с пультом управления к нему

Также я сделал возможным управление с помощью смартфона через Bluetooth-связь. Я сделал специальное приложение для Android, с помощью которого мы можем управлять роботом Mecanum на колесах, чтобы он двигался в любом направлении. Также с помощью ползунка в приложении мы можем контролировать скорость передвижения.

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

Мозгом этой роботизированной платформы является плата Arduino Mega, которая управляет каждым колесом индивидуально. Каждое колесо прикреплено к шаговому двигателю NEMA 17, и я добавил в приложение еще одну интересную функцию, с помощью которой мы можем запрограммировать робота на автоматическое движение. С помощью кнопки «Сохранить» мы можем сохранить каждую позицию или шаг, а затем робот сможет автоматически запускать и повторять эти шаги. С помощью той же кнопки мы можем приостановить автоматическую операцию, а также сбросить или удалить все шаги, чтобы сохранить новые.

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

  1. Плата Arduino Mega 2560 (купить на AliExpress).
  2. Bluetooth модуль HC-05 (купить на AliExpress).
  3. Модуль nRF24L01 (купить на AliExpress).
  4. Шаговый двигатель NEMA 17 (купить на AliExpress).
  5. DRV8825 или A4988 Stepper Driver Module (модуль драйвера шагового двигателя) (купить на AliExpress).
  6. Li-Po аккумулятор.

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

3D модель робота

Для начала я спроектировал этого робота Mecanum с помощью программного обеспечения для 3D-моделирования. Базовая платформа этого робота представляет собой простую коробку, которую я сделаю из плит МДФ толщиной 8 мм.

3D-модель робота Arduino на колесах

К этой платформе прикреплены четыре шаговых двигателя, а колеса Mecanum прикреплены к валам двигателя.

Вы можете получить эту 3D-модель, а также  файлы STL для 3D-печати на сайте Cults3D.

Как работают колеса Mecanum

Колесо Mecanum представляет собой колесо с роликами, прикрепленными по его окружности. Эти ролики расположены по диагонали или под углом 45 градусов к оси вращения колеса. Это заставляет колесо прилагать силу в диагональном направлении при движении вперед или назад.

Принцип работы колес Mecanum

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

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

Вот краткая демонстрация того, как робот движется в зависимости от направления вращения колес.

Принцип установки колес Mecanum на робота

Если все четыре колеса движутся вперед, результирующее движение робота будет вперед, и наоборот, если все колеса движутся назад, робот будет двигаться назад. Для движения вправо правые колеса должны вращаться внутри робота, а левые колеса должны вращаться снаружи робота. Результирующая сила, возникающая из-за диагонально расположенных роликов, заставит робота двигаться вправо. То же самое, но наоборот, происходит при движении влево. С помощью этих колес мы также можем добиться движения в диагональном направлении, вращая только два колеса.

Изготовление робота Mecanum

Тем не менее, теперь позвольте мне показать вам, как я построил эту роботизированную платформу. Как я уже упоминал, для изготовления основания платформы я использую плиты МДФ толщиной 8 мм. Используя настольную пилу, сначала я вырезал все детали по размерам 3D-модели.

Вырезка деталей из плиты МДФ

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

Сборка платформы робота

Конечно, вы также можете напечатать эту базовую платформу на 3D-принтере вместо того, чтобы делать ее из МДФ, поэтому я включу ее 3D-файл в статью на веб-сайте. Наконец, я покрасил основу и крышку из баллончика белым цветом.

Окраска платформы робота в белый цвет

Далее идут колеса Mecanum. Как я уже говорил ранее, эти колеса могут стоить достаточно дорого, поэтому я решил спроектировать и напечатать свои собственные на 3D-принтере. Колеса состоят из двух частей: внешней и внутренней, которые скреплены между собой болтами и гайками М4. Они имеют по 10 роликов каждый и муфту вала, специально разработанную для шагового двигателя NEMA 17.

Компоненты колес Mecanum

Печать деталей колес на 3D принтере

Я распечатал все детали колес Mecanum на своем 3D-принтере Creality CR-10.

Напечатанные детали колес

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

Изготовление валов для роликов

Я начал сборку колеса Mecanum с закрепления двух сторон и муфты вала четырьмя болтами M4 и гайками. Длина болтов должна составлять 45 мм.

Сборка колеса Mecanum

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

Установка вала в колесо

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

Установка ролика в колесо

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

Колесо с установленными 10 роликами

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

Нанесение клея на колесо

Итак, когда колеса готовы, мы можем перейти к сборке всего робота. Сначала нам нужно прикрепить шаговые двигатели к базовой платформе. Для их фиксации я использовал болты М3 длиной 12 мм.

Прикрепление шагового двигателя к платформе робота

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

Прикрепление колеса к валу двигателя

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

Прикрепление верхней крышки к основанию робота

На задней стороне основания я сделал отверстие диаметром 20 мм для последующего крепления выключателя питания, а также отверстие диаметром 5 мм для крепления светодиода.

Принципиальная электрическая схема робота

Теперь можно перейти к электронике. Вот полная принципиальная схема этого проекта.

Схема робота на Arduino, способного двигаться в любом направлении

Итак, мы будем управлять четырьмя шаговыми двигателями NEMA 17, используя четыре шаговых драйвера DRV8825, или мы также можем использовать шаговые драйверы A4988. Для питания шаговых двигателей и всего робота мы будем использовать источник питания 12 В, а в моем случае я буду использовать литий-полимерную батарею 3S, которая обеспечивает напряжение около 12 В. Для радиосвязи мы используем модуль NRF24L01 , а для связи Bluetooth — модуль Bluetooth HC-05. Я также включил простой делитель напряжения, который будет использоваться для контроля напряжения батареи, и подключение светодиода для индикации, когда напряжение батареи упадет ниже 11 В.

Я также включил специальный стабилизатор напряжения 5 В, который может обеспечить ток около 3 А. Это необязательно, но в будущем видео я планирую объединить этот проект с моим проектом Arduino Robot Arm, и для этой цели мне понадобится напряжение 5 В для управления его серводвигателями.

Проектирование печатной платы для проекта

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

Модель печатной платы для робота в редакторе EasyEDA

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

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

Изготовленная печатная плата для робота

Сборка печатной платы

Хорошо, теперь мы можем двигаться дальше и собирать печатную плату. Сначала я начал с пайки более мелких компонентов: резисторов и конденсаторов. Затем я вставил и припаял штыревые разъемы к печатной плате, которые будут использоваться для подключения к плате Arduino.

Пайка на печатную плату мелких компонентов

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

Установка штыревых разъемов на печатную плату

И всё, печатная плата готова и можно переходить к вставке драйверов и подключению к ней моторов. Сначала я поставил перемычки для выбора разрешения шага. Я выбрал 16-ступенчатое разрешение, подключив контакты MS3 драйверов к 5 В.

Установка драйверов двигателей на печатную плату

Затем поверх них я разместил драйвера DRV8825, а также подключил модуль NRF24L01 и модуль Bluetooth HC-05. Теперь мы можем просто прикрепить печатную плату к плате Arduno.

Установка нашей печатной платы поверх платы Arduno

Затем я подключил аккумулятор к соответствующему клеммному блоку и поместил их в базовую платформу.

Подключение аккумулятора к электронной части проекта

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

Установка светодиодного индикатора заряда батареи

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

Подключение двигателей к печатной плате

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

Завершение сборки робота

Код Arduino для робота Mecanum

Теперь осталось только взглянуть на код Arduino. На самом деле существует два отдельных кода Arduino. Этот код предназначен для управления роботом с помощью модулей NRF24L01, а другой — для управления роботом с помощью смартфона.

Код Arduino для управления роботом с помощью модулей NRF24L01

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

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

Таким образом, в зависимости от полученных данных, например, если левый джойстик перемещается вперед, его значение будет больше 160, и в таком случае будет вызвана пользовательская функция moveForward(). Если мы взглянем на эту функцию, то увидим, что все, что она делает, это устанавливает положительную скорость двигателей. Для движения назад скорость устанавливается отрицательной. Таким образом, для движения во всех других направлениях нам просто нужно правильно настроить вращение колес, как объяснялось вначале.

Для выполнения этих команд в разделе цикла нам нужно вызвать функции runSpeed() для всех шаговых двигателей. В секции цикла (loop) мы также считываем аналоговый вход с делителя напряжения, поступающего от батареи, и по этому значению мы можем узнать, когда напряжение батареи упадет ниже 11 В, чтобы мы могли включить индикаторный светодиод.

Код Arduino для управления роботом с помощью смартфона

Описание: этот код для управления роботом с помощью приложения Android очень похож на предыдущий и работает по такому же принципу. Здесь вместо радиомодуля нам нужно подключить модуль Bluetooth и инициализировать его связь в разделе настройки. Итак, опять же, сначала мы считываем входящие данные со смартфона или Android-приложения и по ним указываем роботу, в каком направлении двигаться.

Если мы посмотрим на приложение для Android, то увидим, что оно просто отправляет числа от 0 до 15 через Bluetooth при нажатии кнопок.

Структурная схема приложения для Android для управления роботом

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

Внешний вид приложения для Android для управления роботом

По следующей ссылке вы можете скачать это приложение, а также редактируемый файл проекта: файлы приложений для робота Arduino Mecanum Wheels.

Для программирования автоматического движения робота с помощью этого приложения, когда мы нажимаем кнопку «СОХРАНИТЬ» (Save), мы просто сохраняем текущие положения шаговых двигателей в массивы. Затем, когда мы нажимаем кнопку «RUN», мы вызываем пользовательскую функцию runSteps(), которая выполняет или прогоняет все сохраненные шаги, используя некоторые циклы for и while.

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

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

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

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

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