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

Bluetooth модуль HC-05,

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

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

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

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

Не все детали подошли точно, некоторые пришлось подточить и просверлить отверстия в нужных местах. Первый сервопривод отвечает за поворот относительно платформы, второй и третий отвечает за движение ,,плечом" манипулятора, четвертый сервопривод отвечает за вращение захвата, а пятый - за захват.
После проверки работоспособности сервопривода в различных режимах, мы начали разработку алгоритма управления сервоприводами манипулятора и его реализацию в среде Arduino IDE.
Алгоритм работы манипулятора
Определяем выводы для пяти сервоприводов;
Определяем выводы для модуля bluetooth;
Устанавливаем каждый сервопривод в среднее положение;
Отправляем по Bluetooth-каналу данные со смартфона на Arduino используя предустановленную программу RemoteXY;
Используя онлайн редактор 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); }
Окончательная модель выглядит так:

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