Arduino Leonardo
Güncelleme 17/03/2022
Leonardo’yu diğer bir çok arduino modelinden ayıran en büyük özellik; Atmega32u4 üzerinde dahili usb haberleşme özelliğinin olmasıdır. Bu şekilde 16u2 gibi ikinci bir usb-seri dönüştürücü işlemcisine gerek yoktur. Bu sayede sanal com portun (CDC) dışında leonardo bilgisayara mouse, klavye gibi bağlanarak kullanılabilir.
Arduino Leonardo Teknik Özellikler:
- Mikrodenetleyici ATmega32u4
- Çalışma Gerilimi 5V
- Giriş Gerilimi (önerilen) 7-12V
- Giriş Gerilimi (limit) 6-20V
- Dijital I/O Pinleri 20 (7 tanesi PWM çıkışı, 12 tanesi analog giriş)
- Analog Giriş Pinleri 12
- Her I/O için Akım 40 mA
- 3.3V Çıkış için Akım 50 mA
- Flash Hafıza 32 KB (ATmega32u4) 4 KB kadarı bootloader tarafından kullanılmaktadır
- SRAM 2.5 KB (ATmega32u4)
- EEPROM 1 KB (ATmega32u4)
- Saat Hızı 16 MHz
- Uzunluk 68.6 mm
- Genişlik 53.4 mm
- Ağırlık 20 g
Arduino Leonardo gücünü usb üzerinden veya harici güç kaynağından alabilir. Harici güç kaynağı AC-DC adaptör olabileceği gibi bataryada olabilir. Adaptör kart üzerindeki 2.1mm merkez-pozitif güç soketinden bağlanabilir. Batarya kart üzerindeki GND ve Vin pinleri üzerinden bağlanabilir.
Kartın çalışması için sürekli olarak usb’nin bağlı olması şart değildir. Kart sadece adaptör veya batarya ile çalıştırılabilir. Bu sayede kart bilgisayardan bağımsız olarak çalıştırılabilir.
Harici güç kaynağı olarak 6-20V arası kullanılabilir. Ancak bu değerler limit değerleridir. Kart için önerilen harici besleme 7-12V arasıdır. Çünkü kart üzerinde bulunan regülatör 7V altındaki değerlerde stabil çalışmayabilir. 12V üstündeki değerlerde de aşırı ısınabilir.
Leonardo kartının üzerindeki mikrodenetleyicinin çalışma gerilimi 5V’dur. Vin pini veya güç soketi üzerinden verilen 7-12V arası gerilim kart üzerinde bulunan voltaj regülatörü ile 5V’a düşürülerek karta dağılır.
Güç pinleri aşağıdaki gibidir:
- VIN: Harici güç kaynağı kullanılırken 7-12V arası gerilim giriş pini.
- 5V: Bu pin regülatörden çıkan 5V çıkışı verir. Eğer kart sadece usb (5V) üzerinden çalışıyor ise usb üzerinden gelen 5V doğrudan bu pin üzerinden çıkış olarak verilir. Eğer karta güç Vin (7-12V) veya güç soketi (7-12V) üzerinden veriliyorsa regülatörden çıkan 5V doğrudan bu pin üzerinden çıkış olarak verilir.
- 3V3: Kart üzerinde bulunan 3.3V regülatörü çıkış pinidir. Maks. 50mA çıkış verebilir.
- GND: Toprak pinleridir.
Hafıza:
Atmega32u4 32 KB’lık flash belleğe sahiptir (4 KB kadarı bootloader tarafından kullanılmaktadır). 2.5 KB SRAM ve 1 KB EEPROM’u bulunmaktadır.
Giriş ve Çıkış:
Leonardo üzerindeki 20 adet dijital pinin hepsi giriş veya çıkış olarak kullanılabilir. Bu pinlerin tamamının lojik seviyesi 5V’dur. Her pin maks. 40mA giriş ve çıkış akımı ile çalışır. Ek olarak, bazı pinlerin farklı özellikleri bulunmaktadır. Özel pinler aşağıda belirtildiği gibidir.
- Seri Haberleşme, 0 (RX) ve 1 (TX): TTL Seri veri alıp (RX), vermek (TX) için kullanılır. Dikkat edilmesi gereken nokta, Serial sınıfı leonardo üzerindeki USB (CDC) haberleşmesinde kullanılır. Pin 0 ve 1 pinleri üzerindeki seri haberleşme için Serial1 sınıfı kullanılmalıdır.
- Harici Kesme, 3 (interrupt 0), 2 (interrupt 1), 0 (interrupt 2), 1 (interrupt 3), 7 (interrupt 4): Bu pinler yükselen kenar, düşen kenar veya değişiklik kesmesi pinleri olarak kullanılabilir. Ayrıntılı bilgi için attachInterrupt() fonksiyon sayfasını inceleyebilirsiniz.
- PWM, 3,5,6,9,10,11 ve 13: 8-bit çözünürülükte PWM çıkış pinleri olarak kullanılabilir.
- SPI, ICSP Header’i üzerinde: Bu pinler SPI haberleşmesi için kullanılır. Dikkat edilmesi gereken nokta ICSP header’ı üzerindeki SPI pinleri kart üzerindeki başka hiç bir pine bağlı değildir. Yani uno’daki gibi bu pinler 10,11,12 ve 13. pinlere bağlı değildir. Eğer SPI haberleşmesi yapan bir shied kullanacaksanız, bu shield üzerinde 3×2 pinlik ICSP header’ı olması gerekiyor. Yoksa bu shield leonardo ile kullanılamaz.
- LED, 13: Leonardo üzerinden 13. pine bağlı olan dahili bir led bulunmaktadır. Pin HIGH yapıldığında led yanacak, LOW yapıldığında led sönecektir.
- Analog, A0-A5 ve A6-A11(aynı zamanda 4,6,8,9,10 ve 12. dijital pinler): Leonardo 12 tane 10-bit çözünürlüğünde analog giriş pinine sahiptir. Bu pinlerden A0-A5 arasında olanlar uno’da olduğu gibi analog pin kısmındadır. A6-A11 arasındakiler ise dijital pin kısmındadır ve sırasıyla dijital 4,6,8,9,10 ve 12. pinlere bağlıdır. Bu pinler kartın altında belirtilmektedir. Tüm analog pinler dijital giriş ve çıkış içinde kullanılabilir. Pinlerin ölçüm aralığı 0-5V’dur. AREF pini ve analogReference() foksiyonu kullanılarak alt limit yükseltilip, üst limit düşürülebilir.
- I2C, 2 veya SDA pini ve 3 veya SCL pini: Bu pinler I2C haberleşmesi için kullanılır. Bu pinler uno üzerinde A4 ve A5 pinlerine bağlıydı. Leonardo da ise pin 2 ve 3’e bağlıdır.
- AREF: Analog giriş için referans pini.
- Reset: Mikrodenetleyici resetlenmek istendiğinde bu pin LOW yapılır. Reset işlemi kart üzerinde bulunan Reset Butonu ile de yapılabilir.
Arduino leonardo ile Atmega32u4 arasındaki pin haritalaması sayfayını inceleyebilirsiniz.
Haberleşme:
Arduino Leonardo’nun bilgisayarla, başka bir arduino veya mikrodenetleyici ile haberleşmesi için bir kaç farklı seçenek vardır. Atmega32u4, 0 (RX) ve 1 (TX) pinleri üzerinden UART TTL (5V) seri haberleşme imkanı sunar. 32u4 usb üzerinden bilgisayara bağlanarak sanal bir com port açar ve serial (CDC) haberleşme yapmaya imkan sağlar. Arduino bilgisayar programı içerisinde barındırdığı seri monitör ile arduino ile bilgisayar arasında text temelli bilgilerin gönderilip alınmasını sağlar. Leonardo ile bilgisayar arasında usb üzerinden haberleşme olduğu zaman kart üzerinde bulunan RX ve TX ledleri yanacaktır.
Leonardo üzerinde donanımsal olarak bir adet seri port bulunmaktadır. Ancak SoftwareSerial kütüphanesi ile bu sayı yazılımsal olarak arttırılabilir.
Atmega32u4 aynı şekilde I2C ve SPI portlarıda sağlamaktadır. Arduino bilgisayar programı ile gelen Wire kütüphanesi I2C kullanımını, SPI kütüphanesi de SPI haberleşmesini sağlamak için kullanılır.
Leonardo bilgisayara mouse, klavye gibi tanıtılabilir ve Keyboard and Mouse sınıfları ile kullanılabilir.
Programlama:
Arduino Leonardo kartı Arduino bilgisayar programı (Arduino IDE) ile programlanır. Programda Tools > Board sekmesi altında Arduino Leonardo’yu seçip programlamaya başlayabilirsiniz. Ayrıntılı bilgi için referans ve temel fonksiyonlar sayfasını inceleyebilirsiniz. Arduino Leonardo üzerindeki Atmega32u4 üzerine bootloader denilen özel bir yazılım yüklü gelir. Bu sayede kartı programlarken ekstra bir programlayıcı kullanmanıza gerek yoktur.Haberleşme orjinal AVR109 protokolü ile sağlanır.
Bootloader yazılımı bypass edilerek kart doğrudan mikrodenetleyicinin ICSP header’i üzerinden ISP programlayıcı ile programlanabilir (Referans).
Usb Aşırı Akım Koruması:
Arduino Leonardo üzerinden bulunan resetlenebilir sigorta bilgisayarın usb portunu kısa devrelerden veya aşırı akım tüketimi durumlarından korumaktadır. Kart bilgisayar usb portu üzerinden 500mA’den fazla akım çektiğinde kart otomatik olarak usb’den aldığı gücü koruma amacıyla kesmektedir. Fazla akım durumu veya kısa devre ortadan kaldırıldığında sigorta normal konuma döner ve tekrar bağlantı kurulur.
Leonardo’nun klasik Arduino kartlarına göre ne gibi avantajları ve farkları
1. DAHA FAZLA DIJITAL PIN
D14 – MISO – PB3D15 – SCK – PB1D16 – MOSI – PB2D17 – SS – PB0
2. DAHA FAZLA VE DAHA İYI PWM PIN
Leonarda 1 tane fazla PWM pinine sahipmiş gibi görünse de (Leonardo 7, Uno 6 PWM’e sahip) , ATmega32U4 çok güçlü zamanlayıcılara (timer) sahip. Uno’dakile ek olarak timer4 zamanlayıcısı fark yaratmaktadır. 1×8-bit, 2×16-bit ve 1×10-bit yüksek hızlı (64MHz) zamanlayıcı. Toplamda 9 adet bağımsız zamanlayıcılı çıkış pini olan Leonardo’da, bu pinlerden 2 tanesi paylaşımlı olduğu için kalan 7 tanesi PWM olarak kullanılabilir.
- D3: 8-bit timer0
- D5: 16-bit timer1&3
- D6: 10-bit timer4
- D9: 16-bit timer1&3
- D10: 16-bit timer1&3
- D11: 8-bit timer0
- D13: 10-bit timer4
3. DAHA FAZLA ANALOG PIN
Uno gibi ATmegaxx8 tabanlı Arduino’larda dijital olarak kullanılabilen 6 adet analog giriş pini bulunur. Leonardo’da ise 12 adet analog giriş pini var ki dijital olarak ta kullanabilirsiniz 🙂 Arduino Shiled’lerindeki uyumu bozmamak için Leonardo’nun A6-A11 pinleri dijital pinlere bağlanmıştır.
- A6 – D4
- A7 – D6
- A8 – D8
- A9 – D9
- A10 – D10
- A11 – D12
———–
- A0 – D18
- A1 – D19
- A2 – D20
- A3 – D21
- A4 – D22
- A5 – D23
4. SDA/SCL PINLERI
Pin dizilimini bozmamak için SDA ve SDL pinleri aynı yerinde.