Манипулятор с дистанционным управлением от перчатки и Arduino
Манипулятор с дистанционным управлением от перчатки и Arduino
 
Очень интересный проект для создания руки робота и управлением от руки человека с использованием Arduino. Мы будем использовать 5 сервоприводов и 5 датчиков изгиба для каждого пальца руки.



Шаг 1: Элементы

    Arduino Uno
    Датчик изгиба
 (5 шт)
  
  
Сервопривод (5 шт)
    
Пенопласт (Пенополистирол)
    
Перчатка
    
Провода (перемычки) и макетная плата
    
Аккумулятор
    
Резинка
    
Клей-пистолет и нож


Шаг 2: Создание манипулятора







 
    
В длину пальца, вырежем кусок из пенополистирола.
    
Разделим кусок на 3 части, как фаланги пальцев.
    
С помощью наждачной бумаги можно сделать их естественнее.
    
Далее связываем фаланги вместе с использованием резины. Мы должны оставить некоторое пространство между каждой фалангой.
    
Потом нужно просверлить все части в продольном направлении с помощью шила.
    
Через эти отверстия протягиваем леску или нить к верхней части пальца. В верхней части завяжем узел.
    
Дальше вырежьте кусок размером руки.
    
Присоедините пальцы.
    Вы
режьте кусок для установки сервомоторов.
    
Подключите все нити пальцев к сервомоторам.

Шаг 3: Создание перчатки

 
    
Вы можете использовать старую перчатку для этого.
    
Ставим датчики изгиба. Мы фиксировали их клеем.
    
Обратите внимание, что вы не должны приклеивать датчики полностью в продольном направлении. Должны быть    интервалы для комфортного перемещения датчика.

Шаг 4: Подключение к источнику питания




 

    
Контакты аккумулятора VCC / GND подключить к плате.
    
Arduino GND подключить к входу GND на макетной плате
    
Соедините сервоприводы следующим образом;

Оранжевый провод  - Входной сигнал

Красный провод  - Вход питания (VCC)

Коричневый провод - Первый вход (GND)

    
Все серводвигатели VCC и GND подключаются к VCC / GND входам макетной платы.
    
Сигнальные входы всех серводвигателей подключаются к Arduino Digital PWM 3-5-6-9-10 соответственно.
    
Датчики имеют два входа. Одним из них является GND, а другой является питание (аналоговый). Питание подключается к VCC путем деления с помощью резистора.

Шаг 5: Код

#include <Servo.h>
Servo servo_1;
Servo servo_2;
Servo servo_3;
Servo servo_4;
Servo servo_5;
int flex_1 = 0;
int flex_2 = 1;
int flex_3 = 2;
int flex_4 = 3;
int flex_5 = 4;
void setup()  
{
  servo_1.attach(5);
  servo_2.attach(3);
  servo_3.attach(9);
  servo_4.attach(10);
  servo_5.attach(6);
}

void loop()
{
  int flex_1_pos;  
  int servo_1_pos;  
  flex_1_pos = analogRead(flex_1); 
  servo_1_pos = map(flex_1_pos, 1020, 1023, 180, 0); 
  servo_1_pos = constrain(servo_1_pos, 0, 180);  
  servo_1.write(servo_1_pos);
  int flex_2_pos;  
  int servo_2_pos;  
  flex_2_pos = analogRead(flex_2); 
  servo_2_pos = map(flex_2_pos, 1020, 1023, 180, 0); 
  servo_2_pos = constrain(servo_2_pos, 0, 180);  
  servo_2.write(servo_2_pos);
  
  int flex_3_pos;  
  int servo_3_pos;  
  flex_3_pos = analogRead(flex_3); 
  servo_3_pos = map(flex_3_pos, 1020, 1023, 0, 180); 
  servo_3_pos = constrain(servo_3_pos, 0, 180);  
  servo_3.write(servo_3_pos);
 
  int flex_4_pos;  
  int servo_4_pos;  
  flex_4_pos = analogRead(flex_4); 
  servo_4_pos = map(flex_4_pos, 1020, 1023, 180, 0); 
  servo_4_pos = constrain(servo_4_pos, 0, 180);  
  servo_4.write(servo_4_pos);
  
  int flex_5_pos;  
  int servo_5_pos;  
  flex_5_pos = analogRead(flex_5); 
  servo_5_pos = map(flex_5_pos, 1020, 1023, 180, 0); 
  servo_5_pos = constrain(servo_5_pos, 0, 180);  
  servo_5.write(servo_5_pos);
 
}

    
Взять код (только скопировать и вставить)
    
Добавить библиотеку Servo
    
Определить сервоприводы
    
Определить датчики изгиба
    
Переменная для чтения значения из аналогового входа (датчики изгиба)
    
Считываем значение от датчиков изгиба
    
Масштаб его, чтобы использовать его с сервоприводом (значение от 0 до 180)
    
Установите положение сервопривода в соответствии с масштабируемым значением
    
Загрузите код на Arduino



{poster_avatar}  admin
4 027