Агуулгын хүснэгт:

Энгийн Arduino роботын платформ!: 5 алхам
Энгийн Arduino роботын платформ!: 5 алхам

Видео: Энгийн Arduino роботын платформ!: 5 алхам

Видео: Энгийн Arduino роботын платформ!: 5 алхам
Видео: Простой способ сделать дома робота на ардуино 2024, Долдугаар сарын
Anonim
Энгийн Arduino роботын платформ!
Энгийн Arduino роботын платформ!
Энгийн Arduino роботын платформ!
Энгийн Arduino роботын платформ!

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

Линукс компьютерт холбогдсон Xbox 360 хянагч ашиглан роботыг ажиллуулдаг зохистой цуваа протокол, энгийн жишээг олж авч чадсан.

Алхам 1: Энэ юу хийж чадах вэ …

Энэ юу хийж чадах вэ…
Энэ юу хийж чадах вэ…
Энэ юу хийж чадах вэ…
Энэ юу хийж чадах вэ…

Arduino бол маш уян хатан платформ юм. Миний үндсэн зорилго бол Arduino -г хоёр Vex моторыг компьютерт холбох явдал байсан, гэхдээ надад маш их оролт/гаралтын зүү үлдсэн тул нэмэлт зүйл нэмж оруулахаар шийдсэн. Яг одоо надад цуваа портын статусын хувьд RGB LED (хэрэв пакет сайн байвал ногоон, муу байвал улаан), транзистороор удирдуулсан компьютерийн сэнс байна. Би унтраалга, мэдрэгч нэмж болно, гэхдээ би тэдгээрийн аль нэгийг нь хараахан тавиагүй байгаа бөгөөд хамгийн сайн зүйл бол та Arduino робот дээр хүссэн зүйлээ нэмж болно. Нэмэлт зүйлсийг хянаж, компьютерт оролт авахын тулд бага зэрэг интерфэйсийн код шаардагдана.

Алхам 2: эд анги

Эд анги
Эд анги
Эд анги
Эд анги
Эд анги
Эд анги

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

Алхам 3: Arduino ба PC програмчлал

Arduino болон PC програмчлал
Arduino болон PC програмчлал

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

Алхам 4: Үл мэдэгдэх ертөнцийг алсаас судлахын тулд нэтбүүк нэмнэ үү

Үл мэдэгдэх ертөнцийг алсаас судлахын тулд нэтбүүк нэмээрэй
Үл мэдэгдэх ертөнцийг алсаас судлахын тулд нэтбүүк нэмээрэй
Үл мэдэгдэх ертөнцийг алсаас судлахын тулд нэтбүүк нэмээрэй
Үл мэдэгдэх ертөнцийг алсаас судлахын тулд нэтбүүк нэмээрэй

Arduino роботыг бүрэн компьютер дээр суулгаснаар та роботыг ямар ч утасгүйгээр холбож, роботоо нэг бүсээр хязгаарлах боломжтой болно. Энэ ажилд сайн нэр дэвшигч бол нэтбүүк юм. Учир нь нетбукууд нь жижиг хэмжээтэй, хөнгөн жинтэй, батерейтай, 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 Software Center-ээс VLC хайж олоорой (зөвхөн 9.10), эсвэл суулгагчийг videolan дээрээс татаж аваарай. Хэрэв та Windows дээр ажиллаж байгаа бол org. Танд хоёр компьютер дээр ажилладаг VLC хэрэгтэй болно. VLC нь сүлжээнд дамжуулах, дамжуулах чадвартай. Нэтбүүк дээр (робот компьютер) эхлээд вэб камер (суулгагдсан эсвэл USB холболттой) ажиллаж байгаа эсэхийг нээж, Capture Device-ийг дарж, Linux 2-д зориулсан видеог туршиж үзээрэй (зарим хуучин төхөөрөмжүүдэд шинэ 2 хувилбараас илүү Линуксд зориулсан видео хэрэгтэй байж магадгүй юм). Та нэтбүүкийн дэлгэц дээр камерын харагдах байдлыг харах ёстой. Үүнийг цацахын тулд File цэснээс Streaming -ийг сонгоод гарч ирэх цонхны дээд хэсэгт байрлах Capture Device табыг сонгоно уу. Ubuntu (болон бусад олон Linux дистрибьюторууд) нь Alt -ийг дарж дэлгэцийнхээ хувьд хэт том цонхыг чирэх боломжийг олгодог гэдгийг санаарай (ялангуяа хуучин нэтбүүкүүдэд хэрэг болно, гэхдээ миний IdeaPad нь ямар ч шалтгаангүйгээр 1024x576 сондгой нарийвчлалтай байдаг). Хойшлуулах хугацааг багасгахын тулд "Бусад сонголтыг харуулах" дээр дарж кэшийн утгыг бууруулна уу. Та үүнийг бууруулж чадах хэмжээ нь заримдаа төхөөрөмжөөс хамаардаг бөгөөд хэрэв та үүнийг хэт их буулгах юм бол тогтворгүй болно. 300 м -ийн хувьд та бага зэрэг хоцорч магадгүй ч энэ нь тийм ч муу биш юм.

Дараа нь Stream дээр дарж дараагийн цэс рүү орно уу. Дараагийн гэснийг товшоод HTTP -ийг шинэ очих газар болгон нэмнэ үү. Одоо дамжуулалтыг жижиг болгохын тулд Transcoding -ийг тохируулаарай. Би 60kb/s ба 8fps дээр M-JPEG ашигладаг хувийн профайл хийсэн. Учир нь MPEG эсвэл Theora зэрэг дэвшилтэт кодек ашиглах нь нэтбүүкийн Atom процессор дээр CPU -ийн их цагийг зарцуулдаг бөгөөд энэ нь таны видео хангамжийг ямар ч шалтгаангүйгээр зогсооход хүргэдэг. MJPEG бол бага битийн хурдтай ашиглахад хялбар энгийн кодек юм. Дамжуулалтаа эхлүүлсний дараа бусад компьютер дээрээ VLC -ийг нээгээд сүлжээний урсгалыг нээгээд HTTP -г сонгоод нэтбүүкийнхээ IP хаягийг (холбогдож байгаагаасаа хамаараад локал эсвэл интернетийн аль нэгийг оруулаад) дараа нь ": 8080" гэж бичнэ үү. Та ямар нэгэн хачин шалтгаанаар портыг зааж өгөх хэрэгтэй, эс тэгвээс алдаа гаргадаг. Хэрэв та зохих холболттой бол вэбкамерынхаа тэжээлийг бусад компьютер дээрээ харах ёстой, гэхдээ бага зэрэг (нэг секунд орчим) саатах болно. Яг яагаад ийм саатал гарсныг би мэдэхгүй ч түүнээс хэрхэн ангижрахаа мэдэхгүй байна. Одоо хяналтын програмыг нээгээд нетбук роботыг жолоодож эхлээрэй. Машин жолоодохдоо саатал хэрхэн явагдаж байгааг олж мэдээрэй, ингэснээр та юу ч мөргөхгүй болно. Хэрэв энэ нь ажиллах юм бол таны нэтбүүкийн робот дууссан болно.

Зөвлөмж болгож буй: