Herkese merhaba, uzun bir aradan sonra (yaklaşık 5 ay) yeni bir makale yazmak için editörümü açtım. Bu seferki makalem biraz farklı çünkü bundan sonraki donanım-elektronik üzerine yaptığım araştırma ve çalışmaların sonuçlarını paylaşacağım makaleler serisinin ilki olma özelliğini taşıyor. Benim gibi elektroniğe merak salan fakat bu alanda akademik bir eğitim almamış kişilerin bu dünyaya adım atmasını kolaylaştıran ve hem bu kadar yaygın, hem bol örnekli hem de oldukça ucuz olmasıyla çağın icadı saydığım (en azından benim için) Arduino’yu bir de benim kalemimden okuyun. Elbette Arduino konusunda bilmeniz gereken en önemli şeylerden bir tanesi onu öğrenmenin elektroniği öğrenmek anlamına gelmemesidir. O sadece yeni başlayanlar için elektroniği anlama ve uygulamada yardımcı bir eğitim ürünüdür. Elektronik ise zor, emek gerektiren ve bir o kadar zevkli bir bilim dalıdır.
Arduino; 2003 yılında bir grup Interaction Design Institute Ivrea (IDII) öğrencisi tarafından İtalya’da başlatılan kullanımı kolay, donanım ve yazılıma dayanan açık kaynaklı bir elektronik geliştirme platformudur. Bir PCB devre kartı üzerine bir mikrodenetleyici, USB ve güç adaptörleri, giriş-çıkış pinleri için header’lar ve bir kaç devre elemanı eklenerek üretilir. Kullanımının kolay ve fiyatının ucuz olması sebebiyle hobiciler, öğrenciler, programcılar tarafından tercih edilirler ve Kullanım amacı oldukça geniştir. Üzerinde Atmel firmasının ürettiği AVR tabanlı Atmega mikrodenetleyicisi sayesinde bir LED yakabilirsiniz, bir elektrik motorunu sürebilirsiniz, ışık-ses-cisim-sıcaklık ve daha bir çok farklı kategorideki sensörleri okuyup bunlardan aldığınız veriyi internet üzerinden bir websitesine gönderebilir ya da MicroSD karta yazabilirsiniz. Arduino uyumlu modüller sayesinde Mp3 müzikler çalabilir, Kendi FM radyonuzu yapabilir, Kamera kullanıp fotoğraf çekebilirsiniz. Bluetooth modülü ile bu özelliğe sahip diğer cihazlar ile haberleşebilir, WIFI modülü ile internete bağlanabilir, Wireless modülü ile 2.4 Ghz frekansında haberleşebilir, Kızılötesi sinyalleri algılayabilir ve bir televizyon kumandasını taklit edebilirsiniz. Çizgi izleyen, ışık takip eden, sesle komut algılayan mini robotlar, hatta kendi uzaktan kumandalı helikopterinizi yapabilirsiniz. Tüm bunları Platformun kendine özgü Wiring tabanlı Arduino Programlama Dili ve Proccessing tabanı Arduino IDE‘sini kullanarak yapabilirsiniz.
Arduino’nun piyasada bir çok modeli vardır bunlar tercih edilecek projenin ihtiyaçlarına göre tasarlanmıştır. Örneğin genel amaç için Arduino Uno modeli tercih edilebilir. Daha küçü boyutlardaki bir proje için Arduino Micro veya Pro Mini modelleri tercih edilebilir. Performans ve karmaşık işlemler gerektiren projelerde Atmega2560 IC (Integrated Circuit) si bulunan Arduino Mega veya 32-bit ARM Cortex-M3 IC’si bulunan Due modelleri tercih edilebilir. Modeller değişse de programlama yöntemleri aynıdır. Her kesimden insanın rahatlıkla kullanabilmesi için tasarlanan Arduino IDE yazılımı ile kodlarınızı yazıp USB arayüzü ile Arduino’nuza yükleyebilirsiniz (Bazı modellerde ek modüller gerekebilir örn: Pro Mini). Yine USB arayüzünden, adaptör girişinden veya batarya ile enerji vererek besleyebilirsiniz.
Arduino’yu programlamak programcı açısından sanıldığı kadar karmaşık değildir. Her ne kadar arkada bir kaç farklı platformun bir arada çalışması gerekiyorsa da sizin yapmanız gereken sadece üzerinde çalıştığınız donanımı seçerek editörde programınızı yazıp “Upload” butonu ile Arduino’nunuza yüklemektir. Programlarınızı Wiring ismi verilen bir framework ile yaparsınız. Wiring; 2oo3 yılında Hernando Barragán tarafından geliştirilmeye başlanan mikrodenetleyiciler için açık kaynaklı bir programlama çerçevesidir ve C++ programlama diline dayanır. Bu şu anlama gelir ki eğer C++ programlama dilini biliyorsanız ya da en azından aşinasanız Arduino programlamayı daha kolay öğrenebilirsiniz. Programınızı yazıp Upload etmek istediğinizde kodlarınız AVRDude isimli Downloader-Uploader (Yükleyici) tarafından derlenir ve HEX dosyasına dönüştürülür ardından USB arayüzü ile doğrudan AVR tabanlı mikrodenetleyici ile belli bir protokolde haberleşip bu dosyayı yükler. Elbette bu işlemler varsayılan ayarlar ile otomatik olarak yapılmaktadır eğer ileri düzey bir programcı-donanımcı iseniz bu ayarlara müdahale etmeniz mümkün. Aşağıda bir sensörden analog voltaj değerini okuyup buna göre bir LED’i yakıp söndüren bir programı görebilirsiniz.
void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); } // the loop function runs over and over again forever void loop() { int sensorValue = analogRead(A0); if(sensorValue > 100) digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) else digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
Teknik özelliklerinden bahsetmek gerekirse Arduino’lar üzerlerinde AVR tabanlı mikrodenetleyiler taşırlar. Bu denetleyicileri programlamak PIC denetleyicilere göre daha kolaydır. Bazı Arduino modellerinde kullanılan mikrodenetleyiciler bilgisayarlar ile doğrudan haberleşecek yeteneğe sahip değildir bu yüzden kart üzerinde USB-TTL dönüştürücü entegreler kullanılır. Bazı modellerde aynı tipte denetleyiciler kullanılsa da bazılarında diğerlerinden farklı denetleyiciler kullanılabilir örneğin Arduino Uno-Nano-Pro Mini modellerinde 8 Bit’lik Atmega328p kullanılır. Özellikleri şöyledir; 32 KB Flash bellek (Program yüklenen bellek), 2 KB SRAM, 1 KB EEPROM, 20 Mhz CPU Frekansı (bu modellerde 16 Mhz de çalışır), SPI- I2C, UART desteği.
Bu özellikler günümüz bilgisayarları ile karşılaştırıldığında çok küçük kalabilir fakat makalenin başında verilen örneklerdeki projeler ve benzerleri için yeterli hatta fazla bile sayılabilir.
Arduino projelerinizi fiziksel olarak tasarlamadan önce bilgisayar simülasyonu ile gerçeğe yakın geliştirmeler ve testler yapabilirsiniz. Bu konuda farklı uygulamalar olsa da ISIS Proteus yazılımın bu işi en iyi yapan uygulama olduğunu söylemek mümkün. Proteus için yazılmış Arduino ve modüllerinin kütüphanelerini kullanarak sadece sanal ortamda kendinizi geliştirebilirsiniz. Proteus’un yanı sıra web üzerinden online olarak Arduino simülasyonu yapabileceğiniz Autodesk firmasının ürünü olan TinkerCAD uygulamasını da kullanabilirsiniz hem görsellik hem de kullanım kolaylığı açısından fayda görebilirsiniz.
Bu konudaki ilk makale için şimdilik yeterli olduğunu düşünüyorum. İlerleyen dönemlerde Arduino ve elektronik konularında yeni makaleler paylaşacağım.
Umarım faydalı olmuştur.
Mustafa Tayyip Yetiş
Yazılım Geliştirici – Elektronik Meraklısı