Введение:

В этой статье мы расскажем, как сделать простенького робота-манипулятора с управлением по Bluetooth.

К будущему устройству на этапе создания сразу были предъявлены следующие требования:

· сравнительно небольшие габариты как платы, так и устройства в целом;

· использование максимально доступных компонентов;

· презентабельный внешний вид.

Для работы нам понадобится:

компьютер с установленным ПО Arduino IDE,

5 сервоприводов;

Сервопривод
Сервопривод

Bluetooth модуль HC-05,

Bluetooth модуль HC-05
Bluetooth модуль HC-05

Arduino совместимый контроллер Arduino Mega,

Arduino Mega на колёсной платформе
Arduino Mega на колёсной платформе

соединительные провода, провод питания,

Powerbank, смартфон, онлайн редактор RemoteXY,

детали из конструктора.

Детали конструктора
Детали конструктора

Процесс сбо��ки:

Собираем из двух сервоприводов плечо:

Плечо с двумя сервоприводами
Плечо с двумя сервоприводами

Затем собираем "шею" и "руку" манипулятора, устанавливаем на колёсную платформу:

Вид сбоку
Вид сбоку

Не все детали подошли точно, некоторые пришлось подточить и просверлить отверстия в нужных местах. Первый сервопривод отвечает за поворот относительно платформы, второй и третий отвечает за движение ,,плечом" манипулятора, четвертый сервопривод отвечает за вращение захвата, а пятый - за захват.

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

Алгоритм работы манипулятора

1. Определяем выводы для пяти сервоприводов;

2. Определяем выводы для модуля bluetooth;

3. Устанавливаем каждый сервопривод в среднее положение;

 4.Отправляем по Bluetooth-каналу данные со смартфона на Arduino используя предустановленную программу RemoteXY;

5.Используя онлайн редактор RemotXY создаем интерфейс управления. Он состоит из двух джойстиков имеющих по две координатных оси для управления манипулятором и слайдера для управления захватом.

Редактор RemoteXY
Редактор RemoteXY

Выбираем в настройках проекта целевую платформу Arduino (SoftwareSerial), library version и формируем исходный код нашего интерфейса. Загружаем библиотеку RemoteXY  и подключаем ее к Arduino IDE (Скетч/Импортировать библиотеку/Add library...).

Реализация в среде Arduino IDE:

#define REMOTEXY_MODE__HARDSERIAL//используем аппаратное последовальтельное соединение

#include <SoftwareSerial.h>

#include <RemoteXY.h>//подключаем библиотеку RemoteXY

// RemoteXY настройки соединения

#define REMOTEXY_SERIAL Serial

#define REMOTEXY_SERIAL_SPEED 9600

// RemoteXY конфигурация

#pragma pack(push, 1)

uint8_t RemoteXY_CONF[] =   // 36 байтов

  { 255,5,0,0,0,29,0,16,31,0,5,0,11,15,30,30,2,26,31,5,

  0,60,15,30,30,2,26,31,4,0,47,17,7,18,2,26 };

// эта структура определяет все переменные и события вашего интерфейса управления

struct {

  // входные переменные

  int8_t joystick_left_x; // от -100 до 100  (создаём переменные джойстиков)

  int8_t joystick_left_y; // от -100 до 100  

  int8_t joystick_right_x; //от  -100 до 100  

  int8_t joystick_right_y; // от  -100 до 100  

  int8_t slider_1; // =0..100 позиция слайдера

  // другие переменные

  uint8_t connect_flag;  // =1, если подключен провод, иначе =0

} RemoteXY;

#pragma pack(pop);

//Настройки RemoteXY закончились

#include <Servo.h>//подключаем библиотеку Servo

Servo servo3;//нумеруем сервоприводы в зависимости от пинов

Servo servo4;

Servo servo5;

Servo servo6;

Servo servo7;

 

void setup()

{

  servo6.attach(6);//серво поворота захвата(назначаем пины сервоприводам)

  servo7.attach(7);//серво захват

  servo5.attach(5);//серво подъема опускания

  servo4.attach(4);//серво вперед назад

  servo3.attach(3);//серво поворот манипулятора

  servo3.write(90);//начальные положения сервоприводов

  servo4.write(90);

  servo5.write(90);

  servo6.write(90);

  servo7.write(90);

  delay(2000);//задержка 2 секунды

  RemoteXY_Init (); //Инициализация джойстиков и слайдера

  RemoteXY.joystick_right_x=0; //начальные положения джойстиков

  RemoteXY.joystick_right_y=0;

  RemoteXY.joystick_left_x=0;

  RemoteXY.joystick_left_y=0;

  RemoteXY.slider_1=50;//начальное положение слайдера

}

void loop()

{

  RemoteXY_Handler ();//Обработчик 

  servo6.write(RemoteXY.joystick_right_x*0.9+90);//управление сервоприводами 

  servo5.write(RemoteXY.joystick_right_y*0.9+90);

  servo4.write(RemoteXY.joystick_left_y*0.9+90);

  servo3.write(RemoteXY.joystick_left_x*0.9+90);

  servo7.write(RemoteXY.slider_1*1.8);

}

Окончательная модель выглядит так:

Окончательная модель
Окончательная модель

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