ESP32 Nedir ?

Merhaba,

Bu konuda ESP32′ nin ne olduğunu sizlere tanıtacağız.

ESP32, üretici firması olan ESPRESSIF’ in sayfasında da yazdığı üzere çok çeşitli uygulamalar için entegre Wi-Fi ve Bluetooth bağlantısına sahip, zengin özelliklere sahip bir mikrodenetleyicidir.

 

ESP32 üzerindeki Wi-Fi ile Bluetooth sayesinde bir çok IOT uygulaması için kullanışlı bir yapıya sahiptir. ESP8266′ da olduğu gibi hazır çip üzerinde modüler yapıya sahip ESP32 modülleri sayesinde kendi PCB kartı tasarımınızı yapmanız da oldukça kolaylaşmaktadır. Ayrıca uyku modunda sahip olduğu düşük güç tüketimi özelliği sayesinde, düşük güç tüketimli uygulamalar için de kullanıma uygundur.

ESP32 WROOM ve WROVER çeşitleri, isimleri “Core 0” ve “Core 1” olmak üzere iki adet çekirdeğe sahiptir. Hangi çekirdeğin hangi işi yapacağını basit bir kaç işlem ile belirlemeniz mümkün. Bu “multi threading” kavramı ile benzer gibi olsa da aslında iki işlemin de aynı anda gerçekleşebilmesi özelliği ile daha faydalı bir durumdur. Bir örnek olması açısından ESP32 ile oluşturacağınız bir Web Server ve Step Motor sürme işlemleri aynı anda kesintisiz gerçekleştirilebilir. Eğer bir seçim yapmadan doğrudan Arduino IDE’ si ile kullanım yaparsanız, ESP32 işlemleri “Core 1” üzerinde gerçekleştirir. Çekirdek seçim işlemine bu konuda değinmeyeceğim detay için internetten bakabilirsiniz.

ESP32 80 ile 240 Mhz arasında ayarlanabilir saat hızına sahiptir. Bu ayarlama işlemi Arduino IDE’ si üzerinde yazılım yüklenirken yapılabilir. Seçim işlemini ihtiyacınıza göre yapabilirsiniz. Yüksek performans isteyen uygulamalarda 240Mhz seçebilir, ama daha az güç tüketilmesi istenilen uygulamalarda 80Mhz seçilebilir. Ayrıca sahip olduğu dahili hafıza da kimi modellerde 16Mb’ e kadar çıkabilmekte ki bu da büyük yazılımlarda çok kullanışlı olmaktadır.

GPIO

Şimdi ESP32′ nin GPIO’ larına bir bakalım. Arduino ile ESP32 kullanımı hakkındaki bir çok konu için bağlantıdaki siteyi öneririm. İçerik olarak dolu ve resimler ile destekli anlatıldığından benin düşünceme göre kullanışlı bir sayfa. Bu konu içerisindeki içeriklerde de o siteden alıntılar bulunmaktadır. ESP32 modülünün pin referansı ile başlayalım.

Resimde görüldüğü üzere ESP32 üzerinde bir çok pin bulunmakta. Ancak bu pinlerin hepsini GPIO olarak doğrudan kullanmak çok mümkün değil. Özellikle GPIO9 ile GPIO11 arasındaki pinleri herhangi bir işlem için kullanmak kesinlikle önerilmemektedir. Çünkü bu pinler ESP32′ nin flash hafızasına bağlılar. Ayrıca GPIO34 ile GPIO39 arası pinleri sadece giriş olarak kullanabiliyor. Çıkış olarak kullanmak maalesef ki mümkün değil. Buna ek olarak bazı pinlerin de başlangıçtaki davranışları farklı. Örneğin GPIO12 pinini ESP32′ ye güç verirken HIGH konumunda tutmak ESP32′ nin çalışmasına engel olmakta. Bunlar ESP32′ nin yapısından kaynaklı özellikler olduğu için değiştirebilmek mümkün değil. Bu sebeple tasarlayacağınız sistemlerde bağlantıdaki sayfada bulunan GPIO tablosunu incelemek meydana gelebilecek hataları en aza indirmek açısından önemlidir.

ÇEVRE BİRİMLERİ

Arduino’ alışık olduğumuz ADC, SPI, I2C yada DAC gibi donanımlarda ESP32 üzerinde mevcut. Ancak bunlara ek olarak ESP32 üzerinde dahili kapasitif özellikte “Touch” pinleri ve “Hall Efect” sensörü bulunmakta. Hall efect sensörü manyetik alanda meydana gelen değişimleri ölçebilirken Touch pinleri ise kablo aracılığı ile bağladığınız metal yüzeyin dokunmatik bir sensöre dönüşmesini sağlamaktadır. Yani pinden okuduğunuz değer metal yüzeye dokunduğunuzda farklı dokunmadığınızda farklı değerler algılamasını sağlamaktadır.

ESP32′ de kullanılan ADC ve PWM, Arduino’ da kullanıma göre biraz daha fazla detay içeriyor. ADC’ yi ek ayar yapmadan basitçe kullanmak mümkünken, PWM kullanmak için ek ayarlamalar yapılması gerekli. Çünkü PWM kullanırken, frekans, kanal ve kanalın kullanılacağı pin manuel olarak ayarlanmalı. Aslında bu dezavantaj gibi gözükse de ESP32 üzerindeki bütün pinlere bu sayede PWM özelliği verilebilmektedir. ESP32′ de kullanılan ADC 12 bit’ e kadar kullanılabilir.

PWM’ de olduğu gibi I2C haberleşmesi için de ESP32 üzerindeki bütün pinler kullanılabilir. Ancak Arduino IDE’ sini kullanırken GPIO21 ve GPIO22 default I2C pinleri olarak ayarlanmış. Değişmek isterseniz “Wire.begin()” fonksiyonuna kullanmak istediğiniz pinleri parametre olarak vermeniz yeterlidir. Tabi kullanacağınız pinin ESP32 GPIO tablosunda verilen kısıtlamalardan herhangi birine sahip olmaması gerekir. Yani GPIO36 sadece giriş olduğu için I2C olarak kullanmanız soruna sebep olabilir.

Bunlara ek olarak ESP32 de 4 adet SPI ve 1 adet 2 kanallı DAC vardır. SPI’ ların sadece 2 tanesi kullanıma açıktır. Bunlarda VSPI ve HSPI olarak isimlendirilirler. Aralarında herhangi bir fark göremedim. Sadece isimlendirme olarak farklı isimlendirilmişler. Diğer SPI’ lar flash hafıza için kullanılır.

Benim düşüncem ile ESP32′ deki en büyük dezavantaj, Wi-Fi aktif edildiğinde ESP32 üzerindeki bazı donanımlar kullanılamaz duruma gelmekte. Bunlardan en çok bilineni Wi-Fi aktif iken ADC2′ yi kullanmak mümkün olmuyor. İkinci en büyük dejavantaj ise bir çok ESP32 modülünün breadboard ile uyumlu olmaması. Bu sebeple biraz kullanım zorluğu çıkarmakta. Ayrıca ESP32 kullanırken pinlerin en fazla 40mA akım verebileceğini unutmayın.

BİZİ TAKİP EDİN

Güncel haberlerimiz için sosyal medya hesaplarımızdan bizi takip edin.