Съдържание:

Проста платформа Arbo Robotics !: 5 стъпки
Проста платформа Arbo Robotics !: 5 стъпки

Видео: Проста платформа Arbo Robotics !: 5 стъпки

Видео: Проста платформа Arbo Robotics !: 5 стъпки
Видео: Троянова – русская актриса во время войны / Troyanova – Russian Actress During War 2024, Юли
Anonim
Проста платформа Arbo Robotics!
Проста платформа Arbo Robotics!
Проста платформа Arbo Robotics!
Проста платформа Arbo Robotics!

Току -що взех Arduino, след като си поиграх с някои AVR микроконтролери по време на срещите на екипа по роботика. Хареса ми идеята за наистина евтин програмируем чип, който може да работи почти всичко от обикновен компютърен интерфейс, така че взех Arduino, защото вече има хубава платка и USB интерфейс. За първия си проект на Arduino изкопах комплект Vex Robotics, който бях носил от някои състезания, които правех в гимназията. Винаги съм искал да направя компютърна платформа за роботика, но микроконтролерът Vex изисква кабел за програмиране, който нямах. Реших да използвам новия си Arduino (и може би по -късно гол AVR чип, ако го накарам да работи), за да управлявам платформата. В крайна сметка искам да си взема нетбук и след това мога да карам робота с помощта на WiFi и да гледам отдалечено уеб камерата му.

Успях да получа приличен сериен протокол и прост пример, който управлява робота, използвайки контролер Xbox 360, свързан към компютър с Linux.

Стъпка 1: Какво може да направи …

Какво може да направи…
Какво може да направи…
Какво може да направи…
Какво може да направи…

Arduino е много гъвкава платформа. Основната ми цел беше просто да накарам Arduino да свърже два двигателя Vex към компютъра, но имах много останали входни/изходни щифтове и реших да добавя някои допълнителни неща. В момента имам RGB LED за състоянието на серийния порт (зелен, ако пакетите са добри, червен, ако са лоши) и вентилатор на компютър, задвижван от транзистор. Мога също да добавя ключове и сензори, но все още не съм сложил нито един от тях. Най -хубавото в това е, че можете да добавите каквото искате към робот Arduino. Нужно е само малко интерфейсен код, за да контролирате допълнителни неща и да въведете данни към компютъра.

Стъпка 2: Части

Части
Части
Части
Части
Части
Части

За моя робот използвах няколко различни части. Повечето части бяха от стари неща, които бях поставил около мазето си. Кодът обаче е достатъчно малък, за да може лесно да се побере на всеки Arduino. Вероятно дори може да се побере на ATTiny (ако изградя робот контролер освен Arduino, ATTiny 2313 изглежда като добър избор, той е по -малък и по -евтин, но все пак има много изходи и сериен UART интерфейс) 2) Vex Robotics PlatformI получи комплект Vex преди няколко години, за да изгради радиоуправляем робот, който да вземе неща за състезание в гимназията. Изградих основната база с квадратни ботове, която има 4 колела, задвижвани от два двигателя. Можете да замените други бази на роботи, ако имате друга платформа, която искате да управлявате. Важното, което трябва да се отбележи, е, че Vex двигателите са по същество непрекъснати въртящи се сервомотори, те използват широтно-импулсна модулация, за да сигнализират колко бързо и в каква посока да се завъртят. Двигателите Vex са хубави, защото имат висок диапазон на работно напрежение, някъде между 5 и 15 волта. Използвам 12V, защото имах 12V батерия. За повечето стандартни хоби сервоустройства ще ви трябва по -ниско напрежение (често 6 волта).3) Батерия Роботът е безполезен без захранване. За тестване използвам стандартен 9V адаптер за стенни брадавици от RadioShack, но за безжична работа открих 12V NiMH батерия в древен лаптоп. Въпреки че не задържа достатъчно зареждане, за да работи лаптопа, той управлява добре моя робот Vex. Той също така може да захранва Arduino, като използва входния щифт Vin на конектора за захранване, Arduino ще регулира 12V до 5 и дори ще го изведе от изхода 5V на захранващия конектор. свържете всичко. В крайна сметка ще получа по -добра прототипираща дъска и спойка на някои по -постоянни връзки, но засега макетът улеснява промяната на нещата. Моят макет е „основният план на SparkFun“, просто план на метална плоча с 3 терминала. 5) базиран на MAX232 RS232-TTL конвертор Ако искате да управлявате вашия робот, използвайки RS-232 сериен порт връзка (за разлика от вградения Arduino в USB) можете да използвате RS232-TTL конвертор. Използвам MAX232, защото няколко от тях лежаха наоколо и го запоявах върху малко парче прототипна платка с необходимите кондензатори. Нуждая се от RS-232, защото старият ми лаптоп има само един USB порт и го използвам за контролер за игра за управление на робота. 6) Допълнителни части по желание За лесно отстраняване на грешки в серийния протокол, поставих RGB LED върху него взех един с моята поръчка на Arduino, защото звучаха страхотно). Индикаторът мига в червено, зелено, синьо последователно, когато Arduino се стартира, за да покаже, че роботът е рестартиран и след това светва в зелено, когато е получен моторен пакет, син в случай, че е получен фен пакет, и червен, когато е получен лош или неизвестен пакетът е получен. За да управлявам вентилатора, използвах стандартен NPN транзистор (същите, които демонстрирах в последния ми Instructable) и резистор между транзистора и Arduino (транзисторът извличаше твърде много ток и загряваше Arduino, затова поставих ограничение резистор, за да го спре).

Стъпка 3: Arduino и компютърно програмиране

Arduino и компютърно програмиране
Arduino и компютърно програмиране

За да програмирате Arduino, очевидно ще ви е необходим софтуерът Arduino и USB кабел. Можете също да програмирате Arduino, като използвате сериен порт и преобразувател на ниво TTL, ако вашият компютър има сериен порт. Обърнете внимание, че USB серийният интерфейс няма да комуникира с ATMega процесора на Arduino, ако има преобразувател на ниво, свързан към серийните щифтове на Arduino (пинове 0 и 1), така че го изключете, преди да използвате USB. Компютър за управление на двигателите. Ще се нуждаем и от PWM серво задвижваща система, за да изпращаме правилните сигнали към двигателите Vex и да се уверим, че те вървят в правилните посоки, когато им се дадат правилните стойности. Добавих и няколко прости LED мигащи главно за индикация на състоянието, но и защото изглежда страхотно. На компютъра ще трябва да отворим серийния порт и да изпратим рамки от данни, които програмата Arduino ще разбере. Компютърът също трябва да измисли стойности на двигателя. Лесен начин да направите това е да използвате USB игра или джойстик, използвам Xbox 360 контролер. Друг вариант е да използвате мрежов компютър (или нетбук или малка мини ITX платка) на самия робот, за да шофирате безжично. С нетбук можете дори да използвате вградената уеб камера, за да предавате поточно видео емисия и да управлявате робота си дистанционно. Използвах системата за сокети на Linux, за да направя мрежово програмиране за моята настройка. Една програма („сървърът на джойстика“) се изпълнява на отделен компютър, към който е включен контролер, а друга програма („клиентът“) се изпълнява на нетбука, свързан към Arduino. Това свързва двата компютъра и изпраща информация за джойстика към нетбука, който след това изпраща серийни пакети до Arduino, който управлява робота. За да се свържете с Arduino с помощта на компютър с Linux (в C ++), първо трябва да отворите серийния порт на правилния скорост на предаване и след това изпратете стойностите, използвайки протокол, който също сте използвали в кода на Arduino. Моят сериен формат е прост и ефективен. Използвам 4 байта на "кадър", за да изпратя двете скорости на двигателя (всяка е по един байт). Първият и последният байт са твърдо кодирани стойности, които се използват, за да предпазят Arduino от изпращане на грешен байт към PWM кода и да накарат двигателите да полудеят. Това е основната цел на RGB светодиода, той мига в червено, когато серийният кадър е непълен. Четирите байта са както следва: 255 (твърдо кодиран "стартов" байт),,, 200 (твърдо кодиран "краен" байт) За да осигурите надеждно приемане на данните, уверете се, че сте поставили достатъчно забавяне между програмните цикли. Ако пуснете кода на вашия компютър твърде бързо, той ще залее порта и Arduino може да започне да изпуска или дори да чете байтове погрешно. Дори и да не изпуска информация, той също може да препълни серийния порт буфер на Arduino, За двигателите Vex използвах библиотеката Arduino Servo. Тъй като Vex двигателите са само двигатели с непрекъснато въртене, те използват точно същата сигнализация, която използват сервомоторите. Въпреки това, вместо 90 градуса да бъде централната точка, това е точката на спиране, където двигателят не се върти. Намаляването на "ъгъла" кара двигателя да започне да се върти в една посока, докато увеличаването на ъгъла го кара да се върти в другата посока. Колкото по -далеч сте от централната точка, толкова по -бързо ще се върти моторът. Въпреки че няма да счупи нищо, ако изпращате стойности, по -големи от 180 градуса към двигателите, бих посъветвал да ограничите стойностите от 0 до 180 градуса (което в този случай е увеличение на скоростта). Тъй като исках по-голям контрол и по-малко извън контрол на шофирането на роботи, добавих софтуерно "ограничение на скоростта" към програмата си, което не позволява скоростта да се увеличи над 30 "градуса" във всяка посока (диапазонът е 90 +/- 30). Планирам да добавя команда за сериен порт, която променя ограничението на скоростта, така че компютърът да може да премахне ограничението в движение, ако искате да вървите бързо (тествах в малки стаи, така че не искам да се ускорява и се блъснете в стената, особено с нетбук върху нея. За повече информация изтеглете прикачения код в края на тази инструкция.

Стъпка 4: Добавете нетбук, за да изследвате непознати светове от разстояние

Добавете нетбук, за да изследвате непознати светове от разстояние
Добавете нетбук, за да изследвате непознати светове от разстояние
Добавете нетбук, за да изследвате непознати светове от разстояние
Добавете нетбук, за да изследвате непознати светове от разстояние

С пълен компютър на борда на вашия Arduino робот, вие можете да управлявате робота си, докъдето ви достига WiFi без никакви кабели, за да ограничите робота до една област. Добър кандидат за тази работа е нетбук, тъй като нетбуците са малки, леки, имат вградена батерия, имат WiFi и повечето дори имат вградени уеб камери, които могат да се използват за предаване на изгледа на робота обратно на безопасно място, където може да го контролира. Също така, ако вашият нетбук е оборудван с мобилна широколентова услуга, вашият обхват е практически неограничен. С достатъчно батерии можете да закарате робота си до местното място за пицария и да направите поръчка през уеб камерата (не се препоръчва, роботите обикновено не се допускат на места за пицария, дори и да са хора, вероятно ще се опитат да откраднат робота и може би дори пицата). Може също да е добър начин да изследвате тъмните дълбини на мазето си от комфорта на офис стола си, въпреки че добавянето на някои фарове може да бъде много полезно в този случай.

Има много начини да накарате това да работи, много от тях вероятно са много по-лесни от моя, макар че не съм запознат с езиците за обработка или базирани на скриптове, затова избрах да използвам Linux и C ++, за да създам безжична връзка за управление между базовата си станция (известна още като стар ThinkPad) и новия ми нетбук Lenovo IdeaPad, който е свързан към базата на устройството Arduino. И двата компютъра работят с Ubuntu. Моят ThinkPad е включен в LAN на моето училище и IdeaPad е свързан към моята WiFi точка за достъп, която също е свързана към LAN на училището (не успях да получа надежден видео поток от училищния WiFi, тъй като всички останали го използват, затова зададох нагоре моя собствен рутер, за да осигуря добра връзка). Добрата връзка е особено важна в моя случай, тъй като не съм прилагал проверка на грешки или таймаут. Ако мрежовата връзка внезапно прекъсне, роботът продължава да работи, докато не се сблъска с нещо или аз стартирам и го спра. Това е основният фактор зад решението ми да забавя задвижването както чрез задвижване на двигателите, така и чрез въвеждане на софтуерно ограничение на скоростта.

Стъпка 5: Вземете видео емисия

След като вашият роботизиран изследовател може да управлява безжично, вероятно ще искате да имате видео емисия от нетбука, за да можете да разберете къде се намира вашият робот. Ако използвате Ubuntu (или дори ако не сте!), Препоръчвам да използвате VLC Media Player за поточно предаване. Ако не сте го инсталирали, наистина пропускате, така че го инсталирайте с помощта на командата „sudo apt-get install vlc“, потърсете VLC в Софтуерния център на Ubuntu (само 9.10) или изтеглете инсталатора на videolan. org, ако сте на Windows. Ще ви е необходим VLC, работещ и на двата компютъра. VLC може да стриймва, както и да възпроизвежда потоци в мрежа. На нетбука (робот компютър) първо се уверете, че вашата уеб камера (вградена или свързана чрез USB) работи, като щракнете върху Open Open Capture Device и опитате Video for Linux 2 (някои по-стари устройства може да се нуждаят от Video for Linux, а не от новата версия 2). Трябва да видите изгледа на камерата на екрана на нетбука. За да го предавате, изберете Streaming от менюто File и след това изберете раздела Capture Device в горната част на прозореца, който се показва. Не забравяйте, че Ubuntu (и много други дистрибуции на Linux) ви позволяват да задържите Alt, за да щракнете и плъзнете прозорци, които са твърде големи за вашия екран (особено полезно за по -стари нетбуци, въпреки че дори и моят IdeaPad има нечетна резолюция 1024x576 без видима причина). За да намалите забавянето, кликнете върху „Показване на още опции“и намалете кеширащата стойност. Сумата, която можете да намалите, понякога зависи от устройството, става нестабилна, ако го намалите твърде много. При 300 ms може да получите леко забавяне, но не е чак толкова лошо.

След това щракнете върху Поток, за да преминете към следващото меню. Щракнете върху Напред, след това изберете и добавете HTTP като нова дестинация. Сега настройте Transcoding, за да намалите потока. Направих персонализиран профил, който използва M-JPEG при 60kb/s и 8fps. Това е така, защото използването на усъвършенстван кодек като MPEG или Theora ще изяде огромно време на процесора на процесора Atom на нетбук и това може да доведе до спиране на вашата видео емисия без видима причина. MJPEG е прост кодек, който е лесен за използване при ниски битрейтове. След като стартирате потока си, отворете VLC на другия си компютър, отворете мрежов поток, изберете HTTP и след това въведете IP адреса на вашия нетбук (локален или интернет в зависимост от това как се свързвате), последван от „: 8080“. Трябва да посочите порта по някаква странна причина, в противен случай той ви дава грешки. Ако имате прилична връзка, трябва да видите емисията на уеб камерата на другия си компютър, но тя ще има леко (около секунда) забавяне. Не знам точно защо възниква това забавяне, но не мога да разбера как да се отърва от него. Сега отворете приложението за управление и започнете да управлявате вашия нетбук робот. Усетете как работи забавянето по време на шофиране, за да не се блъснете в нищо. Ако работи, вашият нетбук робот е завършен.

Препоръчано: