Как сделать самодельный роботизированный манипулятор, управляемый Arduino и Bluetooth?

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



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

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



Как управлять роботизированной рукой с помощью Arduino?

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



Шаг 1: Сбор компонентов

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



  • Беспроводной последовательный приемопередатчик Bluetooth HC-05
  • Адаптер на 6 В
  • Перемычки
  • Макетная плата

Шаг 2: Изучение компонентов

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

Ардуино Нано Плата микроконтроллера, которая выполняет различные операции в разных схемах. Это требует Код C который сообщает доске, какие задачи и как выполнять. Он имеет 13 цифровых контактов ввода / вывода, что означает, что мы можем управлять 13 различными устройствами. Arduino Nano имеет ту же функциональность, что и Arduino Uno, но при довольно небольшом размере. Микроконтроллер на плате Arduino Nano ATmega328p. Если вы хотите управлять более чем 13 устройствами, используйте Arduino Mega.

Ардуино Нано



Беспроводной последовательный приемопередатчик Bluetooth HC-05 : Нам нужна беспроводная связь в этом проекте, поэтому мы будем использовать технологию Bluetooth, и для этого модуля, который будет использоваться, будет HC-05. Этот модуль имеет несколько программируемых скоростей передачи, но скорость передачи по умолчанию составляет 9600 бит / с. Его можно настроить как ведущий или как ведомый, тогда как другой модуль HC-06 может работать только в режиме ведомого. Этот модуль имеет четыре контакта. Один для VCC (5 В), а остальные три для GND, TX и RX. Пароль по умолчанию для этого модуля: 1234 или же 0000 . Если мы хотим обмениваться данными между двумя микроконтроллерами или с любым устройством с функцией Bluetooth, таким как телефон или ноутбук, HC-05 помогает нам в этом. Уже доступно несколько приложений для Android, что значительно упрощает этот процесс.

Модуль Bluetooth HC-05

Типичный Роботизированная рука состоит из нескольких сегментов и обычно имеет 6 суставов. Он содержит как минимум 4 шаговых двигателя, управляемых компьютером. Шаговые двигатели отличаются от других двигателей постоянного тока. Они двигаются точно с точностью до шага. Эти роботы-манипуляторы используются для выполнения различных операций. Мы можем управлять ими вручную с помощью пульта дистанционного управления или запрограммировать их на автономную работу.

Роботизированная рука.

Шаг 3: Сборка компонентов

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

  1. .Прикрепите плату Arduino Nano на макетную плату. Arduino будет получать питание через положительный и отрицательный провод адаптера.
  2. Поместите модуль Bluetooth на макетную плату. Включите модуль Bluetooth через Arduino. Подключите вывод Tx модуля Bluetooth к выводу Rx платы Arduino Nan и соедините вывод Rx модуля Bluetooth с выводом Tx платы Arduino Nano.
  3. Как известно, есть 4 шаговых двигателя. У каждого есть техническое название. Они называются Локоть , Плечо , База, и Захват . Vcc и земля всех двигателей будут общими и подключены к плюсу и минусу адаптера 6 В. Сигнальный контакт всех четырех двигателей будет подключен к контактам 5, 6, 9 и 11 Arduino Nano.
  4. Убедитесь, что вы сделали подключения в соответствии со следующей схемой.

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

Шаг 4: Начало работы с Arduino

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

  1. Загрузите последнюю версию Arduino IDE из Ардуино.
  2. Подключите плату Arduino Nano к ноутбуку и откройте панель управления. Затем нажмите на Оборудование и звук . Теперь нажмите на Устройства и принтеры. Здесь найдите порт, к которому подключена ваша плата микроконтроллера. В моем случае это COM14 но на разных компьютерах по-разному.

    Поиск порта

  3. Нажмите на меню инструментов и установите доску на Ардуино Нано из раскрывающегося меню.

    Доска настроек

  4. В том же меню инструментов установите порт на номер порта, который вы наблюдали ранее в Устройства и принтеры .

    Настройка порта

  5. В том же меню инструментов установите для процессора значение ATmega328P (старый загрузчик).

    Процессор

  6. Чтобы написать код для управления серводвигателями, нам нужна специальная библиотека, которая поможет нам написать несколько функций для серводвигателей. Эта библиотека прилагается вместе с кодом по ссылке ниже. Чтобы включить библиотеку, нажмите Эскиз> Включить библиотеку> Добавить ZIP. Библиотека.

    Включить библиотеку

  7. Загрузите приведенный ниже код и вставьте его в свою Arduino IDE. Нажми на загрузить кнопку, чтобы записать код на плату микроконтроллера.

    Загрузить

Чтобы скачать код, кликните сюда.

Шаг 5: загрузка приложения

Поскольку мы собрали всю схему и загрузили код на плату микроконтроллера. позволяет скачать мобильное приложение, которое будет работать как пульт дистанционного управления для манипулятора. Бесплатное приложение доступно в магазине Google Play. Название приложения - это Маленькая рука робота управления . Чтобы установить соединение Bluetooth, включите Bluetooth на своем мобильном телефоне. Зайдите в настройки и соедините свой мобильный телефон с модулем HC-05. После этого нажмите кнопку Bluetooth в приложении. Если он становится зеленым, это означает, что приложение теперь подключено и готово к работе с роботизированной рукой. Есть ползунки для настройки работы манипулятора по желанию.

Приложение

Шаг 6: понимание кода

Код хорошо прокомментирован и прост для понимания. Тем не менее, это кратко объясняется ниже.

1. В начале включена библиотека для написания кода для работы серводвигателей. Другая библиотека math.h включен для выполнения различных математических операций в коде. Четыре объекта также инициализируются для использования с четырьмя серводвигателями.

#include // библиотека arduino #include // стандартная библиотека c #define PI 3.141 Servo baseServo; Серво плечоServo; Серво elbowServo; Servo gripperServo; int command;

2. Затем объявляется, что конструкция принимает значения для серводвигателей основания, плеча и колена.

struct JointAngle {// объявление структуры int base; внутреннее плечо; внутренний локоть; };

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

int desireGrip; int gripperPos; int desireDelay; int servoSpeed ​​= 15; int готов = 0; struct JointAngle desireAngle; // желаемые углы сервоприводов

Четыре. установка void () - это функция, которая используется для установки контактов Arduino как INPUT или OUTPUT. Здесь, в этой функции, мы заявили, что выводы двигателей будут подключены к каким выводам Arduino. Также гарантируется, что Arduino не считывает последовательный ввод слишком долго. Исходное положение и скорость передачи также устанавливаются в этой функции. Baud Rate - это скорость, с которой плата микроконтроллера будет обмениваться данными с сервоприводами и подключенным модулем Bluetooth.

void setup () {Serial.begin (9600); baseServo.attach (9); // прикрепляет базовый сервопривод на выводе 9 к сервообъекту. плечоServo.attach (10); // прикрепляет сервопривод плеча на выводе 9 к сервообъекту elbowServo.attach (11); // прикрепляет сервопривод колена на штыре 9 к сервообъекту gripperServo.attach (6); // присоединяет сервопривод захвата на выводе 9 к сервообъекту Serial.setTimeout (50); // гарантирует, что arduino не считывает серийный номер слишком долго Serial.println ('start'); baseServo.write (90); // исходное положение сервоприводов плечоServo.write (150); elbowServo.write (110); готов = 0; }

5. servoParallelControl () - это функция, которая используется для определения текущего положения манипулятора и перемещения его в соответствии с командой, подаваемой через мобильное приложение. Если текущее положение меньше фактического, рука переместится вверх и наоборот. Эта функция вернет значение текущей позиции и скорость сервопривода.

int servoParallelControl (int thePos, Servo theServo, int theSpeed) {int startPos = theServo.read (); // считываем текущую позицию int newPos = startPos; // int theSpeed ​​= speed; // определяем положение позиции относительно команды // если текущая позиция меньше фактического перемещения вверх if (startPos (thePos + 5)) {newPos = newPos - 1; theServo.write (newPos); задержка (скорость); возврат 0; } else {возврат 1; }}

6. пустой цикл () - это функция, которая многократно выполняется в цикле. Эта функция считывает данные, поступающие последовательно, и сохраняет угол каждого сервопривода в структуре. Первоначально состояние всех сервоприводов установлено на ноль. Здесь функция servoParallelControl () вызывается и в него передаются параметры. эта функция вернет значение, и оно будет сохранено в переменной статуса.

void loop () {если (Serial.available ()) {готов = 1; желаемыйAngle.base = Serial.parseInt (); желаемыйAngle.shoulder = Serial.parseInt (); желаемыйAngle.elbow = Serial.parseInt (); желаемыйGrip = Serial.parseInt (); желаемыйDelay = Serial.parseInt (); if (Serial.read () == ' n') {// если последний байт равен 'd', прекратить чтение и выполнить команду 'd' означает 'готово' Serial.flush (); // очищаем все остальные команды из буфера // отправляем завершение команды Serial.print ('d'); }} int status1 = 0; int status2 = 0; int status3 = 0; int status4 = 0; int done = 0; while (done == 0 && ready == 1) {// перемещаем сервопривод в желаемое положение status1 = servoParallelControl (желаемыйAngle.base, baseServo, желаемыйDelay); status2 = servoParallelControl (желаемый угол. плечо, плечоServo, желаемая задержка); status3 = servoParallelControl (requiredAngle.elbow, elbowServo, желаемыйDelay); status4 = servoParallelControl (желаемыйGrip, gripperServo, желаемыйDelay); if (status1 == 1 & status2 == 1 & status3 == 1 & status4 == 1) {done = 1}} // конец while}

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