R A B I A Y E L Bilgisayar Mühendisi 05.01.2018 ROBOT UYGULAMALARI ATÖLYESI HAFTA1 - DERS2
D E R S T E K U L L A N I C A K A R A Ç V E M A L Z E M E L E R Bilgisayar Genunio 101 Breadboard 1 adet 220 ohm direnç 1 adet LED Jumper kabloları AB USB kablosu
PROGRAMLAMA ILE NELER YAPILABILIR? Daha önce Arduino gibi platformlar kullanmış olan var mı? Neler yaptın?
ARDUINO/GENUINO PLATFORMUNA GIRIŞ Arduino Ivrea Interaction Design Institute da programlama ve elektronik geçmişi olmayan öğrenciler için geliştirilmiş bir hızlı prototipleme cihazıdır. Bütün Arduino kartları ve yazılımı tamamen açık kaynaklı olup kullanıcılarını bu kaynakları kullanıp kendi ihtiyaçlarına göre şekillendirmelerine teşfik eder. Arduino kartlarıyla bir sensör okuyarak, bir butona basarak yada bir Twitter mesajıyla giriş alabilirsiniz ve bunlarla bir motoru döndürebilir, bir LED yakabilir yada internette bir şeyler yapabilirsiniz. Bunu yapmak için Wiring dili baz alınarak hazırlanmış Arduino Programlama dili ve Processing baz alınarak hazırlanmış Arduino Yazılımı kullanılır.
? N E D E N A R D U I N O / G E N U I N O Ucuzdur. Her işletim sisteminde çalışır. Basit ve temiz bir programlama arayüzüne sahiptir. Açık kaynaklı, genişletilebilir bir yazılım ve donanım platformudur.
Shieldlar Nedir? Kısaca Arduino için özel tasarlanmış donanım eklentileridir. Standart olarak Arduino da bulunmayan özellikleri basit bir şekilde geliştirme kartınıza eklemenizi sağlar.
Arduino/Genuino
Güç Her Arduino kartı çalışması için bir güç kaynağına ihtiyaç duymaktadır. İsterseniz bilgisayarınıza USB kablo ile bağlayarak isterseniz de adaptör takarak kartınızı çalıştırabilirsiniz. Şekil 26 da (1) numara ile gösterilen bölge USB bağlantısı (2) numara ile gösterilen bölge de adaptör bağlantısının yapıldığı kısımdır. USB bağlantısını kullanarak geliştirdiğiniz yazılımı da gönderebilirsiniz.
GND (3): Ground, yani toprak diğer bir deyişle şase, kelimesinin kısaltmasıdır. Pillerdeki eksi bacaklar gibi düşünülebilir. 5V(5) ve 3.3V(4): Tahmin edilebileceği gibi 5V bacağı 5 voltluk güç, 3.3V de 3.3 voltluk güç anlamına gelmektedir. Bu bacakları kullanarak kullancağınız devre elemanlarına güç verebilirsiniz.
Analog(6): Analog In olarak etiketlenmiş bu bölgede A0 dan A5 e kadar toplamda altı adet bacak bulunur.bu bacaklar ile sıcaklık sensörü gibi analog sensörlerden veri okuması yapabilirsiniz. Dijital(7): Analog bacakların tam karşısında bulunan 0 dan 13 e kadar toplamda 14 adet bacağa sahip bölgedir. Bir butonun basılı olup olmadığını kontrol etmek için kullanabileceğini dijital giriş veya bir LED i yakmak için kullanabileceğiniz dijital çıkışları kontrol edebileceğiniz bölgedir.
PWM(8): Dijital bölgede bazı bacakların yanındaki ~ işareti dikkatinizi çekmiştir (Genuino 101 için 9,6,5 ve 3 numaralı bacaklar). Bu bacaklar dijital olarak kullanılabildiği gibi Pulse-Width Modulation (PWM) denen bir yeteneğe de sahiptir. Basit bir şekilde anlatmak gerekirse bu bacakları kullanarak analog çıkış verilebilir. Örneğin bir LED i yakıp söndürmek yerine parlaklığını değiştirebilirsiniz. AREF(9) Analog Referans ın : kısaltmasıdır. Bu bacak büyük bir çoğunlukla kullanılmaz. Ancak bilinmesinde fayda bulunmaktadır. Analog sensörlerin giriş voltajlarına üst sınır koymak için kullanılmaktadır
Reset ve Master Reset Butonları Bilgisayarlardaki reset butonları gibi bunlarda da reset butonu bulunmaktadır. (10) numaralı buton sizin kartın içine attığınız yazılımı yeninden başlatmanızı sağlayacaktır. Bu buton eğer yazılımınız kendini tekrarlamayan bir düzene sahipse ve sürekli olarak tekrarlamanız gereken bir durumda çok kullanışlıdır. (11) numaralı MASTER RESET butonu normal RESET butonundan biraz farklıdır. Bu buton sadece yazılımı yeniden başlatmakla kalmaz kartın kalbinde bulunan Curie modülündeki sensörleri de yeniden başlatır. Bu sayede ölçümlerinizi sıfırdan yapabilirsiniz. Bu butona bastıktan sonra yazılımın çalışmaya başlaması 5-10 saniye gecikme yaşayacaktır.
Güç Durumu LED i Kartın üzerinde bulunan Intel logosunun hemen altında yanında ON yazan bir LED bulunmaktadır ((13) numaralı bölge). Bu LED kartınıza elektrik geldiğine yanacaktır. TX/RX LED i (12) TX/RX LED inin görevi Güç LED i gibi bildirim amaçlıdır. TX Transmit yani gönderim, RX Receive yani alım anlamlarına gelmektedir. Dijital bacaklardan 0 ve 1 e seri olarak bağlı olan bu LED, kartla farklı bir cihaz arasında haberleşme yani veri alışverişi oluyorsa yanıp sönecektir.
İşlemci (14 İşlemci (14) numaralı bölgede bulunan Intel in geliştirdiği Curie entegre devresidir. Basit bir şekilde kartın beynidir. Yazımınız bu kart sayesinde çalışmaktadır. Arduino IDE https://www.arduino.cc/en/main/software
Genuino 101 i Arduino IDE ye Ekleyelim Arduino IDE yi açıp üst taraftaki menüden Tools > Board > Boards Manager... seçeneğine tıklanır.
Ardından açılan Boards Manager ekranındaki arama çubuğuna Intel Curie yazılır. Gelen seçenek Install tuşuna basarak yüklenir. Yükleme sırasında gerekli sürücülerin kurulumu için sizden yetki istenecektir. Sorun yaşanmaması için bunları uygulayınız. Sürücüler açısından hiçbir sorun yaşamamak için ekstra olarak Boards Manager menüsünden Arduino SAM Boards (32-bits ARM Cortex-M3) aramasını yapıp gelen seçeneği de mutlaka yükleyiniz.
Arduino IDE Arayüzü
1. Verify: Yazdığınız kodu derler, kontrol eder ve hataları yakalar. 2. Upload: Kodu Genuino 101 e yükler. Yüklemeden önce Verify butonunun yaptığı işlemi yapar eğer hiç bir sorun yoksa karta gönderir. 3. New: Yeni bir yazılım sekmesi açar. 4. Open: Önceden kaydedilmiş bir programı açmanızı sağlar. 5. Save: Çalışmakta olduğunuz yazılımı kaydeder. 6. Serial Monitor: Bu butona tıkladığında Genuino 101 in bilgisayarınıza gönderdiği verileri kontrol etmenizi sağlayan bir pencere açılır. 7. Yazılım Adı: Çalışmakta olduğunuz yazılıma verdiğiniz ismin gösterildiği bölgedir. 8. Kod Bölgesi: Yazılımınızı yazdığını bölgedir. 9. Mesaj Bölgesi: Bu bölge yazılımınızda bir sorun olup olmadığını size bildiren bölgedir. Eğer bir hata varsa turuncu renge dönüşür. 10. Yazı Konsolu: Bu bölgede detaylı hata mesajları verilmektedir. Mesaj Bölgesi nde yer alan hatanın neyden kaynaklandığını size bildirir. 11. Kart ve Seri Port: Seçtiğiniz kart tipini ve onun hangi haberleşme portuna bağlı olduğunu gösteren bölgedir.
Kartın Arduino IDE ye Gösterilmesi Çalışmalara başlamadan önce elimizdeki kart tipinin ve bu kartın hangi haberleşme portunda olduğunun Arduino IDE ye söylenmesi gerekmektedir. Bu sayede yapılan çalışmalar karta kolayca yüklenebilir. Üst menüden Tools > Board > Arduino/Genuino 101 seçilir. Eğer baka bir model kullanılıyorsa o model seçilmelidir. Ardından kartın hangi haberleşme portunda olduğu seçilmelidir. Bunun için Tools > Port > COMXXX (Arduino/Genuino 101) seçeneği seçilir. COM3 veya yukarısı COM adresleri gözükecektir. Yanında (Arduino/Genuino 101) veya elinizde bulunan kart modeli yazan seçenek seçilmelidir.
Wiring Programlama Dili ve Blink Örneği Kartın bağlantısı tamamlandıktan sonra aşağıdaki şemada gösterilen devre kurulur. Ardından menüden File > Examples > 01. Basics > Blink örneğine tıklanır. Blink basitçe bir LED i yanıp sönmesini sağlayan bir koddur.
void setup() {...} Bu fonksiyon kartınızın kurulum fonksiyonudur. Reset butonuna bastığınızda yada elektrik verdiğiniz anda sadece bir defa çalışır. Süslü parantezler bu fonksiyonun bölgesini temsil eder. Kurulum işleminde kullanmak istediğiniz fonksiyonlar void setup() fonksiyonunun süslü parantezlerinin arasında yazılmalıdır. void loop() {...} Bu fonksiyon kodunuzun aktif olarak kartınızı kontrol ettiği bölgedir. Adından da anlaşılacağı gibi döngünün olduğu bölgedir. İçerisinde bulunan kodları satır satır gerçekleştirir ve en sonuncusunu da bitirdiğinde içerisindeki ilk satıra geri döner. pinmode(bacak, MOD) Kartın üzerindeki bacakları dijital giriş yada çıkış olarak kullanmanızı sağlayan fonksiyondur. BACAK yazan bölgeye kullılacak bacağın numarası, MOD yazan bölgeye de giriş mi çıkış mı (INPUT/OUTPUT) olduğu yazılır. Tek satırlık bir fonksiyondur. digitalwrite(bacak, DEĞER) Seçtiğiniz bacağa HIGH veya LOW göndermenizi sağlar. HIGH = 5V LOW = 0V delay(ms) Programı yazıldığı satırda ms yerine yazıldığı süre kadar (milisaniye bazında) bekletir.
Bu fonksiyonun doğru kullanılabilmesi için kendisinden önce mutlaka pinmode() fonksiyonunun aynı bacak için OUTPUT olarak tanımlanması gerekmektedir. Aksi takdirde digitalwrite() fonksiyonunda belirtilen bacak doğru çalışmayacaktır 0. 1 17 Satırları Yorum satırlarını atlar. 1. 18. Satır -- void setup() Kurulum işlemi için içerisine (süslü parantezlerin arasına) bakar. 2. 20. Satır pinmode(13,output); 13. bacağı çıkış olarak tanımlar. 3. 24. Satır void loop() fonksiyonun içerisine girdi ve döngü başlar. 4. 25. Satır digitalwrite(13, HIGH); 13. bacağa 5 volt gönderdi. 5. 26. Satır delay(1000); 1 saniye bekledi (1000 milisaniye = 1 saniye). 6. 27. Satır digitalwrite(13, LOW); 13. bacağa 0 volt gönderdi., 7. 28. Satır delay(1000); 1 saniye bekledi. 8. Döngünün son satırı olduğu için döngünün başına döner yani 25. satıra tekrar gider ve Genuino nun gücü kesilmediği sürece. Sonsuza kadar bu döngüyü gerçekleştiri
DIĞER DERSE GÖRÜŞMEK ÜZERE...