Arduino Nano ESP32‘den bahsettiğim yazı dizisinin ikinci bölümünde Arduino’nun ESP32 platformu üzerine kurulu yeni Nano serisi kartına yakından bakmış, tasarım tercihlerinden ve dikkat edilmesi gereken teknik farklardan kısaca bahsetmiştim.
Bu bölümde Arduino Nano ESP32‘nin Arduino IDE’ye kurulumundan ve çekirdeğin bize sağladığı seçeneklere değiniyorum.
Espressif Arduino Çekirdeği
ESP32 serisi mikrokontrolcülerin üreticisi Espressif, bu çip ve modüller için uzun süredir kendi Arduino çekirdeğini geliştiriyor. Zamanla kütüphane desteği de büyüyen ESP32 serisi, çip üzerinde yer alan dahili Wi-Fi ve Bluetooth özellikleri sayesinde IoT meraklılarının tek adresi haline geldi.
Yakın zamanda da üreticinin ESP32-C6 ve ESP32-H2 serisi çiplerini de içeren yeni sürümü 3.x versiyonu yayınlandı.
Arduino’nun Nano ESP32 Çekirdeği
Arduino ekibi ise Nano ESP32’yi hazırlarken Espressif’in o zamanki son versiyonu olan 2.0.13’ü kullanan ve kendi özelleştirmelerini içeren kendi Arduino çekirdeğini yayınladı. Espressif daha sonra kendi çekirdeğine çeşitli güncellemeler getirmesine ve sonrasında da 3.x versiyonunu yayınlamasına rağmen Arduino ekibi 2.x sürümünde kalmayı tercih etti. Yakın zamanda bu çekirdeği yeni 3.x sürümüne yükseltmelerini umuyorum.
Nano ESP32 “Arduino” Çekirdeği Kurulumu
Arduino ekibi Espressif’in 2.x sürümü üzerinden hazırladığı ESP32 çekirdeğini Arduino IDE içine entegre etti. Sağdaki Kart Yöneticisi panelinde ESP32 olarak aratınca “Arduino ESP32 Boards” ismiyle kurulabiliyor.
Nano ESP32 Espressif Arduino Çekirdeği Kurulumu
Espressif’in şu an 3.x sürümüne güncellenmiş kendi Arduino çekirdeğini indirmek için birkaç adıma daha ihtiyacımız var.
Arduino IDE’nin Dosya > Tercihler penceresindeki Ek Kart Yöneticisi URL’leri bölümüne yeni bir satıra aşağıdaki linki yapıştırıp Tamam tıklayarak pencereleri kapattıktan sonra Kart Yöneticisi panelinde “ESP32” olarak arama yaparak çekirdeği yüklemeyi başlatabiliriz.
1 |
https://espressif.github.io/arduino-esp32/package_esp32_index.json |
Arduino’nun ESP32 Çekirdeğinde Nano ESP32 Kurulumu
Arduino Nano ESP32’yi ayarlamak için Arduino IDE’nin Araçlar menüsünden Kart > Arduino ESP32 Boards > Arduino Nano ESP32 seçerek kart seçimini yapabiliyoruz.
Kartımızı seçtikten sonra seri port seçimini yapmamız gerekiyor. Yine Araçlar menüsünden Port bölümündeki Seri portlar bölümünden Nano ESP32’nin COM portunu seçiyoruz. Bu menüde daha önce görmediğimiz dfu portlar seçeneği ile karşılaşıyoruz, ancak o seçenekle hiçbir işimiz bulunmuyor. Doğru seçim Seri portlar bölümü.
Espressif’in ESP32 Çekirdeği’nde Nano ESP32 Kurulumu
Espressif‘in kendi Arduino çekirdeği de Arduino Nano ESP32’yi destekliyor. Araçlar > Kart > esp32 > Arduino Nano ESP32 seçtikten sonra yukarıda anlattığım gibi seri port seçimini de yaptıktan sonra kullanmaya başlayabiliriz. Espressif’in kart listesi fazlaca uzun, Arduino Nano ESP32 en altlarda yer alıyor.
Yazı dizisinin devamında Arduino’nun kendi çekirdeğini kullanarak ilerleyeceğim.
Arduino ESP32 Çekirdeği Seçenekleri
Yazı dizisinin önceki bölümündeki Pin Dizilimi kısmında Arduino Nano ESP32’nin iki farklı pin numaralandırması ile geldiğinden ve bunun sebebinden kısaca bahsetmiştim. Yukarıdaki ekranda bu pin numaralandırmasının nasıl seçileceği gösteriliyor.
Arduino ekibi ESP32’nin kendi GPIO pin yapılandırmasını kullanan ve Arduino’nun pin numaralandırmasını desteklemeyen OneWire, FastLED ve ESP32Servo gibi kütüphanelerin kullanılabilmesi için bir uyumluluk modu hazırlamış. Örneğin Nano ESP32 üzerindeki D8 pini ESP32 modülünün GPIO17 pinine denk geliyor.
Bu seçimi Araçlar > Pin Numbering menüsünden yapıyoruz. Sketch kodumuz üzerinde Nano ESP32 üzerindeki pin numaralarını kullanmak istiyorsak By Arduino pin (default), ESP32’nin GPIO numaralarını kullanmak istiyorsak By GPIO number (legacy) seçmemiz gerekiyor.
Not: Bu pin seçimi seçenekleri Espressif’in Arduino çekirdeğinde Arduino Nano ESP32 seçildiğinde de mevcut.
Arduino Nano ESP32’nin pin dizilimini tekrar hatırlatalım;
Merhaba Dünya!
Arduino Nano ESP32’yi Arduino IDE’ye tanıttığımıza göre ilk eskizimizi yüklemenin zamanı geldi. Aşağıdaki kod Nano ESP32’yi satın aldığımızda içinde gelen eskiz.
Eskiz kart üzerindeki dahili LED’i (LED_BUILTIN) yakıp söndürürken, RGB LED’in renklerini de sırayla yakıp söndürüyor.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
void setup() { pinMode(LED_RED, OUTPUT); pinMode(LED_GREEN, OUTPUT); pinMode(LED_BLUE, OUTPUT); pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); digitalWrite(LED_RED, LOW); // Kırmızı LED yakılıyor digitalWrite(LED_GREEN, HIGH); digitalWrite(LED_BLUE, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); digitalWrite(LED_RED, HIGH); digitalWrite(LED_GREEN, LOW); // Yeşil LED yakılıyor digitalWrite(LED_BLUE, HIGH); delay(1000); digitalWrite(LED_BUILTIN, HIGH); digitalWrite(LED_RED, HIGH); digitalWrite(LED_GREEN, HIGH); digitalWrite(LED_BLUE, LOW); // Mavi LED yakılıyor delay(1000); digitalWrite(LED_BUILTIN, LOW); } |
RGB LED Kullanımı
Önceki bölümde Arduino Nano ESP32 üzerindeki RGB LED’in ortak anotlu olduğundan ve bir rengi yakmak için renk pinine LOW göndermek gerektiğinden bahsetmiştim. Yukarıdaki örnek kodda yakılması istenen LED pininin LOW yapıldığı görülebiliyor.
Varsayılan sketch kodunu kendi zevkime göre yeniden yorumladım, aşağıdan kontrol edip yükleyebilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
int bekle = 500; void setup() { pinMode(LED_RED, OUTPUT); pinMode(LED_GREEN, OUTPUT); pinMode(LED_BLUE, OUTPUT); pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_RED, LOW); // Kırmızı LED yakılıyor digitalWrite(LED_GREEN, HIGH); digitalWrite(LED_BLUE, HIGH); digitalWrite(LED_BUILTIN, LOW); delay(bekle); digitalWrite(LED_BUILTIN, HIGH); digitalWrite(LED_RED, HIGH); delay(bekle); digitalWrite(LED_RED, HIGH); digitalWrite(LED_GREEN, LOW); // Yeşil LED yakılıyor digitalWrite(LED_BLUE, HIGH); digitalWrite(LED_BUILTIN, LOW); delay(bekle); digitalWrite(LED_BUILTIN, HIGH); digitalWrite(LED_GREEN, HIGH); delay(bekle); digitalWrite(LED_RED, HIGH); digitalWrite(LED_GREEN, HIGH); digitalWrite(LED_BLUE, LOW); // Mavi LED yakılıyor digitalWrite(LED_BUILTIN, LOW); delay(bekle); digitalWrite(LED_BUILTIN, HIGH); digitalWrite(LED_BLUE, HIGH); delay(bekle); digitalWrite(LED_RED, LOW); // LED'lerin hepsi digitalWrite(LED_GREEN, LOW); // birden yakılarak digitalWrite(LED_BLUE, LOW); // beyaz renk elde ediliyor digitalWrite(LED_BUILTIN, LOW); delay(bekle); digitalWrite(LED_BUILTIN, HIGH); digitalWrite(LED_RED, HIGH); digitalWrite(LED_GREEN, HIGH); digitalWrite(LED_BLUE, HIGH); delay(bekle); } |
Sıradaki bölümde Arduino Nano ESP32’nin kodlama inceliklerine değineceğim.