Управляемая рука робота с помощью смартфона на Ардуино

Создание роботов очень популярный и вполне забавный процесс среди любителей, но управлять любым роботом очень нелегко. К вопросу создания роботов нужно подходить постепенно, поэтому мы начнем с создания роботизированной руки, которую можно контролировать, используя только ваш смартфон или планшет на Android.

Хорошая новость заключается в том, что нужно только собрать руку, запрограммировать Arduino, а приложение уже доступно для загрузки бесплатно.

Шаг 1. Детали, которые понадобятся

  1. Серводвигатели - 4 штуки (в уроке использованы микросерверы SG90, но любая модель или размер вполне подойдут). Вы можете использовать до 5 серво для этого робота, у нас всего 4.
  2. Нарезанный кусок картона - сделать "тело".
  3. USB OTG (на фото ниже, выбрать любой).
  4. И, конечно, плата Arduino (любая).
  5. Несколько перемычек, чтобы сделать соединения.
  6. Для питания серводвигателей используется 9-вольтная батарея.

USB On-the-Go или просто OTG – это адаптер, который позволяет подключать к вашему смартфону переферийные устройства, такие как клавиатура, мышь, контроллеры, жесткие диски и прочее. Этот переходник фактически превращает ваше устройство в компьютер.

Шаг 2. Создание основы руки робота

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

Процесс подробнее лучше передан в видео:

Шаг 3. Создание щупальцев (пальцев)

Щупальца или пальцы робота Ардуино для захвата предметов сделали используя соломку или трубку для напитков. И добавил простую нитку, леску или веревку, таким образом что когда её потянуть, захват будет закрыт.

Шаг 4. Собираем руку

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

Шаг 5. Цепь

Схема очень простая, вам просто нужно включить серводвигатели как на схеме выше. Ардуино будет принимать питание от вашего телефона через кабель USB OTG. Не беспокойтесь, потребление энергии очень низкое.

Шаг 6. Загружаем Андроид приложение

Вы можете сами найти приложение в Google Play (магазине приложений от Google).

Название приложения - ESC & Servo Controller. Загрузить себе на смартфон приложение можно по этой ссылке. Затем установите приложение.

Шаг 7. Программирование Arduino

Вы можете скачать или скопировать код ниже:

# include <Servo.h>
//PWM OUTPUT VARIABLES
Servo pin2;
Servo pin3;
Servo pin4;
Servo pin5;
Servo pin6;
//SERIAL USB BUFFER
char inData[ 65 ]; // Allocate some space for the string
char inChar; // Where to store the character read
byte index = 0 ; // Index into array; where to store the character
void setup () {
//START PIN OUTPUT
pin2. attach ( 2); // attaches the servo on pin 9 to the servo object
pin3. attach ( 3);
pin4. attach ( 4);
pin5. attach ( 5);
pin6. attach ( 6);
//SEND MINIMAL VAUE 1000, REGUIRED FOR ESC TO ARM (max is 2000)
pin2. writeMicroseconds (1000 );
pin3. writeMicroseconds (1000 );
pin4. writeMicroseconds (1000 );
pin5. writeMicroseconds (1000 );
pin6. writeMicroseconds (1000 );
//INIT SERIAL COMMUNICATION WITH ANDROID
Serial. begin (115200 );
}
void loop () {
if (Serial. available () > 0 ){
//WAIT FOR INCOMMING DATA BUFFER TO FILL
if (index < 24){
inChar = Serial. read (); // Read a character
inData[ index ] = inChar; // Store it
index ++; // Increment where to write next
if (inChar == 'X' )
index = 0 ;
inData[ index ] = '\0' ; // Null terminate the string
}
}
if (index ==24 ){
index = 0;
//STRING LOOKS LIKE "A100B96C20D0E" WHERE LETTERS ACT AS DELIMINATOR
//STRING CAN CONTAIN SINGLE VALUE LIKE "B96C"
String buf = String (inData);
int ia = buf. indexOf ( "A", 0);
int ib = buf. indexOf ( "B", 0);
int ic = buf. indexOf ( "C", 0);
int id = buf. indexOf ( "D", 0);
int ie = buf. indexOf ( "E", 0);
int iff = buf. indexOf ("F" , 0 );
Serial. print ("|" );
//A?B
if (ia!=- 1 && ib!=- 1){
//1. CONVERT VALUE TO INTEGER
//2. CONVERT 0-100 TO 1000 - 2000
//3. WRITE TO ARDUINO PIN NUMBER 2
pin2. writeMicroseconds (map (buf. substring (ia+ 1, ib). toInt (), 1, 100 , 1000 , 2000 ));
//SEND RESPONSE TO ANDROID
Serial. print ( "RESPONSE:OK" );
}
//B?C
if (ib!=- 1 && ic!=- 1){
pin3. writeMicroseconds (map (buf. substring (ib+ 1, ic). toInt (), 1, 100 , 1000 , 2000 ));
//Serial.print("PIN3 OK");
}
//C?D
if (ic!=- 1 && id!=- 1){
pin4. writeMicroseconds (map (buf. substring (ic+ 1, id). toInt (), 1, 100 , 1000 , 2000 ));
//Serial.print("PIN4 OK");
}
//D?E
if (id!=- 1 && ie!=- 1){
pin5. writeMicroseconds (map (buf. substring (id+ 1, ie). toInt (), 1, 100 , 1000 , 2000 ));
//Serial.print("PIN5 OK");
}
//E?F
if (ie!=- 1 && iff!=- 1){
pin5. writeMicroseconds (map (buf. substring (ie+ 1, iff). toInt (), 1 , 100 , 1000 , 2000 ));
//Serial.print("PIN6 OK");
}
Serial. print ("|00" );
Serial. print ("\n" );
}
}
void logg (){
}

Шаг 8. Подключаем OTG и Ардуино к телефону

Подключите кабель OTG к кабелю программирования Arduino (USB B), а затем подключите провод к телефону.

Приложение автоматически запустится.

Нажмите «ОК» и скройте его. После подключения появится сообщения «port open».

Шаг 9. Итог

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

Все достаточно просто, главное правильно собрать все детали "руки".

Ардуино+