123
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 6123456»
Модератор форума: nightmare, Huntswarrior, Aleks_Crow, {{TNT}} 
Форум » Проекты по робототехнике » Частные проекты » Робот на ардуино (*icon-0*)
Робот на ардуино
Отправлено 24.04.2012 - 22:171
Участник
79 сообщений
Мужчина

Решил сделать робота на Arduino. Так как на всех сайтах предлагающих даныый контроллер был обещан быстрый старт и доступность даже новичку я выбрал именно его. Для изучения начала основ программирования Ардуина использовал книгу Улли Соммера, проект робота IE-POPBOT (есть на Русском языке на сайте Терраэлектроника), статьи с сайта http://robocraft.ru , ну и конечно http://www.google.ru
Итак, для будущего робота я приобрел следующие детали:
1. Arduino Uno.
2. Драйвер моторов L-Motor Shield. Как я понял делает Калининград. (http://robocraft.ru/shop/index.php?route=product/product&product_id=172). Здесь же выложена для него библиотека. Достаточно не высокая стоимость и хороший функционал.
3. Колеса с мотор редуктором в комплекте (http://www.aliexpress.com/fm-store/806307/211015222-505652927/2pcs-lot-High-quality-tyre-Reduction-motor-fasteners--TT-motor-intelligent-car-wheels.html).
4. Серво моторы SG-50. Выписывал то же с Китая. Минимум 4 шт. (http://www.aliexpress.com/fm-store/206278/211153634-478942769/free-shipping-4pcs-5g-High-Torque-Micro-coreless-motor-Servo-SG50.html).
5. ИК дальномер SHARP GP2D120. Покупал в магазине, но он довольно распространен и его легко можно найти в Интернет магазинах России, так же как и колеса и сервы.
Платформу сделал из оргстекла, его легко можно приобрести в рекламной мастерской.
Соединительные кронштейны сделаны из оцинковки (обрезки от водоотливов). Легко режутся ножницами по металлу и можно загнуть под любой угол. В качестве источника питания использовал 6 аккумуляторов ААА, и два блока под них один на 4, другой на 2 штуки.
В качестве передней опоры использовал мебельную колесную опору за 15 руб.
Вот что получилось:

Робот, при подъезду к препятсвию на расстояние 10 см. остонавливается, измеряет расстояние до препятствия с право, с лево, и выбирает приоритетное направление. Всего четыре варианта действий.

Вот на него код (вполне вероятно, что корявый, но он работает)
Code
#include <Servo.h>
#include <LMotorShield.h>

LMotorShield lms;
int gp2;
int gp3;
int gp4;
int gp5;
int gp24;
int gp25;

void setup() {
{
Serial.begin(9600);
lms.begin(LMS_SERVOS);
}
pinMode(3,OUTPUT); // Motor A скорость
pinMode(7,OUTPUT); // Motor A направление
pinMode(11,OUTPUT); // Motor B скорость
pinMode(8,OUTPUT); // Motor B направление
pinMode(2,OUTPUT); // Motor A2
pinMode(4,OUTPUT); // Motor B1
}
void Forward() { // Подпрограмма движения робота вперед
digitalWrite(3,HIGH);
digitalWrite(7,LOW);
digitalWrite(11,HIGH);
digitalWrite(8,LOW);
}
void Backward(){ // Подпрограмма движения робота назад
digitalWrite(3,HIGH);
digitalWrite(7,HIGH);
digitalWrite(11,HIGH);
digitalWrite(8,HIGH);
}
void motorStop(){ // Подпрограмма остановки мотора

digitalWrite(4,HIGH);
digitalWrite(2,HIGH);
}
void motorRun(){ // Подпрограмма запуска мотора

digitalWrite(2,LOW);
digitalWrite(4,LOW);
}
void Spin_Left(){ // Вращение в лево
digitalWrite(11,HIGH);
digitalWrite(8,LOW);
digitalWrite(3,HIGH);
digitalWrite(7,HIGH);
}
void Spin_Right(){ // Вращение в право
digitalWrite(3,HIGH);
digitalWrite(7,LOW);
digitalWrite(11,HIGH);
digitalWrite(8,HIGH);
}
void loop()
{
int i;
for (i=0;i<5;i++){ // Повторить 5 раз для фильтрации шума
gp2=(gp2+analogRead(0));
}
gp2=gp2/5;
gp3=(2914/(gp2+5))+1;
Serial.println(gp3);

if (gp3<10){
motorStop();

lms.servoWrite(1,90);
delay(500);

lms.servoWrite(1,10);
delay(500);
for (i=0;i<5;i++){ // Повторить 5 раз для фильтрации шума
gp24=(gp24+analogRead(0));
}
gp24=gp24/5;
gp4=(2914/(gp24+5))+2;
Serial.println(gp4);

lms.servoWrite(1,175);
delay(500);
int i;
for (i=0;i<5;i++){ // Повторить 5 раз для фильтрации шума
gp25=(gp25+analogRead(0));
}
gp25=gp25/5;
gp5=(2914/(gp25+5))+2;
Serial.println(gp5);

lms.servoWrite(1,90);
delay(500);

if (gp4<12&&gp5<12){
motorRun();
Backward();
delay(1000);
Spin_Left();
delay(1118);
}
else {
if (gp4<12){
motorRun();
Forward();
delay(300);
Spin_Left();
delay(569);
}
if (gp5<12){
motorRun();
Forward();
delay(300);
Spin_Right();
delay(569);
}
if (gp4>12&&gp5>12){
motorRun();
Spin_Left();
delay(569);
}}}
else
{
motorRun();
Forward(); // Двигаться вперед
}}


Прикрепление
6840020.jpg(152Kb)
Профиль Личное сообщение Дом. страница icq Skype
14
Отправлено 24.04.2012 - 22:452
Начальная группа
1798 сообщений
Мужчина
Интересно. Это бы в самый раз в блог запостить smile
http://blogs.servodroid.ru/


Профиль Личное сообщение Дом. страница icq Skype
37
Отправлено 24.04.2012 - 23:183
Модераторы
174 сообщений
Мужчина
Простите, а зачем дальномеру две степени свободы? ну ладно если бы помимо рыскания был бы тангаж - это оправданно, но зачем крен?


Arduino - это зло!
Профиль Личное сообщение Дом. страница icq Skype
7
Отправлено 25.04.2012 - 00:254
Администраторы
3318 сообщений
Мужчина
Quote (Aleks_Crow)
Простите, а зачем дальномеру две степени свободы? ну ладно если бы помимо рыскания был бы тангаж - это оправданно, но зачем крен?

- мб таким образом автор замеряет по вертикали и по горизонтали на предмет препятствия ?
Как бы у дальномера вроде луч расходится конусообразно ... или как там, наоборот сходится...

biggrin


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
31
Отправлено 25.04.2012 - 00:275
Администраторы
3318 сообщений
Мужчина
Автору +1 ! Очень аккуратный робот и грамотно собран. А код и механика всегда доработать можно wink

[p.s.]Видео вставьте в сообщение [/p.s.]


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
31
Отправлено 25.04.2012 - 05:316
Участник
79 сообщений
Мужчина
Aleks_Crow, Первоночально был такой сценарий: робот подъезжает к ладожке ребенка, останавливается, крутит головой, как бы рассматривая его, потом смотрит в право, в лево и уезжает. В ыложенной программе эта серва не задействованна. Так что все намного проще.
nightmare, спасибо за подсказку, наверное так и сделаю.
S-T-A-L-K-E-R(А),
Ссылка на ютуб есть в сообщении после слов Вот что получилось.. Не могу понять как делать дальше. Спасибо за редактирование. smile :) smile

Робот является базой для экспериментов, и начального изучения программирования. Осталось еще две сервы, можно прикрепить их спереди, и сделать две лапки. Переделать код и заставить его находить предмет (например солонку на столе), подъезжать к нему и захватывать двумя лапками. Как то так.


Профиль Личное сообщение Дом. страница icq Skype
14
Отправлено 25.04.2012 - 14:217
БЛОГГЕР
101 сообщений
Мужчина
Отличный робот) сам сейчас "ковыряюсь" с ардуино , точнее с ее аналогом Ордуино, если быть честным)


Профиль Личное сообщение Дом. страница icq Skype
9
Отправлено 25.04.2012 - 16:138
Модераторы
174 сообщений
Мужчина
Ага, то есть получается крен дальномера сделан чисто в декоративных целях ))) Ждем данную статью в блогах )))


Arduino - это зло!
Профиль Личное сообщение Дом. страница icq Skype
7
Отправлено 25.04.2012 - 19:119
БЛОГГЕР
90 сообщений
Мужчина
Евгений, одобряю твой проект, ставлю +1 в репу smile я как раз подобное собираю (так же на ордуино), почти все есть, вот только детальки с Китая приедут, и начну собирать подобие твоего робота! теперь знаю к кому обратиться если затруднюсь pleasure


моя группа Вконтакте посвещённая робототехнике http://vkontakte.ru/BeamRobots
Профиль Личное сообщение Дом. страница icq Skype
0
Отправлено 25.04.2012 - 23:1110
Начальная группа
1798 сообщений
Мужчина
[p.s.]Для вставки видео нажимаем на ютубе под видео: "Поделиться", далее "Сгенерировать HTML код", вставляем этот код в сообщение.[/p.s.]


Профиль Личное сообщение Дом. страница icq Skype
37
Отправлено 07.05.2012 - 21:2511
Участник
79 сообщений
Мужчина
izobretatel-1, Буду рад помочь в чем разобрался. Можно совместно продвигаться и дальше. wink
nightmare, спасибо. Буду знать.

Добавлено (07.05.2012, 21:25)
---------------------------------------------
Разместил статью в блогах. http://blogs.servodroid.ru/blog/arduino/41.html


Профиль Личное сообщение Дом. страница icq Skype
14
Отправлено 18.05.2012 - 22:2112
Участник
79 сообщений
Мужчина
Из оставшихся двух серв сделал лапки. Получилось прикольно. pleasure
Теперь буду доделывать программу по поиску и захвату предметов.



Прикрепление
6356416.jpg(112Kb)
Профиль Личное сообщение Дом. страница icq Skype
14
Администраторы
3318 сообщений
Мужчина
ПРикольно ))


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
31
Отправлено 18.05.2012 - 22:4014
Начальная группа
1798 сообщений
Мужчина
Даа, здорово выглядит!


Профиль Личное сообщение Дом. страница icq Skype
37
Отправлено 18.05.2012 - 22:4115
Участник
560 сообщений
Мужчина
Классный робот,у автора руки откуда надо растут,не то что у меня)))


Ростов-на-дону
Профиль Личное сообщение Дом. страница icq Skype
7
Форум » Проекты по робототехнике » Частные проекты » Робот на ардуино (*icon-0*)
Страница 1 из 6123456»
Поиск: