Arduino’ya Başlarken Neler Gerekli?

Arduino’muzu aldık, fakat başlamadan önce başka nelere ihtiyacımız var, hangi devre elemanlarını, hangi alet ve edevatları edinmeliyiz soruları aklımızı kurcalıyor. Sorunun cevabı oldukça basit. Arduino, USB kablosu ve bilgisayar haricinde başlangıç için herhangi bir donanıma ihtiyacımız yok. İleriki projelerde ihtiyacımıza göre gerekli malzemeyi   çeşitli elektronik mağazalarından veya internet üzerinden sipariş ederek çok ucuza satın alabiliriz. Şu an Arduino’muzu çalıştırabilmek için sadece gerekli yazılıma ihtiyacımız var. Bu yazıda kullandığınız platforma göre kurmanız gereken yazılımları oldukça basit bir şekilde anlatmaya çalışacağım.

UBUNTU (10.10 ve üzeri):

Arduino yazılım geliştirme uygulamasını Ubuntu üzerine kurmak son derece basit. Gereken IDE Ubuntu depolarında mevcut. Ubuntu yazılım merkezinde Arduino arattığınızda karşınıza çıkan Arduino IDE’yi kurmanız yeterli. http://arduino.cc/playground/Linux/Ubuntu adresinde Ubuntu 10.10 kullanıcısı iseniz Arduino Uno ve Arduino Mega 2560 programlamak için ekstra dosyalar(arduino, arduino-core, librxtx-java) kurmanız gerektiği yazıyor, fakat benim ihtiyacım olmadı muhtemelen sizin de ihtiyacınız olmaz. Şayet gerekirse http://packages.ubuntu.com/maverick-backports/librxtx-java http://packages.ubuntu.com/maverick-backports/arduino-core http://packages.ubuntu.com/maverick-backports/arduino adreslerindeki .deb’leri bir klasöre indirip “sudo dpkg -i *.deb” komutuyla kurabilirsiniz.

WINDOWS:

http://arduino.cc/en/Main/Software adresinden Windows’a tıklayıp gerekli yazılımı indirin. Arduino’nuzu USB kablosuyla bilgisayarınıza bağlayın. Bilgisayarınız Arduino’yu tanımaya çalışacak, fakat bir süre sonra başarısız olacaktır. Sırasıyla Başlat > Kontrol Panel > Sistem ve Güvenlik adımlarına girin. Oradan Sistem’i açıp Donanım Yöneticisi’ne girin. COM & LPT Portları altında Arduino’nuzu bulun(Arduino UNO (COMxx) şeklinde yazar). Sağ tıklayıp “Sürücüyü güncelle” seçeneğini seçin. “Sürücüyü kendim seçmek istiyorum” seçeneğini seçin. Windows sürücünün nerede olduğunu soracaktır. İndirdiğiniz zip dosyasını bir klasöre açıp o klasörde Drivers dizini altındaki “ArduinoUNO.inf”i seçin. Geri kalanını Windows halledecektir. WinXp üzerine kurulum için ekran görüntülerini bu adreste bulabilirsiniz. Arduino yazılım geliştirme programını indirdiğiniz zip içinde(arduino.exe) bulabilirsiniz.

SONUÇ:

Bu adımları başarıyla tamamladıysanız yazılım geliştirme ortamını açtığınızda sizi şu sevimli pencere karşılayacak:

Buraya kadar herhangi bir sorunla karşılaşmadıysanız Tools > Serial Port’tan Arduino’nuzu bağladığınız USB portunu seçin. Seçmediyseniz yazdığınız programı Arduino’ya yüklerken sorduğunda da seçebilirsiniz. Tools > Board menüsünden kullandığınız Arduino çeşidini işaretleyin. File > Examples menüsünde önceden yazılmış envai çeşit programı inceleyebilirsiniz. İlk olarak Basics > Blink uygulamasını denemenizi öneririm.

Programı seçtiğinizde yeni bir pencerede kodları açılır. File menüsünün hemen altındaki Verify butonuna tıklayarak kodu derler, aynı sıradaki sağdan 2. buton (upload butonu) ile derlenen programı Arduino’ya gönderebilirsiniz.

Arduino üzerinde 13. pin’e bağlı bir LED bulunmaktadır (Blink programı bu LED’i 1 saniye yakıp 1 saniye söndürür). 13. pin’e bağlı bu LED sayesinde Arduino’nuza ekstra LEd, direnç vs.. bağlamadan programın nasıl çalıştığınız, programlama yapısını deneyip görmüş olursunuz. Daha sonra yine Basics’deki AnalogReadSerial programını denemenizi öneririm. A0 (analog giriş pinidir) pininden gelen analog data’yı okuyup USB kablosu aracılığıyla bilgisayarınıza gönderen bir uygulamadır. IDE’nin Help menüsünün hemen altında Serial Monitor butonuna tıklayarak Arduino’dan bilgisayara gelen datayı okuyabilirsiniz.

Buraya kadar sağ salim geldiyseniz ileriki projeleriniz için gerekli donanımı satın alabilirsiniz. İlk olarak ihtiyacınız olan şeyler bu yazıda bulunmakta.

Hakan İyice

Bilgisayar mühendisi, web yazılım uzmanı, hobi elektroniği meraklısı

38 comments

  1. […] size uygun olduğunu belirlemeniz için Arduino çeşitlerini yazmıştım. Hakan İyice, Arduino’ya Başlarken Neler Gerekli yazısını, Coşkun Taşdemir,  Arduino Salgınına Gönüllü Yakalanma Rehberini, Ömer Koman […]

  2. Can dedi ki:

    Merhaba!

    Yazının güncellenmeye ihtiyacı var gibi görünüyor, burada yazılanlarla benzer şeyler yapmaya çalıştım. Ama güncel bir rehber daha çok işimi görürdü sanıyorum.

    Teşekkürler 🙂

    • Can dedi ki:

      http://arduino.cc/en/Guide/windows

      Bu bağlantıdan da ingilizce olarak takip edilebileceğini de öğrenmiş bulunmaktayım. Paylaşmak istedim. Arduino Nano V3.0 için Windows Vista (Düşünceme göre Windows 7 de aynı şekilde) otomatik olarak driverını bulup yüklüyor.

      Teşekkürler!

      • Ömer Koman dedi ki:

        can biz teşekkür ederiz. bilgiye nereden ulaşırsan oradan sömür derim. kolay gelsin 😉

  3. Emre dedi ki:

    Merhaba
    Benim söyle bir problemim var arduino arayüz programım sürekli takılıyor birşey yapmıyorum bir sebep varmıdır ?

  4. Ömer Koman dedi ki:

    bluetooth açıksa bilgisayarda kapatın. usb portunuz mekanik zorlanmış olabilir bağlnatısı titreşimle kopuyordur yada uyku moduna geçiyordur.

  5. mustafa dedi ki:

    Buradaki örnek kodlar hangi dil ile yazılmış ben yeni başlıyorum sorumu mazur görün.

  6. Ömer Koman dedi ki:

    C, c++, javascript, c# . arduino çok kolaydır sitemize gelenler ilk proje olarak robot yapıyorlar(!)

  7. Emrah dedi ki:

    merhaba
    c# arayüzü kullanarak arduino ile robot kol projesi yapıyorum.Fakat şöyle bir sıkıntım var arayüzden gireceğim servo motor açı değerlerini (mesela Q1= 50,Q2=100,Q3=50) sevolara farklı farklı nasıl gondereceğim.Yani 1.servo motor Q1 2.servo motor Q2 vb bunu nasıl belirleyeceğim.

  8. Ömer Koman dedi ki:

    servolar genelde 0-180 derece arasında hareket eder ama 0-160 gibi düşün tam dibine kadar hareket ettirmek sıkıntı yaratabilir. c# tan “A= 50,B=120,C= 30,” şeklinde veriyi yollarsın. sadece tek veya 2 li seçenekleride yollayabilirsin, örnek “A= 50,B=120,C= 30,B=10,A= 12,C= 47,C=120,C=30” şeklinde ardışık olarak yollarsın.

    arduino tarafında ise seriporttan gelen verileri birleştirip her “,” geldiğinde bunu parçalayıp servoya komut olarak yollarsın.

    stringleri parçalamak için
    String gelenkomut = “A= 120″;
    if (gelenkomut.charAt(0) == ‘A’) {
    string gelenaci=gelenkomut.substring(2) ;
    int aci=gelenaci.toInt();
    A servoya aci yi yolla burada
    }

    seriportu devamlı okumak içinde aşağıdaki bi kodla başlarsın
    while (Serial.available() > 0) {
    char gelen = Serial.read();
    if (gelen==”,”){komutu oku servoya yolla}
    else
    { gelen i gelenkomut stringine ekle }
    }

    • Emrah dedi ki:

      Ömer Bey çok teşekkür ederim.Kaç günden beri bunu öğrenmeye çalışıyorum.Şimdi işim C# a kaldı o da kolay.:)
      İyi günler.

  9. Emrah dedi ki:

    bir önceki yorumlardaki kodları düzenledim ama motorlardan hareket alamadım acaba sorunu bulabilir misiniz.

    #include
    #include

    Servo servo1;
    Servo servo2;
    Servo servo3;
    Servo servo4;
    Servo servo5;
    Servo servo6;
    char gelen;

    int aci;
    void setup()
    {

    servo1.attach(3);
    servo2.attach(5);
    servo3.attach(6);
    servo4.attach(9);
    servo5.attach(10);
    servo6.attach(11);

    Serial.begin(9600);
    Serial.println(“Robot Hazır”);
    // Open serial communications and wait for port to open:

    // mySerial.println(“Hello, world?”);
    }

    void loop() // run over and over
    {
    while (Serial.available() ) {
    char gelen = Serial.read();
    String gelenkomut;
    if (gelen == ‘,’)
    {
    String gelenkomut;

    if (gelenkomut.charAt(0) == ‘a’) {

    String gelenaci=gelenkomut.substring(1) ;
    int aci1=gelenaci.toInt();
    servo1.write(aci1);

    }
    if (gelenkomut.charAt(0) == ‘b’) {
    String gelenaci=gelenkomut.substring(1) ;
    int aci=gelenaci.toInt();
    servo2.write(aci);
    servo3.write(aci);

    }
    if (gelenkomut.charAt(0) == ‘c’) {
    String gelenaci=gelenkomut.substring(1) ;
    int aci=gelenaci.toInt();
    servo4.write(aci);

    }
    if (gelenkomut.charAt(0) == ‘d’) {
    String gelenaci=gelenkomut.substring(1) ;
    int aci=gelenaci.toInt();
    servo5.write(aci);

    }
    if (gelenkomut.charAt(0) == ‘e’) {
    String gelenaci=gelenkomut.substring(1) ;
    int aci=gelenaci.toInt();
    servo6.write(aci);
    }

    else
    {
    gelenkomut = gelenkomut + gelen;
    }

    }

    }

    }

    • Ömer Koman dedi ki:

      adım adım gidelim arayuzden gelen komutlar neye benziyor gelen veriyi anlamlı hale getirip ayırabiliyor muyuz onu anladık mı?

      • Emrah dedi ki:

        Yanlış gönderebileciğimi düşündüm.Daha sonra arayüzü kullanmadan seri monitörden gönderdim açı bilgilerini yine bi hareket alamadım servolardan

        • Ömer Koman dedi ki:

          hatayı buldum sanırım
          String gelenkomut; değişkeninin yukarıda tanımla loop içinde değil. her seferinde loopte tanımlayarak içini sıfırlamuş oluyorsun. gelen char ı buna ekleyeceksinki komut oluşsun. gelenkomut=gelenkomut+gelen gbi bir şey olacak
          gelenkomut “a120,” gibi bir stringe benzemesi lazım… oylemi bi bak kodu aşağıdaki gibi duzeltırsın

          while (Serial.available() ) {
          gelen = Serial.read();
          gelenkomut=gelenkomut+gelen;
          if (gelen == ?,?)

  10. Emrah dedi ki:

    Teşekkür ederim ben sorunu hallettim son olarak bişi daha sormak istiyorum.Arduino üzerinden devre kurmadan servoların hızlarını ayarlayabilir miyim? Nette araştırdım ve VarSpeedServo kütüphanesini ekledim fakat kodu derlerken hata alıyorum.Kodlar aşağıdaki gibi:

    #include

    String readString, servo1, servo2, servo3, servo4, servo5, servo6;

    VarSpeedServo myservo1;
    VarSpeedServo myservo2;
    VarSpeedServo myservo3;
    VarSpeedServo myservo4;
    VarSpeedServo myservo5;
    VarSpeedServo myservo6;

    const int servo1Pin = 3;
    const int servo2Pin = 5;
    const int servo3Pin = 6;
    const int servo4Pin = 9;
    const int servo5Pin = 10;
    const int servo6Pin = 11;

    void setup() {
    Serial.begin(9600);
    myservo1.attach(servo1Pin);
    myservo2.attach(servo2Pin);
    myservo3.attach(servo3Pin);
    myservo4.attach(servo4Pin);
    myservo5.attach(servo5Pin);
    myservo6.attach(servo6Pin);
    //myservo2.write(150);
    //myservo3.write(30);

    Serial.println(“Acı Degerlerini Giriniz:”);
    }

    void loop() {

    while (Serial.available()) {
    delay(3);
    if (Serial.available() >0) {
    char c = Serial.read();
    readString += c;
    }
    }
    if (readString.length() >0) {
    Serial.println(readString);

    servo1 = readString.substring(0, 3);
    servo2 = readString.substring(3, 6);
    servo3 = readString.substring(3, 6);
    servo4 = readString.substring(6, 9);
    servo5 = readString.substring(9, 12);
    servo6 = readString.substring(12, 15);

    int n1 = servo1.toInt();

    int n3 = servo3.toInt();
    int n2 = 180 – n3; // servo 2 ve servo 3 senkron dönüyor.
    int n4 = servo4.toInt();
    int n5 = servo5.toInt();
    int n6 = servo6.toInt();

    Serial.println(n1);
    Serial.println(n2);
    Serial.println(n3);
    Serial.println(n4);
    Serial.println(n5);
    Serial.println(n6);

    myservo1.write(n1,10,true);
    delay(10);
    myservo2.write(n2,10,true);
    delay(10);
    myservo3.write(n3,10,true);
    delay(10);
    myservo4.write(n4,10,true);
    delay(10);
    myservo5.write(n5,10,true);
    delay(10);
    myservo6.write(n6,10,true);
    delay(10);
    readString=””;
    }
    }

  11. emrah dedi ki:

    Dediğiniz gibi o kodu da düzelttim çalıştı.

  12. erhan dedi ki:

    çok sağolun hiç bilgim olmadığı halde çalıştırmayı başardım 🙂

    • ALP dedi ki:

      dostum nasıl yaptın onu bu programı buraya yazarsan sevinirim bende hiç anlamıyorum neleri düzelltin #include
      #include
      Servo servo1;
      Servo servo2;
      Servo servo3;
      Servo servo4;
      Servo servo5;
      Servo servo6;
      char gelen;
      int aci;
      void setup()
      {
      servo1.attach(3);
      servo2.attach(5);
      servo3.attach(6);
      servo4.attach(9);
      servo5.attach(10);
      servo6.attach(11);
      Serial.begin(9600);
      Serial.println(“Robot Hazır”);
      // Open serial communications and wait for port to open:
      // mySerial.println(“Hello, world?”);
      }
      void loop() // run over and over
      {
      while (Serial.available() ) {
      char gelen = Serial.read();
      String gelenkomut;
      if (gelen == ‘,’)
      {
      String gelenkomut;
      if (gelenkomut.charAt(0) == ‘a’) {
      String gelenaci=gelenkomut.substring(1) ;
      int aci1=gelenaci.toInt();
      servo1.write(aci1);
      }
      if (gelenkomut.charAt(0) == ‘b’) {
      String gelenaci=gelenkomut.substring(1) ;
      int aci=gelenaci.toInt();
      servo2.write(aci);
      servo3.write(aci);
      }
      if (gelenkomut.charAt(0) == ‘c’) {
      String gelenaci=gelenkomut.substring(1) ;
      int aci=gelenaci.toInt();
      servo4.write(aci);
      }
      if (gelenkomut.charAt(0) == ‘d’) {
      String gelenaci=gelenkomut.substring(1) ;
      int aci=gelenaci.toInt();
      servo5.write(aci);
      }
      if (gelenkomut.charAt(0) == ‘e’) {
      String gelenaci=gelenkomut.substring(1) ;
      int aci=gelenaci.toInt();
      servo6.write(aci);
      }
      else
      {
      gelenkomut = gelenkomut + gelen;
      }
      }
      }
      }

  13. yener dedi ki:

    nano v3 için ft232rl usb uart sürücülerini yükleyemedim bu konuda ne yapabilirim?

    • Ömer Koman dedi ki:

      windowsunuz 64 bit olarak kurulmuşsa ftdi nin sitesinden 64 bit versiyon driverları kurmayı deneyin, yine sonuç çıkmazsa bu tip soruları forumdan sorun mutlaka cevap gelir…

  14. MekatroniKaan dedi ki:

    Sayın Emrah ;
    benimde bitirme projem var malesef C# arayüz ü kullanıyorum elinizdeki kaynakları paylaşabilirseniz çok memnun kalırım aynı şekilde sitedeki diğer arkadaşlarda faydalanmış olur 🙂

  15. […] Bunun yanında USB A to B kabloya ihtiyacınız vardır. Arduino IDE ‘sinin kurulumunu http://arduinoturkiye.com/arduinoya-baslarken-neler-gerekli/  adresinde ayrıntılı şekilde anlattığı için ayrıca anlatma gereği görmüyorum buradaki […]

  16. remzi dedi ki:

    Ardunio uno ya program yükleyemiyorum yüklerken hata oluştu
    avrdude: ser_open(): can’t open device “\\.\COM6”: sistem belirtilen dosyayı bulamıyor.

    • Ömer Koman dedi ki:

      foruma gelin orada çözenler var bu konuları. arduinonun seri portunu pcde yanlış seçmiş olabilirsiniz.

  17. ali metin can dedi ki:

    ses kontrollü robot projesine başlayacam malzemeleri aldım fakat nerden başlayacağımı bilmiyorum bitirme tezi olarak bu konuyu aldım arkadaşımla yardımıznızı bekliyorum teşekkürler…

  18. ali metin can dedi ki:

    aldığım malzemeler
    Ardunio Uno
    Adafruit Motor Shield(L293)
    Voice Recognition Module V2 (sesle kontrol modülü)
    PL2303 TTL modul
    4 adet 6v dc motor
    4 adet tekerlek
    Özel yapım robot gövdesi
    7.4 v lipo pil

  19. […] kurulu olması gerekmektedir. Eğer Arduino ile kodlamaya başlamaya hazır değilseniz sizi böyle alalım. Herşey hazırsa […]

  20. mustafa dedi ki:

    Ömer hocam tcrt5000 kızıl ötesi sensörden nesne algılama programı yazıyorum.. her bir nesne için 1 sayısını okuyacak .. bişeyler yazdım ama olmuyor .. rica etsem yardımcı olurmusunuz..

  21. selcuk dedi ki:

    Hocam arduino 2560 aldım bununla dereceye bağlı olarak motor çalıştırmak istiyorum nasıl baslayabilirim

  22. Ömer Koman dedi ki:

    bir sıcaklık sensoru ve bir de motora ihtiyacın varda gerçekten mi soruyorsun böyle bır seyı bilemedim. 2560 alırken yanında motoru surucuyu sensoru de alsaydın bari. foruma gelin sorun…

  23. selcuk dedi ki:

    Derece ayarlı kumanda devresi yapmak istiyorum 30 derecede motor çalışacak 80 derecede motor kapanacak ayriyeten tuşlar ile ayarlanabilecek ekrandada gözükecek pid programa ihtiyacım var arduino 2560 ile

  24. Ahmet dedi ki:

    Ardunio kodları üzerinde çalışırken sizin sitenize rastladım. karşılıklı bilgi paylaşımınınız çok güzel başta Ömer Koman hocamıza ve diğer maille yardımlaşan arkadaşları kutlarım ve başarılarınızın devamınızı dilerim.

  25. Reyhan dedi ki:

    Merhabalar , ben arduino ya yeni merak saralnlardanım. ASlında tez için konu gerekiyordu bende internetten hazır satın almaktansa bana bir şeyler katmasını tercih ettim ve bir konu belirledi hocam. Görme engelliler için Ultrasonik radar projesi. Aslında internete baktığımda kodlar ve bağlantı şekilleri kolaylıkla çıktı ama tahmin edeceğininz üzere hepsi yarım yamalak anlayacağınız kopya çekmek işe yaramadı. Bu siteden biraz yardımla basit kodlar yazmaya başladım fakat iki kodu birbirine bağlayamıyorum yani buton kodunu yazıyorum,sensör kodunu yazıyorum, buzzer kodunu yazıyorum hepsi çalışıyor fakat hepsini birlikte kullanamıyorum. Bana yardımcı olur musunuz? Bu konuda bir fikriniz var mı?

    • Ömer Koman dedi ki:

      algoritma birleştirirken kodun yapısına bakıp olup biteni anlamaya çalışın öncelikle.
      arduıno yapısında setup ve loop kısımlarıda ayrı ayrı farklı kodlardaki kodları taşımanız lazım.
      kod bırleştirirken değişken isimlerine dıkkat edin aynı isimli değişkenler işleri karıştırabilir sonradan gelen kodun değişkenlerinde aynı isimler varsa onları değiştirin.
      daha sonra kutuphaneler gelir kutupanelerı ınclude ile koda ekliyoruz diğer kodun içinde include varsa onları da ana kodun içine taşıyın, bazen ıkı tarafta aynı kutuphaneyı kullanır ama kodun içinde tanımlanırken farklı bır isim verilmiştir onları da tekılleştirmenız lazım.
      daha sonra donanım pinleri portları da onemli buton için pin8 kullanıysanız sensor ıcınde pin8 tanımlıysa bunlardan bırını değiştirin donanım çakışması olmaması lazım.
      bazı sensorler ozel ıletişim portları kullanır i2c ve spi gibi bu portlar birden fazla bağlantı kullanıldıgında ozel adres ve chip select pinleri ayrıcana kodun içinde duzenlenmesi lazım.
      en yiyisi her zaman oradan buradan bulunan kodları kopya yapıştır yapılmasından ziyade donanım ve portları ve malzemeyı tanıyıp ona gore kendı anlayışınıza gore bır kod yazmanız her zaman daha kısa ve sorunsuz bir yol olacaktır.

E-posta adresiniz gösterilmeyecek. Gerekli alanlar * ile işaretlidir.

*



Sosyal Ağlar