Введение:
В этой статье мы расскажем, как сделать простенького робота-манипулятора с управлением по Bluetooth.
К будущему устройству на этапе создания сразу были предъявлены следующие требования:
· сравнительно небольшие габариты как платы, так и устройства в целом;
· использование максимально доступных компонентов;
· презентабельный внешний вид.
Для работы нам понадобится:
компьютер с установленным ПО Arduino IDE,
5 сервоприводов;

Bluetooth модуль HC-05,

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

соединительные провода, провод питания,
Powerbank, смартфон, онлайн редактор RemoteXY,
детали из конструктора.

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

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

Не все детали подошли точно, некоторые пришлось подточить и просверлить отверстия в нужных местах. Первый сервопривод отвечает за поворот относительно платформы, второй и третий отвечает за движение ,,плечом" манипулятора, четвертый сервопривод отвечает за вращение захвата, а пятый - за захват.
После проверки работоспособности сервопривода в различных режимах, мы начали разработку алгоритма управления сервоприводами манипулятора и его реализацию в среде Arduino IDE.
Алгоритм работы манипулятора
1. Определяем выводы для пяти сервоприводов;
2. Определяем выводы для модуля bluetooth;
3. Устанавливаем каждый сервопривод в среднее положение;
4.Отправляем по Bluetooth-каналу данные со смартфона на Arduino используя предустановленную программу RemoteXY;
5.Используя онлайн редактор RemotXY создаем интерфейс управления. Он состоит из двух джойстиков имеющих по две координатных оси для управления манипулятором и слайдера для управления захватом.

Выбираем в настройках проекта целевую платформу 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);
}
Окончательная модель выглядит так:

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