Mundarija:

Oddiy Arduino robototexnika platformasi: 5 qadam
Oddiy Arduino robototexnika platformasi: 5 qadam

Video: Oddiy Arduino robototexnika platformasi: 5 qadam

Video: Oddiy Arduino robototexnika platformasi: 5 qadam
Video: Tesla'ning Odamsimon Robot'i OPTIMUS 2024, Noyabr
Anonim
Oddiy Arduino robototexnika platformasi!
Oddiy Arduino robototexnika platformasi!
Oddiy Arduino robototexnika platformasi!
Oddiy Arduino robototexnika platformasi!

Robototexnika jamoasi yig'ilishlarida AVR mikrokontrollerlari bilan o'ynab, menda Arduino bor edi. Menga oddiy kompyuter interfeysidan deyarli hamma narsani ishga tushirish mumkin bo'lgan juda arzon dasturlashtiriladigan chip g'oyasi yoqdi, shuning uchun menda Arduino bor, chunki u allaqachon yaxshi taxtali va USB interfeysiga ega. Birinchi Arduino loyihasi uchun men o'rta maktabda o'tkazgan musobaqalarimdan birida Vex Robotics to'plamini qazib oldim. Men har doim kompyuter boshqaradigan robototexnika platformasini yaratishni xohlardim, lekin Vex mikrokontrollerida menda bo'lmagan dasturiy kabel kerak. Men platformani haydash uchun yangi Arduino -dan (va agar u ishlasa, keyinroq AVR -yalang'ochidan) foydalanishga qaror qildim. Oxir -oqibat men netbukni olishni xohlayman, keyin robotni WiFi yordamida boshqarib, veb -kamerasini masofadan turib ko'rishim mumkin.

Men yaxshi ketma -ket protokol va Linuxni kompyuterga ulangan Xbox 360 boshqaruvchisi yordamida robotni boshqaradigan oddiy misolni olishga muvaffaq bo'ldim.

1 -qadam: nima qila oladi …

Nima qila oladi…
Nima qila oladi…
Nima qila oladi…
Nima qila oladi…

Arduino juda ko'p qirrali platforma. Mening asosiy maqsadim Arduino -ni ikkita Vex dvigatelini kompyuterga ulash edi, lekin menda juda ko'p kirish/chiqish pinlari bor edi va men qo'shimcha narsalarni qo'shishga qaror qildim. Hozir menda ketma -ket port holati uchun RGB LED (agar paketlar yaxshi bo'lsa yashil, yomon bo'lsa qizil) va tranzistor bilan boshqariladigan kompyuter fanati bor. Men, shuningdek, kalit va sensorlarni qo'shishim mumkin, lekin men hozircha ularning hech birini qo'ymadim. Buning eng yaxshi tomoni shundaki, siz xohlagan narsani Arduino robotiga qo'shishingiz mumkin. Qo'shimcha narsalarni boshqarish va kompyuterga kirish uchun faqat bir oz interfeys kodi kerak.

2 -qadam: qismlar

Qismlar
Qismlar
Qismlar
Qismlar
Qismlar
Qismlar

Robotim uchun men turli qismlardan foydalanardim. Aksariyat qismlar men podvalda yotqizgan eski narsalardan edi.1) Arduino Duemilanove w/ ATMega328Bu eng yangi Arduino va men uni bir necha kun oldin olganimdan beri menda eng yangisi bor. Biroq, kod juda kichik, u har qanday Arduino -ga osongina joylashishi mumkin. Ehtimol, u hatto ATTiny -ga ham mos kelishi mumkin (agar men Arduino -dan tashqari robot boshqaruvchi quradigan bo'lsam, ATTiny 2313 yaxshi tanlovga o'xshaydi, bu kichikroq va arzonroq, lekin hali ko'p chiqishlar va ketma -ket UART interfeysi mavjud) 2) Vex Robotics PlatformI bir necha yil oldin o'rta maktab musobaqasi uchun narsalarni yig'ish uchun radio boshqariladigan robot yasash uchun Vex to'plamini oldi. Men ikkita dvigatel bilan boshqariladigan 4 ta g'ildirakli "kvadrat bot" asosini qurdim. Agar siz haydashni istagan boshqa platformangiz bo'lsa, siz boshqa robot bazalarini almashtira olasiz. Shuni ta'kidlash kerakki, Vex dvigatellari asosan uzluksiz aylanish servolari bo'lib, ular puls kengligi modulyatsiyasidan foydalanib, qanchalik tez va qaysi tomonga burilish kerakligini bildiradi. Vex dvigatellari juda yaxshi, chunki ular 5 dan 15 voltgacha bo'lgan yuqori voltli ish kuchlanishiga ega. Men 12V dan foydalanayapman, chunki menda 12V batareya bor edi. Ko'pgina standart mashg'ulotlar uchun sizga past kuchlanish kerak bo'ladi (ko'pincha 6 volt). Sinov uchun men RadioShack standart 9V devorli siğil adapteridan foydalanaman, lekin simsiz ishlash uchun qadimgi noutbukda 12V NiMH batareya to'plamini topdim. Noutbukni ishlatish uchun zaryad etarli bo'lmasa -da, u mening Vex robotimni yaxshi boshqaradi. Bundan tashqari, u Arduino -ni quvvat ulagichidagi Vin kirish pimi yordamida quvvatlantirishi mumkin, Arduino 12V dan 5 gacha tartibga soladi va hatto uni quvvat ulagichidagi 5V chiqish pinidan chiqarib yuboradi. 4) Asosiy panel hamma narsani sim bilan ulang. Oxir -oqibat, men yana yaxshi ulanishlar uchun yaxshi prototip taxtasi va lehimga ega bo'laman, lekin hozircha non paneli narsalarni o'zgartirishni osonlashtiradi. Mening non taxtam-bu SparkFun-ning "asosiy paneli", faqat 3 ta terminalli metall plastinkadagi non paneli. 5) MAX232-ga asoslangan RS232-TTL konvertori Agar siz robotingizni RS-232 ketma-ket portli ulanish yordamida boshqarishni xohlasangiz (Arduino-dan farqli o'laroq). USB-da) siz RS232-TTL konvertoridan foydalanishingiz mumkin. Men MAX232 -dan foydalanayapman, chunki menda bir nechtasi yotardi va men uni kerakli kondansatkichli prototip taxtasining kichik bir qismiga lehimladim. Menga RS-232 kerak, chunki mening eski noutbukda faqat bitta USB port bor va men uni robotni boshqarishi uchun o'yin boshqaruvchisidan foydalanayapman. 6) Qo'shimcha qismlar xohlagancha Seriya protokolini oson disk raskadrovka qilish uchun men unga RGB LEDini qo'ydim (Arduino buyurtmasi bilan bittasini oldim, chunki ular yaxshi eshitildi). Robot qayta ishga tushirilganligini ko'rsatish uchun Arduino chizilmasin, chiroq qizil, yashil, ko'k rangda yonib -o'chib turadi, keyin motorli paket qabul qilinganda yashil, yonilg'i to'plami qabul qilinganda ko'k, yomon yoki noma'lum bo'lganda qizil yonadi. paket qabul qilindi. Ventilyatorni haydash uchun men standart NPN tranzistorini (oxirgi yo'riqnomada ko'rsatganimni) va tranzistor bilan Arduino orasidagi rezistordan foydalanardim (tranzistor juda ko'p oqim olib, Arduino -ni isitdi, shuning uchun men cheklov qo'ydim. uni to'xtatish uchun qarshilik).

3 -qadam: Arduino va kompyuter dasturlash

Arduino va kompyuter dasturlash
Arduino va kompyuter dasturlash

Arduino -ni dasturlash uchun sizga Arduino dasturi va USB kabeli kerak bo'ladi. Agar kompyuteringizda ketma -ket port bo'lsa, Arduino -ni ketma -ket port va TTL darajali konvertor yordamida dasturlashingiz mumkin. Shuni esda tutingki, USB ketma -ket interfeysi Arduino -ning ATMega protsessori bilan aloqa qilmaydi, agar Arduino -ning ketma -ket pinlariga (0 va 1 -pin) ulangan bo'lsa, USB -ni ishlatishdan oldin uni uzib qo'ying. Dvigatellarni boshqarish uchun kompyuter. Vex motorlariga to'g'ri signallarni yuborish va to'g'ri qiymatlar berilganida ular to'g'ri yo'nalishda ketayotganiga ishonch hosil qilish uchun bizga PWM servo haydovchi tizimi kerak bo'ladi. Men oddiy LED yoritgichini qo'shdim, bu asosan holatni ko'rsatish uchun, lekin u juda zo'r ko'rinadi, chunki biz kompyuterda ketma -ket portni ochishimiz va Arduino dasturi tushunadigan ma'lumot ramkalarini yuborishimiz kerak bo'ladi. Kompyuter, shuningdek, vosita qiymatlarini o'ylab topishi kerak. Buning oson yo'li - USB o'yin maydonchasi yoki joystikdan foydalanish, men Xbox 360 kontrolleridan foydalanayapman. Yana bir variant - simsiz haydash uchun robotning o'zida tarmoqli kompyuter (netbuk yoki kichik mini ITX platasi) dan foydalanish. Netbuk yordamida siz hatto bortdagi veb -kameradan foydalanib, video tasmalarni qaytarishingiz va robotingizni masofadan boshqarishingiz mumkin. O'rnatish uchun tarmoq dasturlash uchun Linux rozetkalari tizimidan foydalanardim. Bitta dastur ("joystik serveri") boshqaruvchi o'rnatilgan alohida kompyuterda, boshqa dastur ("mijoz") Arduino -ga ulangan netbukda ishlaydi. Bu ikkita kompyuterni bog'laydi va netbukga joystik ma'lumotlarini yuboradi, keyin esa robotni boshqaradigan Arduino -ga ketma -ket paketlar yuboriladi. Linux kompyuteridan foydalanib Arduino -ga ulanish uchun (C ++ da) avval to'g'ri ketma -ket portni ochish kerak. bod tezligini va keyin Arduino kodida ishlatilgan protokol yordamida qiymatlarni yuboring. Mening ketma -ket formatim sodda va samarali. Ikki vosita tezligini yuborish uchun "ramka" uchun 4 baytdan foydalanaman (har biri bitta bayt). Birinchi va oxirgi baytlar qattiq kodlangan qiymatlar bo'lib, ular Arduino-ni PWM kodiga noto'g'ri bayt yuborishidan va dvigatellarning aqldan ozishidan saqlaydi. Bu RGB LEDining asosiy maqsadi, ketma -ket ramka tugallanmagan bo'lsa, qizil yonib -o'chib turadi. 4 bayt quyidagicha: 255 (qattiq kodli "boshlang'ich" bayt),,, 200 (qattiq kodli "oxirgi" bayt) Ma'lumotlarning ishonchli qabul qilinishini ta'minlash uchun, dastur halqalari orasiga etarlicha kechiktirish qo'yganingizga ishonch hosil qiling. Agar siz kompyuter kodini juda tez ishlatsangiz, u portni suv bosadi va Arduino baytlarni tushirib yuborishi yoki hatto noto'g'ri o'qishni boshlashi mumkin. Agar u ma'lumotni tashlamasa ham, Arduino -ning ketma -ket port buferidan oshib ketishi mumkin. Vex dvigatellari uchun men Arduino Servo kutubxonasidan foydalanardim. Vex dvigatellari uzluksiz aylanadigan dvigatellar bo'lgani uchun, ular servo signallari bilan bir xil signalni ishlatadilar. Biroq, 90 daraja markaz nuqtasi o'rniga, vosita aylanmaydigan to'xtash joyidir. "Burchak" ni pastga tushirish dvigatelni bir tomonga aylantira boshlaydi, burchakni ko'tarish esa uni boshqa tomonga aylantiradi. Siz markaziy nuqtadan qanchalik uzoq bo'lsangiz, vosita tezroq aylanadi. Agar siz motorlarga 180 gradusdan yuqori qiymatlarni yuborsangiz, hech narsa buzilmaydi, lekin men qiymatlarni 0 dan 180 darajagacha cheklashni maslahat beraman (bu holda tezlikni oshirish). Men ko'proq boshqarishni va boshqarilmaydigan robot haydashni xohlaganim uchun, men dasturga "tezlik chegarasi" ni qo'shdim, bu tezlikni har ikki yo'nalishda ham 30 "darajadan" oshishiga yo'l qo'ymaydi (diapazon 90 +/- 30). Men tezlik chegarasini o'zgartiradigan ketma -ket port buyrug'ini qo'shishni rejalashtirmoqdaman, shuning uchun agar siz tez o'tishni xohlasangiz, kompyuter tezlik bilan chegarani olib tashlay oladi (men kichik xonalarda sinovdan o'tganman, shuning uchun men uning tezlashishini xohlamayman). va devorga qulab tushadi, ayniqsa netbukda). Qo'shimcha ma'lumot olish uchun ushbu ko'rsatma oxiridagi biriktirilgan kodni yuklab oling.

4 -qadam: Noma'lum olamlarni uzoqdan o'rganish uchun netbuk qo'shing

Noma'lum olamlarni uzoqdan o'rganish uchun netbuk qo'shing
Noma'lum olamlarni uzoqdan o'rganish uchun netbuk qo'shing
Noma'lum olamlarni uzoqdan o'rganish uchun netbuk qo'shing
Noma'lum olamlarni uzoqdan o'rganish uchun netbuk qo'shing

Arduino robotining to'liq kompyuteri bilan siz robotni bir sohada cheklash uchun hech qanday simsiz Wi -Fi ulanadigan joydan robotni boshqarishingiz mumkin. Bu ishga yaxshi nomzod netbukdir, chunki netbuklar kichik, yengil, o'rnatilgan batareyaga ega, Wi-Fi tarmog'iga ega va hatto veb-kameralarga o'rnatilgan bo'lib, ular yordamida siz robotning ko'rinishini xavfsiz joyga olib borasiz. nazorat qila oladi. Bundan tashqari, agar sizning netbukingiz mobil keng polosali xizmat bilan jihozlangan bo'lsa, sizning diapazoningiz amalda cheksizdir. Batareyalar etarli bo'lsa, siz robotni mahalliy pizza joyiga olib borishingiz va veb -kameraga buyurtma berishingiz mumkin (tavsiya qilinmaydi, odatda pizza joylarida robotlarga ruxsat berilmaydi, hatto odamlar robotni o'g'irlamoqchi bo'lishsa ham) hatto pizza). Bu sizning podvalingizning qorong'i chuqurligini ofis kreslosidan o'rganishning yaxshi usuli bo'lishi mumkin, lekin bu holda ba'zi faralarni qo'shish juda foydali bo'lishi mumkin.

Buni ishlashning ko'p usullari bor, lekin ko'pchiligi menikidan ko'ra osonroq, lekin men ishlov berish yoki skriptga asoslangan tillarni yaxshi bilmayman, shuning uchun men baza stantsiyam o'rtasida simsiz boshqaruv aloqasini yaratish uchun Linux va C ++ dan foydalanishni tanladim. eski ThinkPad) va Arduino haydovchi bazasiga ulangan mening yangi Lenovo IdeaPad netbukim. Ikkala kompyuter ham Ubuntu bilan ishlaydi. Mening ThinkPad maktabim LAN tarmog'iga ulangan va mening IdeaPad maktabim LAN tarmog'iga ulangan Wi -Fi ulanish nuqtasiga ulangan (men maktab Wi -Fi -dan ishonchli video oqimini ololmadim, chunki hamma uni ishlatadi, shuning uchun men o'rnatdim) Yaxshi ulanishni ta'minlash uchun o'z yo'riqchim). Yaxshi ulanish, ayniqsa, mening ishimda juda muhim, chunki men xato tekshirishni yoki tanaffusni amalga oshirmaganman. Agar tarmoq ulanishi to'satdan uzilib qolsa, robot biror narsaga urilmaguncha davom etadi yoki men yugurib to'xtab qolaman. Bu mening dvigatellarni pastga yo'naltirish va dasturiy ta'minot tezligini cheklash orqali haydash tezligini sekinlashtirish haqidagi qarorimning asosiy omili.

5 -qadam: Video tasmasini oling

Robot kashfiyotchingiz simsiz haydashdan so'ng, siz netbukdan video tasmasini olishni xohlaysiz, shunda siz robotingiz qayerda ekanligini bilib olasiz. Agar siz Ubuntu -dan foydalanayotgan bo'lsangiz (yoki bo'lmasa ham!) Men oqim uchun VLC Media Player -dan foydalanishni tavsiya qilaman. Agar siz uni o'rnatmagan bo'lsangiz, siz haqiqatan ham sog'indingiz, shuning uchun uni "sudo apt-get install vlc" buyrug'i yordamida o'rnating, Ubuntu dasturiy ta'minot markazida VLC-ni ko'rib chiqing (faqat 9.10) yoki videolan-da o'rnatuvchini yuklab oling. Agar siz Windows -da bo'lsangiz, org. Sizga VLC ikkala kompyuterda ham ishlashi kerak bo'ladi. VLC tarmoqdagi oqimlarni ijro etish bilan bir qatorda oqim o'tkazishga ham qodir. Netbukda (robotli kompyuter) birinchi navbatda, veb-kamerangiz (o'rnatilgan yoki USB-ga ulangan) "Ishga tushirish moslamasini ochish" tugmachasini bosib, Linux 2 uchun Video-ni sinab ko'rish orqali ishlashiga ishonch hosil qiling (ba'zi eski qurilmalarga yangi 2-versiyadan ko'ra Linux uchun Video kerak bo'lishi mumkin). Siz netbuk ekranida kameraning ko'rinishini ko'rishingiz kerak. Uni oqimlash uchun Fayl menyusidan "Oqim" -ni tanlang va keyin paydo bo'ladigan oynaning yuqori qismidagi "Capture Device" yorlig'ini tanlang. Shuni esda tutingki, Ubuntu (va boshqa Linux tarqatish vositalari) sizga ekran uchun juda katta oynalarni bosish va tortish uchun Alt tugmachasini bosib ushlab turishga imkon beradi (ayniqsa eski netbuklarda foydalidir, garchi mening IdeaPad -da 1024x576 raqamli g'alati aniq sababsiz bo'lsa ham). Kechikishni kamaytirish uchun "Boshqa variantlarni ko'rsatish" tugmasini bosing va keshlash qiymatini kamaytiring. Siz tushira oladigan miqdor ba'zan qurilmaga bog'liq, agar siz uni haddan tashqari tushirsangiz, u beqaror bo'ladi. 300 msda siz biroz kechikishingiz mumkin, lekin bu unchalik yomon emas.

Keyingi menyuga o'tish uchun "Oqim" ni bosing. Keyingisini bosing, so'ng HTTP -ni yangi manzil sifatida tanlang va qo'shing. Endi oqimni kichikroq qilish uchun Transcoding -ni o'rnating. Men 60 kbit/s va 8 kadr tezligida M-JPEG-dan foydalanadigan maxsus profil yaratdim. Buning sababi shundaki, MPEG yoki Theora kabi ilg'or kodeklardan foydalanish netbukning Atom protsessorida katta protsessor vaqtini yo'qotadi va bu sizning video tasmangizni hech qanday sababsiz to'xtatilishiga olib kelishi mumkin. MJPEG - oddiy kodek, past bit tezligida foydalanish oson. O'z oqimini ishga tushirgandan so'ng, boshqa kompyuterda VLC -ni oching, tarmoq oqimini oching, HTTP -ni tanlang, so'ng netbukingizning IP -manzilini kiriting (ulanishingizga qarab mahalliy yoki Internet) va ": 8080". Siz g'alati sabablarga ko'ra portni belgilashingiz kerak, aks holda bu sizga xatolar beradi. Agar sizda yaxshi ulanish bo'lsa, siz boshqa kompyuteringizda veb -kamerangiz tasmasini ko'rishingiz kerak, lekin u biroz (taxminan bir soniya) kechikishi mumkin. Bu kechikish nima uchun sodir bo'lganini aniq bilmayman, lekin undan qanday qutulishni bilmayman. Endi boshqaruv dasturini oching va netbuk robotingizni boshqarishni boshlang. Haydash paytida kechikish qanday ishlashini bilib oling, shunda siz hech narsaga duch kelmaysiz. Agar u ishlayotgan bo'lsa, sizning netbuk robotingiz tugadi.

Tavsiya: