Arduino Nano ESP32‘den bahsettiğim yazı dizisinin önceki bölümünde Arduino’nun ESP32 platformu üzerine kurulu yeni Nano serisi kartı ile yaptığım hava durumu / saat projesini paylaşmıştım.
Şimdi biraz daha temellere dönüp Nano ESP32’nin Arduino Bootloader modu ve ROM Boot moduna değineceğim. Son olarak da karta MicroPython yüklemenin farklı yöntemlerinden bahsedeceğim.
Arduino Bootloader Modu
Nano ESP32’nin Arduino Bootloader modu adı verilen bir özelliği bulunuyor. Bu özellik karta yüklenmiş bir eskiz nedeniyle yeni kod yüklemekte zorlanıldığı zaman kartın bir nevi kurtarma moduna alınabilmesini sağlıyor.
Bu özelliğe Nano ESP32’yi bir klavye veya fareye dönüştüren HID eskizlerini kullanırken ihtiyaç olabilir. Bu kodlar USB üzerinden sürekli veri gönderir ve bu nedenle Arduino IDE gerekli yüklemeyi yapmaya zaman bulamaz.
Bu işlem Arduino belgelerinde RESET butonuna çift basmak olarak anlatılsa da, alışıldığımız hızda çift basmak çoğu zaman çalışmıyor. Nano ESP32’yi Arduino Bootloader moduna almak için kart USB’den bilgisayara bağlıyken RESET butonuna basıp çekmek, RGB LED’in yanmaya başladığı anı bekleyip hemen yeniden basmak yeterli oluyor.
RGB LED yeşil renkte yavaşça yanıp sönmeye başladığında kart Arduino Bootloader moduna geçmiş demektir. Bu durumda kart hiçbir eskiz çalıştırmaz ve Arduino IDE’den yeni eskiz yüklenmesini bekler.
Tanıdık bildik Blink örneğini açıp yükleyerek kartı kullanılabilir hale getirebiliriz. İçindeki eskizi silmeden bu moddan çıkmak için RESET butonuna bir kez basmak veya USB bağlantısını kesip yeniden bağlamak yeterli olacaktır.
ROM Boot Modu (Arduino Bootloader’ı Sıfırlama)
Nano ESP32 içindeki Arduino bootloader’ı tamamen sıfırlamak veya güncellemek mümkün. Buna ROM Boot modu adı veriliyor.
Peki neden bootloader’ı sıfırlamak isteriz? Bunun çeşitli sebepleri var. Nano ESP32’nin aklı karışmış ve kendisini başka ESP32 kartlardan biri sanıyor olabilir. Veya karta MicroPython yazılımını yüklemişizdir ve Arduino IDE ile kodlamaya geri dönmek istiyoruzdur.
Bootloader sıfırlamak için elbette en yeni kart çekirdeğine sahip olduğumuzden emin olmalıyız. Bunu da Arduino IDE’nin Kart Yöneticisi bölümündeki güncellemeleri uygulayarak yapabiliriz.
NOT: Bu işlemi Arduino’nun kendi çekirdeği veya Espressif’in Arduino çekirdeği ile yapabiliriz.
Aşağıdaki adımları uygulayın:
- GND ve B1 pinlerini bir kabloyla birleştirin. RGB LED yeşil renge dönecektir.
- GND ve B1 pinleri birleştirilmiş haldeyken kart üzerindeki RESET butonuna bir kez basın. Kart yazılım yükleme moduna geçecektir.
- GND ve B1 pinlerini birleştiren kabloyu çıkarın. RGB LED yanmaya devam edecek, ancak mor renge dönecektir.
- Arduino IDE’yi açın ve örnek bir eskiz seçin. Arduino’nun klasik Blink eskizini kullanabilirsiniz.
- Arduino IDE ana menüsünden Araçlar > Port bölümünden port seçimini yapın. Kart geçmiştekinin aksine Arduino Nano ESP32 yerine başka bir ESP32 kartı olarak görünecektir.
- Yine Arduino IDE ana menüsünden Araçlar > Kart bölümüne gelip Arduino Nano ESP32‘yi geçin.
- Arduino IDE ana menüsündeki Araçlar > Programlayıcı bölümünde Esptool seçili olduğundan emin olun.
- Eskiz > Programlayıcı Kullanarak Yükle seçerek Arduino bootloader’ı yüklemeyi başlatabiliriz. Bu işlem tamamlandığında alt bölümde şu metin görünecek: Leaving… Hard resetting via RTS pin… Seçtiğimiz eskiz Arduino’nun güncel bootloader’ı ile birlikte yüklendi.
- İşlem tamamlandığında kart üzerindeki RESET butonuna basın ve yazılım yükleme modundan çıkın. Yüklediğimiz yeni eskiz çalışmaya başlayacaktır.
Nano ESP32’ye MicroPython Yüklemek
Arduino’nun yeni nesil kartları Arduino IDE’nin yanında MicroPython da destekliyor. Arduino Nano ESP32 de bu kartlardan biri, hatta en iyi destek alanlardan biri olabilir.
Arduino ekibi C++ ile kodladığımız Arduino IDE’nin yanında MicroPython kodlaması için yeni bir IDE geliştirmeye de başladı. Arduino Lab for MicroPython adındaki bu IDE henüz geliştirme aşamasında ancak son sürümü epey kullanılabilir hale gelmiş durumda.
Nano ESP32’ye MicroPython yüklemek için kartı ROM Boot moduna almamız gerekiyor. Bunun nasıl yapılacağından yukarıda bahsettim. MicroPython yüklemek için kartı bu moda almamız şart.
Arduino MicroPython Installer
Arduino ekibi MicroPython’u kolayca yükleyebilmemiz için MicroPython Installer hazırlamış. Bilgisayara yüklenen bu yazılım tek tıkla kurulumu gerçekleştirebiliyor.
İşlem tamamlandıktan sonra programı kapatabilir ve RESET butonuna basarak Nano ESP32’yi MicroPython ile kullanmaya başlayabiliriz.
Arduino Lab for MicroPython
Programı indirip sol taraftaki Connect butonuna bastıktan sonra çıkan ekranda Nano ESP32’nin portunu seçtikten sonra bağlantı otomatik olarak kurulur.
Alt kısımda doğrudan komut gönderebileceğimiz REPL ekranı yer alırken, üstte ise MicroPython kodumuzu yazıyoruz.
MicroPython kodlaması altında kartın üzerinde yazan Arduino pin numaraları desteklenmiyor. Nano ESP32’yi kullanmak için önceki bölümlerde bahsettiğimiz ESP32 GPIO pin numaralarını kullanmamız gerekiyor.
Aşağıda MicroPython ile yazılmış Blink kodunu görüyoruz.
1 2 3 4 5 6 7 8 9 10 |
from machine import Pin import time myLED = Pin(48, Pin.OUT) #GPIO48: D13/LED_BUILTIN while True: myLED.value(0) time.sleep(1) myLED.value(1) time.sleep(1) |
Kodu yazıp Run butonuna tıklarsak kod MicroPython yorumlayıcısında çalışmaya başlar. Kart güç aldığında bu kodu otomatik olarak çalıştırmaz. Bunun için dosyayı boot.py olarak kaydetmeli ve sağdaki File Manager bölümünde sağ tarafta bulup sol tarafa, yani Nano ESP32’nin içine göndermeliyiz.
Yukarıdaki ekranda sol taraf Nano ESP32’nin içindeki dosya yapısını, sağ taraf ise IDE’nin bilgisayarımızda dosyaları kaydettiği klasörü gösteriyor. Tekrar kod ekranına dönmek için ise File Manager butonunun solundaki Editor and REPL butonuna tıklamamız yeterli.
Nano ESP32’yi tekrar Arduino IDE ile kodlamak istersek MicroPython yazılımını karttan kaldırmamız ve Arduino’nun bootloader dosyasını tekrar yüklememiz gerekiyor. Bunu yapmayı ROM Boot modu bölümünde anlatmıştım.
Bu yazı dizisi şimdilik sona ermiş görünüyor, ancak ileride Nano ESP32’nin desteklediği bambaşka özelliklerle eklemeler yapılacaktır. Sağlıcakla kalın, Arduino ile kalın!