Arduino DUE Geliştirme Kartı Ayrıntılı İnceleme

Arduino DUE açık kaynak felsefesiyle 8-bit geliştirme kartlarıyla piyasaya çıkan Arduino için bir dönüm noktası olmuştur. İlk ARM çekirdekli 32-bit mikrodenetleyici kartı olan DUE, Arduino için büyük bir başarı olarak görülüyordu. Bu olay sadece Arduino ile sınırlı kalmayıp tüm maker pazarında gelişen teknoloji ile beraber artan sistem özellikleri ve bit sayıları yükselen kartlar makerlar için de büyük bir olanak gibi görünüyordu. 32-bit sistem, yüksek işlem hızı, yüksek program hafızası daha pahalı satılan kart demek olduğu için şirketler için bir sorun yoktur. Ama DUE gibi 32-bit geliştirme kartları Arduino platformunda ne denli verimli kullanılabilir incelememiz gerekir.  Günümüzde çıkan 32-bit Arduino kartların öncüsü olan Arduino DUE’yi ayrıntılı olarak incelediğimizde kafamızda Arduino hakkında pek çok soru işareti yer alıyor. Bu incelemeyi bir firmanın reklam yazısı gibi yazarak blogun kalitesini düşürmek istemiyorum. Şimdi Arduino DUE’yi etraflıca incelediğimiz yazımıza başlayalım.

Arduino, wiring kütüphanesinde atmega8 tabanlı kartı çalıştırmak için yazılan bir “kütüphane üzerine yazılan kütüphane” ile yola başlamıştır.  Bütün hepsi C/C++ tabanlı ve AVR-GCC derleyicisi üzerine yazılan kütüphanelerden ibarettir. Arduino yoluna temel olarak 8-bit Uno ve Mega kartlarını baz alarak başarılı şekilde devam etse de bu işten yazılım yönünden değil donanım yönünden bir para kazandığı için sürekli yeni donanım üretmeye ve bunları pazara sürmeye yönelik bir şirket politikası izlemiştir.

İşte bu politikanın son ürünlerinin öncüsü olan DUE kartıyla bu pazar farklı bir boyuta taşınmıştır. Artık 8-bit mikrodenetleyicilerde basit işlemleri yapmak için yazılan kısıtlanmış bir Wiring frameworkü ile artık 512KB hafızalı ve 32-bit yüksek işlem gücüne sahip mikrodenetleyicileri programlar hale gelmişizdir.

Arduino Due Kartına Genel Bir Bakış ve Teknik Özellikler

Arduino DUE kartını donanım yazılımı (firmware) olarak incelediğimizde açık kaynak felsefesine aykırı durumları görmemiz mümkündür.  Fakat donanım açısından baktığımızda donanım olarak yine açık kaynaktır ve devre şeması ve görüntüsü internette mevcuttur. Şemayı incelediğimizde hiç de fena bir kart olmadığını görüyoruz.  Yalnız bu kartları şekillerinden dolayı baskı devreye uydurmak biraz zor olmaktadır. Özellikle jumper kabloları ve bu konnektörlerle bağlantı yapmak hiç sağlıklı olmamaktadır. Sürekli kopukluk ve temassızlık yaşadığımız için kalıcı bir devre tasarlamak isteyen biri için Nano gibilerinden başkasını tavsiye edemeyiz.  Kart genel olarak Mega kartına benzer iken bazı yönleri mega kartından farklıdır. Önce resme bakalım ve sonrasında ayrıntılı olarak inceleyelim.

Resim: https://www.cnx-software.com/wp-content/uploads/2012/10/ArduinoDue.jpg

Karta baktığımızda ilk dikkatimizi çeken kartın neredeyse tamamını dolduracak kadar büyük olan AT91SAM3X8E mikrodenetleyicisidir. Arduino Mega’daki ATmega2560 mikrodenetleyicisi 100 ayaktan ibaret iken bu mikrodenetleyici 144 ayak bulundurmaktadır.  Yine Mega’da olduğu gibi 54 dijital ayak ve belli başlı analog ve iletişim ayakları vardır.

Bu kart Mega kartının üzerine yapılmak yerine yeni bir tasarımla daha kapsamlı kullanılabilecek bir kart üzerine yapılsa daha iyi olurmuş diyoruz. Çin malı ARM geliştirme kartlarında olduğu gibi çiftli erkek header konnektörleri ile gelen bir kart yassı kablolar ile kullanılmaya uygun  ve sağlıklı proje oluşturmaya daha müsaittir.

Resim : https://ae01.alicdn.com/kf/HTB1ZOn5KgmTBuNjy1Xbq6yMrVXad/1PCS-STM32F407VET6-development-board-Cortex-M4-STM32-minimum-system-learning-board-ARM-core-board-STM-module.jpg

Şimdi kartın teknik özelliklerine gelelim. Arduino kartlarının teknik özellikleri üstünde bulundurdukları mikrodenetleyicinin teknik özellikleri olduğu için mikrodenetleyicinin üretici sayfasından ve teknik veri sayfasından (datasheet) edindiğimiz bilgileri sizinle paylaşalım.  SAM3X8E mikrodenetleyicisinin teknik özellikleri şu şekildedir,

  • 2 x 256KB (512KB) Program Hafızası
  • 64 + 32 KB (96KB) SRAM
  • 103 Adet Giriş ve Çıkış Ayağı
  • 16 adet 12-bit ADC Ayağı
  • 2 kanal 12-bit DAC
  • 2 adet CAN Bus Birimi
  • Dahili Ethernet Birimi
  • 2 adet I2C birimi
  • 4 adet SPI birimi
  • SD Kart ünitesi
  • 84MHz azami çalışma frekansı
  • Bir adet USB birimi

Bu mikrodenetleyicinin 1459 sayfalık bir teknik veri kitapçığı olduğu için tamamını okumamız mümkün değildir. Kısaca özelliklerinden bahsetmeyi yeterli görüyorum. Yine de bu özelliklerden bahsedince bir tuhaflık olduğunu seziyoruz. Çünkü 4 adet SPI birimi olsa da SPI kütüphanesinde bir adet SPI birimini kullanabiliyoruz. CAN bus özelliği olsa da Arduino’da buna dair bir kütüphane veya fonksiyon yok. 103 adet giriş ve çıkış ayağını kart üzerinde göremiyoruz. Dahili Ethernet olsa da kartta Ethernet yuvası yok. Ethernet kullanabilmek için Ethernet özellikli bir mikrodenetleyici kartına Ethernet shield almamız  gerekiyor.

Bu özelliklerin olduğunu mikrodenetleyicinin üreticisinden öğrensek de Arduino’nun kendi sitesinde farklı bir şekilde kartı tanıyoruz.

Örneğin 16 adet olan analog giriş kanalı burada 12 adet belirtilmiş. Ne Ethernet ne CAN bus ne de çoklu SPI ve I2C birimlerinden bahsedildiğini görüyoruz. Sadece program hafızasına göre veya saat hızına göre bir kartın tercih edilmesi mümkün değildir. Bu aynı sırf 2GB hafızası var diye ekran kartı almaya ya da şu kadar GHz diye işlemci almaya benzer. Şimdi  Arduino’nun resmi sitesinden kartın donanım özelliklerine bakalım.

Burada 32-bit Cortex-M3 çekirdeğine sahip üst seviye bir mikrodenetleyicinin bize sağlayacağı özellikleri değil 2 adet DAC ayağını, 84MHz işlem hızını, 512KB program hafızasını ve fazladan analog ayaklarını görmekteyiz. 32-bit mikrodenetleyicinin gerçek özelliklerini kullanabilmek için yine teknik veri kitapçığını okumak ve buna uygun bir derleyici kullanmamız lazımdır.

Arduino DUE AVR çekirdeğine sahip olmadığı için diğer kartlar gibi aynı kütüphaneler üzerinden çalışmaya müsait değildir. Aynı kütüphane tamamen farklı bir mimari ve sistem üzerine yazılmak zorundadır. O yüzden DUE kartı için ayrı bir Arduino çekirdeği indirmemiz gereklidir. Şimdi işin yazılım boyutunu inceleyerek yazımıza devam edelim.

 Due Kartının Yazılımsal Boyutu

Arduino sitesi dokümantasyon olarak devre şemasını, ayakların görevlerini ve nasıl kartın kullanılmaya hazır hale geleceğini kısaca görmemiz mümkündür. Kart hakkında verilen bilgilerin bu kadar kısa olması ne kadar geliştirmeye yönelik bir kart olduğunu sorgulatır niteliktedir. Dokümantasyonda kart üzerinde mevcut olan CANRX ve CANTX ayaklarının Arduino tarafından desteklenmediğini okuyoruz.  Mega kartında olduğu gibi çoklu Serial kullanmamıza izin verildiği gibi SDA1 ve SCL1 ayakları ile ikinci bir I2C birimi kullanmaya izin verilmiş. Geriye kalan yazılımsal desteğin ise 12-bit ADC kullanmamıza ve 12-bit DAC çıkışı alabilmemize yönelik fonksiyon modifikasyonları olduğunu görüyoruz.

Due’nin kaynak kodunu GitHub’dan bulabileceğimiz gibi bilgisayarımızda da Users/Kullanıcı/AppData/Local/Arduino15/packages/Arduino/hardware/sam klasöründe bulabiliriz. Arduino çekirdeğinin Atmel’in sağladığı SAM derleyicilerin üzerine yazıldığını görüyoruz. 8-bit AVR mikrodenetleyiciler üzerine AVR-GCC için yazılan kütüphanenin kopyasının 32-bit SAM mikrodenetleyiciler üzerine yazıldığını görüyoruz. Fonksiyonların içerisindeki komutlar mikrodenetleyicinin donanımı itibariyle farklıdır.

Burada dikkatimizi çeken başka önemli bir nokta var. Bu zamana kadar Uno olsun Mega olsun bütün AVR tabanlı Arduino kartlarında “Bootloader” adını verdiğimiz ön yükleyici olan donanım yazılımı (firmware) her zaman açık kaynak olup kodları paylaşılıyordu. Kodları paylaşıldığı için donanım tabanında neler olduğu hakkında bir fikrimiz olabilirdi. Aynı zamanda da müdahale etme şansımız vardı. Burada ise programlama portuna bağlı olup programlama görevini yapan Mega16u2 mikrodenetleyicisinin yazılımının HEX dosyasından ibaret olduğunu görüyoruz.

Açık kaynak felsefesi ile HEX dosyaları pek bağdaşır nitelikte değildir. Fakat Arduino Firmware olarak sadece Hex dosyasını vermekle yetinmiştir. Bu HEX dosyasını da kaynak kodlarda görmemiz mümkündür.

Due’nin öne çıkan yönlerinden biri ise 84MHz’de çalışmasıydı. Bu bir mikrodenetleyici için müthiş bir hız demektir. Fakat gerçekte böyle bir hızın olduğunu pek göremiyoruz. Bir kullanıcının yaptığı ölçüme göre DUE’nin dijiital giriş ve çıkış hızları şu şekildedir.

digitalWrite() Fonksiyonu 1 milyon örnek
time: 5196306
0 min 5 sec 196 msec 306 usec

1 milyon kere dijitalWrite() fonksiyonunu kullanmak için 5.196 saniye gerekiyor.

digitalRead() fonksiyonu 1 milyon örnek
digitalRead:
time: 1156070
0 min 1 sec 156 msec 70 usecs

1 milyon kere digitalRead() fonksiyonunu kullanmak için 1.156 saniye gerekiyor.

Bu hızlar değil 32-bit mikrodenetleyici 8-bit mikrodenetleyiciler için bile oldukça yavaştır. Ben kendi bizzat denemelerimle 16MHz’de çalışan bir AVR için 4MHz sinyal çıkışı elde edebildim. Her çevirimde iki kodun çalıştığını (yani HIGH ve LOW) hesap edersek toplamda 8 milyon işlem elde etmiş oluyoruz. Bu da saniyenin 0.125’i kadar olmuş oluyor. Bunu Due ile kıyaslarsak 8-bit AVR mikrodenetleyici bile Due’den kat kat hızlı dijital giriş ve çıkış işlemi yapabilmiş oluyor.

Due İçin Yazılan Resmi Kütüphaneler

Arduino’yu Arduino yapanın topluluk ve kütüphaneler olduğunu bilmemiz gerekir. 8-bit mikrodenetleyiciler için temel kütüphaneler resmi olarak yayınlanmıştır. Arduino API olarak oldukça kısıtlı mikrodenetleyici fonksiyonlarına sahip olduğu için gelişmiş bir program yapmak için çoğu zaman kütüphaneye ihtiyacımız olur. Mikrodenetleyici özelliklerinin çoğunu bile kendi içinde barındıran bir yapıda değildir. SPI, UART, I2C gibi temel birimleri bile kütüphane kullanarak çalıştırmamız mümkündür. Durum böyle olunca 32-bit mikrodenetleyici için farklı kütüphanelerin yayınlanmasını ve yazılımsal olarak gelişmiş bir program yapmayı umuyoruz. Aksi halde UNO’da yaptığımız işi 32-bit yüksek seviye bir mikrodenetleyicide yapmaktan öte gidemeyiz.  Arduino hiçbir zaman tam teşekküllü bir derleyici haline gelemediği için kütüphaneler ile bunu telafi etmelerini bekliyoruz.

Fakat Due için yayınlanan kütüphanelere baktığımızda tam bir hayal kırıklığı olduğunu söyleyebiliriz. 32-bit mikrodenetleyicilere özgü diyebileceğimiz Audio ve Scheduler adında iki basit kütüphane görüyoruz. Bu kütüphanelerden biri SD karttan ses oynatmaya diğeri ise mikroişlemcinin mimarisinde olan görev programı ile alakalı basit fonksiyonları içeriyor. Biraz daha kullanışlı diyebileceğimiz USBHost kütüphanesi ise klavye, mouse gibi USB aygıtlarla iletişim kurmamızı sağlıyor. USB Host özelliği burada tek kullanışlı özelliklerden biri olarak görünüyor.

Cortex M3 çekirdekle, ARM mimarisi ile başladığımız yazı basit fonksiyonları içeren kütüphanelerle bitiyor. Oldukça şişirilmiş bir donanım üzerine bir yazılım desteği olmadığı gibi bir dokümantasyon da göremiyoruz. O yüzden Arduino DUE kartı hiçbir zaman Arduino UNO ve Mega kartlarının yerini alamamıştır. Ayrıca şu an DUE kartının piyasadan çekildiğini öğrenmekteyiz. Ticari amaçla ortaya atılan bir ürünün maker topluluğuna ne kadar faydasının olabildiğini bu örnekten görebilmemiz mümkündür. O yüzden geliştiriciler olarak bizim kendi açık kaynak geliştirme platformlarımızı ortaya koyma adına bir girişimde bulunmamız şarttır.

Kaynaklar,

Getting started with the Arduino Due, Arduino, https://www.arduino.cc/en/Guide/ArduinoDue, Erişim Tarihi: 13.10.2018

ARDUINO DUE, Arduino, https://store.arduino.cc/usa/arduino-due, Erişim Tarihi : 13.10.2018

SAM3X / SAM3A Series (Datasheet), Microchip Technology, http://ww1.microchip.com/downloads/en/devicedoc/atmel-11057-32-bit-cortex-m3-microcontroller-sam3x-sam3a_datasheet.pdf, Erişim Tarihi : 13.10.2018

ATSAM3X8E, Microchip Technology, https://www.microchip.com/wwwproducts/en/ATsam3x8e, Erişim Tarihi: 13.10.2018

Upgrading the firmware of the Arduino Due Programming port 16U2, Arduino, https://www.arduino.cc/en/Hacking/Upgrading16U2Due, Erişim Tarihi : 13.10.2018

speed of digitalWrite and digitalRead on Arduino Due, http://forum.arduino.cc/index.php?topic=160653.0, Erişim Tarihi: 13.10.2018

Kapak Resmi, https://www.cnx-software.com/wp-content/uploads/2012/10/ArduinoDue.jpg

 

UYARI!!

Gökhan Dökmetaş

"Arduino Eğitim Kitabı" ve "Arduino ve Raspberry PI ile Nesnelerin İnterneti" kitaplarının yazarı. Başkent Teknoloji ve Dedektör Merkezi'nde Ar-ge Sorumlusu. Araştırmacı-Yazar.

You may also like...

2 Responses

  1. Mahmut dedi ki:

    Verdiğin bilgiler için teşekkürler..

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.