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.

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

112 Yorumlar

  1. Arduino Sensor Shield bağlantısının nasıl yapıldığını şema halinde, resim ya da video olarak gösterebilir misiniz?

    • Projede Sensor shield kullanım amacımız bağlantıları rahat yapabilmektir. Böylelikle fazla kablolamadan da kurtulmuş oluruz.

    • 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.

  2. 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.

  3. ,,Elimde bir adet robot kol, 4 adet servo motor ,arduino uno, bluetooth ve 9v pil var ama sizin yaptıklarınızı yapmama rağmen çalıştıramıyorum. nedeni nedir

      • 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.

  4. Hocam Koyduğunuz videodaki shield ın bağlantı kabloları farklı gözüküyor ? Şemasını paylaşabilirmisiniz ?

  5. 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 ?

  6. 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.

    • akım az geldiği için sinyaller karışıyor olabilir 2A 5V ile servo motorlarını ayrı besle yapmaz diye düşünüyorum.

  7. 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.

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

      • Anladım teşekkür ederim. Peki bir sorum daha olacak. Bu kol ölçülerini büyütme imkani var mu acaba nasıl yapabilirim? Mesela uzunluğu 30 cm ise 65-70cm boyunda kol yapmak istiyorum. Daha doğrusu hoca küçük kalır büyüt dedi. Nasıl yapabilirim? Teşekkürler.

  9. 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.

  10. 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

  11. 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.

  12. Bir sorum daha olacak kullandığımız sensor shieldın v4 ya da v5 olması fark eder mi? v5 ile de sorunsuz çalışır mı?

  13. İ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.

  14. 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.

  15. merhabalar ben bu projeyi arduino due kartımla yapmak istiyorum bunun için ne yapmam gerek nasıl bir izleyebilirim?

  16. 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?

  17. İ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

  18. İ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?

  19. 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

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

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

  22. furkan arkadaşın derdi bende de oluşmaya başladı. Hem hc05 hem de hc06 denedim ama 1 dk sonra bağlantı kesiliyor.

  23. 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 🙂

    • Yazımızda projenin 3D baskı dosyalarının linki verilmiştir. Buradan dosyalara erişmeniz mümkündür.

  24. 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.

  25. 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 .

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

  27. 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.

  28. 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.

  29. 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.

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

  31. 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 ?

  32. 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.

CEVAP VER

Please enter your comment!
Please enter your name here