Arduino Nedir ? Nasıl Kullanılır ? Neden Arduino ?
Güncelleme 30/01/2021
Arduino kolay programlanabilir, ucuz bir donanıma sahip, açık kaynak kodlu bir mikro denetleyicidir.
Arduino bir Giriş/Çıkış (Input/Output) kartı ve Processing Programlama dilinin uygulamasını barındıran bir fiziksel programlama platformudur.
Arduino farklı cihazlar ile haberleşebilir
Arduino tek başına çalışan interaktif nesneler oluşturmak için kullanıldığı gibi bilgisayar üzerinde çalışan yazılımlarda da kullanılabilir.
Arduino için hazır üretilmiş kartlar satın alabilirsiniz veya kendi Arduino kartlarınızı üretebilirsiniz.
Arduino devre kartları girişlerine bağlanan sensörleri okuyabilir.
Arduino yazdığınız program ile çıkışlarına bağlanan elektronik anahtarları kontrol edebilirsiniz
Arduino, buton veya sensörlerden gelen elektriksel değerleri algılar ve buna bağlı olarak ışıkları, motorları veya diğer aktüatörleri istediğimiz doğrultuda çalıştırır.
Arduino C / C++ programlama dilleri ile geliştirilmektedir.
Arduino Nedir ?
Arduino İtalyan elektronik mühendisleri tarafından açık kaynak kodlu geliştirilen, isteyen herkesin baskı devreleri indirerek kendi devrelerini basabilecekleri dilerlerse şık bir görüntüye sahip hazır basılmış ve bileşenleri yerleştirilmiş halde alabilecekleri, esnek, kolay kullanımlı donanım ve yazılım tabanlı bir elektronik prototip platformudur. Öncelikle açık kaynak nedir dersek hemen şöyle açıklamak gerekirse, devre şemaları, pcb baskı devreleri, yerleşim planları, varsa üzerindeki programlanabilir elemanların kodları, bütün detaylarıyla herkesin kullanımına açılmış ve ticari bir kaygı olmadan tamamen paylaşıma açık bir platformdur.
Arduino geliştirme kartı üzerindeki mikroişlemci (AtmegaXX) Arduino programlama dili (wiring tabanlı) ile programlanır ve bu program Processing tabanlı Arduino Yazılım Geliştirme Ortamı (IDE) yardımı ile karta yüklenir.
Arduino’nun kullandığı dilden bahsedecek olursak, kullandığı dil oldukça basittir,temel bir C bilgisi ile usb üzerinden direkt olarak mikrodenetleyicimizi programlayabiliyoruz ve gerçek zamanlı uygulamalar çalıştırabiliyoruz. Programlama yaparken java üzerine yazılmış güzel, sade bir o kadarda akıllı bir editör tasarlanmıştır bu editörün içerisinde bir çok kütüphane mevcuttur ve bu editör geliştiricileri tarafından sürekli güncel tutulması sebebiyle gün geçtikçe daha kullanışlı ve fonksiyonel hale getirildiği görülüyor. Bütün bunları göz önünde bulundurduğumuzda çok ileri bir yazılımcı olmadan bir çok uygulamayı Arduino kullanarak yapabiliriz. Arduino yazılımının diğer bir güzel yanı ise geliştiricileri tarafından hazırlanan zengin kütüphanelerdir. Bu kütüphane dosyaları sayesinde, bir çok kod yükünden kurtularak, sadece yapmak istediğiniz projenin kodlarına yönelebiliyorsunuz.
Biraz da donanımdan bahsedecek olursak, Arduino kartlarında Atmel işlemcilerini kullanmaktadır. Mikrodenetleyicimiz önceden Bootloader programı içine atılmış şekilde geldiğinden dolayı harici bir programlama cihazına ihtiyaç duymaz. Bu da bizim için çok büyük bir avantaj, yani ek bir programlayıcı gereksinimini ortadan kaldırıyor. Arduinonun bir çok çeşidi bulunmaktadır, uygulamanızın büyüklüğü veya küçüklüğüne göre bu çeşitlerden herhangi birini seçebiliriz. Uzun bir araştırma sürecine girdiğinizde karşınıza çok fazla çeşidinin çıktığını göreceksiniz ve halen daha bu kartlar yenilenmekte ve geliştirilmektedir.
Arduino’nun şu an ki kartlarına uygun olarak geliştirilen bir çok shield Türkçesi kalkan olan ek donanımlar yapılmıştır (Bluetooth, Ethernet, Wireless, Motor sürücü katmanları vs.).
Arduino kartları biline birçok sensörden veri alıp işleyebiliyor. sıcaklık uzaklık ultrasonik kızılötesi, nem ölçer vs.
Neden Arduino ?
Arduino, açık kaynak kodlu bir mikrodenetleyici kartıdır. Ana MCU Atmel tabanlıdır. (MCU’ya önceden bir mini program – bootloader yüklenmiştir). Kart ile robotik ve elektronik uygulamalarınızı kolayca gerçekleştirebilirsiniz.
Bu kadar popüler olmasının bir kaç nedeni vardır. Bunlar:
- Açık kaynaklı bir geliştirme platformudur. (Devre şemasından, programlama arayüzüne kadar…)
- Program geliştirmek basittir. Aynı kart üzerinden hem programlanır hem test edilebilir.
- Ardunino Programlama dili de basittir. Bolca örneği mevcuttur.
- Yapmak istediğiniz Arduino Projeleri benzerleri de önceden yapılmıştır. Diğer proje yapımcılarıyla daha kolay bilgi alışverişinde bulunabilirsiniz.
- Arduino kitap bulmakta zorlanmazsınız . Pdf Kaynaklarımızı inceleyin faydası olur
- Çevresiyle çok kolay bir şekilde etkileşime girebilen sistemler tasarlayabilirsiniz.
- Arduino kütüphaneleri ile kolayca mikrodenetleyicileri programlayabilirsiniz.
- Girişleri sayesinde analog ve dijital verileri işleyebilirsiniz.
- Sensörlerden gelen verileri kolayca kullanabilirsiniz.
- Arduino sayesinde dış dünyaya çıktılar (ses, ışık vb…)üretebilirsiniz.
Arduino Bileşenleri
Arduino geliştirme ortamı (IDE)
Arduino bootloader (Optiboot)
Arduino kütüphaneleri
AVRDude (Arduino üzerindeki mikrodenetleyici programlayan yazılım)
Derleyiciden (AVR-GCC) oluşur.
Arduino yazılımı bir geliştirme ortamı (IDE) ve kütüphanelerden oluşur. IDE, Java dilinde yazılmıştır ve Processing adlı dilin ortamına dayanmaktadır. Kütüphaneler ise C ve C++ dillerinde yazılmıştır ve AVR-GCC ve AVR Libc. ile derlenmiştir.
Optiboot bileşeni Arduino ‘nun bootloader bileşenidir. Bu bileşen, Arduino kartlarının üzerindeki mikrodenetleyicinin programlanmasını sağlayan bileşendir.
Arduino ‘nun bu kadar çok tercih edilmesini sağlayan en önemli bileşen ise mikrodenetleyici konusunda detaylı bilgi sahibi olmayı gerektirmeden herkesin programlama yapabilmesini sağlayan Arduino kütüphaneleridir. Arduino kütüphanelerinin bir listesine resmi sitesinden ulaşabilirsiniz. Arduino kütüphaneleri, geliştirme ortamı ile birlikte gelmekte ve “libraries” klasörünün altında bulunmaktadır. Kodları inceleyerek mikrodenetleyicilerin nasıl programlandığını ve kütüphanelerin yapısını görmeniz mümkündür.
Son olarak AVRDude bileşeni ise derlenen kodları programlamak için kullanılır.
Arduino ile ilgili temel kavramlar
µP (Mikroişlemci): Mikroişlemci, bir Arduinonun beynidir. Arduino geliştirme kartı çeşitli AVR mikroişlemciye dayalıdır, hepsinin de kendine has fonksiyonları ve özellikleri vardır.
Giriş Voltajı: Kart için önerilen voltaj aralığıdır. Kart maksimum voltaj aralığından çok az daha fazla voltajla da beslenebilir, bu da güvenlidir. Aklımızda bulunması gereken püf nokta ise Li-Po piller 3.7V desteklemektedir. Piyasadaki Arduino çeşitleri de bu voltaj değerini desteklemektedir. Dolayısıyla arduinolar 3.7V Li-Po pillerle doğrudan beslenebilir.
Sistem Voltajı: Kartın sistem voltajıdır diğer bir deyişle mikroişlemcinin çalıştığı voltajdır. Bu, kartın uyumluluğu için –özellikle 5V’tan 3.3V’a geçildiğinden beri- önemli bir faktördür. Bağlanmak istenilen dış sistem ne olursa olsun her zaman elimizde bulunan işlemcinin voltaj seviyesiyle eşleştirme gereği duyulacaktır.
Saat Hızı: Mikroişlemcinin hıza bağlı frekans aralığıdır ve komutları çalıştırma hızıyla bağlantılıdır. Ayrıca bazı nadir beklentiler oluşabilir. Çoğu ATMega mikroişlemci 3V’ta iken saat hızı 8MHz kaldırırken çoğu 5V’ta 16MHz’de çalışır.
Dijital I/O: Arduinodaki dijital Giriş/Çıkış’ların sayısıdır. Bunların her biri giriş ya da çıkış olarak bazısı da PWM olabilecek şekilde tasarlanmıştır.
Analog Giriş: Arduinodaki kullanılabilir analog girişlerin toplam sayısıdır. Analog pinler ‘’A’’ harfi ve yanındaki numaralarla isimlendirilir ve bu da ATMega yonga içindeki Analog to Digital Converter (ADC) aracılığıyla analog değerleri okumayı sağlar. Analog girişler eğer ihtiyaç olursa daha fazla dijital Giriş/Çıkış olarak kullanılabilir.
PWM: PWM sinyal üretebilme kapasitesi olan dijital Giriş/Çıkış’ların sayısıdır. PWM sinyalleri analog çıkışlar gibidir. Arduinoyu analog voltajını 0 ve sistem voltajı arasında kandırma imkânı tanır.
UART: Arduinonun desteklediği, birbirinden ayrı seri bağlantı çizgileri sayısıdır. Çoğu arduino kartta, dijital Giriş/Çıkış pinleri 0 ve 1 serilerin 2 katıdır ve alınan pinler seri programlama portuyla paylaşılmıştır. Bazı arduino kartları birden fazla UART’a sahiptir ve birden fazla seri portu bir kerede destekleyebilir. Bütün arduino kartlar programlama için en az bir UART’a sahiptirler. Fakat bazılarında pinlere erişilebilir değildir.
Flash Memory: Taslakların depolanabileceği maksimum mevcut hafızadır. Bütün bu hafızanın tamamı kullanılabilir değildir, zira küçük bir kısmı bootloader tarafından kullanılmaktadır ( genellikle 0,5 ve 2 KB arası).
Bootloader: Eğer mikroişlemci arduinonun beyni olarak nitelendirilirse, bootloader kişiliği olarak değerlendirilebilir. Bootloader ATMega’nın içinde bulunur ve seri port aracılığıyla donanım programlaması için yükleme yapılmasını sağlar. Çünkü farklı Arduino kartları farklı mikroişlemciler ve programlama arayüzleri kullanır. Her birinde farklı bootloader programı vardır. Bootloader için olan kaynak kodları, arduino dağıtımı içinde bulunabilir. Bütün Arduino bootloaderlar Arduino IDE yazılımından kod yüklenmesini sağlar.
Programlama Arayüzü: Arduino kartını programlamak için bilgisayarla bağlantı kurulmasını sağlar. Bazı kartlar gömülü USB jacklar barındırır, dolayısıyla tek yapılması gereken USB kabloyu bilgisayara bağlamaktır. Bazı kartlar ise headerlara sahiptir böylece onlara da yapmanız gereken tek işlem FTDI Basic breakout ya da FTDI kabloyu bağlamaktır. Arduino Mini gibi kartlar ise seri pinler programlama için bulunur fakat FTDI headerlarla uyumlu değildirler. Gömülü USB jack taşıyan her Arduino USB dönüşümleri için bazı farklı donanımlara sahiptir. Bununla birlikte, bazı kartlar ek donanıma ihtiyaç duymazlar çünkü mikroişlemcilerinin gömülü USB desteği vardır[37].
Arduino temel donanım özellikleri
Şekil : Arduino Uno R3
Donanım özellikleri board’a göre farklı özellikler göstermektir.
- ATmega8, ATmega168, ATmega328 mikroişlemci
- 5 voltluk regüle entegresi,
- 16MHz kristal osilator yada seramik rezonatör,
- Flash Memory,
- SRAM
- EEPROM
Arduino ile basitçe ne yapabilirim?
- Kolay bir şekilde çevresiyle etkileşime girebilen sistemler tasarlayabileceğiniz
- Açık kaynaklı bir geliştirme platformudur.
- Arduino kartları üzerinde Atmega firmasının 8 ve 32 bit mikrodenetleyicileri (arduino due) bulunur.
- Arduino kütüphaneleri ile mikrodenetleyicileri kolaylıkla programlayabilirsiniz.
- Analog ve dijital girişleri sayesinde analog ve dijital verileri işleyebilirsiniz.
- Sensörlerden gelen verileri kullanabilirsiniz
- Dış dünyaya çıktılar (ses, ışık, hareket vs…) üretebilirsiniz.
Arduino Nasıl Kullanılır?
Arduino ya da herhangi bir mikrodenetleyici sistemi kullanmak için ilk olarak düzgün çalışma ortamını sağlamanız gerekir. Arduino grubu mikrodenetleyiciler için gerekenler:
- Arduino UNO R3, Arduino Megaeg 2460, Arduino Leonardo , Arduino Nano , .. gibi bir Arduino kartları .
- Karta uygun USB kablonuz. USB yazıcı kablosu ya da mikroUSB kablosu gerekecektir.
- Arduino IDE programı
- Arduino ile uyumlu çalışacak bir bilgisayar
Şekil : Arduino Uno R3
Bir Arduino donanım kartının temel bileşenleri şöyledir.
- Power USB : Arduino ile bilgisayarınız arasındaki iletişimi sağlar. Aynı zamanda USB üzerinden gereken gücü temin eder.
- Power Socket : Arduino’nun çalışması için gereken gücü, harici bir DC adaptör ile bu soket üzerinden sağlayabilirsiniz.
- Voltaj Regülatörü : Arduino için sağladığınız elektriksel gücü kart üzerindeki devre elemanlarına kararlı şekilde dağılımını sağlar.
- Kristal Osilatör : Arduino işlemcisinin çalışabilmesi için gereken frekans üretimini yapar.
- Reset : Arduino devre kartını sıfırlar.
- 3,3V DC çıkış sağlar
- 5V DC çıkış sağlar
- GND : – Bağlantısının yapılacağı pindir. Toprak veya şase olarak da ismi geçer.
- Vin : Arduino için harici güç girişi olarak kullanılır.
- Analog In : 6 adet analog pin bulunmaktadır. A0..A5 olarak isimlendirilir. Isı, nem gibi sensörlerden gelen analog sinyalleri okumak için kullanılırlar. Bu sinyallerden analog / dijital çeviriciler ile mikroişlemciye iletilir.
- Arduino mikrodenetleyicisidir. Giriş pinlerinden gelen verileri okuma, üzerindeki yazılımı çalıştırma, çıkış pinlerine veri gönderme gibi işlemleri yürütür.
- ICSP : Bu pinler SPI kütüphanesi ile SPI haberleşmeyi sağlar.
- Power LED : Arduino’ya güç geldiğini gösterir LED ışık kaynağıdır.
- Çıkış LED : Arduinonun 13 nolu çıkış pinidir. Bu çıkış direkt olarak devre kartının üzerindeki bir LED’e bağlıdır.
- Arduino Uno ‘da bulunan 14 tane dijital giriş / çıkış pininin tamamı, pinMode(), digitalWrite() ve digitalRead() fonksiyonları ile giriş ya da çıkış olarak kullanılabilir. Bu pinler 5 V ile çalışır. Her pin maksimum 40 mA çekebilir ya da sağlayabilir ve 20-50 KOhm dahili pull – up dirençleri vardır. Ayrıca bazı pinlerin özel fonksiyonları vardır.
- Serial 0 (RX) ve 1 (TX) :Bu pinler TTL seri data almak (receive – RX) ve yaymak (transmit – TX) içindir.
- Harici kesmeler (2 ve 3) :Bu pinler bir kesmeyi tetiklemek için kullanılabilir.
- PWM: 3, 5, 6, 9, 10, ve 11 :Bu pinler analogWrite () fonksiyonu ile 8-bit PWM sinyali sağlar.
- AREF :Analog girişler için referans voltajıdır. analogReference() fonksiyonu ile kullanılır.
- GND : – Bağlantısının yapılacağı pindir. Toprak veya şase olarak da ismi geçer.
- Reset : Mikrodenetleyiciyi resetlemek içindir.
Arduino kartlarının Uno ile karşılaştırılması
- Arduino Nano kartı, Uno kartı ile aynı özelliklere ve aynı yapıya sahip olup Uno’dan çok daha küçüktür. Bu sayede daha küçük tasarımlı projelerde Uno yerine tercih edilirler. Arduino Uno’dan sonra en ünlü kartlardan biridir.
- Arduino Mega, çalışma prensibi olarak Arduino Uno’ya benzeyen ve ondan sonra en ünlü olan bir diğer karttır. Arduino Mega, Nano’nun tersine Uno’dan çok daha büyük bir yapıya sahiptir. Bununla birlikte çok daha fazla giriş/çıkış pini vardır. Arduino Mega daha büyük tasarımlı ve daha çok elektronik komponentin bulunduğu, daha fazla pine ihtiyaç duyulan projeler için kullanılmaktadır.
- Arduino Pro Mini, Uno’dan farklı olarak fazladan 2 analog girişe sahiptir ve doğrudan USB kablosu üzerinden programlanmamaktadır. Pinleri lehimsiz olarak gelmektedir.
- Arduino Mini kartı , Pro Mini ile neredeyse aynı olup sadece Breadboard üzerinde kablolama imkanı sunmaktadır.
- LilyPad. Arduino’nun giyilebilir teknoloji için özel olarak tasarladığı bir kart, değişik pin tasarımı ve dikilebilir yapısı ile amaca özel olarak tasarlanmış bir Arduino modelidir.
- Arduino DUE kartı diğer kartlardan çok daha farklı olup 32 Bit işlemciye sahip ilk Arduino modelidir. Üzerinde ARM mimarisine sahip 32 Bitlik işlemci vardır. Bu, diğer Arduino kartlarına göre çok daha fazla veri işleyebildiği anlamına gelmektedir. Yapı olarak Arduino Mega ile aynıdır.
- Arduino Leonardo modeli pin yapısı olarak Uno’ya benzemektedir. Uno’dan en büyük farkı üzerinde dahili bir serial dönüştürücü olmamasıdır. Bunun sebebi Leonardo üzerinde bulunan Atmega32u4 işlemcisinin kendi pinleri vardır. Kullanım olarak Uno’dan bir farkı yoktur.
- Arduino Esplora yapı olarak diğer modellerden farklıdır, biraz daha kumandaya benzemektedir. Esplora’nın yapılış amacı Arduino’ya yeni başlayanlara çeşitli sensörlerin kullanımını öğretmektir. Üzerinde çeşitli sensörler, Joystick ve farklı elektronik komponentler bulunmaktadır.
- Arduino YUN, üzerinde dahili olarak hem ethernet hem de WiFi modülü içermektedir. Kartın üzerinde hem bir Atmega mikroişlemci hem de Linux mikroişlemci bulunmaktadır. Host özellikli, Linux işlemciye bağlı ikinci bir USB portu bulunmaktadır. Kartın hafızası harici bellek ile artırılabilmektedir.
Arduino’nun Dezavantajları
Arduino modellerinin büyük bir kısmının “CPU Speed” kısmının 16Mhz gibi yavaş bir hız olduğunu görebilirsiniz (Sadece Arduino DUE 32-bit ARM çekirdek mikro denetleyicisi – Çalışma frekansı 84 MHz ). Arduino’yu yüksek hız gerektiren uygulamalarda istenileni verememektedir. Bu nedenle hız gerektiren uygulamalarda farklı yöntemlere başvurulmaktadır.
Led Bağlantısı İçin Hangi Direnç Seçilmeli
Ledlerin çalışma voltajı ve çektikleri akımlar
Kırmızı LED için yaklaşık 1,8V-15mA
Sarı LED için yaklaşık 2V-15mA
Yeşil LED için yaklaşık 2,2V-15mA
Mavi ve Beyaz LED için ise yaklaşık 3V-30mA’dir.
Kırmızı LED için yaklaşık 1,8V-15mA
Kırmızı led için R= (5v-1.8v) / 0.015A = 3.2/0.015= 213 Ohm çıkar.
Piyasada 213 ohm direç bulamazsınız. Bunun yerine 220 ohm ve 330 ohm gibi yakın değerlerdeki dirençler kullanılır.