Sisällysluettelo:

Yksinkertainen Arduino -robottialusta!: 5 vaihetta
Yksinkertainen Arduino -robottialusta!: 5 vaihetta

Video: Yksinkertainen Arduino -robottialusta!: 5 vaihetta

Video: Yksinkertainen Arduino -robottialusta!: 5 vaihetta
Video: How to use Prototyping Shield with breadboard for Arduino 2024, Heinäkuu
Anonim
Yksinkertainen Arduino -robotiikka -alusta!
Yksinkertainen Arduino -robotiikka -alusta!
Yksinkertainen Arduino -robotiikka -alusta!
Yksinkertainen Arduino -robotiikka -alusta!

Sain juuri Arduinon pelatessani joidenkin AVR -mikro -ohjaimien kanssa Robotics -tiimin kokousten aikana. Pidin ajatuksesta todella halvasta ohjelmoitavasta sirusta, joka voisi ajaa melkein mitä tahansa yksinkertaisesta tietokoneen käyttöliittymästä, joten sain Arduinon, koska siinä on jo mukava levy ja USB -liitäntä. Ensimmäistä Arduino -projektiani varten kaivoin esiin Vex Robotics -paketin, jonka olin asettanut joistakin lukion kilpailuista. Olin aina halunnut tehdä tietokoneohjatun robottialustan, mutta Vex -mikrokontrolleri vaatii ohjelmointikaapelin, jota minulla ei ollut. Päätin käyttää uutta Arduinoa (ja ehkä myöhemmin paljaita AVR -siruja, jos saan sen toimimaan) ajettaessa alusta. Lopulta haluan hankkia netbookin ja sitten voin ajaa robottia WiFi: llä ja katsella sen verkkokameraa etänä.

Onnistuin saamaan kunnollisen sarjaprotokollan ja yksinkertaisen esimerkin, joka ajaa robottia käyttämällä Xbox 360 -ohjainta, joka on kytketty Linux -tietokoneeseen.

Vaihe 1: Mitä se voi tehdä…

Mitä se voi tehdä…
Mitä se voi tehdä…
Mitä se voi tehdä…
Mitä se voi tehdä…

Arduino on erittäin monipuolinen alusta. Perustavoitteeni oli vain saada Arduino liittämään kaksi Vex -moottoria PC: hen, mutta minulla oli paljon jääneitä tulo-/lähtötappeja ja päätin lisätä ylimääräistä tavaraa. Tällä hetkellä minulla on RGB -merkkivalo sarjaportin tilalle (vihreä, jos paketit ovat hyviä, punainen, jos ne ovat huonoja) ja PC -tuuletin, jota ohjaa transistori. Voin myös lisätä kytkimiä ja antureita, mutta en ole vielä asettanut mitään niistä, paras asia siinä on, että voit lisätä mitä haluat Arduino -robottiin. Se vaatii vain vähän käyttöliittymäkoodia ylimääräisten asioiden hallitsemiseksi ja syötteen syöttämiseksi tietokoneelle.

Vaihe 2: Osat

Osat
Osat
Osat
Osat
Osat
Osat

Robotissani käytin muutamia eri osia. Suurin osa osista oli vanhoista tavaroista, jotka olin asettanut kellarini ympärille. 1) Arduino Duemilanove w/ ATMega328 Tämä on uusin Arduino, ja koska sain sen juuri muutama päivä sitten, minulla on uusin. Koodi on kuitenkin tarpeeksi pieni, jotta sen pitäisi helposti mahtua mihin tahansa Arduinoon. Se mahtuu luultavasti jopa ATTiny -laitteeseen (jos rakennan robottiohjaimen Arduinon lisäksi, ATTiny 2313 näyttää hyvältä vaihtoehdolta, se on pienempi ja halvempi, mutta siinä on silti paljon ulostuloja ja UART -sarjaliitäntä) 2) Vex Robotics PlatformI sai Vex-sarjan muutama vuosi sitten rakentaakseen radio-ohjattavan robotin hakemaan tavaroita lukion kilpailua varten. Rakensin perus "neliöbotti" -alustan, jossa on 4 pyörää kahden moottorin avulla. Voit korvata muut robottipohjat, jos sinulla on jokin muu alusta, jota haluat ajaa. Tärkeää on huomata, että Vex-moottorit ovat olennaisesti jatkuvan pyörimisen servoja, ja ne käyttävät pulssileveysmodulaatiota ilmaisemaan kuinka nopeasti ja mihin suuntaan kääntyä. Vex -moottorit ovat mukavia, koska niillä on suuri käyttöjännitealue, noin 5–15 volttia. Käytän 12V, koska minulla oli 12V akku. Useimpiin tavallisiin harrastuspalveluihin tarvitaan pienempi jännite (usein 6 volttia).3) Akku Robotti on hyödytön ilman virtalähdettä. Testaukseen käytän RadioShackin tavallista 9 V: n seinäsyytä-sovitinta, mutta langatonta käyttöä varten löysin 12 V: n NiMH-akun muinaisesta kannettavasta tietokoneesta. Vaikka se ei kestä tarpeeksi latausta kannettavan tietokoneen käyttämiseen, se ajaa Vex -robotiani hienosti. Se voi myös virrata Arduinoa virtaliittimen Vin -tulonapilla, Arduino säätää 12 V: n alas 5: een ja jopa antaa sen ulos 5 V: n ulostulonapista virtaliittimessä. 4) Perusleipälevy lanka kaikki. Lopulta saan paremman prototyyppikortin ja juotteen joihinkin pysyviin yhteyksiin, mutta toistaiseksi leipälevyn avulla on helppo muuttaa asioita. Leipälevyni on SparkFunin "perusleipälevy", vain leipälauta metallilevyllä, jossa on 3 liitintä.5) MAX232-pohjainen RS232-TTL-muunnin Jos haluat ajaa robottiasi käyttämällä RS-232-sarjaporttiyhteyttä (toisin kuin Arduinon sisäinen) USB: ssä) voit käyttää RS232-TTL-muunninta. Käytän MAX232: tä, koska minulla oli muutama niistä makaamassa ja juotin sen pienelle prototyyppikortin palalle tarvittavilla kondensaattoreilla. Tarvitsen RS-232: n, koska vanhassa kannettavassa tietokoneessa on vain yksi USB-portti, ja käytän sitä peliohjaimella robotin ohjaamiseen. sain yhden Arduino -tilaukseni kanssa, koska ne kuulostivat viileiltä). Valo vilkkuu punaisena, vihreänä ja sinisenä peräkkäin, kun Arduino käynnistyy osoittamaan, että robotti on käynnistynyt uudelleen ja syttyy sitten vihreänä, kun moottoripaketti on vastaanotettu, sininen, kun tuuletinpaketti on vastaanotettu, ja punainen, kun huono tai tuntematon paketti on vastaanotettu. Puhaltimen käyttämiseen käytin tavallista NPN -transistoria (samat, jotka esittelin viimeisessä Instructable -ohjelmassa) ja vastusta transistorin ja Arduinon välissä (transistori vetää liikaa virtaa ja lämmittää Arduinoa, joten asetin rajan vastus sisään sen pysäyttämiseksi).

Vaihe 3: Arduino- ja PC -ohjelmointi

Arduino- ja PC -ohjelmointi
Arduino- ja PC -ohjelmointi

Arduinon ohjelmointiin tarvitset tietysti Arduino -ohjelmiston ja USB -kaapelin. Voit myös ohjelmoida Arduinon käyttämällä sarjaporttia ja TTL -tasomuunninta, jos tietokoneessasi on sarjaportti. Huomaa, että USB -sarjaliitäntä ei kommunikoi Arduinon ATMega -prosessorin kanssa, jos Arduinon sarjaliittimiin (nastat 0 ja 1) on kytketty tasomuunnin, joten irrota se ennen USB: n käyttöä. PC moottorien ohjaamiseen. Tarvitsemme myös PWM -servomoottorijärjestelmän lähettääksemme oikeat signaalit Vex -moottoreille ja varmistaaksemme, että ne kulkevat oikeisiin suuntiin, kun niille annetaan oikeat arvot. Lisäsin myös yksinkertaisen LED -vilkkumisen, lähinnä tilan ilmaisemiseksi, mutta myös siksi, että se näyttää siistiltä. PC: llä meidän on avattava sarjaportti ja lähetettävä kehyksiä tiedoista, jotka Arduino -ohjelma ymmärtää. Tietokoneen on myös esitettävä moottorin arvot. Helppo tapa tehdä tämä on käyttää USB -pelialustaa tai ohjaussauvaa, käytän Xbox 360 -ohjainta. Toinen vaihtoehto on käyttää verkossa olevaa tietokonetta (joko verkkokirjaa tai pientä mini -ITX -korttia) robotissa ajaakseen langattomasti. Netbookin avulla voit jopa käyttää sisäistä verkkokameraa suoratoistaa videosyötteen ja ajaa robottiasi etänä. Käytin Linux -sockets -järjestelmää verkko -ohjelmointiin asennuksessani. Yksi ohjelma ("joystick -palvelin") suoritetaan erillisellä tietokoneella, johon on kytketty ohjain, ja toinen ohjelma ("asiakas") suoritetaan Arduinoon yhdistetyssä netbookissa. Tämä yhdistää kaksi tietokonetta ja lähettää ohjaussauvan tiedot netbookiin, joka lähettää sitten sarjapaketit robottia ajavalle Arduinolle. baudinopeus ja lähetä sitten arvot käyttämällä protokollaa, jota olet myös käyttänyt Arduinon koodissa. Sarjamuoto on yksinkertainen ja tehokas. Käytän 4 tavua "kehystä" kohti kahden moottorin nopeuden lähettämiseen (jokainen on yksi tavu). Ensimmäinen ja viimeinen tavu ovat kovakoodattuja arvoja, joita käytetään pitämään Arduino lähettämättä väärää tavua PWM-koodiin ja saamaan moottorit hulluksi. Tämä on RGB -LEDin ensisijainen tarkoitus, se vilkkuu punaisena, kun sarjakehys oli epätäydellinen. Neljä tavua ovat seuraavat: 255 (kovakoodattu "aloitus" tavu),,, 200 (kovakoodattu "lopputavu") Varmistaaksesi tietojen luotettavan vastaanoton, varmista, että asetat riittävästi viivettä ohjelmasilmukoiden väliin. Jos suoritat PC-koodisi liian nopeasti, se tulvii portin ja Arduino saattaa alkaa pudota tai jopa lukea tavuja väärin. Vaikka se ei pudota tietoja, se voi myös ylittää Arduinon sarjaporttipuskurin. Vex -moottoreissa käytin Arduino Servo -kirjastoa. Koska Vex -moottorit ovat vain jatkuvakiertoisia moottoreita, ne käyttävät täsmälleen samaa signalointia kuin servot. Kuitenkin sen sijaan, että 90 astetta olisi keskipiste, se on pysähdyskohta, jossa moottori ei pyöri. "Kulman" laskeminen saa moottorin pyörimään yhteen suuntaan, kun taas kulman nostaminen saa sen pyörimään toiseen suuntaan. Mitä kauempana olet keskipisteestä, sitä nopeammin moottori pyörii. Vaikka se ei riko mitään, jos lähetät yli 180 asteen arvot moottoreille, suosittelen rajoittamaan arvot 0: sta 180 asteeseen (jotka tässä tapauksessa ovat nopeuden lisäyksiä). Koska halusin enemmän hallintaa ja vähemmän hallitsematonta robotin ajoa, lisäsin ohjelmaan "nopeusrajoituksen", joka ei salli nopeuden nousua yli 30 "astetta" kumpaankaan suuntaan (alue on 90 +/- 30). Aion lisätä sarjaportin komennon, joka muuttaa nopeusrajoitusta, jotta tietokone voi poistaa rajan lennosta, jos haluat mennä nopeasti (olen testannut pienissä huoneissa, joten en halua sen nopeutuvan ja törmätä seinään, etenkin kun siinä on netbook). Lisätietoja saat lataamalla liitteenä olevan koodin tämän ohjeen lopussa.

Vaihe 4: Lisää Netbook, jotta voit tutustua tuntemattomiin maailmoihin kaukaa

Lisää Netbook, jotta voit tutustua tuntemattomiin maailmoihin kaukaa
Lisää Netbook, jotta voit tutustua tuntemattomiin maailmoihin kaukaa
Lisää Netbook, jotta voit tutustua tuntemattomiin maailmoihin kaukaa
Lisää Netbook, jotta voit tutustua tuntemattomiin maailmoihin kaukaa

Kun Arduino -robotillasi on täysi tietokone, voit ajaa robottiasi niin kauas kuin WiFi -yhteys voi saavuttaa ilman johtoja rajoittaaksesi robotin yhdelle alueelle. Hyvä ehdokas tähän työhön on netbook, koska netbookit ovat pieniä, kevyitä, niissä on sisäänrakennettu akku, niissä on WiFi ja useimmissa on jopa sisäänrakennetut verkkokamerat, joilla voidaan suoratoistaa robotin näkymä takaisin turvalliseen paikkaan. voi hallita sitä. Lisäksi jos netbookisi on varustettu mobiililaajakaistapalvelulla, alueesi on käytännössä rajaton. Jos akkuja on riittävästi, voit ajaa robotin paikalliseen pizzapaikkaan ja tehdä tilauksen verkkokameran kautta (ei suositella, robotteja ei yleensä sallita pizzapaikoissa, vaikka he olisivat ihmisiä, jotka todennäköisesti yrittävät varastaa robotin ja ehkä jopa pizzaa). Se voi myös olla hyvä tapa tutustua kellarisi pimeisiin syvyyksiin mukavasti työtuolista, vaikka joidenkin ajovalojen lisääminen voi olla erittäin hyödyllistä tässä tapauksessa.

On monia tapoja saada tämä toimimaan, monet ovat luultavasti paljon helpompia kuin omani, vaikka en ole perehtynyt käsittely- tai komentopohjaisiin kieliin, joten päätin käyttää Linuxia ja C ++: ta luodakseni langattoman ohjauslinkin tukiasemani (aka vanha ThinkPad) ja uusi Lenovo IdeaPad -netbookini, joka on yhdistetty Arduino -asemapaikkaan. Molemmat tietokoneet käyttävät Ubuntua. ThinkPad on kytketty koulun lähiverkkoon ja IdeaPad on yhdistetty WiFi -tukiasemaan, joka on myös liitetty koulun lähiverkkoon (en saanut luotettavaa videovirtaa koulun WiFi -yhteydestä, koska kaikki muut käyttävät sitä, joten asetin oman reitittimen avulla, jotta saan hyvän yhteyden). Hyvä yhteys on erityisen tärkeä tapauksessani, koska en ole toteuttanut mitään virheentarkistusta tai aikakatkaisua. Jos verkkoyhteys katkeaa yhtäkkiä, robotti jatkaa, kunnes törmää johonkin tai juoksun ja pysäytän sen. Tämä on tärkein tekijä päätöksessäni hidastaa voimansiirtoa sekä kytkemällä moottorit alas ja ottamalla käyttöön ohjelmiston nopeusrajoitus.

Vaihe 5: Hanki videosyöte

Kun robottitutkija voi ajaa langattomasti, haluat todennäköisesti saada videosyötteen netbookista, jotta voit kertoa missä robotti on. Jos käytät Ubuntua (tai vaikka et käyttäisikään!), Suosittelen suoratoistoon VLC Media Playerin käyttöä. Jos et ole asentanut sitä, olet todella hukassa, joten asenna se komennolla "sudo apt-get install vlc", etsi VLC Ubuntu Software Centeristä (vain 9.10) tai lataa asennusohjelma osoitteesta videolan. org, jos käytät Windowsia. Tarvitset VLC: n toimivan molemmilla tietokoneilla. VLC pystyy suoratoistamaan ja toistamaan virtoja verkossa. Varmista ensin verkkokirjassa (robotti-PC), että verkkokamerasi (joko sisäänrakennettu tai USB-liitetty) toimii napsauttamalla Avaa kaappauslaite ja kokeile Video for Linux 2 (jotkut vanhemmat laitteet saattavat tarvita Video for Linuxia uuden 2-version sijaan). Sinun pitäisi nähdä kameran näkymä netbook -näytöllä. Jos haluat suoratoistaa sitä, valitse Streaming Tiedosto -valikosta ja valitse sitten Capture Device -välilehti näkyviin tulevan ikkunan yläreunasta. Muista, että Ubuntu (ja monet muut Linux -distrot) mahdollistavat pitämällä Alt -näppäintä painettuna ja vetämällä näytölle liian suuria ikkunoita (erityisen hyödyllinen vanhemmissa netbook -tietokoneissa, vaikka jopa IdeaPad -laitteella on pariton 1024x576 -resoluutio ilman ilmeistä syytä). Vähentääksesi viivettä, napsauta "Näytä lisää vaihtoehtoja" ja alenna välimuistin arvoa. Määrä, jonka voit laskea, riippuu joskus laitteesta, se muuttuu epävakaaksi, jos alennat sitä liikaa. 300 ms: n kohdalla saatat saada pienen viiveen, mutta se ei ole huono.

Napsauta sitten Stream siirtyäksesi seuraavaan valikkoon. Napsauta Seuraava, valitse sitten ja lisää HTTP uutena kohteena. Määritä nyt Transcoding, jotta virta pienenee. Tein mukautetun profiilin, joka käyttää M-JPEG-nopeutta 60 kb/s ja 8 kuvaa/s. Tämä johtuu siitä, että edistyneen koodekin, kuten MPEG: n tai Theoran, käyttäminen kuluttaa valtavan suoritinajan netbookin Atom -prosessorilla ja tämä voi johtaa siihen, että videosyöttösi pysähtyy ilman ilmeistä syytä. MJPEG on yksinkertainen koodekki, jota on helppo käyttää alhaisilla bittinopeuksilla. Kun olet käynnistänyt streamisi, avaa VLC toisessa tietokoneessa, avaa verkkovirta, valitse HTTP ja kirjoita sitten netbookisi IP -osoite (joko paikallinen tai Internet riippuen yhteyden muodosta) ja sen jälkeen ": 8080". Sinun on määritettävä portti jostain kummallisesta syystä, muuten se antaa sinulle virheitä. Jos sinulla on kunnollinen yhteys, sinun pitäisi nähdä verkkokamerasi syöte toisessa tietokoneessa, mutta siinä on pieni (noin sekunnin) viive. En tiedä tarkalleen, miksi tämä viive esiintyy, mutta en voi keksiä, miten päästä eroon siitä. Avaa nyt ohjaussovellus ja aloita netbook -robotin ajaminen. Tunne, miten viive toimii ajon aikana, jotta et törmää mihinkään. Jos se toimii, netbook -robotti on valmis.

Suositeltava: