Përmbajtje:

Një robot 4WD i drejtuar përmes tastierës USB të telekomandës: 6 hapa
Një robot 4WD i drejtuar përmes tastierës USB të telekomandës: 6 hapa

Video: Një robot 4WD i drejtuar përmes tastierës USB të telekomandës: 6 hapa

Video: Një robot 4WD i drejtuar përmes tastierës USB të telekomandës: 6 hapa
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Qershor
Anonim
Image
Image

Për projektin tim të ardhshëm robotik, u detyrova të arkitektoja/hartoja platformën time robotike për shkak të rrethanave të paparashikuara.

Qëllimi është që ajo të jetë autonome, por së pari, më duhej të testoja aftësinë e saj themelore të drejtimit, kështu që mendova se do të ishte një projekt argëtues që të sillesh dhe të kontrollohesh sikur të ishte një automjet RC (i kontrolluar nga radio), por në vend të kësaj përdorni një Gamepad USB.

Rezultatet kanë qenë po aq të mira ose më të mira nga sa prisja.

Avantazhi i shkuarjes në rrugën USB Gamepad, me shumë programe, është se unë mund ta personalizoj atë dhe të shtoj në atë që kam bërë tashmë. Unë nuk kam ndonjë përvojë aktuale në ndërtimin e një automjeti RC, por imagjinoj që ai është shumë i mbërthyer me çfarëdo që të ketë transmetuesi RC (levë/butona, etj) dhe marrësi RC.

Për shembull, unë kam shtuar një njohje që roboti ka goditur një mur, vetëm duke e bërë softuerin të zbulojë rryma të larta dhe vlera të ulëta të shpejtësisë së koduesit.

Opsionale, mund t'i shtoni robotit disa ueb USB, në varësi të numrit dhe vendosjes së tyre, mund ta drejtoni robotin në zonën e ndenjes dhe në një dhomë tjetër, ndërsa jeni ulur diku tjetër para kompjuterit që ka USB Gamepad të lidhur ajo

Ky udhëzues nuk do të jetë një mënyrë e vërtetë, e detajuar, gjithëpërfshirëse, hap pas hapi, por do të përpiqem të jap sa më shumë detaje që të mundem.

Furnizimet

Pjesë të sugjeruara: Pjesën më të madhe të kësaj e kam marrë nga Servo City (Actobotics).

2 - 13.5 U -kanale, për anët e kornizës bazë. Motorët janë montuar në këtë. Unë shkova me diçka më të shkurtër dhe motorët e mi janë montuar në qoshet, dhe e bëri të vështirë montimin e tyre.

Kanale U 2 - 12 për pjesën e përparme dhe të pasme të kornizës bazë.

Kanale U 2 - 15 për parakolpët, para dhe mbrapa

2 - 7 (apo ishte 7.5 ?) U -kanale për kolonat e përparme. Kjo nuk është shumë kritike, gjatësitë mund të ndryshojnë. Varet se sa të larta janë kolonat e pasme dhe në cilën lartësi zgjidhni të vendosni këndin Kanali U që lidhet mes tyre.

2-(gjatësi?) U-kanale për anëtarin me kënd, para-mbrapa, që lidhin kolonat drejt. Ky është kritik, sepse Servo City / Actobotics shet panele ose kllapa me kënd 45 gradë për këtë qëllim, por do t'ju duhet të bëni matematikë / këmbëz për t'u siguruar që të keni gjatësinë e duhur.

2-(gjatësia?) U-kanalet për të shërbyer si parakolpë të nivelit më të lartë, përsëri këto varen nga ajo që bëni me bazën

2-(gjatësia?) U-kanale për të shërbyer si parakolp të nivelit më të lartë para dhe prapa, e njëjta gjë lëshohet edhe më lart.

1 - (gjatësia?) U -kanali për të shërbyer si anëtari më i lartë, shtrihet nëpër kolonat e pasme. Ky mund të mos jetë shumë kritik, pasi mund të montoni në majë, ose para / pas kolonave të drejtë.

12 (afërsisht) kanale L ose kllapa. Këto shërbejnë për qëllime të shumëfishta, por në thelb sigurojnë integritet/forcë strukturore në qoshet e kornizës bazë DHE kolonat e drejta.

4 (+?) 3-vrima deri në 5-vrima me kanale të sheshta. Këto gjithashtu sigurojnë forcë strukturore për robotin.

ServoCity shet dy lloje kryesore të paneleve të sheshta me sipërfaqe të madhe, të dobishme për t'u përdorur si pllaka rrëshqitëse të poshtme, ose sipërme ku do të shkonte bateria dhe kontrolluesit, apo edhe për sipërfaqe më të larta për sensorë.

Ka një panel 4 (4.5?) "X 12", dhe unë mendoj se tjetri është një panel 9 (9.5?) "X 12.

Tani kjo është ajo ku gjërat bëhen interesante, dhe mund të jenë konfuze dhe të kushtueshme (pjesët e vogla shtohen). Të gjitha kanalet, etj., Mund t'i bashkëngjiten njëri -tjetrit nëpërmjet këtyre pjesëve lidhëse, prej të cilave ka SHUMAL. Këtu më vjen keq që nuk kam një listë të plotë, të detajuar dhe të veçantë të pjesëve.

Dhe gjëja është se ju nuk e dini me të vërtetë se për cilat mund të keni nevojë, ose sa.. sepse ka shumë mënyra për t'i përshtatur këto pjesë së bashku.

Unë mund të listoj atë që kam përdorur:

www.servocity.com/90-quad-hub-mount-c

www.servocity.com/side-tapped-pattern-moun…

www.servocity.com/90-quad-hub-mount-d

Dy të mëposhtmet janë shumë të dobishëm, dhe unë thjesht do t'i grumbulloja ato:

www.servocity.com/single-screw-plate

www.servocity.com/dual-screw-plate

Tjetra janë të gjitha vidhat (bulonat). Fillova me një paketë të madhësisë SECAH, dhe kam kaluar nëpër shumicën e tyre. Kam përdorur vida më të gjata ku madhësia nuk kishte rëndësi, dhe i rezervova ato më të shkurtrat për vendin ku kërkoheshin sepse asnjë gjatësi tjetër nuk do të funksiononte.

Së fundi, ju duhet të merrni 1 qese nga këto:

www.servocity.com/6-32-nylock-nuts-pack

Unë nuk kam përdorur kaq shumë, por ato (mendoj) janë kritike për të siguruar që motorët tuaj të mos dridhen nga korniza me kalimin e kohës. Vetëm dy do të punonin për motor, për shkak të kanalit U

Ju do të keni nevojë për të paktën 4 prej tyre, mund të merrni një shtesë ose më shumë në rast se i shkaktoni dëmtim njërit (më besoni, mund të vini / hiqni motorët disa herë):

www.servocity.com/heavy-duty-clamping-shaf…

Në mënyrë tipike, boshtet e motorëve janë 6 mm, dhe boshtet janë 1/4 (0.25in).

Unë do të merrja disa vida të zeza, gjoja më të forta, dhe do t'i përdorja ato për kapëset e mësipërme, dhe NUK do të përdornin vidhat që vijnë me kapëset:

(Unë mendoj se këto janë ato):

Kushineta me diametër 4 - 1/4 "(0.25")

1 - qese me ndarës të zi 1/4"

4 - Shtrëngimi i shpërndarësve D

www.servocity.com/0-770-clamping-d-hubs

4-Boshtet D (#6340621.375 "(1-3/8")

Rrota 4 - 6 të rënda

www.servocity.com/6-heavy-duty-wheel

Vini re se unë i dua këto rrota, por ato kanë një buzë të fortë gome. Ata duket se bëjnë mirë në dysheme të forta, qilima, dhe ndoshta ecje të forta prej betoni. Nuk do të bëjë mirë në bar, rërë, etj.

GJITHASHTU, ata do të priren të njollosin qilimin tuaj !!!

4 - motorët:

www.servocity.com/motors-actuators/gear-mo…

Unë shkova me 223 RPM, shpejtësi të mirë të brendshme, gjithashtu mund ta lëvizja robotin tim (i rëndë me 2 bateri SLA 12V) mjaft lehtë në lëvizje të ngadaltë.

2 - kodifikues motorikë për motorët. (Roboclaw i Servo City trajton vetëm 2 kodues)

1 - Kontrolluesi i motorit Roboclaw 2X45A, sigurohuni që të merrni atë me blloqet e terminalit të gjelbër në të, jo kunjat…. mirë… secila ka përparësitë e veta. Hindsight.. Unë mund të kem marrë kunjat.

Unë mendoj se kjo është ajo nga Servo City.

SparkFun shet Arduino Uno (kjo është ajo që kam përdorur), dhe gjithashtu Redboard Artemis si menaxher i makinës tuaj.

Ju do të dëshironi një Raspberry Pi 3 (ose 4?) Si "tru" dhe ndërfaqe të nivelit të lartë për ju.

Ju do të keni nevojë për instalime elektrike, çelsin, siguresat dhe një diodë shumë të fortë "flyback".

Kam përdorur një bateri SLA të ciklit të thellë Duracell 12V 14AH, por ju mund të përdorni çdo gjë.

KUJDES! Dizajni i këtij roboti (TALL, dhe I gjerë, por SHKURT), supozon një lloj qendre të rëndë graviteti, siç do të siguronte një bateri SLA. Mund të mos shkojë mirë me ato lloje të tjera të paketave të teknologjisë më të re. LiPo, Lion, etj. Mund të përmbyset lehtë.

Nga Pololu mora disa adaptorë të prizës së fuçisë, në mënyrë që të mund të fuqizoja në mënyrë të pavarur Arduino dhe/ose Tabelën e Kuqe, edhe pse ato do të lidheshin me Raspberry përmes USB, sepse nuk doja të mbështetesha në fuqinë e Mjedrës Me (Veçanërisht montimi i kamerave, sensorëve, etj.)

Ju do të keni nevojë për një rregullator të tensionit prej 12 deri në 5 V, minimumi 5A (?) Për Mjedrën. Të tjerët mund të trajtojnë çdo gjë midis 7 dhe 15 V në mënyrë të drejtpërdrejtë me baterinë SLA.

Bëhet fjalë për pjesët.

Ajo që NUK do të bëja - ingranazh i zbukuruar me 90 gradë.

Përsëri, ka shumë video në listën time të luajtjes në YouTube Robotics që detajon shumicën e mësipërme.

Hapi 1: Ndërtimi

Sinqerisht, të gjithë hapat e mi të ndërtimit janë tashmë në formën e youtubes. Ju mund t'i shihni ato në listën time të luajtjes Robotics, duke filluar në "Wallace Robot 4". Ato të mëparshme (Wallace II, Wallace III) gjithashtu kanë material të mirë

www.youtube.com/playlist?list=PLNKa8O7lX-w…

Hapi 2: Testoni Roboclaw, Motors dhe Encoders

Krijuesit e Roboclaw (BasicMicro) kanë një aplikacion Windows që mund ta përdorni për t'u siguruar që i keni lidhur motorët dhe koduesit në mënyrë korrekte me Roboclaw. Ju do të lidhni motorë nga e njëjta anë paralelisht me Roboclaw. Ju mund të zgjidhni të përdorni telat e koduesit, vetëm në motorët e pasmë, ose motorët e përparmë, ose ndoshta edhe më mirë - DIAGONALISHT.

Arsyeja për sugjerimin tim ka të bëjë me (më vonë) kontrollimin e një roboti të mbërthyer. Të kesh një status diagonalisht nëse rrotat e përparme/të pasme janë/nuk rrotullohen mund të jetë më mirë sesa vetëm para, ose vetëm nga ana e pasme.

SH NOTNIM: ajo që NUK kam bërë është të përdor Arduino për t'u lidhur gjithashtu (përmes kunjave GPIO) me koduesit - nëse e keni bërë këtë, ju mund të keni Roboclaw të trajtojë 2 kodues, dhe pastaj Arduino të trajtojë dy të tjerët, dhe vetëm pyet Roboclaw për dy vlerat e koduesit (dhe shpejtësitë).

SH NOTNIM: Kam përdorur aplikacionin e BasicMicro për të konfiguruar paraprakisht Roboclaw për Ramping Up / Ramping Down. Kjo është e mirë për mbrojtjen e harduerit dhe pajisjeve elektronike. Ka një video për këtë në listën time të luajtjes Robotics.

Pothuajse harrova: Bleva gjithashtu disa kabllo lidhës plumbash që shkojnë midis kabllove të motorit dhe Roboclaw. SH NOTNIM: nëse e bëni këtë, do të vini re se gjatësia totale e kabllit është vërtet e gjatë. Por nuk doja të kisha nevojë të shkurtoja ndonjë nëse nuk do të kisha nevojë. Unë (për hapat e mëvonshëm) hasa në probleme komunikimi me USB midis Raspberry dhe Arduino, ndoshta për shkak të zhurmës EMI.. por unë kam punuar rreth kësaj me softuer.

Nëse bëhet problem, mund t'i shkurtoni telat - gjithashtu mund të blini mburoja metalike (nga Amazon, diametër 1 ).

Gjëja e fundit: Këtë ende nuk kam për ta bërë --- ta konfiguroj ose konfiguroj automatikisht Roboclaw (duke përdorur kodues) në mënyrë që të dy motorët e majtë dhe të djathtë të lëvizin me të njëjtën shpejtësi dhe roboti të shkojë drejt.

E imja lakohet shumë pak mbi 12 këmbë, por jo aq sa ndjeva nevojën për të bërë asgjë në lidhje me të.

Hapi 3: Shtimi dhe Programimi i Arduino

Do t'ju duhet priza e fuçisë dhe disa tela, gjithashtu një kabllo USB. Sigurohuni që të merrni atë të duhurin për lidhësin Arduino.

Ju do të duhet të shkarkoni Arduino IDE.

Këtu në Github është skica më e fundit që trajton drejtimin e robotit:

github.com/elicorrales/wallace.robot.ardui…

Ju do ta lidhni Arduino me kompjuterin tuaj që funksionon IDE, dhe bazuar në mënyrën se si është shkruar skica, do të përdorni kunjat 10 dhe 11 në Arduino për komunikimet serike (Seriali i Softuerëve) me Roboclaw.

Kam zhvilluar një protokoll të thjeshtë komunikimi midis Raspberry Pi dhe Arduino.

It'sshtë i bazuar në karakterin ASCII, gjë që e bën më të lehtë debugimin dhe testimin vetëm duke përdorur dritaren e "monitorit serik" të Arduino IDE.

Komandat fillojnë me numrin "0" (zero) dhe thjesht ngjiten sipas nevojës

Komandat që fillojnë në "20" janë komanda të drejtpërdrejta Roboclaw, dhe ato nën atë numër janë komanda rreptësisht të lidhura me Arduino.

Për shkak të zhurmës EMI, unë përmirësova vargun e komandës për të përfshirë një kontroll.

Pra, çdo varg do të përfshijë:

# numër argumentesh në varg duke përfshirë këtë

shuma e kontrollit

Shembull, thoni që dëshironi që Arduino të përgjigjet me menunë e tij të komandave:

4 0 12 16

"4" është katër shenja në varg.

"0" është komanda MENU.

"12" është numri i rastësishëm që zgjodha.

"16" është shuma prej 4 + 0 + 12.

E njëjta komandë MENU mund të jetë e ndryshme:

4 0 20 24

Për shkak se unë zgjodha një numër të ndryshëm të rastit, shuma e kontrollit është gjithashtu e ndryshme.

Shembull, thoni se doni të ecni përpara me shpejtësi 100 %:

5 29 0 134 100

"5" pesë shenja

"29" komanda FORWARD

"0" numri i rastësishëm

"134" shuma e kontrollit

"100" parametri 1 (shpejtësia në këtë rast)

Nëse Arduino nuk mund ta verifikojë atë varg në hyrje, ai thjesht e heq atë / e injoron atë, nuk ka përgjigje.

Nëse Arduino nuk merr një komandë tjetër lëvizjeje me X milisekonda, ai dërgon një motor STOP në Roboclaw.

Arduino fillon dhe fillon të dërgojë një status auto në portën USB … nëse nuk ju thuhet të ndaloni ta bëni këtë.

Në këtë pikë duhet të jeni gati të provoni të kontrolloni Roboclaw dhe të shikoni motorët që kthehen, vetëm duke përdorur "Serial Monitor" në IDE.

Hapi 4: Shtimi dhe Programimi i Raspberry Pi (node.js)

Përsëri, nëse i hidhni një sy listës sime të lojës Robotics, qysh në fillim, unë kalova çdo hap për të vënë Raspberry në funksion.

E vetmja gjë që mund të kem folur është se do t'ju duhet një rregullator 5V, ose në një farë mënyre të ndërtoni, të prerë/modifikoni një kabllo USB për të, ose të fuqizoni Mjedrën në një mënyrë tjetër.

Këtu në Github është gjithçka që ju nevojitet në Raspberry për të komunikuar me Arduino përmes USB.

github.com/elicorrales/wallace.robot.raspb…

Ka edhe skripte testimi.

Ju mund t'i hidhni një sy kodit të serverit node.js dhe do të shihni se si Raspberry konverton udhëzimet numerike të shkurtra, në vargje url të tipit REST. Ju mund të përdorni "curl" për të dërguar komanda testimi.

Shembull:

adresa juaj IP e RP3: 8084/arduino/api/forward/50

do të bëjë që motorët të rrotullojnë çastin rrotat përpara.

Nëse e vendosni atë në një lak skripti shell, do të shihni që rrotat vazhdojnë të rrotullohen.

Kodi node.js (server.js) përfshin një veçori të rilidhjes në rast se komandat serike humbasin në Arduino. Ju mund ta provoni këtë vetëm duke e shkëputur Arduino nga mjedra dhe duke e lidhur përsëri.

Sigurohuni që të përputheni me normën e baudit serik midis të dyve.

Për shkak të rënies së paketave të këqija të të dhënave nga Arduino, dhe sepse në nivelin node.js, dhe në nivelin e shfletuesit javascript, gjithçka është e koduar për të dërguar shumë komanda "drive", unë kam qenë në gjendje të ekzekutoj deri në 2 000 000 baud (2 Mbps).

Nëse i përdorni skriptet e testimit dhe shihni se si rrotat rrotullohen, atëherë jeni gati për hapin tjetër.

Hapi 5: Hapi Final - Programimi / Përdorimi i Klientit të Uebfaqes

Të përfshira në lidhjen Github me pjesën e Raspberry të gjithë kësaj, janë skedarët e klientit.

indeksi.html. indeksi.js. p5.min.js.

Ata trajtojnë USB Gamepad përmes Gamepad API (bazuar në shfletuesin) dhe ju duhet të shihni butonat dhe rrëshqitësit e ndryshëm gjithashtu të disponueshëm në faqen e internetit.

Kodi javascript pyet (anketon) vlerat e boshtit X dhe Y për njërën nga levë. (Në varësi të asaj që ju keni shkopinj lojërash, mund t'ju duhet të ndryshoni kodin). Ai sondazhon shumë shpejt, dhe shkarkon të gjitha ato vlera në serverin node.js duke dëgjuar në 8084.

Vlerat e papërpunuara të boshtit X dhe Y të levës janë midis 0 dhe 1.

Por funksioni i bibliotekës së kontrolluesit motorik Roboclaw që përdoret në Arduino për të drejtuar motorët, pret një vlerë nga -100 në 0 (prapa) ose (0 në 100) përpara.

Shume…. ky është qëllimi i përfshirjes së p5.min.js. Thjesht ndodh që të ketë këtë funksion shumë të bukur, të përshtatshëm të hartës () ku i jepni vlerën e parë, është diapazoni i papërpunuar (aktual) dhe diapazoni i ri, i dëshiruar. Dhe e konverton vlerën e papërpunuar në vlerë në gamën e re, të hartuar.

Një pikë tjetër: Me shpejtësi 100, roboti mund të jetë shumë i ndërlikuar. Unë vazhdimisht përplasesha me diçka. Por edhe kur përmirësoheni, është akoma prekëse kur rrotulloheni majtas ose djathtas.

Diçka për ju për të shtuar do të ishte e ngjashme me rrëshqitësin aktual Max Speed në faqen e internetit. Ai rrëshqitës përcakton se cila është vlera më e lartë ose maksimale në të cilën do të përcaktoni levën Xs dhe Ys.

Shembull:

Thuaj se jeni duke bërë hartën 0 -> 1 në 0 -> 100. Kur e shtyni levën në fund, jeni në 100. Prekëse. Mund të jetë shumë shpejt.

Por, nëse e rrëshqisni atë rrëshqitësin Max Speed pak mbrapa, tani ju jeni duke e shënuar 0 -> 1 në 0 -> 80 ose 70.

Kjo do të thotë që ju keni më shumë hapësirë për të lëvizur levën tuaj pa një ndryshim kaq të madh në shpejtësinë që dërgohet në nyjen.js (dhe në Arduino).

Dhe shtesa që mund të bëni është të ndani X -të (rrotulloni majtas ose djathtas) nga Y -të (përpara ose prapa) në shpejtësitë e tyre maksimale të disponueshme.

Kështu, ju mund të lini Y -të në 0 deri në 100, 0 në -100 për lëvizje të shpejtë lineare, por ulni shpejtësinë maksimale Xs për lëvizje më të kontrolluar rrotulluese. Më e mira e të dy botëve.

Hapi 6: Opsionale: Drejtoni Robotin me Zhvendosje dhe / ose Ngjarje me Prekje të Miut

Nëse keni arritur deri këtu, ju e dini që shtresat e softuerit duke filluar nga shfletuesi dhe duke shpuar përmes Javascript-it e deri te serveri Raspberry node.js, më në fund në arduino, po konverton koordinatat Gamepad joystick X dhe Y në "" komandat përpara "(ose" prapa ", etj) (dhe vlera e shpejtësisë së tyre).

Më tej, ju e dini atëherë se ndërsa X -të dhe Y -të e levës janë negative 1, nga zero, në plus 1, ato duhet të konvertohen midis zero dhe 100. Epo, maksimumi varet nga cilësimi i shpejtësisë maksimale në faqen e internetit.

Soo … e vetmja gjë për të bërë për të përdorur ose miun, ose ngjarjet e prekjes (si në një smartphone), është kapja e atyre ngjarjeve, kapja e X -ve dhe Y -ve.

POR ---- ato X dhe Y NUK janë midis negative 1 dhe 1. Ata fillojnë 0 dhe rriten pozitivisht, sepse ato janë në thelb pikselët ose koordinatat relative të ekranit të ndonjë elementi HTML (të tillë si një panel bootstrap) ose një kanavacë.

Pra, përsëri, funksioni i "hartës ()" i bibliotekës Js i P5 është shumë i dobishëm për të ri-hartuar atë që na nevojitet.

Rifaktova kodin që të ketë dy faqe të ndryshme në internet, një për desktop duke përdorur Gamepad, një tjetër për celular, duke përdorur ngjarjet me prekje.

Gjithashtu, pasi X-të dhe Y-të të ri-hartohen, ato futen në të njëjtin zinxhir kodesh, etj, siç janë X-të dhe Y-të nga Gamepad.

Recommended: