Мазмуну:

Жөнөкөй Arduino Robotics Platform !: 5 кадам
Жөнөкөй Arduino Robotics Platform !: 5 кадам

Video: Жөнөкөй Arduino Robotics Platform !: 5 кадам

Video: Жөнөкөй Arduino Robotics Platform !: 5 кадам
Video: Робототехника Arduino комплектиси 2024, Июль
Anonim
Жөнөкөй Arduino Robotics платформасы!
Жөнөкөй Arduino Robotics платформасы!
Жөнөкөй Arduino Robotics платформасы!
Жөнөкөй Arduino Robotics платформасы!

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

Мен татыктуу сериялык протоколду жана Linux PCке туташкан Xbox 360 контроллерин колдонуп роботту башкарган жөнөкөй мисалды ала алдым.

1 -кадам: Эмне кыла алат…

Бул эмне кыла алат…
Бул эмне кыла алат…
Бул эмне кыла алат…
Бул эмне кыла алат…

Arduino абдан ар тараптуу платформа. Менин негизги максатым Arduino'го эки Vex моторун ЖКга жеткирүү болчу, бирок менде көптөгөн кирүү/чыгаруу казыктары бар болчу жана кошумча нерселерди кошууну чечтим. Учурда менде сериялык порт статусу үчүн RGB LED (пакеттер жакшы болсо жашыл, эгер алар начар болсо кызыл) жана транзистор башкарган ЖК күйөрманы бар. Мен ошондой эле өчүргүчтөрдү жана сенсорлорду кошо алам, бирок мен алардын бирин дагы койгон жокмун. Эн жакшы нерсе, Arduino роботуна каалаган нерсеңизди кошо аласыз. Кошумча нерселерди көзөмөлдөө жана компьютерге киргизүү үчүн бир аз интерфейс коду талап кылынат.

2 -кадам: Бөлүктөр

Бөлүктөр
Бөлүктөр
Бөлүктөр
Бөлүктөр
Бөлүктөр
Бөлүктөр

Роботум үчүн мен бир нече бөлүктөрдү колдондум. Бөлүктөрдүн көбү мен подвалдын тегерегине салган эски нерселерден болгон. Бирок, код кичине болгондуктан, ар кандай Arduinoго оңой батышы керек. Бул, балким, ATTinyге да туура келиши мүмкүн (эгер мен Arduinoдон башка робот контроллерин курсам, ATTiny 2313 жакшы тандоо окшойт, бул кичине жана арзаныраак, бирок дагы эле көптөгөн чыгымдары жана UART сериялык интерфейси бар) 2) Vex Robotics PlatformI бир нече жыл мурун Vex комплектин алган, ал орто мектептин сынагына керектүү нерселерди алуу үчүн радио менен башкарылуучу роботту куруу үчүн. Мен эки мотор менен башкарылган 4 дөңгөлөктүү негизги "чарчы бот" базасын кургам. Эгер айдагыңыз келген башка платформа болсо, сиз башка робот базаларын алмаштыра аласыз. Белгилей кетчү нерсе, Vex моторлору негизинен үзгүлтүксүз айлануу сервосу, алар импульстун модуляциясын колдонуп, канчалык тез жана кайсы багытта бурулуш керектигин билдиришет. Vex моторлору жакшы, анткени алар 5-15 вольттун ортосунда иштөөчү чыңалууга ээ. Мен 12В колдонуп жатам, анткени менде 12В батарейка бар болчу. Көпчүлүк стандарттык хоббилердин серверлери үчүн сизге төмөнкү чыңалуу керек болот (көбүнчө 6 вольт).3) Батарея Роботтун кубаты жок жараксыз. Сыноо үчүн мен RadioShackтин стандарт 9V дубал сөөл адаптерин колдоном, бирок зымсыз иштөө үчүн байыркы ноутбукта 12V NiMH батарея топтомун таптым. Ноутбукту иштетүү үчүн заряды жетишсиз болсо да, ал менин Vex роботумду жакшы башкарат. Ал ошондой эле Arduino -ны кубат туташтыргычындагы Vin киргизүү пинин колдонуп кубаттай алат, Arduino 12Vны 5ке чейин жөнгө салат, ал тургай аны кубат туташтыргычындагы 5V чыгаруу пинин чыгарат. 4) Негизги тактасы Мен азыр баарын зым менен байлаңыз. Акыр -аягы, мен дагы жакшыраак прототиптөөчү тактаны жана дагы бир нече туруктуу туташууларга ээ болом, бирок азыр нан тактасы нерселерди өзгөртүүнү жеңилдетет. Менин табакчам-SparkFunдун "негизги табакчасы", жөн эле 3 терминалы бар металл табактагы нан. 5) MAX232 негизделген RS232-TTL конвертери Эгерде сиз роботту RS-232 сериялык порт туташуусун колдонуп айдагыңыз келсе (Arduino курганынан айырмаланып) USBде) RS232-TTL конвертерин колдоно аласыз. Мен MAX232 колдонуп жатам, анткени менде алардын бир нечеси жатып калды жана мен аны керектүү конденсаторлор менен прототиптоочу тактанын кичинекей бөлүгүнө кошуп чаптадым. Мага RS-232 керек, анткени менин эски ноутбугумда бир гана USB порту бар жана мен аны роботту башкаруучу оюн контролери үчүн колдонуп жатам.6) Каалаганча кошумча бөлүктөр Сериялык протоколду оңдоону оңдоо үчүн мен ага RGB LEDин койдум (Менин Arduino заказым менен алдым, анткени алар сонун угулду). Жарык кызыл, жашыл, көк түстө кезектешип жанып турат, Arduino робот кайра жүктөлгөнүн көрсөтөт, андан кийин мотор пакетин алганда жашыл, күйөрман пакетин алганда көк, начар же белгисиз болгондо кызыл күйөт. пакет алынды. Желдеткичти айдаш үчүн мен стандарттуу NPN транзисторун (акыркы көрсөтмөмдө көрсөткөндөрдү) жана транзистор менен Arduino ортосундагы резисторду колдондум (транзистор өтө көп токту тартып, Arduino'yү ысытып жаткандыктан, мен чектөө койдум) токтотуу үчүн резистор).

3 -кадам: Arduino жана ЖК программалоо

Arduino жана PC программалоо
Arduino жана PC программалоо

Arduino программалоо үчүн сизге Arduino программасы жана USB кабели керек болот. Ошондой эле, эгер сиздин компьютериңиздин сериялык порту бар болсо, Arduino -ны сериялык порт жана TTL деңгээлдеги конвертер аркылуу программалай аласыз. Эске алыңыз, USB сериялык интерфейси Arduino'нун ATMega процессору менен байланыша албайт, эгер Arduino'нун сериялык казыктарына (0 жана 1 -казыктарга) туташкан деңгээлдеги конвертер болсо, USB колдонуудан мурун аны ажыратып коюңуз. Моторлорду башкаруу үчүн ЖК. Ошондой эле бизге Vex моторлоруна туура сигналдарды жөнөтүү жана туура баалуулуктар берилгенде алар туура багытта бара жатканына ынануу үчүн PWM сервопривод системасы керек болот. Мен дагы кээ бир жөнөкөй LED жарыгын кошуп койдум, негизинен статусун көрсөтүү үчүн, бирок ал сонун көрүнгөндүктөн. ПКде биз сериялык портту ачып, Arduino программасы түшүнө турган маалыматтардын кадрларын жөнөтүшүбүз керек. ЖК да мотордук баалуулуктарды ойлоп табышы керек. Мунун оңой жолу - USB оюн аянтчасын же джойстикти колдонуу, мен Xbox 360 контроллерин колдонуп жатам. Дагы бир вариант - зымсыз айдоо үчүн роботтун өзүндө тармактык компьютерди (нетбук же кичинекей ITX такта) колдонуу. Нетбуктун жардамы менен, сиз веб -камераны колдонуп, видеотасманы артка кайтарып, роботту алыстан айдай аласыз. Мен орнотуу үчүн тармак программалоо үчүн Linux розеткалар системасын колдондум. Бир программа ("джойстиктин сервери") контролери туташкан өзүнчө компьютерде иштейт, жана башка программа ("кардар") Arduino менен байланышкан нетбукта иштейт. Бул эки компьютерди байланыштырат жана нетбукка джойстик маалыматын жөнөтөт, андан кийин роботту башкаруучу Arduinoго сериялык пакеттерди жөнөтөт. Linux PC аркылуу Arduino менен туташуу үчүн (C ++ тилинде) адегенде сериялык портту туура жерде ачуу керек. baud ылдамдыгын жана андан кийин Arduino кодунда колдонгон протоколду колдонуп баалуулуктарды жөнөтүңүз. Менин сериялык форматым жөнөкөй жана эффективдүү. Мен "кадрга" 4 байтты колдонуп, эки мотор ылдамдыгын жөнөтөм (ар бири бир байт). Биринчи жана акыркы байттар-бул Arduino PWM кодуна туура эмес байт жиберип, моторлордун жинди болушуна жол бербөө үчүн колдонулган катуу коддолгон баалуулуктар. Бул RGB светодиодунун негизги максаты, сериялык кадр толук эмес болгондо кызыл түскө боёлот. 4 байт төмөндөгүдөй: 255 (катуу коддуу "баштоо" байты),,, 200 (катуу коддуу "аягы" байт) Маалыматтардын ишенимдүү кабыл алынышын камсыз кылуу үчүн, программа циклдеринин арасына жетишерлик кечигүүнү койганыңызды текшериңиз. Эгерде сиз PC кодуңузду өтө тез иштетсеңиз, анда ал портту каптап кетет жана Arduino таштап кетиши мүмкүн, же байттарды туура эмес окуй башташы мүмкүн. Ал маалыматты түшүрбөсө да, Arduino сериялык портунун буферин толтурушу мүмкүн. Vex моторлору үчүн мен Arduino Servo китепканасын колдондум. Vex моторлору үзгүлтүксүз айлануучу моторлор болгондуктан, алар серво колдонгон сигналдарды колдонушат. Бирок, 90 градус борбордук чекиттин ордуна, мотор айланбай турган токтоочу жер. "Бурчту" түшүрүү моторду бир багытта айланта баштайт, ал эми бурчту жогорулатуу башка багытта айланат. Сиз борбордук чекиттен канчалык алыс болсоңуз, мотор ошончолук тез айланат. Эгерде сиз моторлорго 180 градустан жогору баалуулуктарды жөнөтсөңүз, эч нерсе бузулбайт, бирок мен баалуулуктарды 0дөн 180 градуска чейин чектөөнү сунуштайм (бул учурда ылдамдыктын өсүшү). Мен көбүрөөк башкарууну жана роботту башкарууну азыраак кылууну каалагандыктан, программама "ылдамдыктын чегин" коштум, ал ылдамдыктын эки багытта 30 "градустан" жогору болушуна жол бербейт (диапазон 90 +/- 30). Мен ылдамдыктын чегин өзгөрткөн сериялык порт буйругун кошууну пландап жатам, эгер сиз тезирээк баргыңыз келсе, компьютер чектөөнү алып сала алат (мен кичинекей бөлмөлөрдө сынап көрдүм, ошондуктан анын ылдамдыгын каалабайм) жана дубалга урунуп, айрыкча нетбук менен). Көбүрөөк маалымат алуу үчүн ушул Нускаманын аягында тиркелген кодду жүктөп алыңыз.

4 -кадам: Белгисиз ааламдарды алыстан изилдөө үчүн нетбукту кошуңуз

Белгисиз ааламдарды алыстан изилдөө үчүн нетбукту кошуңуз
Белгисиз ааламдарды алыстан изилдөө үчүн нетбукту кошуңуз
Белгисиз ааламдарды алыстан изилдөө үчүн нетбукту кошуңуз
Белгисиз ааламдарды алыстан изилдөө үчүн нетбукту кошуңуз

Ардуино роботуңузда толук компьютер бар, сиз роботыңызды роботту бир аймакка чектөө үчүн эч кандай шнуру жок WiFi жеткенге чейин айдай аласыз. Бул жумушка жакшы талапкер-бул нетбук, анткени нетбуктар кичинекей, жеңил, камтылган батарейкасы бар, WiFi бар, ал тургай веб-камераларга да орнотулган, алар роботтун көз карашын коопсуз жерге кайра жеткирүү үчүн колдонулушу мүмкүн. аны көзөмөлдөй алат. Ошондой эле, эгерде сиздин нетбук мобилдик кеңири тилкелүү кызмат менен жабдылган болсо, анда диапазонуңуз чексиз. Батареялар жетиштүү болгондо, сиз роботту жергиликтүү пиццага алып барып, веб -камерага заказ берсеңиз болот (сунушталбайт, роботтор пиццанын жерлеринде, адатта, адамдар роботту уурдоого аракет кылышса да, уруксат берилбейт, балким пицца да). Бул ошондой эле офистин отургучунун ыңгайлуулугунан жертөлөңүздүн караңгы тереңдигин изилдөөнүн жакшы жолу болушу мүмкүн, бирок бул учурда кээ бир фараларды кошуу абдан пайдалуу болушу мүмкүн.

Бул иштөөнүн көптөгөн жолдору бар, көбү меникинен бир топ жеңилирээк, бирок мен иштетүү же сценарийге негизделген тилдерди жакшы билбейм, ошондуктан мен базалык станциямдын ортосунда зымсыз башкаруу шилтемесин түзүү үчүн 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 агымга, ошондой эле тармакта агымдарды ойнотууга жөндөмдүү. Нетбукта (робот PC) адегенде веб-камераңыздын (камтылган же USB туташкан) Түзмөктү Ачуу баскычын басып, Linux 2 үчүн Видеону сынап көрүү менен иштээрин текшериңиз (кээ бир эски түзмөктөргө жаңы 2 версиянын ордуна Linux үчүн Видео керек болушу мүмкүн). Сиз нетбуктун экранында камеранын көрүнүшүн көрүшүңүз керек. Аны агылтуу үчүн, File менюсунан Streaming тандап, андан кийин пайда болгон терезенин жогору жагындагы Capture Device өтмөгүн тандаңыз. Ubuntu (жана башка көптөгөн Linux дистрибутивдери) экраныңыз үчүн өтө чоң болгон терезелерди чыкылдатуу үчүн Altти басып турууга мүмкүндүк берерин эсиңизден чыгарбаңыз (өзгөчө эски нетбуктарда пайдалуу, бирок менин IdeaPad да так эмес 1024x576 токтомго ээ). Кечиктирүүнү азайтуу үчүн, "Дагы параметрлерди көрсөтүү" баскычын чыкылдатыңыз жана кэштөө маанисин төмөндөтүңүз. Аны түшүрө турган сумма кээде түзмөктөн көз каранды болот, эгер сиз аны өтө төмөндөтсөңүз туруксуз болуп калат. 300msде сиз бир аз кечигип калышыңыз мүмкүн, бирок бул өтө деле жаман эмес.

Кийинки, кийинки менюга өтүү үчүн Агымды чыкылдатыңыз. Кийинкини чыкылдатыңыз, андан кийин HTTPди жаңы багыт катары тандап кошуңуз. Эми агымды кичирейтүү үчүн Транскоддоону орнотуңуз. Мен 60kb/s жана 8fps боюнча M-JPEG колдонгон ыңгайлаштырылган профиль түздүм. Бул MPEG же Theora сыяктуу өнүккөн кодекти колдонуу нетбуктун Atom процессорунда CPU процессинин көп убактысын жеп коет жана бул сиздин видео каналыңыздын эч кандай себепсиз токтоп калышына алып келиши мүмкүн. MJPEG - бул кичинекей биттерде колдонууга оңой жөнөкөй кодек. Агымыңызды баштагандан кийин, башка компьютериңизде VLC ачыңыз, тармактык агымды ачыңыз, HTTPди тандаңыз, андан кийин нетбуктун IP дарегин териңиз (туташууңузга жараша жергиликтүү же Интернет), андан кийин ": 8080". Сиз кандайдыр бир кызыктай себептерден улам портту көрсөтүшүңүз керек, антпесе ал сизге каталарды берет. Эгерде сизде татыктуу туташуу болсо, анда башка компьютериңизде веб -камераңыздын түрмөгүн көрүшүңүз керек, бирок ал бир аз (болжол менен бир секунд) кечигип калат. Бул кечигүү эмне себептен пайда болгонун так билбейм, бирок андан кантип кутулууну таба албайм. Эми башкаруу колдонмосун ачып, нетбук роботун айдай баштаңыз. Эч нерсеге урунбоо үчүн, унаа айдап бара жатканда кечигүү кандай иштээрин билип алыңыз. Эгер ал иштесе, сиздин нетбук роботуңуз бүттү.

Сунушталууда: