Sadržaj:

[WIP] Kreiranje Drawbota kojim upravlja Myo traka: 11 koraka
[WIP] Kreiranje Drawbota kojim upravlja Myo traka: 11 koraka

Video: [WIP] Kreiranje Drawbota kojim upravlja Myo traka: 11 koraka

Video: [WIP] Kreiranje Drawbota kojim upravlja Myo traka: 11 koraka
Video: Стелс-игра, похожая на Metal Gear Solid. 👥 - Terminal GamePlay 🎮📱 🇷🇺 2024, Novembar
Anonim
[WIP] Kreiranje Drawbot -a kojim upravlja Myo narukvica
[WIP] Kreiranje Drawbot -a kojim upravlja Myo narukvica

Pozdrav svima!

Prije nekoliko mjeseci odlučili smo se uhvatiti u koštac s idejom o izgradnji otvorenog okvira koji će koristiti samo Myo bend za kontrolu. Kad smo tek krenuli u projekt, znali smo da će ga trebati podijeliti u nekoliko različitih faza. Naša prva glavna faza bila je pokušaj da se zamotamo oko dizajna otvorenog okvira za našeg bota za izvlačenje. Ovo je nestandardno postavljanje i htjeli smo vidjeti koje su prednosti ovog dizajna.

Drugo, znali smo da bi se izgradnja ovog prototipa pokazala korisnom samo za nas same. Naš dizajn i plan je bio da naš posljednji okvir premjestimo u metal i pomoću arduina dobijemo svoju poziciju sa akcelerometra i žiroskopa ugrađenog u Myo bend. Te bi se informacije zatim slale motorima i ponavljale korisnikovo kretanje. Znali smo da će se tako naša druga faza podijeliti u tri glavna aspekta:

  1. programiranje od Myo -a do motora, preko Arduina
  2. električni dizajn za prevođenje naših podataka u pokret
  3. mehanički dizajn za stvaranje okvira razumne veličine koji će olakšati naše kretanje

Svaki član našeg tima osjećao se najugodnije s jedinstvenim dijelom našeg dizajnerskog procesa, pa smo odlučili prekinuti naš posao između svake osobe. Takođe smo vodili blog tokom čitavog procesa dizajniranja kako bismo pratili naše svakodnevno razmišljanje, za razliku od globalnijeg izgleda.

Korak 1: Šta smo planirali da uradimo

Image
Image

Naš cilj je bio kombinirati ova dva proizvoda na način na koji do sada nismo vidjeli da se koriste. Krenuli smo da napravimo relej uživo između naše Myo trake i sopstvene verzije dizajna inspirisanog AxiDraw -om Evil Mad Scientist -a.

Korak 2: Lista prototipskih sastojaka

2 2 x 4 drvene ploče 1 Mjerenje pojasa ili lanca> = 65”4 Drveni ekseri 3 Zupčanici sa zupcima koji odgovaraju pojasu ili lancu 4 3 x 8 vex perforiranih ploča 30 ⅜” Gumeni odstojnici 8 1”podloške promjera 1 1” promjer drveni tipla 1 'duga 8 Vex vijci 1”8 ½” Vex vijci 8 2”Vex vijci 8 ¼” Gumeni odstojnici 48 Vex matice 1 Mala vezica s patentnim zatvaračem

Korak 3: [Prototip] Obrada drveta Unutrašnjost našeg oružja i kočije

[Prototip] Obrada drveta Unutrašnjost našeg oružja i kočije
[Prototip] Obrada drveta Unutrašnjost našeg oružja i kočije

Uzeli smo dva 2x4 i izrezali ih na jednake dužine (33 ¼”)

Pomoću stolne pile napravili smo usjek uz bok uskog dijela dasaka deep "duboko i ⅛" široko u sredini

Isecite tiple na 4 2”komade i izbušite rupu u sredini tiple prečnika oko ¼” pomoću bušilice

Korak 4: [Prototip] Naše vozilo

[Prototip] Making Our Carriage
[Prototip] Making Our Carriage
[Prototip] Making Our Carriage
[Prototip] Making Our Carriage
[Prototip] Making Our Carriage
[Prototip] Making Our Carriage

U idealnom slučaju koristili bismo dva 7x7 komada vex perforiranog čelika, ali sve što nam je bilo na raspolaganju bile su 2x7 trake pa smo ih spojili zajedno u "X" konfiguraciji

Složite 5 rubber”gumenih odstojnika i pričvrstite uglove veks ploča jedni za druge

Labavo pričvrstite drvene tiple kao što je prikazano na slici 1, tako da se slobodno okreću s razmakom od oko 2 inča. Pomoću slike vidite da li bi zupčanici trebali biti postavljeni na ovom mjestu, koristili smo podloške, ali smo kasnije otkrili da sitni plastični zupčanici bolje rade.

Pomoću ½ “vijaka sa vijkom, ¼” gumenih odstojnika i podmetača promjera 1”učvrstite podloške u povišenom položaju kao što je prikazano na slici 1 (koristili smo zelene plastične zupčanike jer nismo mogli pronaći prave podloške) provjerite jesu li podloške u mogućnosti za lako okretanje i uklapanje u zareze na ploči.

Korak 5: [Prototip] Spajanje svega

[Prototip] Spajanje svega
[Prototip] Spajanje svega
[Prototip] Spajanje svega
[Prototip] Spajanje svega
[Prototip] Spajanje svega
[Prototip] Spajanje svega
[Prototip] Spajanje svega
[Prototip] Spajanje svega

Postavite dasku na podlogu i gurnite kolica u sredinu tako da podloške drže kolica iznad daske, a s obje strane daske pribijte zupčanike prema dolje, tako da se slobodno okreću. Zakucajte zupčanik na jedan kraj druge ploče pazeći da je centriran i gurnite je na nosač okomito na prvu ploču.

Sada pojas mora biti provučen kroz sistem, kao što je prikazano, obratite posebnu pažnju na to kako su tiple s vanjske strane pojasa i kako u središtu šasije nema ništa što bi moglo omesti pojas dok se kreće.

Sada pojas treba pričvrstiti sa strane ploče koja nema zupčanik. Za pričvršćivanje smo koristili dodatni čavao i kravatu. Ali korištena metoda nije bitna sve dok je pojas usidren na tom mjestu

Korak 6: [Prototip] Završeno i kreće se

Image
Image

To bi trebalo biti to, povucite pojas u različitim kombinacijama i pogledajte različite učinke koje ima na ruku!

Korak 7: Prevođenje našeg modela u gotov dizajn

Prevođenje našeg modela u gotov dizajn
Prevođenje našeg modela u gotov dizajn
Prevođenje našeg modela u gotov dizajn
Prevođenje našeg modela u gotov dizajn

Kad smo dovršili prototip, bili smo u ekstazi. Niko od nas nije bio siguran kako je sistem radio prije montaže. No, kad su se naši dijelovi spojili, brzo smo otkrili šta nam se sviđa i kako bismo to poboljšali pri kreiranju konačnog dizajna. Naše glavne žalbe koje sistem treba riješiti su:

  1. Scale

    1. Naš prototip bio je masivan i nezgrapan, što ga je činilo sklonim prevrtanju na rubu ruku
    2. Kočija je bila mnogo veća nego što je bilo potrebno i imala je mnogo izgubljenog prostora
    3. Naš pojas (gazni sloj tenka u spremniku) bio je mnogo veći nego što je bilo potrebno, što je unijelo višak prostora između ruku
  2. Trenje

    1. Naši vex gazišta nisu lako prelazili preko drvenih valjaka za tiple na svim mjestima
    2. Plastika na drvetu činila je da se kolica u mnogim slučajevima ne žele kretati
  3. Motorizovanje

    Morali smo sistem učiniti moćnim

Imajući ove stvari na umu, nacrtali smo planove za konačni dizajn. Željeli smo da se upravljačkom jedinicom upravlja pomoću Myo -a putem arduina, a okvir smo željeli učiniti aluminijskim i manjim.

Da bismo to učinili, uzeli smo postotak našeg originalnog prototipa i krenuli s radom od te veličine. Korištenjem lima koji bi se obrađivao tako da ima kanale dovoljno široke da može proći zaštićeni ležaj, imali bismo lagan, ali robustan dizajn koji bi imao veću toleranciju upotrebe.

Naš prototip nam je također omogućio, u samo nekoliko minuta, da utvrdimo kako je rotacija motora utjecala na glavu naše vučne kutije. To nas je dovelo do razumijevanja da bi naš dizajn upravljanja bio jednostavniji nego što smo očekivali. Nakon pomnijeg pregleda, shvatili smo da je kretanje motora aditivno! To znači da svaki motor ima neovisan željeni učinak na naše kretanje, ali kada ih spojimo zajedno, oni počinju poništavati.

Na primjer, ako se posmatra kao koordinatna ravnina, motor koji leži u negativnom x ekstremitetu uvijek će nastojati povući našu ladicu u drugi i četvrti kvadrant. Nasuprot tome, motor koji leži na pozitivnom x kraju uvijek će gurati ladicu u prvi i treći kvadrant. Ako kombiniramo kretanje naših motora, to će otkazati dijelove usmjeravanja tog sukoba i pojačati dijelove koji se slažu.

Korak 8: Kodiranje

Iako sam prije nekoliko godina radio prilično opsežno u C -u, nisam imao iskustva s lua -om ili C ++ -om, a to je značilo da sam morao provesti značajno vrijeme pregledavajući dokumentaciju. Znao sam da je opći zadatak koji bih pokušao ostvariti bio da u određenim vremenskim intervalima dobijem položaj korisnika, a zatim ga proslijedim motorima. Odlučio sam si riješiti zadatak kako bih bolje probavio dijelove koji su mi potrebni.

1. Nabavite podatke od Myo -a (lua)

Znao sam da moram smisliti način prikupljanja podataka od Myoa. Ovo je bio prvi dio izazova kojem sam želio pristupiti. Da bih to učinio, želio sam da korisnik kalibrira svoju veličinu platna prije nego što počne crtati. To bi mi omogućilo da imam granicu za rad. Tada bih mogao normalizirati program između različitih korisnika jednostavnim uzimanjem postotka od maksimalnog platna za prenošenje podataka. Odlučio sam imati skriptirani događaj koji će provjeravati getOrientation svakih pola sekunde, jer će omogućiti provjere da nikada ne izvedu divlji skok iz kojeg biste trebali pogoditi (na primjer, ako se korisnik divlje ljuljao unatrag i dalje).

Ovo je učinilo prvu prepreku na koju sam naišao. Otkrio sam vrlo veliko ograničenje lue i da mi neće dopustiti da čekam prije nego nastavim scenarij. Jedini način za izvođenje ove radnje bio je ili pauziranje CPU -a (što bi ga pauziralo globalno, čak i držanje sistemskog sata), ili upotreba posebnih naredbi za OS. U mom primjeru koda, ostavio sam u originalnoj provjeri OS -a koju sam izvršio (komentirao). To je bilo nakon što je obavljena velika količina istraživanja u luinoj dokumentaciji, a to je učinjeno provjerom oblikovanja sistemske putanje. Tada sam odlučio da moram pogledati dokumentaciju za projekte koji su prethodno objavljeni. Odmah sam shvatio koliko sam vremena izgubio i odmah sam doveden do varijable platforme. Pomoću njega sam mogao gotovo odmah implementirati posebne naredbe čekanja za OS, za razliku od dana koje mi je trebalo da spojim svoje prethodno rješenje.

Otprilike u to vrijeme dizajna počeo je rad na električnom aspektu, pa sam obustavio rad na ovom aspektu koda. Namjera nam je naučiti kako su naši motori povezani s arduinom.

2. Rad oko Arduina (C ++)

Kako je rad s našom matičnom pločom postajao sve složeniji, saznao sam da arduino nije sposoban za rad s više niti. Ovo je bio veliki ključ u mom izvornom dizajnu koda, a nakon što sam pročitao više o ograničenjima koja predstavlja naš kontroler, otkrio sam da ću morati programirati kako će se arduino prebacivati s jednog na drugo. Ovo je postalo fokus mojih napora kako se bližio rok. Morao sam odbaciti velike dijelove moje originalne skripte jer su bili dizajnirani za upisivanje podataka u datoteku sinhrono sa kontrolerom motora koji čita datoteku. To je trebalo omogućiti funkciju čekanja u redu kako bi bila sigurna da čak i ako je korisnik ispred naše ladice, to neće uništiti projekt.

Odlučio sam da funkciju čekanja treba spremiti, ako se ne implementira na isti način kao prije. Da bih to napravio, stvorio sam vektor nizova. To mi je omogućilo ne samo da očuvam duh svog prethodnog dizajna relativno netaknutim, već je značilo i da ne moram pratiti svoje mjesto u datoteci ni za čitanje ni za pisanje. Umjesto toga, sada je sve što sam trebao učiniti bilo jednostavno dodati novu vrijednost u svoj vektor ako se korisnik kretao (preliminarno testiranje je bilo manje od 1% razlike u veličini platna i u x i y od posljednje snimljene pozicije nije rezultiralo snimanjem podataka). Tada sam mogao uzeti najstariju vrijednost u svoj vektor i jednim potezom poslati je u upravljačku jedinicu motora, upisati u našu datoteku, a zatim je ukloniti iz vektora. Ovo je očistilo mnoge moje brige oko stalnog izvođenja IO toka.

Korak 9: Električno

Image
Image
Električna
Električna

Iako sam u prošlosti pohađao tečaj elektronike i prilično sam radio s arduinima. Nikada nisam duboko zaronio u to da arduino prima informacije iz vanjskog izvora (myo), imam samo iskustvo s iznosom informacija putem arduina. Međutim, odlučio sam ožičiti motore na našoj vučnoj kutiji i raditi na kodu kako bi mogli raditi s myo kodom.

Materijali koje sam koristio:

2 x koračni motori

1 x Oglasna ploča

1 x Arduino (Uno)

2 x IC upravljački program L293DE

40 x kratkospojne žice

2 x Ventilatori

1. Povezivanje koračnih motora i ventilatora na matičnu ploču

Slijedeći dijagram kruga, možemo povezati jedan koračni motor s upravljačkim programom na matičnoj ploči. Zatim, slijedeći isti dijagram, primijenite to na drugi upravljački program i motor, međutim, žice kratkospojnika će morati biti uključene u drugačiji set pinova u arduinu (budući da prvi motor zauzima prostor za 4 druga).

Upozorenje/Savjet:

Upravljački programi su vrlo mali, a iglice su vrlo blizu. Bilo bi pametno razmaknuti dva upravljačka programa kako se žice ne bi zbunile.

Slijedi ožičenje ventilatora. Ovo je prilično jednostavno, ventilatori koje sam imao na raspolaganju bili su osnovni ventilatori za računarske procesore, koji imaju pozitivnu osnovu. Uključite to dvoje u odgovarajuće +/- pinove na ploči i okrenite svaki prema svakom vozaču. (Utvrdili smo da, jer koračni motori primaju hrpe informacija i naredbi tokom dužeg vremenskog perioda, vozači se pregrijavaju i mirišu. Dodavanje ventilatora za hlađenje riješilo je ovaj problem).

2. Arduino kod

Ovo je lakši dio!

Otvorite Arduino IDE, idite na karticu "Datoteka", a zatim prijeđite na karticu "primjer" koja će se još više spustiti i pokazati vam karticu "koračni". Zatim želite otvoriti "Stepper_OneStepAtATime"

Ovo će unaprijed učitati primjer koda koji je gotovo plug-and-play na ožičenje arduino/motora. Morat ćemo napraviti mala prilagođavanja jer ćemo raditi s dva motora, što ću pokazati dolje. Možda ćete također morati izvršiti manja prilagođavanja ovisno o tome koje ste pinove odlučili koristiti jer Arduino IDE prema zadanim postavkama postavlja pinove 8-11.

Kôd koji sam koristio za pokretanje dva motora u "sinkronizaciji" je dolje:

//#include

const int stepsPerRevolution = 200;

Stepper myStepper1 (stepsPerRevolution, 9, 10, 11, 12);

Stepper myStepper2 (stepsPerRevolution, 4, 5, 6, 7);

int stepCount = 0;

void setup () {// inicijalizira serijski port: Serial.begin (9600); }

void loop () {{100} {101}

myStepper1.step (1);

Serial.print ("koraci:");

Serial.println (stepCount);

stepCount ++;

kašnjenje (0,5);

myStepper2.step (1); kašnjenje (0,5); }

3. Mogući problemi

Problemi na koje sam naišao tokom ovog procesa nisu bili upotreba pravog primjera koda, upotreba neispravne kratkospojne žice, upotreba pogrešnog IC upravljačkog programa.

Uvjerite se da vaš upravljački program koji koristite može upravljati motorom

Provjerite serijski broj i njegove specifikacije

Naišao sam na problem sa mrtvom kratkospojnom žicom, zbog čega su mi se motori čudno vrtjeli

Morao sam koristiti multimetar za provjeru svake žice

I uvijek dvaput provjerite kod ima li malih grešaka poput propuštanja kraja “;” komanda

Korak 10: Mehanički

Mehanički
Mehanički
Mehanički
Mehanički
Mehanički
Mehanički
Mehanički
Mehanički

1. Materijal

Za cjelokupni proizvodni model ruku preporučuje se da su izrađene od jakog, ali laganog materijala, smatrali smo da je aluminij savršeno pristajao.

Koristili smo aluminijske limove promjera 032 izrezane na 9,125 "x 17,5" i pratili uzorak sa crteža prikazanog u prethodnom koraku.

2. Izrada

Koristeći hemmer (plava mašina) dodali smo rubove koji su okrenuti u suprotnim smjerovima tako da se, kada se komad slomi i preklopi, dva ruba spoje i tvore jedan cjeloviti komad.

Za velike krivine koristili smo tennismis zbog visoke preciznosti.

Za manje zavoje htjet ćete koristiti stroj s manjom nogom, tu dolazi mašina poput roto-matrice. Zbog svoje manje stope, nažalost se mogu napraviti manji prekidi., roto matrica koja nam je bila na raspolaganju bila je još uvijek prevelika za našu tračnicu i bila je deformirana.

** Alternativno, ako nemate pristup odgovarajućoj opremi ili alatima, tada se može napraviti zamjena. **

U našem slučaju, odrezali smo ruke od aluminijskih šina solarnih panela pomoću plazma rezača i glatko izbrusili krajeve te ih pričvrstili leđima unatrag kako bismo napravili dvostrani sustav tračnica. U idealnom slučaju, htjeli bismo zavariti šine zajedno, međutim, bez pristupa stanici za zavarivanje, umjesto toga smo spojili šine i izbušili ih, a zatim ih spojili. No, ako se krene ovim putem, tada treba posebno paziti na to da se matica i podloška osiguraju da se komad što manje savija.

3. Pojas

Za pojaseve smo koristili neke stare kaiševe za 3D štampače koje smo uspjeli spasiti.

Pojas u početku nije bio dovoljno dugačak pa smo pomoću neke termoskupljajuće cijevi spojili dva komada kako bismo napravili jedan koji će biti dovoljno dugačak.

Zeleni zupčanici i drveni klinovi zamijenjeni su disk ležajevima s izuzetno širokim podloškama koje su služile da spriječe klizanje pojasa.

4. Prevoz

I na kraju, nosač je napravljen od lima dimenzija 5 "x 5" od aluminijuma 032, sa izbušenim rupama tamo gdje su predviđeni odgovarajući vijci i podloške. Udaljenost će varirati ovisno o tome koliko je široka vaša šina i koliko imate slobodnog prostora na podloškama.

Korak 11: Razmišljanja

Nažalost, svaka strana našeg projekta naišla je na veliku barikadu vremena, pa nismo uspjeli dovršiti dizajn do ciljanog datuma. Svaki član našeg tima barem je u određenoj mjeri surađivao u svakom drugom aspektu našeg dizajna, što je dovelo do određenog vremenskog pada. Ovo, zajedno sa željom da se dizajnira proizvod sa što je moguće manje vanjskih resursa (jer smo svi htjeli stvoriti svoje dijelove od nule), dovelo je do velike količine ponovno izumljenih kotača.

Svi koji su radili na projektu saznali su više o drugim aspektima projekta. Jedno je natjerati softver da učini određenu radnju, a drugo je učiniti da softver radi zajedno s hardverom. Rekao bih da je važno da ko god radi na aspektu kodiranja ovog projekta, bude upoznat kao i naš koder projekta.

Sve u svemu, nismo uspjeli postići ono što smo željeli. Međutim, osjećam da smo bili na dobrom putu i svi smo otkrili i naučili nove koncepte koje ćemo moći primijeniti na buduće projekte.

Preporučuje se: