Mündəricat:

Sadə Arduino Robotika Platforması !: 5 addım
Sadə Arduino Robotika Platforması !: 5 addım

Video: Sadə Arduino Robotika Platforması !: 5 addım

Video: Sadə Arduino Robotika Platforması !: 5 addım
Video: Mikrobit. Blok Proqramlaşdırma. Dəyişənlər. 2024, Iyul
Anonim
Sadə Arduino Robotika Platforması!
Sadə Arduino Robotika Platforması!
Sadə Arduino Robotika Platforması!
Sadə Arduino Robotika Platforması!

Robototexniki komanda görüşlərində bəzi AVR mikrokontrolörləri ilə oynadıqdan sonra Arduino aldım. Sadə bir kompüter interfeysindən demək olar ki, hər şeyi işlədə bilən həqiqətən ucuz proqramlaşdırıla bilən bir çip ideyasını bəyəndim, buna görə də artıq gözəl bir lövhə və USB interfeysi olduğu üçün Arduino aldım. İlk Arduino layihəm üçün liseydə oxuduğum bəzi yarışmalardan hazırladığım bir Vex Robotics dəsti qazdım. Həmişə kompüterlə idarə olunan robototexnika platforması etmək istəmişəm, amma Vex mikrokontrolöründə olmayan bir proqramlaşdırma kabeli lazımdır. Platformanı idarə etmək üçün yeni Arduino (və bəlkə də sonradan işləyərəmsə çılpaq AVR çipi) istifadə etməyə qərar verdim. Sonda bir netbuk almaq istəyirəm və sonra robotu WiFi istifadə edərək idarə edə və veb kamerasını uzaqdan görə bilərəm.

Yaxşı bir serial protokolu və Linux PC -yə qoşulmuş Xbox 360 nəzarətçi istifadə edərək robotu idarə edən sadə bir nümunə əldə edə bildim.

Addım 1: Nə edə bilər …

Nə edə bilər…
Nə edə bilər…
Nə edə bilər…
Nə edə bilər…

Arduino çox yönlü bir platformadır. Əsas məqsədim Arduino -nu iki Vex mühərriki ilə PC -yə bağlamaq idi, amma çoxlu giriş/çıxış pinləri vardı və əlavə bir şey əlavə etmək qərarına gəldim. Hal -hazırda serial port statusu üçün bir RGB LED (paketlər yaxşı olarsa yaşıl, pis olduqda qırmızı) və tranzistor tərəfindən idarə olunan bir PC fanatım var. Mən də açar və sensorlar əlavə edə bilərəm, amma bunlardan heç birini qoymamışam. Bunun ən yaxşı tərəfi, Arduino robotuna istədiyinizi əlavə edə bilərsiniz. Əlavə şeyləri idarə etmək və kompüterə giriş əldə etmək üçün yalnız bir az interfeys kodu lazımdır.

Addım 2: hissələr

Hissələri
Hissələri
Hissələri
Hissələri
Hissələri
Hissələri

Robotum üçün bir neçə fərqli hissədən istifadə etdim. Parçaların çoxu zirzəmiyə qoyduğum köhnə əşyalardan idi.1) Arduino Duemilanove w/ ATMega328Bu ən yeni Arduino və bir neçə gün əvvəl əldə etdiyim üçün ən yenisi var. Bununla birlikdə, kod hər hansı bir Arduino -ya asanlıqla uyğunlaşa biləcək qədər kiçikdir. Yəqin ki, hətta bir ATTiny -ə də uyğun gələ bilər (Arduinodan başqa bir robot nəzarətçi qursam, ATTiny 2313 yaxşı bir seçim kimi görünür, daha kiçik və daha ucuzdur, lakin hələ də çoxlu çıxışı və seriyalı UART interfeysi var) 2) Vex Robotics PlatformI bir neçə il əvvəl bir lisey yarışması üçün əşyalar götürmək üçün radio nəzarətli bir robot qurmaq üçün Vex dəsti aldı. İki mühərriklə idarə olunan 4 təkərli əsas "kvadrat bot" bazasını qurdum. Sürmək istədiyiniz başqa bir platformanız varsa, digər robot bazalarını əvəz edə bilərsiniz. Vex mühərriklərinin əslində fasiləsiz fırlanma servoları olması, pulse genişliyi modulyasiyasından istifadə edərək nə qədər sürətli və hansı istiqamətə dönməli olduğunu bildirmək vacibdir. Vex mühərrikləri gözəldir, çünki 5 ilə 15 volt arasında yüksək bir işləmə gərginliyinə malikdir. 12V batareyadan istifadə etdiyim üçün 12V istifadə edirəm. Əksər standart hobbi servolar üçün daha aşağı gərginliyə ehtiyacınız olacaq (çox vaxt 6 volt). Test üçün RadioShack-dan standart 9V divar siğil adapterindən istifadə edirəm, amma simsiz iş üçün qədim noutbukda 12V NiMH batareya dəsti tapdım. Laptopu işə salmaq üçün kifayət qədər şarj olmasa da, Vex robotumu yaxşı idarə edir. Güc konnektorundakı Vin giriş pinindən istifadə edərək Arduino -ya güc verə bilər, Arduino 12V -dan 5 -ə qədər tənzimləyəcək və hətta güc konnektorundakı 5V çıxış pinini çıxara bilər. 4) Əsas Breadboard Hal -hazırda hər şeyi tellə bağlayın. Nəhayət, daha daimi əlaqələrdə daha gözəl bir prototip lövhəsi və lehim alacağam, amma hələlik çörək taxtası hər şeyi dəyişdirməyi asanlaşdırır. Mənim çörək taxtam SparkFun-un "əsas çörək taxtasıdır", sadəcə 3 terminalı olan metal lövhədə olan bir çörək taxtasıdır. 5) MAX232 əsaslı RS232-TTL çeviricisi Robotunuzu RS-232 seriyalı port bağlantısı ilə idarə etmək istəyirsinizsə (Arduino-nun fərqli olaraq USB-də) RS232-TTL çeviricisini istifadə edə bilərsiniz. MAX232 istifadə edirəm, çünki onlardan bir neçəsi yalançı idi və onu lazımi kondansatörlərlə prototip lövhəsinin kiçik bir hissəsinə lehimlədim. Mənə RS-232 lazımdır, çünki köhnə noutbukumda yalnız bir USB portu var və mən robotu idarə etmək üçün onu oyun nəzarətçisi üçün istifadə edirəm. 6) İstədiyiniz kimi əlavə hissələr Serial protokolun asanlıqla düzəldilməsi üçün üzərinə RGB LED qoydum (Arduino sifarişimlə aldım, çünki sərin səsləndi). Robotun yenidən başladığını göstərmək üçün Arduino çəkildikdə işıq qırmızı, yaşıl, mavi olaraq ard -arda yanıb -sönür, sonra motor paketi alındıqda Yaşıl, bir fan paketi alındıqda Mavi, pis və ya bilinməyəndə qırmızı yanır. paket alındı. Fanı idarə etmək üçün standart bir NPN tranzistoru (son Təlimatımda göstərdiyim eyni) və tranzistorla Arduino arasında bir rezistor istifadə etdim (tranzistor çox cərəyan çəkirdi və Arduino -nu qızdırırdı, buna görə də bir məhdudiyyət qoydum. dayandırmaq üçün müqavimət).

Addım 3: Arduino və PC Proqramlaşdırması

Arduino və kompüter proqramlaşdırma
Arduino və kompüter proqramlaşdırma

Arduinonu proqramlaşdırmaq üçün açıq şəkildə Arduino proqramına və USB kabelinə ehtiyacınız olacaq. Kompüterinizin bir seriyalı portu varsa, Arduino -nu seriyalı port və TTL səviyyəsi çeviricisi ilə də proqramlaşdıra bilərsiniz. Arduino serial pinlərinə (0 və 1 sancaqlar) bağlı bir səviyyə çeviricisi varsa, USB seriyalı interfeysi Arduino ATMega prosessoru ilə əlaqə qurmayacağını unutmayın, buna görə USB istifadə etməzdən əvvəl ayırın. Motorları idarə etmək üçün kompüter. Doğru siqnalları Vex mühərriklərinə göndərmək və doğru dəyərlər verildikdə doğru istiqamətdə getdiklərindən əmin olmaq üçün PWM servo sürücü sisteminə də ehtiyacımız olacaq. Əsasən vəziyyət göstəricisi üçün həm də sərin göründüyü üçün bir neçə sadə LED yanıb -söndürən əlavə etdim. PC -də serial portunu açmalı və Arduino proqramının başa düşəcəyi məlumat çərçivələrini göndərməliyik. Kompüterin motor dəyərləri ilə də tanış olması lazımdır. Bunu etmək üçün asan bir yol USB oyun padindən və ya joystickdən istifadə etməkdir, Xbox 360 nəzarətçisindən istifadə edirəm. Başqa bir seçim, kabelsiz idarə etmək üçün robotun özündə bir şəbəkə kompüterindən (ya netbuk və ya kiçik bir mini ITX lövhəsi) istifadə etməkdir. Bir netbukla, hətta bir video axını geri qaytarmaq və robotunuzu uzaqdan idarə etmək üçün göyərtədəki veb kameradan da istifadə edə bilərsiniz. Quraşdırma üçün şəbəkə proqramlaşdırması üçün Linux prizlər sistemindən istifadə etdim. Bir proqram ("joystick serveri"), nəzarətçisinin qoşulduğu ayrı bir kompüterdə, digər bir proqram ("müştəri") Arduino ilə əlaqəli netbukda işləyir. Bu, iki kompüteri əlaqələndirir və netbuka joystick məlumatı göndərir, sonra robotu idarə edən Arduino -ya seriyalı paketlər göndərir. Linux PC (Arduino) ilə əlaqə qurmaq üçün (C ++ dilində) əvvəlcə seriyalı portu düzgün açmalısınız. baud dərəcəsi və sonra Arduino kodunda da istifadə etdiyiniz bir protokoldan istifadə edərək dəyərləri göndərin. Serial formatım sadə və təsirlidir. İki motor sürətini göndərmək üçün "çərçivə" başına 4 bayt istifadə edirəm (hər biri bir baytdır). İlk və son baytlar, Arduinonun PWM koduna yanlış bayt göndərməməsi və motorların dəli olmasına səbəb olmaq üçün istifadə olunan sərt kodlu dəyərlərdir. RGB LED -in əsas məqsədi budur, seriya çərçivəsi tamamlanmadıqda qırmızı yanıb -sönür. 4 bayt aşağıdakı kimidir: 255 (sərt kodlu "başlanğıc" baytı),, 200 (sərt kodlu "son" bayt) Məlumatların etibarlı qəbulunu təmin etmək üçün proqram döngələri arasında kifayət qədər gecikmə qoyduğunuzdan əmin olun. PC kodunuzu çox sürətli işləsəniz, portu su basacaq və Arduino baytları atmağa və ya hətta səhv oxumağa başlaya bilər. Məlumat düşməsə belə, Arduino seriyalı port tamponunu da aşa bilər. Vex mühərrikləri üçün Arduino Servo kitabxanasından istifadə etdim. Vex mühərrikləri yalnız davamlı fırlanma mühərrikləri olduqları üçün servoların istifadə etdiyi eyni siqnaldan istifadə edirlər. Ancaq 90 dərəcə mərkəz nöqtəsi olmaq əvəzinə, motorun dönmədiyi dayanma nöqtəsidir. "Bucağı" aşağı salmaq, motorun bir istiqamətdə fırlanmasına, bucağı qaldırmaq isə digər istiqamətdə dönməsinə səbəb olur. Orta nöqtədən nə qədər uzaq olsanız, motor daha sürətli dönər. Mühərriklərə 180 dərəcədən yuxarı dəyərlər göndərsəniz heç bir şey pozulmayacaq, amma dəyərləri 0 ilə 180 dərəcə arasında məhdudlaşdırmağı məsləhət görürəm (bu halda sürət artımlarıdır). Daha çox idarə etmək və robot idarə etmədən daha az idarə etmək istədiyim üçün, proqrama hər iki istiqamətdə də sürətin 30 "dərəcədən" artmasına imkan verməyən bir proqram "sürət həddi" əlavə etdim (aralıq 90 +/- 30). Sürət həddini dəyişən bir serial portu əmrini əlavə etməyi planlaşdırıram ki, sürətli getmək istəsəniz kompüter limiti dərhal aradan qaldıra bilər (kiçik otaqlarda sınaqdan keçirmişəm, buna görə də onun sürətlənməsini istəmirəm. və divara çırpın, xüsusən də üzərində netbuk varsa). Ətraflı məlumat üçün bu Təlimatın sonundakı əlavə edilmiş kodu yükləyin.

Addım 4: Uzaqdan Naməlum Dünyaları Kəşf etmək üçün Bir Netbook əlavə edin

Bilinməyən Dünyaları Uzaqdan Kəşf etmək üçün Netbook əlavə edin
Bilinməyən Dünyaları Uzaqdan Kəşf etmək üçün Netbook əlavə edin
Bilinməyən Dünyaları Uzaqdan Kəşf etmək üçün Netbook əlavə edin
Bilinməyən Dünyaları Uzaqdan Kəşf etmək üçün Netbook əlavə edin

Arduino robotunuzun tam bir kompüteri ilə robotunuzu bir sahə ilə məhdudlaşdırmaq üçün heç bir kabel olmadan WiFi -nin çatdığı yerə qədər robotu idarə edə bilərsiniz. Bu işə yaxşı bir namizəd netbukdur, çünki netbuklar kiçik, yüngül, quraşdırılmış batareyaya malikdir, WiFi-yə malikdir və hətta robotun görüntüsünü təhlükəsiz bir yerə axıtmaq üçün istifadə edilə bilən veb kameraları da var. nəzarət edə bilər. Ayrıca, netbukunuz mobil genişzolaqlı xidmətlə təchiz olunarsa, əhatə dairəniz praktiki olaraq məhdud deyil. Kifayət qədər batareya ilə robotunuzu yerli pizza yerinə aparıb veb kameraya sifariş verə bilərsiniz (tövsiyə edilmir, robotların oğurlanmağa cəhd etməsi ehtimalı olsalar da, ümumiyyətlə pizza yerlərində robotlara icazə verilmir. hətta pizza). Zirzəminizin qaranlıq dərinliklərini ofis kürsüsünün rahatlığından araşdırmaq üçün də yaxşı bir yol ola bilər, baxmayaraq ki, bu vəziyyətdə bəzi fənərlər əlavə etmək çox faydalı ola bilər.

İşləməyin bir çox yolu var, çoxu yəqin ki, mənimkindən daha asandır, amma İşləmə və ya skript əsaslı dillərlə tanış deyiləm, buna görə də baza stansiyam arasında simsiz idarəetmə bağlantısı yaratmaq üçün Linux və C ++ istifadə etməyi seçdim. köhnə ThinkPad) və Arduino sürücü bazasına qoşulan yeni Lenovo IdeaPad netbukum. Hər iki kompüter Ubuntu ilə işləyir. Mənim ThinkPad məktəbimin LAN şəbəkəsinə qoşulmuşdur və IdeaPadim də məktəbə qoşulmuş WiFi giriş nöqtəmə qoşulur (hamı istifadə etdiyi üçün məktəb WiFi -dən etibarlı bir video axını ala bilmədim, buna görə də Yaxşı bir əlaqə təmin etmək üçün öz yönləndiricimi hazırlayın). Yaxşı bir əlaqə mənim vəziyyətimdə xüsusilə vacibdir, çünki heç bir səhv yoxlama və ya fasilə tətbiq etməmişəm. Şəbəkə bağlantısı birdən -birə kəsilərsə, robot bir şeylə toqquşana qədər davam edir və ya mən qaçıb onu dayandırıram. Həm mühərrikləri aşağı çəkərək, həm də proqram sürət həddini tətbiq edərək ötürmə sürətini yavaşlatmaq qərarımın arxasında duran əsas amil budur.

Addım 5: Video lentini əldə edin

Robot kəşfiyyatçınız simsiz idarə edə bildikdən sonra, yəqin ki, robotunuzun harada olduğunu bilmək üçün netbukdan bir video yemi almaq istəyəcəksiniz. Ubuntu istifadə edirsinizsə (və ya istifadə etməsəniz də!) Axın etmək üçün VLC Media Player istifadə etməyi məsləhət görürəm. Yükləməmisinizsə, həqiqətən itirdiniz, buna görə "sudo apt-get install vlc" əmrini istifadə edərək quraşdırın, Ubuntu Proqram Mərkəzində VLC-yə baxın (yalnız 9.10) və ya videolan-da yükləyicini yükləyin. Windows -da olsanız org. Hər iki kompüterdə işləyən VLC -yə ehtiyacınız olacaq. VLC axın etməklə yanaşı şəbəkədə axınları da oynaya bilir. Netbukda (robot PC) əvvəlcə Açıq Capture Device düyməsini basaraq Linux 2 üçün Video sınayaraq veb kameranızın (ya daxili və ya USB ilə bağlı) işlədiyinə əmin olun (bəzi köhnə cihazlarda yeni 2 versiyadan çox Linux üçün Video lazım ola bilər). Netbuk ekranında kameranın görünüşünü görməlisiniz. Yayımlamaq üçün Fayl menyusundan Axın seçin və sonra görünən pəncərənin yuxarısındakı Capture Device sekmesini seçin. Unutmayın ki, Ubuntu (və bir çox digər Linux dağıtımları), ekranınız üçün çox böyük olan pəncərələri basıb sürükləmək üçün Alt düyməsini basıb saxlamağa imkan verir (xüsusən köhnə netbuklarda faydalıdır, baxmayaraq ki, heç bir səbəb olmadan IdeaPadımın qəribə 1024x576 qətnaməsi var). Gecikməni azaltmaq üçün "Daha çox Seçim göstər" düyməsini basın və önbelleğe alma dəyərini aşağı salın. Aşağı sala biləcəyiniz məbləğ bəzən cihazdan asılıdır, çox endirsəniz qeyri -sabit olur. 300 ms -də bir az gecikmə ola bilər, amma çox da pis deyil.

Sonrakı menyuya keçmək üçün Axın düyməsini basın. Sonrakı düyməsini basın, sonra HTTP -ni yeni bir təyinat olaraq seçin və əlavə edin. İndi axını kiçiltmək üçün Transcoding qurun. 60 kb/s və 8 kadr sürətində M-JPEG istifadə edən xüsusi bir profil hazırladım. Bunun səbəbi, MPEG və ya Theora kimi inkişaf etmiş bir codecin istifadə edilməsi, netbukun Atom prosessorunda kütləvi CPU vaxtını yeyəcək və bu, videonuzun heç bir səbəb olmadan dayanmasına səbəb ola bilər. MJPEG, aşağı bit sürətlərində istifadəsi asan olan sadə bir kodekdir. Yayımınızı başladıqdan sonra digər kompüterinizdə VLC -ni açın, bir şəbəkə axını açın, HTTP seçin və sonra netbukunuzun IP ünvanını (necə bağlandığınızdan asılı olaraq yerli və ya İnternet) ": 8080" yazın. Limanı qəribə bir səbəbdən göstərməlisiniz, əks halda səhvlər verir. Yaxşı bir əlaqəniz varsa, veb -kameranızın yemini digər kompüterinizdə görməlisiniz, ancaq bir az (təxminən ikinci) gecikmə olacaq. Bu gecikmənin niyə baş verdiyini dəqiq bilmirəm, amma bundan necə qurtulacağımı anlaya bilmirəm. İndi nəzarət tətbiqini açın və netbuk robotunuzu idarə etməyə başlayın. Heç bir şeyə düşməmək üçün maşın sürərkən gecikmənin necə işlədiyini hiss edin. İşləyirsə, netbuk robotunuz bitdi.

Tövsiyə: