Përmbajtje:

Platforma e thjeshtë Arduino Robotike!: 5 hapa
Platforma e thjeshtë Arduino Robotike!: 5 hapa

Video: Platforma e thjeshtë Arduino Robotike!: 5 hapa

Video: Platforma e thjeshtë Arduino Robotike!: 5 hapa
Video: Lesson 05: Introduction to Serial Monitor | Robojax Arduino Step By Step Course 2024, Nëntor
Anonim
Platforma e thjeshtë Arduino Robotike!
Platforma e thjeshtë Arduino Robotike!
Platforma e thjeshtë Arduino Robotike!
Platforma e thjeshtë Arduino Robotike!

Sapo mora një Arduino pasi luaja me disa mikrokontrollues AVR gjatë takimeve të ekipit Robotics. Më pëlqeu ideja e një çipi vërtet të lirë të programueshëm që mund të funksiononte pothuajse nga çdo gjë nga një ndërfaqe e thjeshtë kompjuterike kështu që mora një Arduino sepse tashmë ka një tabelë të bukur dhe ndërfaqe USB. Për projektin tim të parë Arduino, unë gërmova një çantë Vex Robotics që kisha hedhur nga disa gara që bëra në shkollën e mesme. Unë gjithmonë kam dashur të bëj një platformë robotike të drejtuar nga kompjuteri, por mikrokontrolluesi Vex kërkon një kabllo programimi që nuk e kisha. Vendosa të përdor Arduino -n tim të ri (dhe ndoshta më vonë një çip të zhveshur AVR nëse e punoj) për të drejtuar platformën. Përfundimisht dua të marr një netbook dhe më pas mund ta drejtoj robotin duke përdorur WiFi dhe të shikoj kamerën e tij në internet nga distanca.

Kam arritur të marr një protokoll të mirë serik dhe një shembull të thjeshtë që e drejton robotin duke përdorur një kontrollues Xbox 360 të lidhur me një kompjuter Linux.

Hapi 1: Çfarë mund të bëjë…

Çfarë mund të bëjë…
Çfarë mund të bëjë…
Çfarë mund të bëjë…
Çfarë mund të bëjë…

Arduino është një platformë shumë e gjithanshme. Qëllimi im themelor ishte vetëm që Arduino të lidhej me dy motorë Vex në PC, por kisha shumë kunja hyrëse/dalëse të mbetura dhe vendosa të shtoja disa gjëra shtesë. Tani për tani kam një LED RGB për statusin e portit serik (jeshil nëse paketat janë të mira, të kuqe nëse janë të këqija) dhe një tifoz PC që drejtohet nga një tranzistor. Unë gjithashtu mund të shtoj çelsin dhe sensorë, por nuk kam vënë ende asnjë nga ato. Gjëja më e mirë në lidhje me të është se ju mund të shtoni gjithçka që dëshironi në një robot Arduino. Duhet vetëm pak kod ndërfaqe për të kontrolluar sende shtesë dhe për të marrë informacion në kompjuter.

Hapi 2: Pjesët

Pjesët
Pjesët
Pjesët
Pjesët
Pjesët
Pjesët

Për robotin tim, kam përdorur disa pjesë të ndryshme. Shumica e pjesëve ishin nga sende të vjetra që kisha vendosur në bodrumin tim. 1) Arduino Duemilanove w/ ATMega328Ky është Arduino më i ri, dhe meqenëse sapo e mora atë pak ditë më parë kam atë më të ri. Sidoqoftë, kodi është mjaft i vogël sa duhet të përshtatet lehtësisht në çdo Arduino. Ndoshta mund të përshtatet edhe në një ATTiny (nëse ndërtoj një kontrollues robot përveç Arduino, ATTiny 2313 duket si një zgjedhje e mirë, është më e vogël dhe më e lirë, por ka ende shumë dalje dhe një ndërfaqe serike UART) 2) Platforma Vex RoboticsI mori një çantë Vex disa vjet më parë për të ndërtuar një robot të kontrolluar nga radio për të marrë gjëra për një konkurs të shkollës së mesme. Kam ndërtuar bazën bazë "bot katrore" që ka 4 rrota të drejtuara nga dy motorë. Ju mund të zëvendësoni bazat e tjera të robotëve nëse keni ndonjë platformë tjetër që dëshironi të drejtoni. Gjëja e rëndësishme për t'u vënë në dukje është se motorët Vex janë në thelb servos të rrotullimit të vazhdueshëm, ata përdorin modulim të gjerësisë së pulsit për të sinjalizuar se sa shpejt dhe në cilin drejtim të kthehen. Motorët Vex janë të mirë sepse kanë një gamë të lartë të tensioneve të funksionimit, diku midis 5 deri në 15 volt. Unë jam duke përdorur 12V sepse kisha një bateri 12V. Për shumicën e shërbimeve standarde të hobi, do t'ju duhet një tension më i ulët (shpesh 6 volt). 3) Bateria Një robot është i padobishëm pa furnizim me energji elektrike. Për testimin unë përdor një përshtatës standard 9V të murit-lyth nga RadioShack, por për funksionimin pa kabëll gjeta një paketë baterie 12V NiMH në një laptop të lashtë. Edhe pse nuk mban një ngarkesë të mjaftueshme për të drejtuar laptopin, ai e drejton robotin tim Vex mirë. Ai gjithashtu mund të fuqizojë Arduino duke përdorur pinin hyrës Vin në lidhësin e energjisë, Arduino do të rregullojë 12V deri në 5 dhe madje do ta nxjerrë atë pinin dalës 5V në lidhësin e energjisë. 4) Breadboard bazë lidhni gjithçka. Përfundimisht do të marr një tabelë më të bukur prototipi dhe ngjitëse në disa lidhje më të përhershme, por tani për tani bordi i bukës e bën të lehtë ndryshimin e gjërave. Bordi im i bukës është "paneli bazë" i SparkFun, vetëm një pjatë në një pjatë metalike me 3 terminale. 5) Konvertues RS232-TTL i bazuar në MAX232Nëse doni të drejtoni robotin tuaj duke përdorur një lidhje portuale serike RS-232 (në krahasim me Arduino-n e ndërtuar në USB) mund të përdorni një konvertues RS232-TTL. Unë jam duke përdorur një MAX232 sepse kisha disa prej tyre të shtrirë përreth dhe e bashkova në një copë të vogël të bordit prototip me kondensatorët e kërkuar. Unë kam nevojë për RS-232 sepse laptopi im i vjetër ka vetëm një port USB dhe po e përdor atë për një kontrollues loje për të drejtuar robotin. 6) Pjesë shtesë sipas dëshirës Për korrigjimin e lehtë të protokollit serik, unë vendos një LED RGB në të (mora një me porosinë time Arduino sepse ato tingëlluan mirë). Drita ndizet me ngjyrë të kuqe, jeshile, blu me radhë kur Arduino fillon të shfaqet për të treguar se roboti është rindezur dhe pastaj ndizet e Gjelbër kur është marrë një paketë motorike, Blu kur është marrë një paketë tifozësh dhe e Kuqe kur është e keqe ose e panjohur pakoja është marrë. Për të drejtuar tifozin kam përdorur një transistor standard NPN (të njëjtat që kam demonstruar në Instructable -in tim të fundit) dhe një rezistencë midis transistorit dhe Arduino -s (transistori po tërhiqte shumë rrymë dhe po ngrohte Arduino -n, kështu që vendosa një kufizim rezistencë brenda për ta ndaluar atë).

Hapi 3: Arduino dhe Programimi i PC

Arduino dhe Programimi i PC
Arduino dhe Programimi i PC

Për të programuar Arduino, padyshim që do t'ju duhet softueri Arduino dhe një kabllo USB. Ju gjithashtu mund të programoni Arduino duke përdorur një port serik dhe një konvertues të nivelit TTL nëse kompjuteri juaj ka një port serial. Vini re se ndërfaqja serike USB nuk do të komunikojë me procesorin ATMega të Arduino nëse ekziston një konvertues niveli i lidhur me kunjat serik të Arduino (kunjat 0 dhe 1), kështu që shkëputeni atë para se të përdorni USB. Në Arduino do të kemi nevojë për një ndërfaqe serike që lejon PC për të kontrolluar motorët. Ne gjithashtu do të kemi nevojë për një sistem servo drive PWM për të dërguar sinjalet e sakta tek motorët Vex dhe për t'u siguruar që ata të shkojnë në drejtimet e sakta kur u jepen vlerat e duhura. Unë gjithashtu shtova një ndezje të thjeshtë LED, kryesisht për tregues të statusit, por edhe sepse duket mirë. Në kompjuter do të na duhet të hapim portin serik dhe të dërgojmë korniza të të dhënave që programi Arduino do të kuptojë. PC gjithashtu duhet të dalë me vlera motorike. Një mënyrë e thjeshtë për ta bërë këtë është të përdorni një jastëk lojërash USB ose levë, unë jam duke përdorur një kontrollues Xbox 360. Një opsion tjetër është përdorimi i një kompjuteri të rrjetëzuar (ose një netbook ose një bord të vogël mini ITX) në vetë robotin për të drejtuar me valë. Me një netbook, madje mund të përdorni kamerën në internet për të transmetuar një burim video dhe për të drejtuar robotin tuaj nga distanca. Kam përdorur sistemin e bazave Linux për të bërë programimin e rrjetit për konfigurimin tim. Një program ("serveri i levës") ekzekutohet në një kompjuter të veçantë që ka një kontrollues të kyçur në të, dhe një program tjetër ("klienti") ekzekutohet në netbook të lidhur me Arduino. Kjo lidh dy kompjuterët dhe dërgon informacione për levë në netbook, e cila më pas dërgon paketa serike në Arduino që drejton robotin. Për t'u lidhur me Arduino duke përdorur një kompjuter Linux (në C ++), së pari duhet të hapni portën serike në mënyrë korrekte Baud rate dhe më pas dërgoni vlerat duke përdorur një protokoll që keni përdorur edhe në kodin e Arduino. Formati im serial është i thjeshtë dhe efektiv. Unë përdor 4 bajtë për "kornizë" për të dërguar dy shpejtësi motorike (secila është një bajt i vetëm). Bajtët e parë dhe të fundit janë vlera të koduara, të cilat përdoren për ta mbajtur Arduino-n të mos dërgojë byte të gabuar në kodin PWM dhe të bëjë që motorët të çmenden. Ky është qëllimi kryesor i LED RGB, ai ndizet me ngjyrë të kuqe kur korniza serike nuk ishte e plotë. 4 bajtët janë si më poshtë: 255 (bajt i koduar "fillimi"),,, 200 (bajt i koduar "përfundim" i fortë) Për të siguruar marrjen e besueshme të të dhënave, sigurohuni që të vendosni mjaft vonesë midis sytheve të programit. Nëse e përdorni kodin e kompjuterit tuaj shumë shpejt, ai do të përmbytë portin dhe Arduino mund të fillojë të bjerë ose edhe të lexojë keq bajt. Edhe nëse nuk lëshon informacion, ai gjithashtu mund të tejkalojë tamponin e portit serik të Arduino. Për motorët Vex, kam përdorur bibliotekën Arduino Servo. Meqenëse motorët Vex janë vetëm motorë rrotullimi të vazhdueshëm, ata përdorin të njëjtin sinjalizim që përdorin servos. Sidoqoftë, në vend që 90 gradë të jetë pika qendrore, është pika e ndalimit ku motori nuk rrotullohet. Ulja e "këndit" bën që motori të fillojë të rrotullohet në një drejtim, ndërsa ngritja e këndit e bën atë të rrotullohet në drejtimin tjetër. Sa më larg nga pika qendrore të jeni, aq më shpejt motori do të rrotullohet. Ndërsa nuk do të prishë asgjë nëse dërgoni vlera më të mëdha se 180 gradë në motorë, unë do të këshilloja kufizimin e vlerave nga 0 në 180 gradë (të cilat në këtë rast janë rritje të shpejtësisë). Për shkak se doja më shumë kontroll dhe më pak jashtë kontrollit të drejtimit të robotëve, shtova një program "limiti i shpejtësisë" në programin tim që nuk lejon që shpejtësia të rritet mbi 30 "gradë" në asnjë drejtim (diapazoni është 90 +/- 30) Me Unë planifikoj të shtoj një komandë serike të portit që ndryshon kufirin e shpejtësisë, në mënyrë që kompjuteri të heqë kufirin në fluturim nëse doni të shkoni shpejt (Unë kam qenë duke testuar në dhoma të vogla kështu që nuk dua që ajo të shpejtohet dhe përplaseni në mur, veçanërisht me një netbook në të). Për më shumë informacion, shkarkoni kodin e bashkangjitur në fund të këtij Udhëzuesi.

Hapi 4: Shtoni një Netbook për të eksploruar botët e panjohura nga distanca

Shtoni një Netbook për të eksploruar botët e panjohura nga distanca
Shtoni një Netbook për të eksploruar botët e panjohura nga distanca
Shtoni një Netbook për të eksploruar botët e panjohura nga distanca
Shtoni një Netbook për të eksploruar botët e panjohura nga distanca

Me një kompjuter të plotë në bord robotin tuaj Arduino, ju jeni në gjendje ta drejtoni robotin tuaj aq larg sa WiFi juaj mund të arrijë pa asnjë litar për të kufizuar robotin në një zonë. Një kandidat i mirë për këtë punë është një netbook, sepse netbook-et janë të vegjël, të lehtë, kanë një bateri të integruar, kanë WiFi dhe shumica madje kanë ueb-kamera të cilat mund të përdoren për të transmetuar pamjen e robotit përsëri në një vend të sigurt ku mund ta kontrollojë atë. Gjithashtu, nëse netbook juaj është i pajisur me shërbim celular me brez të gjerë, diapazoni juaj është praktikisht i pakufizuar. Me bateri të mjaftueshme ju mund ta çoni robotin tuaj në picën lokale dhe të vendosni një porosi në ueb -kamera (nuk rekomandohet, robotët zakonisht nuk lejohen në vendet e picave, edhe nëse ata ishin njerëz ka të ngjarë të përpiqen të vjedhin robotin dhe ndoshta edhe pica). Mund të jetë gjithashtu një mënyrë e mirë për të eksploruar thellësitë e errëta të bodrumit tuaj nga komoditeti i karriges tuaj të zyrës, megjithëse shtimi i disa fenerëve mund të jetë shumë i dobishëm në këtë rast.

Ka shumë mënyra për ta bërë këtë të funksionojë, shumë prej tyre janë ndoshta shumë më të lehta se të miat, megjithëse nuk jam njohur me përpunimin ose gjuhët e bazuara në skript, kështu që zgjodha të përdor Linux dhe C ++ për të krijuar një lidhje kontrolli pa tel midis stacionit tim bazë (aka i vjetër ThinkPad) dhe netbook -u im i ri Lenovo IdeaPad që është i lidhur me bazën e disqeve Arduino. Të dy kompjuterët po përdorin Ubuntu. ThinkPad -i im është i kyçur në LAN -in e shkollës sime dhe IdeaPad -i im është i lidhur me pikën time të hyrjes WiFi që është gjithashtu e lidhur me LAN -in e shkollës (nuk mund të marr një transmetim video të besueshëm nga WiFi i shkollës pasi të gjithë të tjerët po e përdorin atë, kështu që e vendosa krijoj ruterin tim për të siguruar një lidhje të mirë). Një lidhje e mirë është veçanërisht e rëndësishme në rastin tim pasi nuk kam zbatuar asnjë kontroll të gabimit ose afat. Nëse lidhja e rrjetit bie papritur, roboti vazhdon derisa të përplaset me diçka ose unë vrapoj dhe e ndaloj atë. Ky është faktori kryesor prapa vendimit tim për të ngadalësuar motorin motorik si duke i ulur motorët ashtu edhe duke zbatuar një kufi të shpejtësisë së softuerit.

Hapi 5: Merrni një Video Feed

Pasi eksploruesi juaj robotik mund të ngasë pa tel, me siguri do të dëshironi të keni një burim video nga netbook në mënyrë që të mund të tregoni se ku është roboti juaj. Nëse jeni duke përdorur Ubuntu (ose edhe nëse nuk jeni!) Unë rekomandoj të përdorni VLC Media Player për të transmetuar. Nëse nuk e keni instaluar, me të vërtetë po humbisni, kështu që instalojeni duke përdorur komandën "sudo apt-get install vlc", shfletoni VLC në Qendrën e Softuerëve Ubuntu (vetëm 9.10), ose shkarkoni instaluesin në videolan. org nëse jeni në Windows. Do t'ju duhet VLC që funksionon në të dy kompjuterët. VLC është i aftë të transmetojë, si dhe të luajë transmetime në një rrjet. Në netbook (kompjuteri robot) së pari sigurohuni që kamera juaj e internetit (e integruar ose e lidhur me USB) të funksionojë duke klikuar në Open Capture Device dhe duke provuar Video për Linux 2 (disa pajisje të vjetra mund të kenë nevojë për Video për Linux sesa versionin e ri 2). Ju duhet të shihni pamjen e kamerës në ekranin e netbook. Për ta transmetuar atë, zgjidhni Streaming nga menyja File dhe më pas zgjidhni skedën Capture Device në krye të dritares që shfaqet. Mos harroni se Ubuntu (dhe shumë shpërndarje të tjera Linux) ju lejojnë të mbani shtypur Alt për të klikuar dhe tërhequr dritaret që janë shumë të mëdha për ekranin tuaj (veçanërisht të dobishme në netbook -et e vjetër, megjithëse edhe IdeaPad -i im ka një rezolutë të çuditshme 1024x576 pa ndonjë arsye të dukshme). Për të zvogëluar vonesën, klikoni në "Trego më shumë opsione" dhe ulni vlerën e ruajtjes. Sasia që mund ta ulni ndonjëherë varet nga pajisja, bëhet e paqëndrueshme nëse e ulni shumë. Në 300ms ju mund të merrni një vonesë të vogël, por nuk është shumë keq.

Tjetra, klikoni Stream për të shkuar në menunë tjetër. Klikoni Next, pastaj zgjidhni dhe shtoni HTTP si një destinacion të ri. Tani vendosni Transkodimin për ta bërë rrjedhën më të vogël. Kam krijuar një profil të personalizuar që përdor M-JPEG me 60kb/s dhe 8fps. Kjo ndodh sepse përdorimi i një kodiku të avancuar si MPEG ose Theora do të hajë kohë masive të CPU -së në procesorin Atom të një netbook dhe kjo mund të çojë në ndalimin e burimit tuaj të videos pa ndonjë arsye të dukshme. MJPEG është një kodik i thjeshtë që është i lehtë për t’u përdorur në bitrate të ulëta. Pasi të filloni transmetimin tuaj, hapni VLC në kompjuterin tuaj tjetër, hapni një rrjedhë rrjeti, zgjidhni HTTP dhe më pas shkruani adresën IP të netbook -ut tuaj (qoftë lokal ose në internet në varësi të mënyrës se si po lidheni) e ndjekur nga ": 8080". Ju duhet të specifikoni portin për ndonjë arsye të çuditshme, përndryshe ju jep gabime. Nëse keni një lidhje të mirë, duhet të shihni burimin e kamerës suaj në kompjuterin tuaj tjetër, por do të ketë një vonesë të vogël (rreth një sekondë). Unë nuk e di saktësisht pse ndodh kjo vonesë, por nuk mund ta kuptoj se si të shpëtoj prej saj. Tani hapni aplikacionin e kontrollit dhe filloni të drejtoni robotin tuaj netbook. Merrni një mendim se si funksionon vonesa gjatë vozitjes në mënyrë që të mos përplaseni me asgjë. Nëse funksionon, roboti juaj netbook ka përfunduar.

Recommended: