Arduino
Üstte Arduino Uno ve Alttaki resimde ise Arduino Nano bulunuyor.
Her iki modelde birbirlerine çok yakın özellikler gösterirler. Yazı kapsamında, Arduino’yu öğrenmek, denemek ve kolay kurgulanabilmesinden dolayı Uno’yu tercih edeceğiz.
Arduino Uno ve Nano Karşılaştırması
Adı | İşlemci | Giriş Voltajı | İşlemci Hızı | Analog Giriş/Çıkış | Dijital Giriş/Çıkış PWM | EEPROM (KB) | SRAM (KB) | Flash (KB) | UART |
Uno | Atmega 328P | 5-12V | 16MHz | 6/0 | 14/6 | 1 | 2 | 32 | 1 |
Nano | Atmega 328P | 5-9V | 16MHz | 8/0 | 14/6 | 1 | 2 | 32 | 1 |
Mega | Atmega 2560 | 5-12V | 16MHz | 16/0 | 54/15 | 4 | 8 | 256 | 4 |
Diğer Arduino modellerinin yanında Mega, çok güçlü ve farklı özellikleri ile ön plana çıkıyor.
Tablodaki Özellikler
İşlemci
Belirtilen tüm özelliklerin ve derlenen kodların çalışmasını sağlayan merkezi birimdir. Modellerdeki ihtiyaçlara göre değişiklik gösterebilir. Bizim kullanacağımız her iki modelde de Atmega 328P serisi kullanılmaktadır.
Giriş Voltajı
Arduino’nun çalışması ve pinlerinden destek verebilmesi için uygulanması gereken gerilim miktarıdır. 5 Voltluk bir gerilimle çalışmaya başlayabilir. Önerilen 7-12 Volt aralığıdır.
İşlemci Hızı
Yukarıda tanımlanan işlemcinin çalışma hızıdır. Genellikle modellerde 16MHz’lik işlemciler bulunuyor. Bu değer yaklaşık olarak saniyenin 15 milyonda biri zaman aralığında işlem yapabileceğini belirtir. Kod yazarken genelde micro veya milisaniyeler belirtilir.
Analog Giriş/Çıkış
Dışarıdan uygulanan girişlerin değerlerinin okunabildiği pinlerdir. Analog olarak değer okur ve bize sayısal bir değer olan 0-1023 (10 bit’lik bir değer) arasında değerler döner. Akü, güneş paneli ve sensör üzerindeki değerler bu pinler aracılığı ile elde edilecektir. Uno’da 6 (A0 – A5 olarak belirtilen pinler) adet, Nano’da ise 8 (A0 – A7) adet Analog giriş bulunmaktadır. Bu pinlerden çıkış alınamamaktadır.
Dijital Giriş/Çıkış
Hem giriş hem de çıkış olarak kullanılabilen pinlerdir. Dijital olarak çıkış vermesi demek o pinin 0 veya 5 Volt olması anlamındadır. Yani pin dijital çıkış olarak ayarlandıysa ve aktif olması istendiyse o pin üzerinden +5 Volt’luk bir değer alabiliriz. Bu da bize bir LED’i yakabilmek için gerekli gücün sağlanabilmesi demektir. Ayrıca her pin üzerinden 40mA’lik bir akım sağlayabilmektedir. Eğer pin pasif olarak ayarlandı ise bu defa voltaj vermeyecek yani 0 Volt olarak ölçülecektir. Aynı zamanda bu pinler giriş olarak’ta ayarlanabilmektedir. Eğer dijital giriş olarak ayarlandı ise artık bu pine dışarıdan en fazla +5 Volt olacak şekilde gerilim verilmesi gerekecektir. Örnek olarak butona basıldığında LED’in yanması bu düzenekle sağlanabilir.
PWM
Dijital pinler aynı zamanda PWM pinlerini de barındırırlar. PWM (pulse width modulation) gerilim darbesinin belirli aralıklarla düzenli olarak gönderilebileceğini ifade eder. Hem Uno hem de Nano üzerinde 6 adet PWM pini bulunur. Bu pinler ihtiyaca göre dijital veya PWM olarak kullanılabilirler.
PWM’i kısaca açıklamak gerekirse dijital pinin 0-5 Volt aralığından çıkıp istenilen voltajı vermek amacı ile kullanılır. Örneğin LED’in parlaklığını değiştirmek için bu PWM pinlerinden biri kullanılabilir. PWM aralığı dijital pin üzerinde 0-255 değerleri arasındadır. 0 pinin pasif olması durumudur. Bundan büyük değerler ise vereceği farklı voltaj değerleridir. Kaba bir örnek verecek olursak; değeri 0 yaptığımızda motor dururken 100 yaptığımızda motorun 100km/sa ile döndüğünü 255 yaptığında ise 255km/sa hızla döndüğünü düşünülebilir. Tabi bu örnek bir var sayım, 0-255 aralığı doğrudan hızın net değeri değildir.
EEPROM
Arduino üzerinde verilerin sistemin gücü (elektiriği) kesilse dahi verilerin saklandığı depolama alanıdır. Uno ve Nano’da toplam 1KB ile sınırlıdır. Sistemin normal işleyişinde bu kısma herhangi bir veri yazılmaz. Bu depolama alanını kullanabilmek için Arduino üzerinde özel kodlarla belirtmemiz gerekiyor.
SRAM
Arduino çalışmaya başladığında dataların üzerinde tutulduğu alandır. Tüm değişkenler ve çalışması gereken kodlar bu alan üzerinde işlenir. Modülün gücü kesildiğinde üzerindeki tüm veriler kaybolur. Toplam kapasitesi 2KB’tır.
Flash
Toplam kapasitesi en büyük olan depolama alanıdır. Toplam kapasitesi 32KB’tır. 2KB’lık kısmı modülün açılışı sırasında işletim sistemi tarafından kullanılır. Yazdığımız bütün kod bu kısımda saklanır. Yazabileceğimiz bütün kod bu 30KB’lık alan ile kısıtlıdır. Eğer ihtiyaçlarımızı karşılamıyorsa Arduino Mega gibi farklı modülleri değerlendirmemiz gerekir. Eğer kodlarımız arasında hiç değişmeyecek değişkenler var ise Flash üzerine kaydederek SRAM kısmını rahatlatabiliriz. Bunun haricinde özel olarak belirtilmedikçe hiçbir değişken bu kısma kaydedilmez.
UART
Seri port iletişimini sağlayan kısımdır. Uno ve Nano üzerindeki 0 ve 1 dijital pinleri gerektiğinde bu amaç için kullanılabilir.
Arduino Üzerindeki Pinler
- Arduino üzerinde bir proje için her türlü ihtiyaca cevap verecek pinler bulunur.
- Her pin grubunun kendi içerisinde farklı görevleri vardır. Daha önce bahsedilen Analog ve Dijital pin grubu gibi.
- Aynı grubun içinde de pinler farklı özellikler gösterebilir. Örneğin dijital pinlerin içindeki PWM özelliği olan pinler gibi.
- Board yapısı daha geniş olduğundan ve pinler daha anlaşılır şekilde yerleştirildiğinden tüm tanımlar Uno üzerinde yapılacaktır.
- Projeye başlamadan önce ihtiyaç duyulan pinler belirlenip; uygun olan Arduino ürünü seçilmelidir.
Analog Giriş
- Uno üzerinde 6 adet Nano üzerinde ise 8 adet bulunmaktadır.
- Sadece giriş olarak kullanılan pinlerdir.
- Sensörlerden gelen değerleri okuyarak 0-1023 değerleri arasında sayısal sonuç verirler.
- En fazla 5 Voltluk gerilime dayanabilirler. Bu yüzden sensörden gelecek voltaj 5 Voltu geçmemelidir.
- Nem ölçümü, voltaj ölçümü gibi değerler bu pinler yardımı ile sağlanabilir.
- analogRead() fonksiyonu ile üzerindeki değeri okuyabiliriz. Bu fonksiyon kodlara geçildiğinde anlatılacaktır.
Dijital Giriş/Çıkış
- Hem Uno hem de Nano üzerinde 14 adet bulunur.
- Bu pinleri 6 tanesi PWM olarak kullanılabilir. Bu pinler ~ simgesi ile belirtilmiştir.
- Ayrıca 0 ve 1 pinleri seri iletişim için ayrılmıştır. Seri iletişim için kullanıldığında bu pinleri dijital olarak kullanamayız. Serial.begin() fonksiyonu ile seri iletişim için kullanılır.
- Kullanacağımız pini kod aşamasında Giriş mi yoksa Çıkış olarak mı kullanacağımızı belirtmemiz gerekiyor. Yine kodlar ile aktif veya pasif duruma getirebiliriz.
- Aktif ise 5 Volt çıkış verirken pasif durumda 0 Volt verir.
- Örneğin buton uygulamaları için bu pinler giriş olarak ayarlanmalıdır.
Güç (Power)
Vin: Arduino’nun dışardan beslenmesi için kullanılan giriştir. USB veya Jak kullanılmadığı zaman bu pin ile Arduino’ya güç sağlanır. Devreye yerleştirilmiş bir sistemde bu pin daha kullanışlıdır. 5-12 Volt arasında beslenebilir.
GND: Toprak pinidir. Beslemenin eksi kutbu olarak düşünülebilir.
5V: 5 Volt çıkış almak için kullanılır.
3.3V: 3.3 Volt çıkış almak için kullanılır. Bu pinler Arduino üzerinden akım çektiği için tüm bileşenleri buradan beslemek çok mantıklı değildir.
RESET: Modülün resetlenmesini sağlar. Modül üzerindeki reset butonunu devre dışına almak istersek bu pini kullanabiliriz.
IOREF: Dijital portlar için referans voltaj değeridir. Dijital portların o an da verdiği gerçek çıkış değeridir.
Haberleşme
I2C
SDA: Arduino’nun diğer sensör veya modüllerle veri aktarımını sağlayan pindir. SDA (Serial Data Line), I2C protokolünü kulanır.
SCL: Serial Clock, veri aktarımı sırasındaki eşlemeyi (uyumluluk) sağlar. SDA ile birlikte kullanılır. Nano üzerinde bu pinler olmadığından Analog pinler olan A4 (SDA) ve A5(SCL) kullanılır.
AREF: Haberleşme pin grubunun içinde yer almaz ama aynı bölgede bulunduğundan bu kısımda anlatılmıştır. Analog pinlerin referans değerini gösterir. Örneğin pil ile Arduino’yu besliyorsak; pil zayıfladıkça bu pinler üzerindeki voltajda düşmeye başlayacaktır. Aynı hassasiyetle ölçüme devam edebilmek için bu değeri sabitlemek gerekir. Bu da o pine +5 Volt uygulanarak gerçekleştirilebilir.
GND: Toprak pinidir. Diğer GND’ler ile ortaktır.
ICSP
- Arduino’nun diğer modüller (Ekran, SD Kart okuyucu vb.) ile iletişimini sağlayan pinleridir.
- Gerektiğinde burada ki GND ve VCC pinlerinden besleme alınabilir.
- Yukarıdaki şekilde pin detayları verilmiştir.
Bu yazının devamı olan kodlamaya giriş için Arduino Kodlamaya Giriş yazısına bu link üzerinden erişebilirsiniz.