Автор Тема: Въпрос:контролиран робот чрез Pc  (Прочетена 16539 пъти)

niki_244

  • Новодошъл
  • *****
  • Публикации: 3
    • Профил
Въпрос:контролиран робот чрез Pc
« -: Декември 13, 2012, 03:24:00 pm »
Здравейте.Искам да попитам как да контролирам 2 сервота чрез компютър.Идеята е да подавам сигнал от COM port и той чрез някакъв микро контролер да управлява сервото. Идеята ми маи няма да стане но се надявам да ме насочите към няква литература.
П.П Учил съм 3години състезателно програмиране на С++ мога да се оправям и с C#.А да и мисля програмата на компа която подава сигнала да е написана на C#.
Blagodarq

mivr

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 118
    • Профил
Въпрос:контролиран робот чрез Pc
« Отговор #1 -: Декември 13, 2012, 07:02:35 pm »
Идеята ти е осъществима в срок от 3 до 6 седмици с бюджет от около 60 до 120 лева.
Зависи колко инструменти и знания имаш.

Предлагам ти следният план:

1.Материали:
 
   Ардуино - (което си избереш препоръчвам Уно или Леонардо)
    USB кабел (ако нямаш такъв)
    2 сервота (които ще управляваш)
    около 30см едножилен проводник

2.Инструменти:

    Поялник и принадлежности (тинол и колофон)
    клещи секачки / оголвачки
    изолирбанд или друго тиксо (ако искаш да закрепиш кабелите по-здраво)

3.Начин на осъществяване:

    Първо започваш с изучаване на езика на Ардуиното (започни със светване на светдиода на 13 пин) когато можеж да използваш основните функций (най-вече серийната комуникация) направи протокола за комуникация между компютърът и Ардуиното.

    Когато имаш протокола за комуникация го кодирай до две функций (С е процедурен език за това кодираме до функций...) едната фунция от компютърът изпраща до контролера а другата от контролера до компютърът (за сверяване на данните).

    За ардуинто се пише на специален език които е лесен и бърз за научаване , за компютърът можеж да го кодираш на Java (не препоръчвам) или да намериш библиотеки за С# които могат да поддават команди към Ардуиното (просто потърси в Гоогле......).

    След като завършиш комуникацията я тествай със светодиода и после с библиотека MegaServoLibrary за Ардуиното добавяш 2 обекта от тип серво , закачаш ги към номерата на краката на които си вързал сигналният крак на сервото (потърси в Гоогле как се връзва сервото) и подаваш стойностите от комуникацията към обектите от тип серво.



Това би трябвало това да е достатъчен материал за да успееш без нуждата да задаваш много въпроси (надявам се).

Единствено те моля ако решиш да го правиш да го опишеш за да могат и други да се научат. :)

Радвам се че имаш идейте и желанието да го осъществиш.

За каквито и да е въпроси по проекта или по друг проект питай във форумът ще ти се отговори. :)
Михаил Врачaнски 19год. В ТУ-София Автоматика

Skype: mivrmmm

email: [email protected]

Tsoni

  • Вече знае какво е робот!
  • *****
  • Публикации: 88
    • Профил
Въпрос:контролиран робот чрез Pc
« Отговор #2 -: Декември 13, 2012, 07:55:15 pm »
Здравейте.Ние с това момче, което е пуснало темата, сме замислили един проект който съм описал в долната тема ("Няколко въпроса").Доста сме на Вие с нещата около тези микроконтролери, та за това питаме.А ето ги и останалите неяснотии:
 Какво всъщност е нужно на този контролер за да може да командва сервото като  получи сигнал в реално време?Гледах във форума за Ардуино, където имаше едни големи и страшни схеми за свързване на компоненти върху платка.Какво ще рече "започни със светване на светдиода на 13 пин"?И как се прави този "протоколза за комуникация между компютърът и Ардуиното" ( пише се на C# ли)?Продължаваме с въпросите :D Какво ще рече да се кодира протокола до две функции?
 Като гледам става доста сложно нататък в отговора, така че ако може за начало да уточним тези неща :D
 Ще сме доста доволни ако ни просветлите как може да се направят примерно 2 сервота постепенно да увеличават градуса на ротация (става въпрос за steering servos) съответно със постепенното бутане повече на лостчето на прекъсвача или дистанционното.
   Мерси за отговора на Михаил :)
   Поздрави от Плевен
Цони Витков 17 г. МГ \"Гео Милев\" Плевен

mivr

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 118
    • Профил
Въпрос:контролиран робот чрез Pc
« Отговор #3 -: Декември 14, 2012, 01:30:34 pm »
Радвам се че не се отказвате и ето отговорите които поискахте:

1.Въпрос:

Какво всъщност е нужно на този контролер за да може да командва сервото като получи сигнал в реално време?

Отговор:

Единствено захранване (USB-то може да го захранва) и връзка между крак на Ардуиното и сигналния пин на сервото.

Пример:

http://www.azega.com/arduino-servo-motor-part-1/

2.Въпрос:

Гледах във форума за Ардуино, където имаше едни големи и страшни схеми за свързване на компоненти върху платка.Какво ще рече "започни със светване на светдиода на 13 пин"?

Отговор:

Схемата за серво се изчерпва с тези три жици показани във статията по-горе.
Светодиодът на 13 пин е вграден светодиод които свети когато се напише програма която задава състояние на крака (1 или 0) съответно при състояние 1 (HIGH) има 5V на пин 13 и светодиодът свети а при 0 (LOW) има 0V и съответно светодиодът не свети.
Това е най-простичкия пример на Ардуино и с него се започва когато се учиш.:)

Пример:

http://www.arduino.cc/en/Tutorial/Blink
Пояснение не ти трябва да добавяш светодиод просто пусни програмата и светодиодът до които пише L ще започне да мига.:)

3.Въпрос:

И как се прави този "протокол за за комуникация между компютърът и Ардуиното" ( пише се на C# ли)?

Отговор:

Самият протокол е идеята какво ще прати компютърът и как ще е кодирана информацията (ако е кодирано).

Пример:

Компютърът праща 2 байта в които има число между 0 и 179 .
Ардуиното чете тези два байта и поставя серво 1 на градуси равни на стойността записана в първият байт а серво две идва на градуси равни на стойността записана във вторият байт.

4.Въпрос:

Какво ще рече да се кодира протокола до две функции?

Отговор:

Това значи че в кодът ти на компютърът имаш функция "прати тази информация" а на Ардуиното имаш функция "получи информация".
Както следа функцията на компютърът праща през серийна или друг вид комуникация данните до Ардуиното , а функцията на Ардуиното проверява дали има получен пакет (лесно осъществимо в Ардуино средата) и когато има го разкодира до полезна информация и го предава на останалата част от програмата.

Пример:

Примерът е за некодирана комуникация между среда за програмиране Processing и Ардуино.

Processing код:

import processing.serial.*; // библитеката
Serial myPort; //обектът от тип сериен порт
myPort = new Serial(this, Serial.list()[0], 9600); //дефиниране на номер на серийният порт и избиране на скорост

//и самата функция
void SendServoData(int ServoData1 , int ServoData2)
{
myPort.write(StartByte);
myPort.write(ServoData1);
myPort.write(ServoData2);
myPort.write(StopByte);
}

Ардуино код:

Serial.begin(9600);

//функцията
bool ReadCom(int *ServoData1 , int *ServoData2)
{
if(Serial.avaliable()<=3)return 0;
byte StartReceived , StopReceived;
StartReceived = Serial.read();
&ServoData1  = Serial.read();
&ServoData2  = Serial.read();
StopReceived = Serial.read();
if(StartReceived != StartByte || StopReceived != StopByte)return 0;
return 1;
}
//този код е само ориентировъчен не е тестван но от него можете да си представите как ще изгелжда крайният код


Надявам се че отговорите ми ще са ви от полза , ако не просто питайте пак.:)
Михаил Врачaнски 19год. В ТУ-София Автоматика

Skype: mivrmmm

email: [email protected]

niki_244

  • Новодошъл
  • *****
  • Публикации: 3
    • Профил
Въпрос:контролиран робот чрез Pc
« Отговор #4 -: Декември 14, 2012, 05:27:53 pm »
Благодаря за отговорите.Явно ще почета още намерих курсове за програмиране на Arduino в терелик.Имам въпрос  как да чета схемите с микро контролери смисъл там където пише ГН или друго

mivr

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 118
    • Профил
Въпрос:контролиран робот чрез Pc
« Отговор #5 -: Декември 14, 2012, 08:54:48 pm »
ГН не е сред познатите ми знаци моляте покажи къде си го видял и ще потърся какво е.
Михаил Врачaнски 19год. В ТУ-София Автоматика

Skype: mivrmmm

email: [email protected]

niki_244

  • Новодошъл
  • *****
  • Публикации: 3
    • Профил
Въпрос:контролиран робот чрез Pc
« Отговор #6 -: Декември 14, 2012, 09:01:11 pm »
извинявай GND

Tsoni

  • Вече знае какво е робот!
  • *****
  • Публикации: 88
    • Профил
Въпрос:контролиран робот чрез Pc
« Отговор #7 -: Декември 14, 2012, 09:21:47 pm »
Благодарим за отговора.
Погледнах примерите, наистина са интересни, но само не разбрах този със сервото който го е направил, само ли се върти сервото, т.е. по зададен начин, или той натиска копче или клавиш на компютъра или пък дистанционно?
Цони Витков 17 г. МГ \"Гео Милев\" Плевен

chikenbrain

  • Новодошъл
  • *****
  • Публикации: 9
    • Профил
Въпрос:контролиран робот чрез Pc
« Отговор #8 -: Декември 16, 2012, 11:27:27 am »
Ето един вариант на управление и от мен. Вместо рутер и етърнет шийлд, ардуиното може да се свърже директно с кабел към компютъра. Опитъл съм да опиша кода, така че най вероятно ще успееш да го редактираш за да ти върши работа напълно. Ако има нужда от помощ и още обяснения съм насреща. :)
Този пример е направен да работи с джоистик, но лесно може да се направи да работи и с клавиатура.
http://www.robotics-bg.com/forum/viewtopic.php?t=1621
Кристиан Димитранов, София, 21г

mivr

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 118
    • Профил
Въпрос:контролиран робот чрез Pc
« Отговор #9 -: Декември 17, 2012, 01:47:05 pm »
Здравейте отново ето и отговорите които поискахте:

1.Въпрос:

....където пише ГН или друго...извинявай GND

Отговор:

GND  е английският символ за земя или 0V на схемата, на Ардуиното е отбелязано като GND (това е основен и масово използван знак, най-добре е да го знаете :) )

2.Въпрос:

само ли се върти сервото, т.е. по зададен начин, или той натиска копче или клавиш на компютъра или пък дистанционно?

Отговор:

В даденият пример сервото се контролира по зададен модел в кодът на контролера и няма контрол от потребителя.

Ако имате още въпроси не се притесняваите и питаите.

П.П.
Принципно през уикендите почивам и не пиша. :)
Михаил Врачaнски 19год. В ТУ-София Автоматика

Skype: mivrmmm

email: [email protected]

Tsoni

  • Вече знае какво е робот!
  • *****
  • Публикации: 88
    • Профил
Въпрос:контролиран робот чрез Pc
« Отговор #10 -: Декември 21, 2012, 10:25:00 pm »
Благодарим за пореден път за отговорите.
Идеята за робот контролиран през интернет доста ми допадна, след като поразучих точно какво представлява това.Все пак имам доста неясни неща които търсят отговори:
-какви са нужните части за направата на такъв робот(електрониките като етхернет щит и тн, а не мотори и сервота)и като споменах етхернет щит , ако изобще така се казва, това нещо доколкото разбрах осъществява интернет връзката.Та ако това е така можете ли да ми кажете дали трябва да му се слага нещо допълнителнно на него като например от онези флашки за 3g интерхет?
-каква е разликата между робот който може да го управлява всеки като влезе в определен създаден от собственика на робота сайт и такъв който работи посредством директна връзка между компютъра и ардуиното посредством рутер
-как може да се зададат определени команди от компютъра(натискане на клавиш, въвеждане на определена дума, или бутането на джойстик) да предизвикват желаната реакция у робота.Мисълта ми е дали само трябва да си измислим код който да се напише на ардуиното или трябва и нещо по специално.И ако може да ми дадете някаква идея как трябва да изглежда кода за да управлява например от стрелките на клавиатурата.
Въпроса с джойстика ми остава все още неясен и по точно какъв е кода за да "кажем" на ардуиното че при повечето завъртане на енкордера който е в джойстика, да започне да подава повече ток на моторчето например... :?:
Цони Витков 17 г. МГ \"Гео Милев\" Плевен

chikenbrain

  • Новодошъл
  • *****
  • Публикации: 9
    • Профил
Въпрос:контролиран робот чрез Pc
« Отговор #11 -: Декември 23, 2012, 10:58:59 am »
1 въпрос:  ...какви са нужните части за направата на такъв робот(електрониките като етхернет щит и тн, а не мотори и сервота)и като споменах етхернет щит , ако изобще така се казва, това нещо доколкото разбрах осъществява интернет връзката.Та ако това е така можете ли да ми кажете дали трябва да му се слага нещо допълнителнно на него като например от онези флашки за 3g интерхет?

Отговор: В моя случай етърнет щита се ползва за връзка между рутера и ардуиното.
Чрез лаптоп се свързвам към рутера който е върху робота и така изпращам команди към ардуиното. В този случай няма връзка с глобалната мрежа наречена Интернет.
Ако рутера (за по лесно Р1) е свързан към друг такъв (за по лесно Р2) (този който съм ползвал има тази опция) и знаеш IP адреса на Р2 можеш да командваш робота от която си поискаш точка на земята имайки връзка с интернет (в този случай ще имаш нужда и от пренасочване на портове и в двата рутера..). Нямаш нужда от флашка за 3g.

2 Въпрос: ..каква е разликата между робот който може да го управлява всеки като влезе в определен създаден от собственика на робота сайт и такъв който работи посредством директна връзка между компютъра и ардуиното посредством рутер

Отговор: Двата варианта които си споделил могат да бъдат комбинирани (например: има сайт за управление, но безжичната връзка отново е осъществена с рутер). Ако правилно съм разбрал въпроса няма особена разлика. И в двата случая робота ще се движи. За мен лично беше доста по лесно да направя програма работеща на лаптопа ми отколкото сайт който да хоствам някъде.

3 Въпрос: как може да се зададат определени команди от компютъра(натискане на клавиш, въвеждане на определена дума, или бутането на джойстик) да предизвикват желаната реакция у робота.Мисълта ми е дали само трябва да си измислим код който да се напише на ардуиното или трябва и нещо по специално.И ако може да ми дадете някаква идея как трябва да изглежда кода за да управлява например от стрелките на клавиатурата.

Отговор: Ако си разгледал кода на робота може би си забелязал че мойте команди дефакто са цифри (8-напред; 2-назад; 4-наляво; 6-надясно, ако погледнеш numpad-a на клавиатурата ще разбереш защо съм избрал точно тези). Само с програма за ардуино-то няма да минеш, трябва и нещо което да изпраща командите (програмата на лаптопа например) Идеята е че при натискане на даден бутон на клавиатурата програмата изпраща една от горепосочените цифри към рутера, а оттам и към ардуно-то. То от своя страна разбира коя цифра е изпратена и изпълнява дадената команда (задвижва робота).
Идеята с джойстика е същата. (Не съм подкарал аналоговите му функции (промяна на скоростта с различно движение на стик-а) затова не мога да дам такъв пример).
Кристиан Димитранов, София, 21г

bateAz

  • Зомбиран Роботостроител
  • *****
  • Публикации: 187
    • Профил
Въпрос:контролиран робот чрез Pc
« Отговор #12 -: Декември 23, 2012, 11:13:48 am »
Евтин и що-годе добър начин е IR връзка. В Комет се продават такива трансмитери, някъде към 3-4 лева струваше единият.  Не знам Ардуино дали може да управлява IR, но ще се научи. За компютър се прадават ( или поне се продаваха ) адаптери RS232 <==> IR. Измисляш си някакъв протокол и действаш.  :D
Не може да не може

Венцислав Караджов, 61 год.

Tsoni

  • Вече знае какво е робот!
  • *****
  • Публикации: 88
    • Профил
Въпрос:контролиран робот чрез Pc
« Отговор #13 -: Декември 23, 2012, 12:45:37 pm »
Има едни цели комплекти на ардуино strarter kit  във ebay във които има и ir sender , ir receiver - така че предполагам че може.Все пак си мисля че за тази работа ще трябват 2 ардуинота- на едното да е изпращача(на дистанционното например), на другото приемника който да приема сигнала и съотвено това второто да го разчита и реално то да е на робота.
Този път почти всичко ми се разясни, само ако може да кажете как се свързва лаптопа към рутера на робота (посредством кабел ли)?
Поздрави от Плевен
Цони Витков 17 г. МГ \"Гео Милев\" Плевен

Tsoni

  • Вече знае какво е робот!
  • *****
  • Публикации: 88
    • Профил
Въпрос:контролиран робот чрез Pc
« Отговор #14 -: Декември 23, 2012, 02:19:42 pm »
П.С.
Започнах да изучавам езика за програмиране в сайта на ардуино и попаднах точно  на това което ни интересува- пропорционално подаване на ток към консуматор спрямо потенциометър http://arduino.cc/en/Reference/AnalogWrite?action=sourceblock&num=1
гледах как се добавят сервота, но все пак не можах да намеря как да добавя мотор
в случая ми трябват два такива(в двоен редуктор).Та въпроса ми е какъв е кода за добавяне на мотор и как се именува той в командите в кода?
Тук се питам и дали може към ардуино уно да се вържат 2 мотора и два потенциометъра.Доколкото разбрах тези моторчета в готовите комплекти на тамия са за няколко волта, така че би трябвало да работят идеално с напрежения до 5 волта.
Цони Витков 17 г. МГ \"Гео Милев\" Плевен