back to top

3 Boyutlu Akıllı Arduino Robot Kol Yapımı

Merhaba arkadaşlar. Bu yazımızda Android işletim sistemli akıllı cihazlar tarafından kontrol edilebilen Robot Kol uygulaması yapacağız. Projeyi internette bulup, tasarımını çok beğendik ve yapmaya karar verdik.

Robot Koldan Sonra Bilgilerini Tazelemek İçin Başka Bir Robot Yap ! >>>>Sumo Robot Yapmaya Başla !
Arduinoda Kendimi Geliştirdim Diyorsan Raspberry Pi ile Robot Yapmaya Başla ! >>>>Raspberry Pi ile Kamerali WiFi Robot Yapımı

Projemiz Mobil Uygulama, Arduino ve 3 boyutlu yazıcıdan basılmış mekanik olmak üzere 3 kısımdan oluşmaktadır.

Kendine ucuz ve kaliteli 3D yazıcı almak istersen, yazımızı incele!

Gelin önce malzemelere bi’ göz atalım.

Projeye ait malzeme listesi

Projenin montajına buradan erişebilirsiniz.

Projenin 3D baskı dosyalarına buradan erişebilirsiniz.

App Inventor Nedir?

MIT tarafından geliştirilen ve bloklar ile “sürükle-bırak” mantığında programlanabilen Android uygulama geliştirme programıdır. Kullanmanız için Android programlamaya dair hiçbir bilginiz olmasına gerek yoktur 😊

Projeden kısaca bahsetmek gerekirse önce MIT App Inventor 2 isimli bir uygulama geliştirme programında arayüz oluşturuyoruz. Oluşturduğumuz uygulama yoluyla Android cihazımızı Arduino’ya bağladığımız Bluetooth modülü ile eşleştiriyoruz. Bu eşleşme sayesinde Robot Kolunu Android cihaz üzerinden kontrol edebiliyoruz.

Öyleyse başlayalım !

Önce MIT App Inventor 2 programından bir uygulama oluşturalım.

Tasarım kısmında Arduino’ya göndereceğimiz Bluetooth sinyallerini “slider”lar ile kontrol edebiliyoruz. Arduino programımızdaki sinyal değerlerinin ne anlama geldiğini aşağıdaki şekilde inceleyebilirsiniz.

Uygulamanın tasarımı tamamen size kalmış. Bizim tasarımımız örnekteki gibidir :

Robot Kol Android Uygulaması

Örnek Apk dosyasına buradan ulaşabilirsiniz.

Devre Şeması

Arduino Robot Kol Fritzing Devre Şeması

Bağlantıları buradan da takip edebilirsiniz : 

Arduino, 12V DC Adaptör ile beslenmektedir.

Shield-Servo Bağlantı Örneği

Arduino Programı

Öncelikle programın çalışma mantığından bahsetmek istiyorum. Programın hemen başında Servo motorlarımızı, Bluetooth modülümüzü ve pinlerini tanımlıyoruz. Void setup() bölümünde ayrıca seri iletişimi etkinleştirmek için serial.begin(9600); , bluetooth iletişim için bluetooth.begin(9600); fonksiyonlarını yazıyoruz. Void loop() kısmı programımızın ana fonksiyonudur. Eğer 2 bit veya üzeri bluetooth sinyali gelirse ana fonksiyonun çalışmasını istiyoruz. Eğer bu şart gerçekleşiyor ise fonksiyonumuz servo motorumuzun pozisyon bilgisini bluetooth sinyalleri ile okumaya başlıyor. ( unsigned int servopos = bluetooth.read(); unsigned int servopos1 = bluetooth.read(); unsigned int realservo = (servopos1 *256) + servopos; )

Android cihazımızdan gönderdiğimiz Bluetooth sinyalleri 1000-1135 arasında ise birinci servomuzu 0-135 derece arasında kontrol edebiliyoruz. (Tut/Bırak)

Bluetooth sinyalleri 2000-2090 arasında ise ikinci servomuzu 0-90 derece arasında kontrol edebiliyoruz. (Sağ/Sol)

B sinyalleri 3000-3180 arasında ise üçüncü servomuzu 0-180 derece arasında kontrol edebiliyoruz. (Yukarı/Aşağı)

Bluetooth sinyalleri 4000-4120 arasında ise dördüncü servomuzu 0-150 derece arasında kontrol edebiliyoruz. (İleri/Geri)

Not: Derece değerleri robotun mekaniğine göre değişebilir. Robotumuz 3d baskı olduğu için montajda ve robotun hareketinde çeşitli problemler meydana gelebilir. Robotun yazılımı, bu problemlere göre güncellenebilir.

#include <SoftwareSerial.h>
#include <Servo.h>   // servo ve seri haberleşme için kütüphaneleri tanımlıyoruz.

Servo myservo1, myservo2, myservo3, myservo4; // servolarımızı tanımlıyoruz.

int bluetoothTx = 10;
int bluetoothRx = 11;  // Bluetooth alıcı vericilerini tanımlıyoruz.

SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);

void setup()
{
myservo1.attach(5);   // Servolarımızı Arduino'nun pwm(~) çıkışlarına bağlayalım.
myservo2.attach(6);
myservo3.attach(9);
myservo4.attach(3);
Serial.begin(9600);  
bluetooth.begin(9600);  // 9600 baud'luk bir haberleşme tanımlayalım.
}

void loop()
{
if (bluetooth.available() >= 2 ) // 2 hız seviyesindeki Bluetooth sinyal alıyor mu? 
{
unsigned int servopos = bluetooth.read(); 
unsigned int servopos1 = bluetooth.read(); 
unsigned int realservo = (servopos1 * 256) + servopos;  

// Alınan sinyaller kaydediliyor.
// AppInventor'da her servo için ayrı sinyal göndermiştik.
//Şimdi de her servo için tanımlanan sinyalin alınıp alınmadığını kontrol ediyoruz.
//realservo , Uygulamamızdan gelen sinyal değerleri.
// Bu değerler her servo için ayrı ayrı tekrar tanımlanıyor.
// "map" komutu ile bu sinyalleri, motora vereceğimiz açı değerlerine çeviriyoruz.
// örnek: map(servo,alınan min.sinyal,alınan max.sinyal,min.Açı,max.Açı);

if (realservo >= 1000 && realservo <= 1135) // tut bırak
{
int servo1 = realservo;
servo1 = map(servo1, 1000, 1135, 0, 135);
myservo1.write(servo1);
delay(10);
}

if (realservo >= 2000 && realservo <= 2090) { // sağ sol

int servo2 = realservo;
servo2 = map(servo2, 2000, 2090, 0, 90);
myservo2.write(servo2);
delay(10);
}

if (realservo >= 3000 && realservo <= 3180) { // yukarı aşağı
int servo3 = realservo;
servo3 = map(servo3, 3000, 3180, 0, 180);
myservo3.write(servo3);
delay(10);

}

if (realservo >= 4000 && realservo <= 4120) { // ileri geri

int servo4 = realservo;
servo4 = map(servo4, 4000, 4120, 0, 120);
myservo4.write(servo4);
delay(10);

}
}
}

Ve bu da projemizin son hali 😊

Proje hakkında yorumlarınızı aşağıdaki ‘Yorumlar’ kısmında bizimle paylaşabilirsiniz.

Siz de yaptığınız projeleri Twitter ve Instagram üzerinden #Robotistan hashtagi ile bizimle paylaşın, projenizi hesabımızda paylaşalım !

Twitter ve Instagram Hesaplarımız: @Robotistan

Arduino Robot Kol

Son Çıkan Yazılar

145 YORUMLAR

      • Bluetooth bağlanıyor telefonla kontrol edilmiyor ayrıca kodlar doğru mu
        Bluetooth için farklı bir işlem yapmam gerekiyor mu apk dosyasını sitenizden yükledim.
        Eğer aduino kart yanmışsa yenisini ona göre sipariş vereceğim voltaj düşürücü olmadan 12 v 1 amper verildiğinde yanma söz konusu olur mu ?
        Arduino uno ani akim veya voltaj yukseltilerine karşı kendini korumaya aliyor mu ?
        Reset butonu haricinde yazılımsal veya donanımsal başka resetleme var mı ?
        Tc3200 ren sensörü ekleyebilir miyim? (Renge göre nesneyi almak için)

        arduino stk500_getsync() not in sync resp=0x00 bu tarz uyarılar için ne yaabilirim

        Acil yardımcı olursanız sevinirim
        iyi Çalışmalar.

        • Merhabalar yükleme sırasında bir sorun yaşadıysanız bluetooth modülünün sinyal pinlerini çıkarıp tekrar deneyiniz eğer bağlantıda bir porbleminiz oluyorsa RX pinini TX yuvasına TX pinini RX yuvasına takıp tekrar deneyiniz. Arduino 12v 1A adaptör ile çalıştırmanız mümkün eğer kartta kısa devre olmuşsa kartınız zarar görmüş olabilir. Harici bir reset butonu mümkün olduğunu düşünmüyorum. Tc3200 sensörü eklemenizde mümkün.
          İyi günler

    • Komut bloklarının bulunduğu görsel, robotun çalışması için gerekli olandır. Tasarımın bulunduğu görsel ise örnek olarak hazırlandı, tasarımı değiştirebilirsiniz.

  1. Selamün Aleyküm Abi bu 4. servo dediğin servo nerde göremedim 2 tane altta bi tane üstte 4. yok ama 4 servo demişsin ona göre sipariş edicem senden alcam malzemeleri….

    • Merhaba, kullanılan devre elemanlarının fiyatlarını malzemele listesi kısmında bulabilirsiniz. Robot koldaki 3D baskı maliyeti de baskının doluluk oranına ve baskıyı aldığınız yere göre değişiklik gösterir.

      • Arduino klon olduğu için kaynaklanan bi problemmiş onu çözdüm. Fakat bluetooth u görmüyor bağlantıları yaptığımda. Led i dahi yanmıyor neden olabilir ?

        • Bluetooth’a bağlanmadan önce de arduino’daki LED yanmıyor ise bir bağlantı hatası yapmış olmanız mümkün. Tekrar kontrol edebilir misiniz? Bağlantı sorunu yaşamanız da bundan kaynaklı olabilir.

  2. tüm yüklemeleri ve bağlantıları yaptığımız halde apk dan kontrol sağlayamıyoruz. Sadece breadboard üzerinde kurduğumuzda servolar tek yönlü çalışıyor. Shield üzerinde kurduğumuzda hiçbir hareket alamıyoruz. Sorun apk da ya da arduino kodunda olabilir mi ? Bi yardımcı olabilir misiniz rica etsem ?

  3. Projeniz güzel çalıştırmayı başardık. Fakat telefondan kumanda ederken özelikle kolun ucunu açma kapama yaparken bütün servolar hareketleniyor.Bu sinyali nereden alıyorlar.Nasıl önlenir.

  4. shild kullanmak şartmı?ben shild kullanmıyorum.iki beslemeli yani;servoların ayrı,arduinonun ayrı beslediğimde de yapıyor.Tek besleme kullandığımda da yapıyor.

    • Shield kullanımı servo bağlantılarını kolaylaştırmak içindir. Shield kullansanız da aynı şekilde iki taraflı beslemeye ihtiyaç duyuyor olacaksınız.

  5. Kolay gelsin, projeyi yapmak istiyorum fakat elimde arduino klon var çalıştırabilir miyim? Arduino araba yaparken de bazı kodları çalıştırmamisti.

  6. kolun ucunu açma kapama yaparken bütün servolar hareketleniyor.Bir sinyal karışması var stabil bir çalışma yapamıyorum.değil.Neden olabilir.

    • Hocam sizinle irtibat kurabilir miyim ben sorun yaşadım çalıştırma konusunda bi yardımcı olabilir misiniz ? Bitirme Projem ve bu hafta sunmam gerekiyor.

    • Merhaba. Stabilite sorunu akımın yetersiz olmasından kaynaklanmaktadır. Devre şemamız güncellenmiştir ve bu sorunu ortadan kaldırmak için 5V 3A Regülatör kartı kullanılmıştır.

  7. tayfun bey benim güç kaynağım profesyonel tip 5A sabit 5 v çıkışlı amper sorunu olmayan güç kaynaklarından.ayrıca güç kaynağına güvenmeyip bir bilgisayar güç kaynağı kullandım o da sabit 5v 3a çıkışlı da aynı sorunu yaptı

    güç kaynağını tek te yapsam çiftte yapmasam olmuyor

  8. Merhaba. İnternette hazır robot kol parçaları satılıyor. Onları kullanarak da proje uygulanabilir mi? Yoksa belirttiğiniz parçaları 3d çıktı mı almamız gerekiyor?

    • Robotun tasarımını dilediğiniz gibi yapabilirsiniz, hazır kit de tercih edebilirsiniz. Üzerinde çalışacağınız robot bizim örnek robotumuz gibi 3 eksenli hareket edebildiği ve tutma işlemini gerçekleştirebilecek bir uca sahip olduğu sürece proje aynı çalışır.

  9. İyi günler bir servo motoru hareket ettirdiğimde genelde diğerlerindede ufak bir hareketlenme oluyor bir yorumda akımın yetersizliğinden dolayı demissiniz ve regülatör kartı kullandık demissiniz peki bu regülatör kartını sensör shilde nasıl bağlayacak yazıda breadboarda bağlamayı göstermissiniz.

    • Merhaba. Regülatör çözümünü sonradan bulduğumuzdan dolayı devre şemasını güncellemiştik. Eğer akım sorunu yaşayıp regülatör kullanıyorsanız servoları bir breadboard üzerinden arduino’ya bağlamanız gerekecektir. Bu durumda sensör shield kullanmanıza gerek kalmaz. Biz kablo fazlalığını ortadan kaldırmak için sensor shield kullandık fakat regülatör ile shield arası bağlantı yapılamaz.

  10. Ben shild kullanmadan çalıştırdım.Çok güzel çalışıyor.Besleme kaynağı çok önemli,düzgün çalışması için cep telefonu için kullanılan taşınabilir şarj cihazı kullandım.Güç kaynaklarından verim alamadım.

  11. Merhaba, if (bluetooth.available() >= 2 ) burada bahsedilen “2 hız” 2 byte lık veri olup olmadığını mı sorguluyor. Burayı daha detaylı nasıl öğrenebilirim yardımcı olur musunuz?

  12. İyi günler daha önce sormuştum bir servo motoru hareket ettirdğimde diğerleride ediyor diye voltaj regülatörü kullanıyoruz onun için demiştiniz, gidip breadboard aldım bağlantıları yaptığımda yine aynı skıntıyı yaşıyorum lütfen yardımcı olun bu sorunu nasıll çözebilirim

  13. İyi günler. Ben bu projeye yapıyorum ama kendim yaptığım tankın üstüne montajlayacağım kolu doğal olarak kablosuz kontrol edeceğim bu yüzden 12V adaptör yerine Pil kullanmak istiyorum peki ne tür bir pil kullanmalıyım?

  14. merhaba bu projeyi yapıcam ama servo motorlar tower prp sg 90 mı anlamadım birde vida listesi daha açıklayıcı bir şekilde verirseniz sevinirim

  15. 11.1V lipo pil kullunıyorum ama arduino üzerinde nerereye takacağımı bilmiyorum arduino üzerindeki hangi girişe takacagım acaba

  16. Selam ben uygulamadan hareket ettirdiğimde 15 saniye sonra bluetooth bağlantısı gidiyor program donuyor
    hc-05 kullanıyorum
    teşekkürler

  17. Ufak bir sorum olacaktı acaba baskıdan çıkaracağımız parçaların teknik resmini paylaşma imkanınız var mi yada ölçüleri nelerdir paylaşabilir misiniz ?? Şimdiden çok teşekkürler emeğinize sağlık 🙂

  18. Kolay gelsin. Yaptıklarınızın aynısnı yapıyorum fakat bir tülü çalışöıyor. MG995 servo motor aldım. Buetooth tan led vs yapıyorum çalışıyor. Başka bir kod ile bilgisayardan servoyu döndürebiliyorum. Fakat telefondan bir türli dönmüyor. Ne yapmam lazım.

  19. SLM iyi günler ben mitt app inventor programında uygulama oluşturması nasıl oluyor yardımcı olurmusnuz. çok ama çok az zamanım kalmış projemi tamamlamam lazım bir an önce . Yardımcı olursanız çok ama çok memnun kalırım .

  20. Sensor shield ile servo motorların 4unun de baglantilarini atar misiniz bir de hangi servo motor hangi pinlere baglanacak belirtmemissiniz

  21. Hicbir degisiklik yapmada direk yukarida sizin yaptiginiz gibi baglantilari yaparak ve sizin yapmis oldugunuz apk’yi kullanarak robotu calistirabilir miyim? Breadboard ve sensor shield ile denedim ama bluetooth baglanmasjna ragmen kol hareket etmiyor en ufak bir hareketlenme bile olmuyor

    • Programlama bilmeden yalnızca kopyala-yapıştır ile projeyi gerçekleştirmeniz mümkün, fakat bu durumda projenin sizlere herhangi bir öğretisi olmayacaktır. Tavsiyemiz, projelerden önce Arduino Dersleri serimizi takip etmenizdir. Teşekkür ederiz.

  22. cevap için tşk. ederim.Ben arduino dersleri alabilecek durumum yok keşke alabilsem =( .ABS hastası bir arkadaşımız 3d yazıcı temin etti ve ardından bana teklif ettibu işi yapabilirmisin diye, Bende bir şey diyemedim Parçalarıda sipariş etmiş sanırım daha sonra ingilizce terimlerle arattığımızda nette uygun fiyatlı bulduk olmaz ise sanırım hazır satın alıcaz.

  23. Merhabalar. Öncelikle paylaştığınız bilgiler için robotistan ekibine teşekkür ederim. Projeyi bitirdim yalnız ufak bir sorunum var. servo4(ileri geri) orijinde durmuyor yani başlangıçta en geri durumda başlıyor ve bu yüzden hareket çok kısıtlı oluyor.Az bir miktar ileri gidebiliyor. Bu problemi nasıl çözebilirim? Teşekkür ederim iyi çalışmalar.

    • Merhabalar. Mobil uygulamada servo4’ün kontrolünü sağlayan slider’ın “Thumb Position” kısmından uygulamanın açılışında verilen sinyal değerini değiştirerek tekrar deneyebilirsiniz. Bunun dışında Arduino programındaki “servo4 = map(servo4, 4000, 4120, 0, 120);” satırında, 0-120 olan açı aralığını 10-130 gibi 120 derece bandında başka değerlerle değiştirerek deneyebilirsiniz. Sorun servonun açılarıyla ilgili olabilir. Bunun haricinde robot kolun mekanik aksamında bir sıkışma olabilir ve servo rahat hareket edemeyebilir.

  24. Bu projeyi yaptim ve bilgisayardan usb ile besliyorum onun yerine powerbank kullanabilir miyim kullanabilirsem minimum kac V ve kac Amper’lik powerbank kullanmam gerekir

  25. Bu formda bluetooth ile kontrol edilen fakat hareket kopyalayan bir kol yapmam gerekiyor yardımcı olur musunuz kodda nasıl bir değişiklik yapmam gerek ?

  26. Hocam selamlar, paylaşım için çok teşekkürler. Montaj için verdiğiniz sitede brass pipe diye bir ürün var siz onun yerine ne kullandınız acaba biz bulamadık 4mm boru.

  27. Kolay gelsin. Ben de bitirme projesi olarak bu projeyi ypiyorum. Projeyi yaptim fakat motorlarda cok hareketlilik var. Ne onerirsiniz ne yapabilirm. Aynen dediginz gibi 12V adaptor ve 5v-3a regulator kart kullandim. Mesela sag sol yapinca diger motorlarda da titreme hareketlenme vb oluyor. Ne onerirsiniz acaba

  28. unsigned int realservo = (servopos1 * 256) + servopos;
    kodlarını açıkları mısınız burda yapılan matematiksel işlemin mantığı nedir derste anlattığımdan dolayı öğrencilerime tam açıklama yapmak istiyorum kodda anlamadığım tek kısım bu ondan soruyorum
    paylaşımınız için teşekkürler

  29. Merhaba ben bu projeyi bitirme ödevi olarak yapıyorum ancak Tut/Bırak bölümünde bir sorun var çalışmıyor diğer motorlara sinyal yollayıp titretiyor ama o bölümde bulunan servo motoru çalıştırmıyor yardımcı olur musunuz?

  30. Merhaba iki sorum olacak
    Servo motorların açıları ne olmalı ?
    Mesela 360 derecelik alsak 180 derece gibi çalıştırabilir miyim ve bu durum daha iyi bir sonuç verebilir mi
    İkinci sorum gripper nesneyi yakaladığı anda LED yakmak istiyorum nasıl yapabilirim teşekkürler

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz