Форум по Роботика

Технически форум => Общ форум => Темата е започната от: niki_244 в Декември 13, 2012, 03:24:00 pm

Титла: Въпрос:контролиран робот чрез Pc
Публикувано от: niki_244 в Декември 13, 2012, 03:24:00 pm
Здравейте.Искам да попитам как да контролирам 2 сервота чрез компютър.Идеята е да подавам сигнал от COM port и той чрез някакъв микро контролер да управлява сервото. Идеята ми маи няма да стане но се надявам да ме насочите към няква литература.
П.П Учил съм 3години състезателно програмиране на С++ мога да се оправям и с C#.А да и мисля програмата на компа която подава сигнала да е написана на C#.
Blagodarq
Титла: Въпрос:контролиран робот чрез Pc
Публикувано от: mivr в Декември 13, 2012, 07:02:35 pm
Идеята ти е осъществима в срок от 3 до 6 седмици с бюджет от около 60 до 120 лева.
Зависи колко инструменти и знания имаш.

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

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

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

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

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

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

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

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

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



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

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

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

За каквито и да е въпроси по проекта или по друг проект питай във форумът ще ти се отговори. :)
Титла: Въпрос:контролиран робот чрез Pc
Публикувано от: Tsoni в Декември 13, 2012, 07:55:15 pm
Здравейте.Ние с това момче, което е пуснало темата, сме замислили един проект който съм описал в долната тема ("Няколко въпроса").Доста сме на Вие с нещата около тези микроконтролери, та за това питаме.А ето ги и останалите неяснотии:
 Какво всъщност е нужно на този контролер за да може да командва сервото като  получи сигнал в реално време?Гледах във форума за Ардуино, където имаше едни големи и страшни схеми за свързване на компоненти върху платка.Какво ще рече "започни със светване на светдиода на 13 пин"?И как се прави този "протоколза за комуникация между компютърът и Ардуиното" ( пише се на C# ли)?Продължаваме с въпросите :D Какво ще рече да се кодира протокола до две функции?
 Като гледам става доста сложно нататък в отговора, така че ако може за начало да уточним тези неща :D
 Ще сме доста доволни ако ни просветлите как може да се направят примерно 2 сервота постепенно да увеличават градуса на ротация (става въпрос за steering servos) съответно със постепенното бутане повече на лостчето на прекъсвача или дистанционното.
   Мерси за отговора на Михаил :)
   Поздрави от Плевен
Титла: Въпрос:контролиран робот чрез Pc
Публикувано от: mivr в Декември 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;
}
//този код е само ориентировъчен не е тестван но от него можете да си представите как ще изгелжда крайният код


Надявам се че отговорите ми ще са ви от полза , ако не просто питайте пак.:)
Титла: Въпрос:контролиран робот чрез Pc
Публикувано от: niki_244 в Декември 14, 2012, 05:27:53 pm
Благодаря за отговорите.Явно ще почета още намерих курсове за програмиране на Arduino в терелик.Имам въпрос  как да чета схемите с микро контролери смисъл там където пише ГН или друго
Титла: Въпрос:контролиран робот чрез Pc
Публикувано от: mivr в Декември 14, 2012, 08:54:48 pm
ГН не е сред познатите ми знаци моляте покажи къде си го видял и ще потърся какво е.
Титла: Въпрос:контролиран робот чрез Pc
Публикувано от: niki_244 в Декември 14, 2012, 09:01:11 pm
извинявай GND
Титла: Въпрос:контролиран робот чрез Pc
Публикувано от: Tsoni в Декември 14, 2012, 09:21:47 pm
Благодарим за отговора.
Погледнах примерите, наистина са интересни, но само не разбрах този със сервото който го е направил, само ли се върти сервото, т.е. по зададен начин, или той натиска копче или клавиш на компютъра или пък дистанционно?
Титла: Въпрос:контролиран робот чрез Pc
Публикувано от: chikenbrain в Декември 16, 2012, 11:27:27 am
Ето един вариант на управление и от мен. Вместо рутер и етърнет шийлд, ардуиното може да се свърже директно с кабел към компютъра. Опитъл съм да опиша кода, така че най вероятно ще успееш да го редактираш за да ти върши работа напълно. Ако има нужда от помощ и още обяснения съм насреща. :)
Този пример е направен да работи с джоистик, но лесно може да се направи да работи и с клавиатура.
http://www.robotics-bg.com/forum/viewtopic.php?t=1621
Титла: Въпрос:контролиран робот чрез Pc
Публикувано от: mivr в Декември 17, 2012, 01:47:05 pm
Здравейте отново ето и отговорите които поискахте:

1.Въпрос:

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

Отговор:

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

2.Въпрос:

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

Отговор:

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

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

П.П.
Принципно през уикендите почивам и не пиша. :)
Титла: Въпрос:контролиран робот чрез Pc
Публикувано от: Tsoni в Декември 21, 2012, 10:25:00 pm
Благодарим за пореден път за отговорите.
Идеята за робот контролиран през интернет доста ми допадна, след като поразучих точно какво представлява това.Все пак имам доста неясни неща които търсят отговори:
-какви са нужните части за направата на такъв робот(електрониките като етхернет щит и тн, а не мотори и сервота)и като споменах етхернет щит , ако изобще така се казва, това нещо доколкото разбрах осъществява интернет връзката.Та ако това е така можете ли да ми кажете дали трябва да му се слага нещо допълнителнно на него като например от онези флашки за 3g интерхет?
-каква е разликата между робот който може да го управлява всеки като влезе в определен създаден от собственика на робота сайт и такъв който работи посредством директна връзка между компютъра и ардуиното посредством рутер
-как може да се зададат определени команди от компютъра(натискане на клавиш, въвеждане на определена дума, или бутането на джойстик) да предизвикват желаната реакция у робота.Мисълта ми е дали само трябва да си измислим код който да се напише на ардуиното или трябва и нещо по специално.И ако може да ми дадете някаква идея как трябва да изглежда кода за да управлява например от стрелките на клавиатурата.
Въпроса с джойстика ми остава все още неясен и по точно какъв е кода за да "кажем" на ардуиното че при повечето завъртане на енкордера който е в джойстика, да започне да подава повече ток на моторчето например... :?:
Титла: Въпрос:контролиран робот чрез Pc
Публикувано от: chikenbrain в Декември 23, 2012, 10:58:59 am
1 въпрос:  ...какви са нужните части за направата на такъв робот(електрониките като етхернет щит и тн, а не мотори и сервота)и като споменах етхернет щит , ако изобще така се казва, това нещо доколкото разбрах осъществява интернет връзката.Та ако това е така можете ли да ми кажете дали трябва да му се слага нещо допълнителнно на него като например от онези флашки за 3g интерхет?

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

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

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

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

Отговор: Ако си разгледал кода на робота може би си забелязал че мойте команди дефакто са цифри (8-напред; 2-назад; 4-наляво; 6-надясно, ако погледнеш numpad-a на клавиатурата ще разбереш защо съм избрал точно тези). Само с програма за ардуино-то няма да минеш, трябва и нещо което да изпраща командите (програмата на лаптопа например) Идеята е че при натискане на даден бутон на клавиатурата програмата изпраща една от горепосочените цифри към рутера, а оттам и към ардуно-то. То от своя страна разбира коя цифра е изпратена и изпълнява дадената команда (задвижва робота).
Идеята с джойстика е същата. (Не съм подкарал аналоговите му функции (промяна на скоростта с различно движение на стик-а) затова не мога да дам такъв пример).
Титла: Въпрос:контролиран робот чрез Pc
Публикувано от: bateAz в Декември 23, 2012, 11:13:48 am
Евтин и що-годе добър начин е IR връзка. В Комет се продават такива трансмитери, някъде към 3-4 лева струваше единият.  Не знам Ардуино дали може да управлява IR, но ще се научи. За компютър се прадават ( или поне се продаваха ) адаптери RS232 <==> IR. Измисляш си някакъв протокол и действаш.  :D
Титла: Въпрос:контролиран робот чрез Pc
Публикувано от: Tsoni в Декември 23, 2012, 12:45:37 pm
Има едни цели комплекти на ардуино strarter kit  във ebay във които има и ir sender , ir receiver - така че предполагам че може.Все пак си мисля че за тази работа ще трябват 2 ардуинота- на едното да е изпращача(на дистанционното например), на другото приемника който да приема сигнала и съотвено това второто да го разчита и реално то да е на робота.
Този път почти всичко ми се разясни, само ако може да кажете как се свързва лаптопа към рутера на робота (посредством кабел ли)?
Поздрави от Плевен
Титла: Въпрос:контролиран робот чрез Pc
Публикувано от: Tsoni в Декември 23, 2012, 02:19:42 pm
П.С.
Започнах да изучавам езика за програмиране в сайта на ардуино и попаднах точно  на това което ни интересува- пропорционално подаване на ток към консуматор спрямо потенциометър http://arduino.cc/en/Reference/AnalogWrite?action=sourceblock&num=1
гледах как се добавят сервота, но все пак не можах да намеря как да добавя мотор
в случая ми трябват два такива(в двоен редуктор).Та въпроса ми е какъв е кода за добавяне на мотор и как се именува той в командите в кода?
Тук се питам и дали може към ардуино уно да се вържат 2 мотора и два потенциометъра.Доколкото разбрах тези моторчета в готовите комплекти на тамия са за няколко волта, така че би трябвало да работят идеално с напрежения до 5 волта.
Титла: Въпрос:контролиран робот чрез Pc
Публикувано от: chikenbrain в Декември 23, 2012, 03:34:26 pm
Лаптопът се свързва чрез безжичната си карта към рутера (както се връзваш към WiFi).
Мотори ще можеш да вържеш към ардуиното чрез х-мост (H-Bridge). В роботев се продават готови във вид на интегрална схема.
Титла: Въпрос:контролиран робот чрез Pc
Публикувано от: Tsoni в Декември 23, 2012, 08:33:43 pm
Погледнах в роботев и изтеглих един много полезен файл от инфото на интегралната схема.Мисля че вече ми се изясниха нещата. :) Да се надяваме че скоро ще подкараме първия робот :D
Благодаря за отделеното внимание :))))))
Титла: Въпрос:контролиран робот чрез Pc
Публикувано от: Tsoni в Декември 24, 2012, 12:03:50 pm
...Пак съм аз  :clap:
Има ли начин да свържа 3 ултразвукови детектори за разстояние и 2 мотора(чрез интегрална схема) към ардуино уно?Мисля че "digital" пиновете са 7, 4 и 2(бе тези за pmw) и ще стигнат само за 3 компонента, а доколкото разбрах те се свързват точно съм тях, освен към gnd и 5v пиновете.
И ще може ли да ми разясните какви стойности получава ардуиното от съответно дигиталните детектори на разстояние и потенциометрите?В сайта на ардуино имаше няколко ралични- от 0 до 253(ако не се лъжа) и от 0 до 1000 и нещо.
И последния ми въпрос е за функциите map и switch case.Другите в сайта ми станаха теоритично ясни(надявам се скоро да ги изпробвам практически), но така и не разбрах каква е ползата от изкарването на минималните и максимални текущи стойности на х например и съответно минималните и максималните очаквани такива.Ако може и да ми кажете относно switch case като напишем в програмата case 1 например как тя разбира за коя стойност, на х например, искаме да се изпълнят функциите които в последствие зададем???
П.С. пак въпроса с предавателите и примниците- 2 ардуинота ли трябват за тая работа?
:)
Титла: Въпрос:контролиран робот чрез Pc
Публикувано от: Tsoni в Декември 25, 2012, 02:13:31 pm
mivr, ще може ли направо да ми дадеш някакъв skype например за връзка, да попитам няколкото въпроса които са ми неясни, защото тука стават бавно нещата?  :)
Титла: Въпрос:контролиран робот чрез Pc
Публикувано от: mivr в Декември 25, 2012, 09:30:34 pm
Разбира се :

Skype име:
mivrmmm

имеил:
[email protected]

П.П.
Добавям ги към подписът си благодаря.