Arduino Nano ESP32‘den bahsettiğim bu yazı dizisinin ilk bölümünde Arduino’nun ESP32 platformu üzerine kurulu yeni Nano serisi kartından kısaca bahsetmiştim.
Bu bölümde Arduino Nano ESP32‘ye yakından bakıyor ve kartın inceliklerine değiniyorum.
Nano ESP32’ye Yakın Bakış
Çoğu Nano serisi kartın aksine Nano ESP32 üzerinde çok az bileşen yer alıyor. Bunun sebebi kullanılan ESP32-S3 mikrokontrocüsünün kendi USB bağlantı desteği olması nedeniyle harici USB/UART dönüştürücü çipe gerek duymaması ve pek çok bileşenin tek bir modülde bir araya getirilebilmesi.
Kart üzerinde mikrokontrolcüye ait olan tek bileşen, yazılım kodlarımızın saklandığı FLASH hafıza. Arduino ekibi bu hafıza çipinde mümkün olan en yüksek kapasite olan 16 MB‘ı tercih etmiş. Böylece grafikler içeren devasa projelerde bile kapasite sorunu yaşanmıyor.
Mikrokontrolcü üreticisi Espressif‘in ESP32-S3 için hazırladığı kendi modülleri de var. Bunlardan birini Arduino Uno R4 WiFi üzerinde görebiliyoruz. Ancak bu modüller Nano serisi kartların dar yapısı üzerine sığmıyor. Arduino ekibi bu yüzden u-blox üretimi NORA-W106 modülünü kullanıyor.
Kart üzerinde alışık olduğumuz RESET butonu dışında ek bileşen olarak sadece bir RGB LED yer alıyor. Neyse ki RGB LED var diye tanıdık bildik LED_BUILTIN kullanıcı LED’inden vazgeçilmemiş.
Pin Dizilimi
Arduino Nano ESP32 her ne kadar temel Nano form faktöründe görünse de, yine de klasik Arduino Nano’ya göre bir takım farklılıklara sahip. Bu farklılıklar ESP32 mikrokontrolcüsünden kaynaklanan ihtiyaçlar sebebiyle oluşuyor.
Yukarıdaki pin tablosuna baktığımızda her pin için iki farklı isimlendirme olduğunu görüyoruz. Turuncu/Beyaz renkte olanlar Arduino Nano’dan aşina olduğumuz pin isimleri. Yeşil renkte olanlar ise ESP32 çipinin GPIO temelindeki pin numaraları.
ESP32’nin iki farklı BOOT işlevi için BOOT0 ve BOOT1 pinleri veya butonlarına ihtiyacımız var. Arduino ekibi BOOT1 pini için alt kısımdaki RESET pininden, BOOT0 pini için de yine alt kısımda yer alan AREF pininden feragat etmek zorunda kalmış.
ESP32 altyapısı ve kütüphanelerinin büyük kısmı standart Arduino kütüphanelerinden farklı olarak doğrudan bu GPIO pin numaraları ile çalıştığı için Arduino ekibi bu numaraları da ek olarak belirtmek zorunda kalmış. Kodlarken bu numaraları da kullanabilmemiz için ek bir bölüm hazırlamış, bu özelliğin detaylarına Kodlama bölümünde değineceğim.
3.3 Volt Lojik Seviye
Arduino Nano ESP32 de yeni nesil pek çok mikrokontrolcü kartı gibi 3.3 Volt lojik seviyede çalışıyor. Yani kartın dijital veya analog giriş/çıkış pinlerinin kabul edebileceği azami gerilim seviyesi 3.3 Volt.
Karta 5 Volt lojik seviyede çalışan sensör veya modüller bağlayacaksak lojik seviye dönüştürücü devreler kullanmalıyız. Kartın pinlerine yanlışlıkla 3.3 Volt’tan fazla gerilim vermek bağlanan pinin veya bazen mikrokontrolcünün tamamen bozulmasıyla sonuçlanır.
Nano ESP32’ye Güç Vermek
Günümüzde giderek pek çok modül ve bileşen 5 Volt yerine 3.3 Volt‘ta çalışıyor veya 3.3 Volt’ta da çalışabilecek şekilde üretiliyor. Arduino gibi geliştirme kartı üreticileri de -UNO R4 hariç!- yavaş yavaş 5 Volt’tan uzaklaşıyor.
Arduino ekibi Nano ESP32’de de bu yolu izlemiş. Kartın üzerinde harici besleme sağlamak için VIN girişi yer alıyor, ancak herhangi bir 5 Volt regülatör bulunmuyor. Klasik Nano’dan bildiğimiz 5V çıkışı ise Nano ESP32 üzerinde VUSB‘ye dönüşmüş. Diğer bir deyişle kart USB üzerinden besleniyorsa bu pinden 5 Volt alınabiliyor, ancak VIN üzerinden besleniyorsa bu pin herhangi bir çıkış vermiyor.
Kartı VIN üzerinden besliyorsak projemizdeki 5 Volt’la çalışan bileşenleri beslemek için harici 5 Volt regülatör edinmek zorundayız.
Power, SCK ve RGB LED
Arduino ekibi çoğu kartında tercih ettiği yeşil güç LED‘ini ve sarı renkteki kullanıcı LED‘ini (SCK pinine bağlı olduğu için bu şekilde gösteriliyor) Nano ESP32’de de kullanmış. Bu LED’ler orijinal Arduino’lardan alıştığımız üzere göz almayacak bir parlaklıkta tatlı tatlı yanıyor.
Nano ESP32 üzerindeki RGB LED ise çoğu Nano kartta tercih edildiği gibi ortak anotlu model olarak seçilmiş. Yani RGB LED üzerindeki her bir rengi temsil eden LED’lerin birleştirilmiş anot uçları doğrudan 3.3 Volt güç hattına bağlı. LED’leri yakmak için ise katot uçlarına GND bağlamamız gerekiyor. Diğer bir deyişle bu LED’leri yakmak için ilgili pine LOW göndermek zorundayız.
Arduino ekibi kullanıcı LED’inde kullandığı LED_BUILTIN sabiti ile birlikte RGB LED’in renkleri için de sabitler belirlemiş. Kırmızı LED için LED_RED, yeşil LED için LED_GREEN ve mavi LED için LED_BLUE sabitlerini kullanabiliyoruz.
Sıradaki bölümde Arduino Nano ESP32’nin Arduino IDE’ye nasıl ekleneceğinden bahsedecek ve bileşenlerini kullanabilmek için temel örnek kodlara değineceğim.