Создаем роботизированную руку на Ардуино, которую можно контролировать, используя только ваш смартфон или планшет на Андроид.
Шаг 1. Детали, которые понадобятся
Создание роботов очень популярный и вполне забавный процесс среди любителей, но управлять любым роботом очень нелегко.
К вопросу создания роботов нужно подходить постепенно, поэтому мы начнем с создания роботизированной руки, которую можно контролировать, используя только ваш смартфон или планшет на Android.
Хорошая новость заключается в том, что нужно только собрать руку, запрограммировать Arduino, а приложение уже доступно для загрузки бесплатно.
- Серводвигатели - 4 штуки
- Нарезанный кусок картона - сделать "тело".
- USB OTG (на фото ниже, выбрать любой).
- И, конечно, плата Arduino (любая).
- Несколько перемычек, чтобы сделать соединения.
- Для питания серводвигателей используется 9-вольтная батарея.
В уроке использованы микросерверы SG90, но любая модель или размер вполне подойдут. Вы можете использовать до 5 сервоприводов для этого робота, у нас всего 4.
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. Итог
Всё готово.
Включите сервоприводы и используйте приложение для поворота каждого двигателя роботизированной руки.
Все достаточно просто, главное правильно собрать все детали "руки".
18 ноября 2020 в 04:34
Очень круто у меня по вашей схеме погорела плата питания для макетки и один из серво двигателей. И всё из за того что вы указали что надо соединять минусовой чёрный провод от линии кроны в GND на ардуино. Без этого провода всё работает отлично и ничего не горит но уже минус две части из моих комплектующих. Спасибо
18 ноября 2020 в 21:47
Василий, данный урок не наш. В конце каждого урока, если это перевод, указана ссылка на оригинал. Вы можете перейти по ссылке и написать ваши претензии автору проекта.
23 апреля 2021 в 13:06
А какие параметры данного устройства ?
Ну там условия эксплатаци, максимальное потребление и т.д.