Tartalomjegyzék:

Egyszerű Arduino Robotics Platform!: 5 lépés
Egyszerű Arduino Robotics Platform!: 5 lépés

Videó: Egyszerű Arduino Robotics Platform!: 5 lépés

Videó: Egyszerű Arduino Robotics Platform!: 5 lépés
Videó: You can learn Arduino in 15 minutes. 2024, Július
Anonim
Egyszerű Arduino Robotics Platform!
Egyszerű Arduino Robotics Platform!
Egyszerű Arduino Robotics Platform!
Egyszerű Arduino Robotics Platform!

Most kaptam egy Arduino -t, miután a Robotics csapat találkozóin játszottam néhány AVR mikrokontrollerrel. Tetszett egy igazán olcsó programozható chip ötlete, amely szinte bármit képes futtatni egy egyszerű számítógépes felületről, így kaptam egy Arduino -t, mert már rendelkezik egy szép táblával és USB interfésszel. Az első Arduino projektemhez előkotortam egy Vex Robotics készletet, amelyet a középiskolában megrendezett versenyekről készítettem. Mindig is számítógépes robotplatformot szerettem volna készíteni, de a Vex mikrokontrollerhez olyan programozókábelre van szükség, ami nekem nem volt. Úgy döntöttem, hogy az új Arduino -t (és talán később egy csupasz AVR -chipet használok, ha működni fog) a platform meghajtásához. Végül szeretnék netbookot szerezni, majd WiFi segítségével vezethetem a robotot, és távolról megtekinthetem a webkameráját.

Sikerült beszereznem egy tisztességes soros protokollt és egy egyszerű példát, amely egy Linux PC -hez csatlakoztatott Xbox 360 vezérlő segítségével hajtja a robotot.

1. lépés: Mit tehet…

Mit tehet…
Mit tehet…
Mit tehet…
Mit tehet…

Az Arduino egy nagyon sokoldalú platform. Az alapcélom csak az volt, hogy az Arduino két Vex motort csatlakoztasson a PC -hez, de sok maradék bemeneti/kimeneti csapom volt, és úgy döntöttem, hogy hozzáadok néhány extra dolgot. Jelenleg van egy RGB LED -em a soros port állapotára (zöld, ha a csomagok jók, piros, ha rosszak), és egy PC -ventilátorom, amelyet egy tranzisztor hajt meg. Hozzáadhatok kapcsolókat és érzékelőket is, de még nem tettem rá egyet. A legjobb dolog az, hogy bármit hozzáadhat egy Arduino robothoz. Csak egy kis interfészkódra van szükség az extra dolgok vezérléséhez és a számítógéphez való bemenethez.

2. lépés: Alkatrészek

Alkatrészek
Alkatrészek
Alkatrészek
Alkatrészek
Alkatrészek
Alkatrészek

A robotomhoz néhány különböző alkatrészt használtam. A legtöbb alkatrész a régi cuccokból származott, amelyeket az alagsoromban feküdtem. 1) Arduino Duemilanove w/ ATMega328 Ez a legújabb Arduino, és mivel néhány napja kaptam meg, megvan a legújabb. A kód azonban elég kicsi ahhoz, hogy könnyen illeszkedjen bármely Arduino -ra. Valószínűleg még egy ATTiny -re is elfér (ha az Arduino -n kívül robotvezérlőt építek, az ATTiny 2313 jó választásnak tűnik, kisebb és olcsóbb, de még mindig rengeteg kimenettel és soros UART interfésszel rendelkezik) 2) Vex Robotics PlatformI néhány évvel ezelőtt kaptam egy Vex készletet, amellyel rádióvezérelt robotot lehet építeni, hogy felvegye a cuccokat egy középiskolai versenyre. Megépítettem az alap "négyzet alakú bot" alapot, amelynek 4 kereke két motor hajtja. Helyettesíthet más robotbázisokat, ha más platformot szeretne vezetni. Fontos megjegyezni, hogy a Vex motorok lényegében folyamatos forgású szervók, impulzusszélesség-modulációval jelzik, hogy milyen gyorsan és milyen irányba kell fordulni. A Vex motorok azért szépek, mert nagy az üzemi feszültségük, valahol 5 és 15 volt között. 12V -ot használok, mert 12V -os akkumulátorom volt. A legtöbb hagyományos hobbiszervóhoz alacsonyabb feszültségre (gyakran 6 volt) van szüksége. 3) AkkumulátorA robot tápellátás nélkül használhatatlan. A teszteléshez a RadioShack szabványos 9 V-os fali szemölcs adapterét használom, de a vezeték nélküli működéshez egy 12 V-os NiMH akkumulátort találtam egy ősi laptopban. Bár nem bírja eléggé a töltést a laptop működtetéséhez, remekül hajtja a Vex robotomat. Az Arduino -t a tápcsatlakozón lévő Vin bemeneti csap segítségével is képes táplálni, az Arduino szabályozza a 12 V -ot 5 -ig, és még a tápcsatlakozón lévő 5 V -os kimeneti tűt is kimeneti. 4) Alapvető kenyértábla kössön be mindent. Végül kapok egy szebb prototípus -táblát és forrasztást néhány tartósabb kapcsolaton, de most a kenyérlap megkönnyíti a dolgok megváltoztatását. Az én kenyértáblám a SparkFun "alapvető kenyértáblája", csak egy kenyérsütő lemez egy fémlemezen, 3 terminállal.5) MAX232-alapú RS232-TTL konverter Ha RS-232 soros port-kapcsolaton keresztül szeretné meghajtani a robotját (szemben az Arduino beépítettével) USB-n) használhat RS232-TTL átalakítót. MAX232 -t használok, mert néhányuk hevert, és forrasztottam egy kis prototípus -táblára, a szükséges kondenzátorokkal. Szükségem van RS-232-re, mert a régi laptopomnak csak egy USB-portja van, és ezt egy játékvezérlőnek használom a robot meghajtásához. kaptam egyet az Arduino rendelésemmel, mert jól hangzottak). A jelzőfény pirosan, zölden, kéken villog, amikor az Arduino elindul, jelezve, hogy a robot újraindult, majd zölden világít, ha motorcsomagot kapott, kék, ha ventilátorcsomagot kapott, és piros, ha rossz vagy ismeretlen csomag érkezett. A ventilátor meghajtásához egy szabványos NPN tranzisztort használtam (ugyanazokat, amelyeket az utolsó Instructable -ban mutattam be), és egy ellenállást a tranzisztor és az Arduino között (a tranzisztor túl sok áramot húzott, és felmelegítette az Arduino -t, ezért korlátoztam) ellenállás bekapcsolásához).

3. lépés: Arduino és PC programozás

Arduino és PC programozás
Arduino és PC programozás

Az Arduino programozásához nyilvánvalóan szüksége lesz az Arduino szoftverre és egy USB -kábelre. Ha az Ön számítógépe soros porttal rendelkezik, akkor az Arduino programozható soros port és TTL szintű konverter használatával is. Vegye figyelembe, hogy az USB soros interfész nem kommunikál az Arduino ATMega processzorával, ha az Arduino soros érintkezőihez (0 és 1 érintkező) szintkapcsoló van csatlakoztatva, ezért válassza le az USB használata előtt. Az Arduino -n szükségünk lesz egy soros interfészre, amely lehetővé teszi a PC a motorok vezérléséhez. Szükségünk lesz egy PWM szervohajtórendszerre is, hogy a megfelelő jeleket küldjük a Vex motoroknak, és győződjünk meg arról, hogy a megfelelő irányok mellett a helyes irányba mennek. Hozzáadtam néhány egyszerű LED -villogást is, főleg az állapotjelzéshez, de azért is, mert jól néz ki. A PC -n meg kell nyitnunk a soros portot, és el kell küldenünk az Arduino program által megértett adatkereteket. A PC -nek motorértékekkel is elő kell állnia. Ennek egyszerű módja egy USB játékpad vagy joystick használata, én Xbox 360 kontrollert használok. Egy másik lehetőség, hogy a hálózaton keresztül csatlakoztatott számítógépet (netbookot vagy kicsi mini ITX kártyát) használ a roboton a vezeték nélküli vezetéshez. Netbook esetén akár a fedélzeti webkamerát is használhatja a videócsatorna visszajátszására és a robot távoli meghajtására. A Linux sockets rendszert használtam hálózati programozáshoz a beállításomhoz. Az egyik program (a "joystick szerver") külön PC -n fut, amelyhez egy vezérlő van csatlakoztatva, egy másik program (az "ügyfél") pedig az Arduino -hoz csatlakoztatott netbookon. Ez összekapcsolja a két számítógépet, és joystick -információkat küld a netbookhoz, amely ezután soros csomagokat küld a robotot vezérlő Arduino -nak. Az Arduino -hoz való csatlakozáshoz Linux -számítógép segítségével (C ++ nyelven) először meg kell nyitnia a soros portot a megfelelő helyen baud rate, majd elküldi az értékeket az Arduino kódján használt protokoll használatával. A soros formátumom egyszerű és hatékony. 4 bájtot használok "keretenként" a két motor fordulatszámának elküldéséhez (mindegyik egy bájt). Az első és az utolsó bájt keményen kódolt értékek, amelyek arra szolgálnak, hogy az Arduino ne küldjön rossz bájtot a PWM-kódnak, és a motorok megőrüljenek. Ez az RGB LED elsődleges célja, pirosan villog, ha a soros keret hiányos volt. A 4 bájt a következő: 255 (merev kódolású "kezdő" bájt),,, 200 (kemény kódolású "vég" bájt) Az adatok megbízható vételének biztosítása érdekében ügyeljen arra, hogy elegendő késleltetést tegyen a programhurkok közé. Ha túl gyorsan futtatja a PC-kódot, elárasztja a portot, és az Arduino elkezdhet ejteni vagy akár rosszul olvasni a bájtokat. Még ha nem is dobja ki az információkat, túlcsordulhat az Arduino soros port puffere. A Vex motoroknál az Arduino Servo könyvtárat használtam. Mivel a Vex motorok csak folyamatos forgású motorok, pontosan ugyanazt a jelzést használják, mint a szervók. Azonban a 90 fok helyett a középpont, ez a leállítási pont, ahol a motor nem forog. A "szög" csökkentése miatt a motor az egyik irányba, míg a szög emelése a másik irányba forog. Minél távolabb van a középponttól, annál gyorsabban forog a motor. Bár nem fog megtörni semmit, ha 180 foknál nagyobb értékeket küld a motoroknak, azt tanácsolom, hogy korlátozza az értékeket 0 -ról 180 fokra (amelyek ebben az esetben a sebességnövelés). Mivel több irányítást akartam, és kevesebbet akartam irányítani a robotok vezetésétől, hozzáadtam egy szoftveres "sebességkorlátozást" a programhoz, amely nem teszi lehetővé, hogy a sebesség bármely irányban 30 fok fölé emelkedjen (tartomány 90 +/- 30). Azt tervezem, hogy hozzáadok egy soros port parancsot, amely megváltoztatja a sebességkorlátozást, hogy a számítógép menet közben eltávolítsa a korlátot, ha gyorsan akar menni (kis helyiségekben teszteltem, így nem akarom, hogy felgyorsuljon) és a falba csapódjon, különösen netbookon). További információért töltse le a mellékelt kódot az útmutató végén.

4. lépés: Adjon hozzá egy Netbookot az ismeretlen világok távoli felfedezéséhez

Adjon hozzá Netbookot az ismeretlen világok távolról történő felfedezéséhez
Adjon hozzá Netbookot az ismeretlen világok távolról történő felfedezéséhez
Adjon hozzá Netbookot az ismeretlen világok távolról történő felfedezéséhez
Adjon hozzá Netbookot az ismeretlen világok távolról történő felfedezéséhez

Az Arduino robot fedélzetén lévő teljes számítógéppel vezetheti robotját olyan messzire, amennyire a Wi -Fi elérheti, vezeték nélkül, így korlátozva a robotot egy területre. Erre a munkára jó jelölt a netbook, mivel a netbookok aprók, könnyűek, beépített akkumulátorral rendelkeznek, WiFi-vel rendelkeznek, és a legtöbbjük beépített webkamerákkal is rendelkezik, amelyekkel vissza lehet közvetíteni a robot nézetét egy biztonságos helyre, ahol irányítani tudja. Továbbá, ha a netbookja mobil szélessávú szolgáltatással van felszerelve, a hatótávolsága gyakorlatilag korlátlan. Elegendő akkumulátorral a robotot a helyi pizzázóba vezetheti, és megrendelheti a webkamerát (nem ajánlott, a robotokat általában nem engedik be a pizzázó helyekre, még akkor sem, ha valószínűleg emberek próbálják ellopni a robotot, és talán még a pizza is). Ez is jó módja annak, hogy az irodai szék kényelméből felfedezze az alagsor sötét mélységeit, bár néhány fényszóró hozzáadása ebben az esetben nagyon hasznos lehet.

Ennek sokféle módja van, de valószínűleg sokkal könnyebb, mint az enyém, bár nem ismerem a feldolgozási vagy szkript-alapú nyelveket, ezért a Linux és a C ++ használata mellett döntöttem a vezeték nélküli vezérlőkapcsolat létrehozása között a bázisállomásom között (aka régi ThinkPad) és az új Lenovo IdeaPad netbookom, amely az Arduino meghajtóbázishoz van csatlakoztatva. Mindkét számítógépen Ubuntu fut. A ThinkPad készülékem az iskolám LAN -jához van csatlakoztatva, az IdeaPad pedig a WiFi hozzáférési ponthoz, amely szintén az iskola LAN -jához van csatlakoztatva (nem tudtam megbízható videofolyamot szerezni az iskolai WiFi -ről, mivel mindenki más használja, ezért beállítottam) a saját útválasztómat, hogy jó kapcsolatot biztosítsak). A jó kapcsolat különösen fontos az én esetemben, mivel nem hajtottam végre semmilyen hibaellenőrzést vagy időtúllépést. Ha a hálózati kapcsolat hirtelen megszakad, a robot addig megy, amíg be nem ütközik valamibe, vagy futok és megállítom. Ez a fő tényező, amiért úgy döntöttem, hogy lelassítom a hajtóművet a motorok leállításával és a szoftver sebességkorlátozásának végrehajtásával.

5. lépés: Szerezzen be videócsatornát

Miután a robotfelfedező vezeték nélkül tud vezetni, valószínűleg szeretne videofolyamot kapni a netbookról, hogy megmondhassa, hol van a robotja. Ha Ubuntut használ (vagy még akkor is, ha nem!), Javaslom a VLC Media Player használatát a streameléshez. Ha még nem telepítette, akkor valóban hiányzik, ezért telepítse a "sudo apt-get install vlc" paranccsal, keresse meg a VLC-t az Ubuntu Software Centerben (csak 9.10), vagy töltse le a telepítőt a videolan webhelyről. org, ha Windows -on van. Mindkét számítógépen VLC -re lesz szüksége. A VLC képes adatfolyamok lejátszására és lejátszására a hálózaton. A netbookon (robot PC-n) először győződjön meg arról, hogy a webkamera (akár beépített, akár USB-csatlakozású) működik, kattintson a Rögzítőeszköz megnyitása elemre, és próbálja ki a Video for Linux 2 alkalmazást (néhány régebbi eszköznek szüksége lehet Video for Linux-ra az új 2-es verzió helyett). Látnia kell a kamera nézetét a netbook képernyőjén. A közvetítéshez válassza a Fájl menü Streaming menüpontját, majd a megjelenő ablak tetején válassza az Eszköz rögzítése lapot. Ne feledje, hogy az Ubuntu (és sok más Linux -disztribúció) lehetővé teszi, hogy lenyomva tartsa az Alt billentyűt, hogy rákattintson és húzza a képernyőhöz túl nagy ablakokat (különösen hasznos a régebbi netbookokon, bár még az IdeaPad -om is páratlan 1024x576 felbontású, minden ok nélkül). A késleltetés csökkentéséhez kattintson a "További beállítások megjelenítése" gombra, és csökkentse a gyorsítótárazási értéket. A csökkenthető mennyiség néha az eszköztől függ, instabillá válik, ha túlságosan lecsökkenti. 300 ms -on némi késleltetést tapasztalhat, de nem rossz.

Ezután kattintson a Stream elemre a következő menübe lépéshez. Kattintson a Tovább gombra, majd válassza ki és adja hozzá a HTTP -t új célállomásként. Most állítsa be az Átkódolást, hogy kisebb legyen az adatfolyam. Készítettem egy egyéni profilt, amely M-JPEG-t használ 60 kb/s sebességgel és 8 kép/mp sebességgel. Ennek az az oka, hogy egy olyan fejlett kodek, mint az MPEG vagy a Theora használata hatalmas mennyiségű CPU -időt emészt fel egy netbook Atom processzorán, és ez azt eredményezheti, hogy a video feed minden látható ok nélkül leáll. Az MJPEG egy egyszerű kodek, amelyet könnyű használni alacsony bitsebességgel. Az adatfolyam elindítása után nyissa meg a VLC -t a másik számítógépén, nyisson meg egy hálózati adatfolyamot, válassza a HTTP lehetőséget, majd írja be a netbook IP -címét (helyi vagy internetes, attól függően, hogy hogyan kapcsolódik), majd a ": 8080" karaktert. Furcsa okból meg kell adnia a portot, különben hibákat okoz. Ha megfelelő a kapcsolata, akkor látnia kell a webkamera hírcsatornáját a másik PC -n, de ez kismértékű (körülbelül egy másodperces) késéssel fog járni. Nem tudom pontosan, miért következik be ez a késés, de nem tudom kitalálni, hogyan lehet megszabadulni tőle. Most nyissa meg a vezérlőalkalmazást, és kezdje el vezetni a netbook robotját. Érezze, hogyan működik a késleltetés vezetés közben, hogy ne ütközzön semmibe. Ha működik, akkor a netbook robot elkészült.

Ajánlott: