Matlab Arduino İle Resim Çizen Robot Kol Yapımı

83 2.720

Matlab resim işleme ile fotoğrafımızı matlaba kaydederek arduino üzerinden robot kol tarafından resmimizi çizdireceğiz.Resim Çizen Robot yapımına başlayabiliriz.

Malzemeler:

  1. Arduino uno
  2. 3 Adet 7 kg tork servo motor
  3. Mekaniği için lego kullanabilirsiniz
  4. 2 Adet sarhoş tekerlek
  5. Lipo pil

Bunun için öncelikle matlab arduino haberleşmesini yapmamız gerekiyor.Arduino ve matlab yazılımın aşağıdaki linkten indirelim.

Resim Çizen Robot Kol

Matlab’den arduinoya bağlanmak için öncelikle adioes.ino dosyasını arduinoya atın daha sonra arduino.m adındaki matlab dosyasını çalıştırın ve arduinoya bağlanmasını bekleyin.Bağlandıktan sonra finaldraw.m dosyasını açın burada fotağrafı çizilecek olan resmin adının yazılı olduğu satır var.Siz fotoğrafınızın adını oradaki satırda yazılan adla değiştirin.Fotoğrafınızı da matlab kodunun bulunduğu konuma atın.

Matlab’a resim gönderme ve koda resim tanımlama aşağıdaki şekillerde gösterildi.

Elektronik devre şeması : 

Mekanik Kısım:

Robot kolun gövdeye kadar uzunluğu 20 cm ve gövdeden kalame kadar olan uzunluğu da 20 cm dir.Bu durumda ikinci eklemin ve kalemle servo arası mesafe fark etmez.İsteğiniz şekilde yapabilirsiniz.Önemli olan iki ana uzunluklardır.

Kolun ilk başlama açıları 90 derecedir.Gövdeye sabit servo ve ortadaki servo 90 derecede başlıyor.Ayrıca ilk başlama konumunda birinci kol kağıda paralel ikinci kol ise birinci kola dik olacak şekilde kağıt üstünde başlamalıdır.

Kalemi tutan servo motor ise 92 ve 85 derecelerinde kalemi indirip kaldırmaktadır.

 

Bunları da beğenebilirsin

Cevap bırakın

E-posta hesabınız yayımlanmayacak.

83 Yorum

  1. cenk

    Arkadaşlarımla ilgi alanımız olduğu için projenizi gerçekleştirmek istedik. Ancak daha hiçbirimiz üniversitede bölümde değiliz bu nedenle daha geniş açıklamalı yapım aşaması varsa özellikle mekanik kısım için bizimle paylaşabilirseniz çok memnun oluruz.

  2. Kadir

    Merhaba Sezgin bey. Rica etsem kodlama kısmının flowchart ını paylaşırmısınız.

  3. Hasan demirel

    Hocam dosya hazırlıyorum da. Bu robotumuzun kazanımları yada üstün yönleri nelerdir

  4. kadir

    selamun aleykum kardeşim. çalışmanı paylaştığın için çok teşekkür ederim. projen hakkında bi soru sorcaktım. projehocam siitesinde de paylaştığını gördüm. fakat orda servo.h kodu olan bı kısım var. ama bu sıtede göremedim. projenin içinde varmı yok mu.

    cevaplarsan cok sevinirim. teşekkürler tekrardan

    1. kadir

      adioes in içerisindeymiş görememiştik. 🙂 projeye arkadasımla basladık. sık sık rahatsız edecem gibi duruyor. inşallah çok fazla rahatsız etmeyiz.

  5. Ramazan

    2015 matlap bağlantı kuruluyor hareket alıp duruyor neden hata veriyor

  6. blck

    Merhaba benim bir sorum olacaktı Sezgin Bey, biz yapmış oluduğunuz sistemi tasarlamaya çalıştığmızda dediklerinizi yapıyoruz fakat Sinem Hanımın aldığı getintnum hatasının gideremedik eski sürümlerde denememize rağmen olmadı fakat matlab da resmimizin beyaz kısımları siyah, siyah kısımları beyaz oldu onda sorun yok sizden ricam biraz detay verebilirmisiniz. Bu kodu çözümlemeye çalışmalımıyız anlayamadık kodun sahibi olmadığımızdan bunu yapmakta zor olacaktır malumunuz. desteklerinizi bekliyor.

    hataya dair resim linktedir:
    link: i.hizliresim.com/g2y323.jpg

    1. Sezgin GÜL

      Resimde gördüğüm kadarıyla matlab programı çalışırken arduino kodunu atmaya çalıştınız anlamadım ? Önce arduino kodunu arduinoya yükleyin. Daha sonra matlab kodu olan finaldraw dosyasını açıp resim adını ve com numarasını girerek çalıştırın. Yine hata alırsan facebook dan mesaj at teamviewer ile bakayım.

      1. mehmet

        arduino nun hangi çesidi bu elektronikçiden satın alcamda

  7. mehmet

    Robotu çalıştırdım bir nıoktada sadece hata aldım değinen olmamış ama belki sizde yaşarsanız diye finaldraw.m dosyasını açtıktan sonra com3 yazan yerde arduino hangi comda ise onu seçin yoksa hata veriyor… Teşekkürler sezgin hocam yine on numarasınız paylaşımlarınız güzel açık ve hepsi de çalışan ALLAH sizden razı olsun birde alev söndüren robot paylaşırsanız seviniriz:)

  8. Arif Görmüş

    S.a kardeşim bende bu projeyi yapmaya çalışıyorum dediklerini yaptım calıştırmaya çalıştım servolar cok yavas hareket ediyor bide biraz zaman geçince
    Error in finaldraw (line 36)
    I=draw(a,I,p,t);
    hatasını veriyor nedenini söyleyebilir misin

    1. Sezgin GÜL

      Resim boyutu büyük olduğundan kaynaklanabilir. Ayrıca uygun akım ve gerilim vermemişseniz belli bir süreden sonra enerji yetersizliğinden kısa devreye yol açabilir. Uygun enerji 5v 2A dir.

      1. Arif Görmüş

        servoyu maliyeti daha uygun diye MG995 aldım güç olarak 6v 4A lik akü kullandım bundan sıkıntı çıkar mı ?

        1. Sezgin GÜL

          Akımı çok yüksek servoları yakabilirsin. 2 A e indirmeni öneririm. Gerilim 6v da sıkıntı olmaz.

      2. Arif Görmüş

        draw dosyası ne işe yarıyor onu da çalıştırmak istedim a, I, m, n bunları istedi bi yerde eksik var yardımcı olur musun :\

        1. Sezgin GÜL

          O dosya ana dosyadan gelen verileri işleyip tekrar ana dosyaya gönderiyor. Sen finaldraw olan dosyayı çalıştıracaksın.

          1. Sinem

            Cevabınız için teşekkür ler ama 3 tane servo varrr 11 v üçüne yeter miii anlayamadım yani üçüne toplam 5 v mu verecez ? 🙂

          2. Sezgin GÜL

            Servoların hepsi paralel bağlanıyor. Yani paralel bağlantıda toplam gerilim bölünmez. Bu nedenle üçüne toplamda 5v vereceksiniz. Yukarıdaki devre şemasında da görünüyor. Fakat paralel bağlantıda toplam akım bölünür. Bu nedenle de tek servo motor ne kadar akımla çalışıyor ise toplam akım da 3 servo kullanıldığı için 3 ile çarpılarak bulunur. Örneğin tek servo 500 mah akım çekiyor ise sizin güç kaynağınızın akımı 3*500 = 1500 mah olmalıdır. Sonuçta kullanacağınız güç kaynağı 5v 1500 mah olması gerekiyor.

          3. Sinem

            Allah sizden razı olsun ne diyeyimmm tm o zaman lipopil i değiştirelimmm 🙁

          4. Sezgin GÜL

            Amin Cümlemizden. Lipo pil yerine adaptör almanızı öneririm. Çünkü adaptör stabil gerilim ve akım sağlar bu sayede servolar en sağlıklı şekilde çalışır.

  9. sinem

    biz servo tork olarak ne kullanacağımıza karar veremedik 7 kg den daha düşük motor kullanabilirmiyiz

    1. Sezgin GÜL

      Çalışma hızı: 0.20 sn/60°(4.8V), 0.16sn/60° (6.0V) bu değerde olan veya buna yakın tork yapan servo motorları kullanmanızı öneririm.

      1. sinem

        ‘getIntNum’ was not declared in this scope kodları ardinoya yüklediğimde bu hatayı aldım sizce neden olabilir

        1. Sezgin GÜL

          arduino ide sürümünüz uyumsuz ya da eklediğiniz başka kütüphaneler ile fonksiyon çakışmasından kaynaklı olabilir. Öncelikle ide sürümünüzü değiştirin. Güncel ise eski sürümlerde deneyin

          1. Sinem

            Hangi sürümü kullanayım çok teşekkür ederim 🙂

          2. Sezgin GÜL

            1.6.12 Sürümünde sorunsuz derliyor.

          3. Sinem

            Çok sağol ya çok teşekkür ederim gerçekten sen de olmasan etrafımızda yardımcı olacak kimse yokk allah razı olsun senden

          4. sinem

            ‘getIntNum’ was not declared in this scope

            adioes:388: error: ‘isrPinAEn0’ was not declared in this scope

            adioes:389: error: ‘isrPinBEn0’ was not declared in this scope

            adioes:392: error: ‘isrPinAEn1’ was not declared in this scope

            adioes:393: error: ‘isrPinBEn1’ was not declared in this scope

            dediğiniz sürümde çalıştırdım bakın bu hatayı veriyor donanım kısmı arduino karta bağlı olmadığı için olabilir mi?
            adioes:396: error: ‘isrPinAEn2’ was not declared in this scope

            adioes:397: error: ‘isrPinBEn2’ was not declared in this scope

            adioes:414: error: ‘getIntNum’ was not declared in this scope

            exit status 1
            ‘getIntNum’ was not declared in this scope

          5. sinem

            yükleme tamalandı ve altta bunu gösterdiii :(sizce arduinoya sorunsuz bi şekilde yüklenmişmidir

            Çalışmanız programın 6.698 bayt (20 %) saklama alanını kullandı. Maksimum 32.256 bayt.
            Global değişkenler belleğin 492 byte kadarını (24%) kullanıyor. Yerel değişkenler için 1.556 byte yer kalıyor. En fazla 2.048 byte kullanılabilir.

          6. Sezgin GÜL

            evet yükleme sorunsuz tamamlanmış. O yazan şey arduino belleğinde ne kadar yer kapladığı hakkında bilgi veriyor.

          7. sinem

            matlb 2013 sürümünde finaldraw dosyasını çalıştırdım şu mesajı aldım:
            Attempting connection ………….
            Analog & Digital I/O + Encoders + Servos (adioes.pde) sketch detected !
            Arduino successfully connected !

            ardino.m i çalıştırmadan ardino ya direk bağlandı mı sizce ?

          8. Muhammet Ersoy

            yapabildiniz mi projeyi

          9. sinem

            birde ekrana fotonun siyah çizgileri beyaz hali geldi 🙂 bi pencere açıldı

          10. Sezgin GÜL

            Arduino ya bağlanmış ve çizime başlayacaktır demektir. Eğer enerjiyi kesmemiş isen çizim yaptığını görmüşsündür. Arduino.m dosyasını çalıştırmana gerek yok. Ekrana çıkan siyah beyaz resim, orjinal resmin kenarlarının taranıp işlenmiş halidir. Yani o siyah beyaz resmin aynısını kağıda aktaracak. Sisteminiz doğru çalışmış. Tebrikler 🙂

          11. sinem

            çok teşekkür ediyoruz sana her sorumuzu mütevazi bir şekilde cevabladığın için 🙂

          12. sinem

            Kafama takılan bişey daha var bizim servo motorların torku 4.0 6.8 lipopilimiz 11.1V enerji çok fazla gelir mi yani servolar yanabilir mi 🙁

          13. Sezgin GÜL

            Rica ederim 🙂 11v Kesinlikle zarar verir. servoların çalışma gerilimi 4.8 ile 6v arasıdır. Tork faktörü servolarda gerilim ile değişir. Servo motorun ürün kataloğuna bakarsanız eğer orada 4.8 v ve 6 v ‘ da tork değerlerinin farklı olduğunu görürsünüz. Bu proje için 5v ideal gerilimdir. Sistem çok zorlanmayacağı için yeterlidir. Ayrıca uygun akımı da vermeniz gerekiyor.

      2. Sinem

        Sizi tekrardan rahatsiz ediyorum kusura bakmayınn şimdi biz 5v 1500 ma adaptör alırsak bunu nasıl bağlayacağız donanım kısmına ?:(

        1. Sezgin GÜL

          Power Giriş Konnektörü Şase Tipi olanından alın. Onu kurduğunuz devrenin güç girişine bağlayın. Yani servoların artılarını bir ve eksilerini bir bağlayıp bunları da konnektörün artı ve eksi uçlarına bağlarsınız. Aldığınız adaptörü de konnektöre direk takarak çalıştırabilirsiniz. Alacağınız konnektörün çapı, adaptör ucunun çapı ile aynı olmalı. Aksi halde birbirine takılamaz.
          Buradaki konnektör gibi tipinden alın >> direnc.net/power-giris-konnektoru-sase-tip–25mm

          1. sinem

            Yine çok yardımcı oldunuz sağolun varolun cevabınız için teşekkürler servoları yapıştırdınız mı legoların üstüne resimden anlayamadım ?

          2. Sezgin GÜL

            Servonun tabanları yapıştırıldı kanatları ise vidalandı. Lego bulamazsanız pleksi levha ile yapabilir veya cad programı ile kendiniz bir tasarım çizip 3d yazıcı ile çıktısını alabilirsiniz.

          3. Sinem

            Çok teşekkür ederim sağolun varolun 🙂

          4. Sinem

            Sezgin beyy bi sorum daha olacak donanım kısmında servoların üzerindeki siyah tekerlekleri nerden bulabiliriz yada yaptırabiliriz çünkü bizim aldığımız servonun aparatlarının içinde yok 🙁

          5. Sezgin GÜL

            Hobi elektronik malzeme satan yerlerde bulabilirsiniz. İlla da onu kullanmanıza gerek yok. Kendi kanatlarından birini de kullanabilirsiniz.

          6. Sinem

            Sizi tekrardan rahatsız ediyorum kusuruma bakmayın sarhoş tekerlekleri bağlama şeklimiz mekaniği etkiler mii :(biz çapraz değilde düz bağlamayı düşünüyoruz?

          7. Sinem

            Bir sorunumuz daha var şimdi sarhoş tekerleklerimiz büyük olduğu için üstüne monte ettiğimiz legolar birbirine uzak duruyor bu yüzden motor boşta kalıyor yapıştırma imkanımız olmuyor motorları sizin yapıştırdığınız yönde mi yapıştırmamız gerekiyor yoksa yan şekilde yapıştırsak olur mu :((

          8. Sezgin GÜL

            Sarhoş tekerlekler destek amaçlıdır.İstediğiniz gibi bağlayabilirsiniz. Sistemin esnemesini ve dengesini korusun yeterlidir. Servoların kanatları şekildeki gibi üstte oluyorsa sorun yok. Enine çevirip monte edebilirsiniz.

          9. SİNEM

            Çok teşekkür ederim mütevaziliğiniz için çekinmeden soru sorabiliyoruz size çok yardımcı oldunuz tekrardan allah razı olsun sağolun

          10. SİNEM

            Bi sorum daha olacaktı şimdi motorlar plastik olduğu için motorları metale yapıştırmak yapıştırmak biraz sıkıntıı siz nasıl bir yapıştırıcı kullandınız ?

          11. Sezgin GÜL

            plastik metal yapıştırıcılar kırtasiyelerde bulabilirsiniz.

      3. SİNEM

        Sezgin beyyy biz donanım kısmını hallettik adaptörü taktık çalışmıyor sorun ne olabilir :((( devreleri falan kurduk finaldraw dosyasını açtık çalıştırdık düzenek oynamıyor :((( bi fikir verebilir misiniz

        1. Sezgin GÜL

          Adaptör direk servo motorların artı ve eksi ucuna bağlanmalı ve servo motorların gnd uçları da ayrıyeten arduinonun gnd sine bağlanmalıdır. Bu şekilde yapmamış iseniz ondan kaynaklıdır.

          1. SİNEM

            Bizim motorlar 360 derece tam tur dönebiliyor dediğinizi yaptık motorlar çalışıyor ama haraketleri çok farklı :(( mesela kalem tutan motor 360 derece dönüyor öle yapmaması lazım sadece kalem indirip kaldırmalı :(( az bir açıyla ama tam tur dönüyor bazen yarım dönüyor bekliyor 🙁 haraketlerinin böle olmasının nedeni ne olabilir

          2. SİNEM

            Ardino ya yazılımı sorunsuz yükledik motorların haraketleri çok tuhaf özellikle kalem tutan 360 derece dönüyor arada anlayamadık :(((

          3. Sezgin GÜL

            motorları 180 derece dönenlerden almanız gerekiyordu. 360 derece dönenlerde durum farklıdır. Değiştirmeniz gerekiyor.

  10. sinem

    servo motor olarak ne tercih edeceğimizi anlayamadık ?7 kg mı olacak ?daha küçük bir motorla olur mu ?

  11. sinem

    burada servo motor olarak ne kullanmamz gerekiyor ?çok kararsız kaldık ?

  12. mehmet

    Hocam ben proje olarak arduno ile istediğimiz yazıyı yazan robot aldım bu ilemi bu robot yaparmı yoksa bildiğiniz başka robot varsa sevinirim

  13. Mehmet

    Hocam proje ödevi olarak ardıino ile yazı yazan robot yapmamız istendi bunla istdiğimiz yazıyı yazdırabilirmiyiz yada başka bildiğiniz proje varsa yardımcı olursanız sevinirim

  14. mehmet

    programda sorun oluşuyor. görüntüyü noktasal forma çevirip arduıno yı çalıştırdım ancak sadece 9 nolu pine bağlı olan motor çıkış verdi diğerleri çalışmadı.koblo bağlantı ve motorları kontrol ettim sorun yok. sorun nerede yardım edebilirmisiniz.

    1. Sezgin GÜL

      Sorun iki nedenden dolayı olabilir.
      1- Yeterli enerji vermediğiniz diğer motorlar dönmüyor ve kısa devre yaparak portu kapattığından kaynaklı.
      2- Matlab sürümünden kaynaklı olabilir. 2013 sürümünde deneyin sorunsuz çalışıyor.

  15. Emir

    Merhaba , 7kg servo motor alabileceğimiz sitenin linkini atabalir misiniz

  16. can

    merhaba sezgin bey bahsettiğiniz adımları teker teker yaptım matlabde görüntüyü almayı başardım.ancak bundan sonraki izlemem gereken yol nedir ben bu görüntünün kodlarına nasıl ulaşırım ve arduino uygulamasına nasıl aktarırım

  17. havva

    Sezgin bey ingilizce olduğu için anlayamadık bulamadık karışık bir site son bir günümüz kaldı projeyi teslim etmeye ve donanımsal herşey hazır fakat kodları çalıştıramıyoruz siz yardımcı olabilir misiniz lütfen

  18. havva

    Sezgin bey ingilizce olduğu için anlayamadık bulamadık karışık bir site son bir günümüz kaldı projeyi teslim etmeye ve donanımsal herşey hazır fakat kodları çalıştıramıyoruz sizin atabileceğiniz bi link yok mu yardımcı olun lütfen

  19. Can

    merhaba R2016a da şu hataların sebebi nedir yardımcı olurmusunuz
    Trial>> finaldraw
    edge is not included in your installed products. These products offer ‘edge’:
    Image Processing Toolbox

    Error in finaldraw (line 3)
    w=edge(i,’canny’,[.05,.20]);

    1. Sezgin GÜL

      Toolbox da alınan hatalarda sürümden kaynaklı fonksiyonun yazım standartları vardır. 2016 ya göre yazımına bakın. Ya da 2013 sürümünde sorunsuz çalışıyor onu indirin.

  20. havva

    Biz MATLAP kullanmiyoruz bu yuzden hatalari cozemiyoruz okulumuzun sitesinde yok

  21. havva

    Sezgin bey biz MATLAP 2013 un lisansını bulamıyoruz lisansta hata veriyo sizin yoruma attiginiz linke de baktık olmadı tekrar hata aldık başka bi onerinz var mı ?

  22. Havva

    merhaba sezgin bey donanım parçalarım hazır matlapte sizin açıkladığınız gibi kodları çalıştırdım fakat bana 3 hata verdi yardımcı olabilir misiniz aceba ?

    >>finaldraw
    Error using rgb2gray>parse_inputs(line81)
    MAP must be a m x 3 array.

    Error in rgb2gray(line35)
    X= parse_inputs(varargin{:});

    Error in finaldraw(line2)
    i=rgb2gray(u);

    1. Sezgin GÜL

      matlab arduino pinlerini tanıması için arduino.m dosyasını çalıştırın. matlab 2013 sürümünde sorunsuz çalışmaktadır. Hata aldığınız fonksiyon renk konstant değerlerini tanımamasından kaynaklı. muhtemelen sürümler ilgili bir durum.

  23. Havva

    Her farklı resim yüklediğimiz de finaldrawdaki kodları değiştirmemiz mi gerekiyor?

    1. Sezgin GÜL

      hayır. resimlerin adı ve uzantısı aynı olduğu sürece değişiklik yapmadan çalıştırabilirsiniz.

  24. eren

    iyi günler. 7kg tork servo motor u türkiye de nasıl bulabiliriz ?

  25. oğuzhan sefer

    sayfada link aşağıda diyor ama ben bulamadım lütfen bi bakarmısınız

  26. oğuzhan sefer

    matlap programını indirebileceğim bir link atarmısınız

  27. Ayhan

    Vallaha helal olsun 🙂 basarilar abi