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


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

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

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

Также на нашем сайте вы можете посмотреть аналогичные проекты роботизированных рук:

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

  1. Плата Arduino Uno (купить на AliExpress).
  2. Сервомоторы MG-996 (3 шт.) (купить на AliExpress).
  3. Сервомоторы SG 90 (3 шт.) (купить на AliExpress).
  4. Bluetooth модуль HC-05 (купить на AliExpress).
  5. Источник питания постоянного тока 5 В, 2 А.

3D модель роботизированной руки

Для начала я спроектировал манипулятор робота с помощью программного обеспечения для 3D-моделирования Solidworks. Рука имеет 5 степеней свободы.

3D модель роботизированной руки

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

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

3D-печать руки робота

Используя мой новый 3D-принтер Creality CR-10, я напечатал в 3D все детали руки робота Arduino.

Печать компонентов роботизированной руки на 3D-принтере Creality CR-10

Все детали для нашей руки были готовы всего за несколько часов.

Распечатанные компоненты роботизированной руки

Сборка роботизированной руки

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

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

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

Закрепление верхней части основания

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

Закрепление плеча роботизированной руки

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

Прикрепление резиновой ленты к плечу роботизированной руки

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

Прикрепление механизма захвата

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

Роботизированная рука в собранном виде

Схема проекта

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

Схема роботизированной руки на Arduino управляемой со смартфона

Для этого проекта нам нужна плата Arduino и Bluetooth-модуль HC-05 для связи со смартфоном. Управляющие контакты шести серводвигателей подключены к шести цифровым контактам платы Arduino.

Для питания сервоприводов нам нужно напряжение 5 В, но оно должно поступать от внешнего источника питания, поскольку Arduino не может выдержать тот ток, который все они могут потреблять. Источник питания должен выдерживать ток не менее 2 А. Итак, как только мы соединили все вместе, мы можем перейти к программированию платы Arduino и созданию приложения для Android.

Код программы роботизированной руки

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

Итак, сначала нам нужно подключить библиотеку SoftwareSerial для последовательной связи с модулем Bluetooth, а также библиотеку для работы с серводвигателями. Обе эти библиотеки включены в Arduino IDE, поэтому вам не нужно устанавливать их извне. Затем нам нужно определить шесть сервоприводов, модуль Bluetooth HC-05 и некоторые переменные для хранения текущего и предыдущего положения сервоприводов, а также массивы для хранения положений или шагов для автоматического режима.

В разделе настройки нам необходимо инициализировать сервоприводы и модуль Bluetooth и переместить руку робота в исходное положение. Мы сделаем это с помощью функции write(), которая просто перемещает сервопривод в любое положение от 0 до 180 градусов.

Далее в разделе цикла с помощью функции Bluetooth.available() мы постоянно проверяем, есть ли входящие данные со смартфона. Если это правда, с помощью функции readString() мы читаем данные как строку и сохраняем их в переменную dataIn. В зависимости от поступивших данных мы сообщим руке робота, что делать.

Управление Android-приложением

Давайте теперь посмотрим на приложение Android и посмотрим, какие данные оно на самом деле отправляет на Arduino.

Приложение Android для управления роботизированной рукой

Я создал приложение с помощью онлайн-приложения MIT App Inventor, и вот как оно работает. Сверху у нас есть две кнопки для подключения смартфона к Bluetooth-модулю HC-05. Затем слева у нас есть изображение руки робота, а справа у нас есть шесть ползунков для управления сервоприводами и один ползунок для управления скоростью.

Приложение Android для управления роботизированной рукой в режиме разработчика

Каждый ползунок имеет разное начальное, минимальное и максимальное значение, соответствующее суставам руки робота. В нижней части приложения у нас есть три кнопки: SAVE, RUN и RESET (СОХРАНИТЬ, ЗАПУСК и СБРОС), с помощью которых мы можем запрограммировать манипулятор робота на автоматический запуск. Ниже также есть метка, показывающая количество сохраненных шагов. Чтобы лучше понять этот раздел статьи рекомендую ознакомиться со статьей про создание приложения Android для проекта Arduino с помощью MIT App Inventor.

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

Соединения с модулем Bluetooth в приложении

Затем у нас есть блоки ползунков для управления положением сервоприводов и блоки кнопок для программирования руки робота. Поэтому, если мы изменим положение ползунка, используя функцию Bluetooth .SendText, мы отправим текст в Arduino. Этот текст состоит из префикса, который указывает, какой ползунок был изменен, а также текущее значение ползунка.

Ползунки в приложении для управления сервоприводами

Также вы можете скачать готовый файл проекта приложения MIT Inventor для управления роботизированной рукой.

Таким образом, в коде программы Arduino с помощью функции startWith() мы проверяем префикс каждых входящих данных и знаем, что делать дальше. Например, если префикс «s1», мы знаем, что нам нужно переместить сервопривод номер один. Используя функцию substring(), мы получаем оставшийся текст или значение позиции, преобразуем его в целое число и используем это значение для перемещения сервопривода в эту позицию.

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

Тот же метод используется для управления каждой осью манипулятора робота.

Под ними находится кнопка СОХРАНИТЬ. Если мы нажмем кнопку SAVE, положение каждого серводвигателя сохранится в массиве. При каждом нажатии индекс увеличивается, поэтому массив заполняется шаг за шагом.

Затем, если мы нажмем кнопку RUN, мы вызовем пользовательскую функцию runservo(), которая выполняет сохраненные шаги. Давайте посмотрим на эту функцию. Итак, здесь мы выполняем сохраненные шаги снова и снова, пока не нажмем кнопку RESET. С помощью цикла FOR мы пробегаем все позиции, хранящиеся в массивах, и заодно проверяем, есть ли у нас входящие данные со смартфона. Этими данными может быть кнопка «ПУСК/ПАУЗА», которая приостанавливает работу робота и при повторном нажатии продолжает автоматические движения. Кроме того, если мы изменим положение ползунка скорости, мы будем использовать это значение для изменения времени задержки между каждой итерацией в приведенных ниже циклах FOR, которые контролируют скорость серводвигателей.

Аналогично тому, как объяснялось ранее с этими операторами IF и циклами FOR, мы перемещаем сервоприводы в следующую позицию. Наконец, если мы нажмем кнопку RESET, мы очистим все данные из массивов до нуля, а также сбросим индекс до нуля, чтобы мы могли перепрограммировать манипулятор робота новыми движениями.

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

Вот полный код робота-манипулятора на Arduino:

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

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

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

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

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