Мазмұны:

Қарапайым Arduino Robotics платформасы !: 5 қадам
Қарапайым Arduino Robotics платформасы !: 5 қадам

Бейне: Қарапайым Arduino Robotics платформасы !: 5 қадам

Бейне: Қарапайым Arduino Robotics платформасы !: 5 қадам
Бейне: КАК СДЕЛАТЬ ARDUINO РОБОТ МАШИНКУ КОТОРЫЙ ОБХОДИТ ПРЕПЯТСТВИЯ 2024, Шілде
Anonim
Қарапайым Arduino Robotics платформасы!
Қарапайым Arduino Robotics платформасы!
Қарапайым Arduino Robotics платформасы!
Қарапайым Arduino Robotics платформасы!

Мен робототехника командасының кездесулері кезінде AVR микроконтроллерлерімен ойнағаннан кейін ғана Arduino алдым. Маған қарапайым компьютерлік интерфейстен кез келген нәрсені іске қосуға болатын өте арзан бағдарламаланатын чиптің идеясы ұнады, сондықтан менде Arduino болды, өйткені оның тақтасы мен USB интерфейсі бар. Бірінші Arduino жобасы үшін мен орта мектепте өткізген жарыстардан алған Vex Robotics жинағын қазып алдым. Мен әрқашан компьютермен басқарылатын робототехника платформасын жасағым келді, бірақ Vex микроконтроллері менде жоқ бағдарламалау кабелін қажет етеді. Мен платформаны басқару үшін жаңа Arduino -ны (мүмкін, егер мен оны жұмыс жасайтын болсам, жалаңаш AVR чипін) қолдануды шештім. Ақырында мен нетбук алғым келеді, содан кейін мен роботты WiFi арқылы басқарып, оның веб -камерасын қашықтан қарай аламын.

Мен Linux компьютеріне қосылған Xbox 360 контроллері арқылы роботты басқаратын лайықты сериялық хаттама мен қарапайым мысал ала алдым.

1 -қадам: ол не істей алады …

Ол не істей алады…
Ол не істей алады…
Ол не істей алады…
Ол не істей алады…

Arduino - бұл әмбебап платформа. Менің негізгі мақсатым - Arduino -ны Vex -тің екі қозғалтқышын компьютерге қосуға мүмкіндік беру, бірақ менде көптеген кіріс/шығыс түйреуіштері болды және мен қосымша заттарды қосуды шештім. Дәл қазір менде сериялық порт күйіне арналған RGB светодиоды (егер пакеттер жақсы болса жасыл, нашар болса қызыл) және транзистормен басқарылатын ДК желдеткіші бар. Мен сондай -ақ қосқыштар мен сенсорларды қосуға болады, бірақ мен олардың ешқайсысын әлі қойған жоқпын. Ең жақсысы - Arduino роботына қалаған нәрсені қосуға болады. Қосымша заттарды басқару және компьютерге енгізу үшін интерфейс коды жеткілікті.

2 -қадам: Бөлшектер

Бөлшектер
Бөлшектер
Бөлшектер
Бөлшектер
Бөлшектер
Бөлшектер

Менің роботым үшін мен бірнеше түрлі бөлшектерді қолдандым. Бөлшектердің көпшілігі мен жертөле айналасында төсеген ескі заттар болды. Дегенмен, код жеткілікті кішкентай, ол кез келген Arduino -ға оңай сәйкес келеді. Бұл тіпті ATTiny -ге сәйкес келуі мүмкін (егер мен Arduino -дан басқа робот контроллерін құрсам, ATTiny 2313 жақсы таңдау сияқты көрінеді, ол кішірек және арзанырақ, бірақ әлі де көптеген шығыс пен UART сериялық интерфейсі бар) 2) Vex Robotics PlatformI бірнеше жыл бұрын Vex жиынтығын алды, ол орта мектептегі жарыстарға қажетті заттарды жинайтын радиобасқарылатын робот құрды. Мен екі мотормен басқарылатын 4 дөңгелегі бар «квадрат бот» базасын құрдым. Егер сіз жүргізгіңіз келетін басқа платформа болса, сіз басқа робот базаларын алмастыра аласыз. Айта кету керек, Vex қозғалтқыштары-бұл үздіксіз айналмалы серво, олар импульстік енді модуляцияны қаншалықты жылдам және қай бағытта бұру керектігін хабарлау үшін қолданады. Vex қозғалтқыштары жақсы, өйткені олар 5 -тен 15 вольтке дейінгі жұмыс кернеулерінің жоғары диапазонына ие. Мен 12В қолданамын, себебі менде 12В батарея болды. Көптеген стандартты хобби сервосы үшін сізге төмен кернеу қажет (жиі 6 вольт).3) Батарея Робот қуат көзінсіз пайдасыз. Тестілеу үшін мен RadioShack стандартты 9В қабырғаға арналған адаптерді қолданамын, бірақ сымсыз жұмыс үшін ежелгі ноутбуктен 12V NiMH батарея жинағын таптым. Ноутбукті іске қосу үшін оның заряды жеткіліксіз болса да, ол менің Vex роботымды жақсы басқарады. Ол сондай -ақ Arduino -ны қуат коннекторындағы Vin кіріс штыры арқылы қуаттандыра алады, Arduino 12 В -ты 5 -ке дейін реттейді, тіпті оны қуат коннекторындағы 5 В шығыс істікшесінен шығарады. 4) Негізгі тақталар Қазіргі уақытта мен бәрін сыммен жалғаңыз. Ақырында, мен прототиптеу тақтасы мен дәнекерлеуді тұрақты қосылыстарға аламын, бірақ әзірге тақта заттарды өзгертуді жеңілдетеді. Менің табақшам-бұл SparkFun-дің «негізгі тақтасы», тек 3 терминалы бар металл табақшадағы нан тақтасы. 5) MAX232-ге негізделген RS232-TTL түрлендіргіші Егер сіз роботты RS-232 сериялық порт қосылымы арқылы басқарғыңыз келсе (Arduino-ға қарағанда) USB-де) RS232-TTL түрлендіргішін пайдалануға болады. Мен MAX232 қолданамын, себебі менде олардың бірнешеуі жатты, мен оны қажетті конденсаторлармен прототиптеу тақтасының кішкене бөлігіне дәнекерледім. Маған RS-232 қажет, себебі менің ескі ноутбугымда тек бір USB порты бар, мен оны роботты басқару үшін ойын контроллері үшін қолданамын.6) Қажет болғанша қосымша бөлшектер Сериялық протоколды жеңіл күйге келтіру үшін мен оған RGB светодиодын қойдым (Менің Arduino тапсырысым бар, себебі олар керемет естілді). Ардуино робот қайта жүктелгенін көрсету үшін жүктелген кезде, қызыл, жасыл, көк ретпен жыпылықтайды, содан кейін мотор пакеті алынған кезде жасыл түспен, желдеткіш пакеті алынған кезде көк түспен, нашар немесе белгісіз болғанда қызыл түспен жанады. пакет алынды. Желдеткішті басқару үшін мен стандартты NPN транзисторын (мен соңғы нұсқаулықта көрсеткендей) және транзистор мен Arduino арасындағы резисторды қолдандым (транзистор тым көп ток тартып, Arduino -ны қыздырды, сондықтан мен шектеу қойдым) тоқтату үшін резистор).

3 -қадам: Arduino және компьютерлік бағдарламалау

Arduino және компьютерлік бағдарламалау
Arduino және компьютерлік бағдарламалау

Arduino бағдарламалау үшін сізге Arduino бағдарламалық жасақтамасы мен USB кабелі қажет болады. Егер компьютерде сериялық порт болса, Arduino -ны сериялық порт пен TTL деңгейінің түрлендіргіші арқылы бағдарламалауға болады. USB сериялық интерфейсі Arduino сериялық түйреуіштеріне (0 және 1 түйреуіштер) жалғанған деңгейлі түрлендіргіш болса, Arduino ATMega процессорымен байланысқа түспейтінін ескеріңіз, сондықтан USB қолданбас бұрын оны ажыратыңыз. Қозғалтқышты басқаруға арналған компьютер. Сондай -ақ, бізге Vex қозғалтқыштарына дұрыс сигналдарды жіберу үшін PWM сервопривод жүйесі қажет болады және олар дұрыс мән берілгенде олардың дұрыс бағытта жүретініне көз жеткізеді. Мен жай ғана жарық диодты жыпылықтауды қостым, себебі ол жай күйді көрсетеді, бірақ сонымен қатар, ол керемет көрінеді, себебі ДК -де біз тізбекті портты ашып, Arduino бағдарламасы түсінетін деректер кадрларын жіберуіміз керек. ДК сонымен қатар қозғалтқыштың мәндерін ойлап табуы керек. Мұны істеудің қарапайым әдісі - USB ойын тақтасын немесе джойстикті пайдалану, мен Xbox 360 контроллерін қолданамын. Тағы бір нұсқа - сымсыз басқару үшін роботтың өзінде желілік компьютерді (нетбукті немесе шағын ITX тақтасын) пайдалану. Нетбук көмегімен сіз тіпті веб -камераны қолданып, бейне арнаны жібере аласыз және роботты қашықтан басқара аласыз. Мен орнату үшін желілік бағдарламалау үшін Linux розеткалар жүйесін қолдандым. Бір бағдарлама («джойстик сервері») контроллер қосылған жеке компьютерде, ал басқа бағдарлама («клиент») Arduino қосылған нетбукте іске қосылады. Бұл екі компьютерді байланыстырады және нетбукке джойстик туралы ақпаратты жібереді, содан кейін роботты басқаратын Arduino -ға сериялық пакеттерді жібереді. Linux компьютерімен Arduino -ға қосылу үшін (C ++ тілінде) алдымен сериялық портты дұрыс жерде ашу керек. жіберу жылдамдығын, содан кейін Arduino кодында қолданған хаттаманы қолданып мәндерді жіберіңіз. Менің сериялық форматым қарапайым және тиімді. Мен қозғалтқыштың екі жылдамдығын жіберу үшін «кадрға» 4 байт қолданамын (әрқайсысы бір байт). Бірінші және соңғы байттар-бұл Arduino-ны PWM кодына қате байт жібермеу және қозғалтқыштардың есінен тануына жол бермеу үшін пайдаланылатын қатаң кодталған мәндер. Бұл RGB светодиодының негізгі мақсаты, сериялық жақтау толық болмаған кезде қызыл түспен жыпылықтайды. 4 байт келесідей: 255 (қатаң кодталған «бастау» байты),,, 200 (қатаң кодталған «соңы» байты) Деректерді сенімді қабылдауды қамтамасыз ету үшін бағдарлама циклдары арасында жеткілікті кідіріс орнатқаныңызға көз жеткізіңіз. Егер сіз компьютердің кодын тым жылдам іске қоссаңыз, ол портты толтырады және Arduino байттарды түсіріп немесе дұрыс оқымауы мүмкін. Егер ол ақпаратты түсірмесе де, ол Arduino сериялық портының буферінен асып кетуі мүмкін. Vex қозғалтқыштары үшін мен Arduino Servo кітапханасын қолдандым. Vex қозғалтқыштары тек үздіксіз айналатын қозғалтқыштар болғандықтан, олар серво пайдаланатын сигналды пайдаланады. Дегенмен, 90 градус орталық нүктенің орнына, бұл қозғалтқыш айналмайтын тоқтау нүктесі. «Бұрышты» төмендету қозғалтқышты бір бағытта айналдыра бастайды, ал бұрышты жоғарылату оны басқа бағытта айналдырады. Сіз орталық нүктеден неғұрлым алыс болсаңыз, қозғалтқыш соғұрлым тез айналады. Егер сіз қозғалтқыштарға 180 градустан жоғары мәндерді жіберсеңіз, ештеңе бұзылмайды, мен мәндерді 0 -ден 180 градусқа дейін шектеуге кеңес берер едім (бұл жағдайда жылдамдық қадамдары). Мен көбірек басқаруды және роботты басқаруды азайтуды қалағандықтан, мен бағдарламаға жылдамдықты екі бағытта да 30 «градустан» жоғарылатуға мүмкіндік бермейтін бағдарламалық қамтамасыз етуді «жылдамдықты шектеуді» қостым (диапазон 90 +/- 30). Мен жылдамдықты өзгертетін сериялық порт пәрменін қосуды жоспарлап отырмын, егер сіз жылдам жүргіңіз келсе, компьютер шектеулерді тез арада алып тастай алады (мен кішкене бөлмелерде тестілеуден өттім, сондықтан мен оның жылдамдығын арттырғым келмейді). және қабырғаға соғылуы, әсіресе нетбукпен). Толық ақпарат алу үшін осы Нұсқаулықтың соңында берілген кодты жүктеп алыңыз.

4 -қадам: Белгісіз әлемдерді алыстан зерттеу үшін нетбук қосыңыз

Белгісіз әлемдерді алыстан зерттеу үшін нетбук қосыңыз
Белгісіз әлемдерді алыстан зерттеу үшін нетбук қосыңыз
Белгісіз әлемдерді алыстан зерттеу үшін нетбук қосыңыз
Белгісіз әлемдерді алыстан зерттеу үшін нетбук қосыңыз

Толық дербес компьютерде Arduino роботы бар, сіз роботты бір аймаққа шектеу үшін сымсыз WiFi жететін жерге дейін басқара аласыз. Бұл жұмысқа жақсы үміткер-бұл нетбук, өйткені нетбуктер кішкентай, салмағы аз, кіріктірілген батареясы бар, Wi-Fi бар, тіпті роботтың көрінісін қауіпсіз жерге апару үшін қолдануға болатын веб-камералары бар. оны басқара алады. Сондай -ақ, егер сіздің нетбук мобильді кеңжолақты қызметпен жабдықталған болса, сіздің диапазоныңыз іс жүзінде шектеусіз. Батареялар жеткілікті болғанда, сіз роботты жергілікті пиццаға апарып, веб -камераға тапсырыс бере аласыз (ұсынылмайды, роботтарды пиццаға әдетте кіргізуге болмайды, тіпті егер адамдар роботты ұрлауға тырысатын болса да) тіпті пицца). Бұл сіздің жертөлеңіздің қараңғы тереңдігін кеңсе креслосының ыңғайлылығынан зерттеудің жақсы әдісі болуы мүмкін, бірақ бұл жағдайда кейбір шамдарды қосу өте пайдалы болуы мүмкін.

Бұл жұмысты алудың көптеген жолдары бар, олардың көпшілігі менікінен әлдеқайда жеңіл, бірақ мен өңдеуді немесе сценарийге негізделген тілдерді білмеймін, сондықтан мен базалық станциям арасында сымсыз басқару сілтемесін құру үшін Linux пен C ++ жүйесін қолдануды таңдадым. ескі ThinkPad) және Arduino диск базасына қосылған менің жаңа Lenovo IdeaPad нетбукім. Екі компьютер де Ubuntu -мен жұмыс істейді. Менің ThinkPad менің мектептің LAN желісіне қосылған, ал менің IdeaPad менің WiFi кіру нүктесіне қосылған, ол мектептің LAN желісіне қосылған (мен мектептің WiFi желісінен сенімді бейне ағыны ала алмадым, себебі оны бәрі қолданады, сондықтан мен жақсы қосылымды қамтамасыз ету үшін менің жеке маршрутизаторым). Жақсы байланыс менің жағдайда өте маңызды, себебі мен қатені тексеруді немесе күтуді қолданған жоқпын. Егер желі байланысы кенеттен үзілсе, робот ол бірдеңеге соғылғанша жүре береді немесе мен оны жүгіріп келіп тоқтатамын. Бұл қозғалтқышты төмендету арқылы да, бағдарламалық жасақтаманың жылдамдығын шектеу арқылы да жетекті баяулату туралы шешімімнің негізгі факторы.

5 -қадам: Бейне арнаны алыңыз

Сіздің роботты зерттеушіңіз сымсыз көлік жүргізе алғаннан кейін, сіз роботтың қайда екенін білу үшін нетбуктен бейне арнаны алғыңыз келуі мүмкін. Егер сіз Ubuntu -ды қолдансаңыз (немесе сіз болмасаңыз да!) Мен ағынды тарату үшін VLC Media Player қолдануды ұсынамын. Егер сіз оны орнатпаған болсаңыз, онда сіз шынымен де жіберіп алмайсыз, сондықтан оны «sudo apt-get install vlc» пәрмені арқылы орнатыңыз, Ubuntu бағдарламалық жасақтама орталығында VLC шолыңыз (тек 9.10) немесе орнатушыны видеоланнан жүктеңіз. org егер сіз Windows жүйесінде болсаңыз. Сізге VLC екі компьютерде де қажет. VLC желіде ағындарды ойнаумен қатар ағынмен де айналыса алады. Нетбукта (робот компьютер) алдымен веб-камераның (кіріктірілген немесе USB қосылған) жұмыс істейтініне көз жеткізу үшін құрылғыны ашу түймесін басып, Linux 2 үшін Бейнені қолданып көріңіз (кейбір ескі құрылғыларға жаңа нұсқаның орнына Linux үшін бейне қажет болуы мүмкін). Сіз нетбук экранында камераның көрінісін көруіңіз керек. Оны ағызу үшін Файл мәзірінен Ағынды таңдаңыз, содан кейін пайда болған терезенің жоғарғы жағындағы «Құрылғыны түсіру» қойындысын таңдаңыз. Есіңізде болсын, Ubuntu (және басқа да көптеген Linux дистрибутивтері) Alt -ті басып тұруға мүмкіндік береді, бұл сіздің экраныңыз үшін тым үлкен терезелерді (әсіресе ескі нетбуктерде пайдалы, бірақ менің IdeaPad тақтайшамында 1024x576 тақ саны жоқ). Кідірісті азайту үшін «Қосымша опцияларды көрсету» түймесін басып, кэштеу мәнін төмендетіңіз. Сіз оны төмендете алатын сома кейде құрылғыға байланысты болады, егер сіз оны тым төмен түсірсеңіз, ол тұрақсыз болады. 300 м қашықтықта сіз сәл кешігуіңіз мүмкін, бірақ бұл жаман емес.

Келесі мәзірге өту үшін Ағынды басыңыз. Келесі түймесін басыңыз, содан кейін HTTP -ді жаңа мақсат ретінде таңдаңыз және қосыңыз. Енді ағынды кішірейту үшін Транскодтауды орнатыңыз. Мен 60 кб/с және 8 кадр/с жылдамдықта M-JPEG қолданатын реттелетін профиль жасадым. Себебі MPEG немесе Theora сияқты жетілдірілген кодек нетбуктің Atom процессорында үлкен процессорлық уақытты жояды және бұл сіздің бейне арнаңыздың себепсіз тоқтауына әкелуі мүмкін. MJPEG - бұл қарапайым кодек, ол төмен бит жылдамдығында қолдануға оңай. Ағынды іске қосқаннан кейін, басқа компьютерде VLC ашыңыз, желілік ағынды ашыңыз, HTTP таңдаңыз, содан кейін нетбуктің IP -мекен -жайын теріңіз (қосылуыңызға байланысты жергілікті немесе Интернет), содан кейін «: 8080». Портты қандай да бір себеппен көрсету керек, әйтпесе ол қате береді. Егер сізде лайықты байланыс болса, сіз басқа компьютерде веб -камераның берілуін көресіз, бірақ ол сәл (шамамен секунд) кідіріске ұшырайды. Неліктен бұл кідіріс пайда болғанын білмеймін, бірақ мен одан қалай құтылуға болатынын білмеймін. Енді басқару бағдарламасын ашып, нетбук роботын жүргізуді бастаңыз. Көлік жүргізу кезінде кідіріс қалай жұмыс істейтінін біліп алыңыз, сонда сіз ештеңеге ұрынбайсыз. Егер ол жұмыс істесе, сіздің нетбук роботыңыз аяқталды.

Ұсынылған: