ESP32 Kapasitif Dokunmatik Sensör Pinleri

ESP32 Kapasitif Dokunmatik Sensör Pinleri esp32 kapasitif dokunmatik sensör,kapasitif dokunmatik,kapasitif dokunmatik sensör

ESP32 kapasitif dokunmatik sensör pinleri (capacitive touch pins); harici bir dokunmatik sürücü çipine ihtiyaç duymadan, doğrudan insan vücudunun taşıdığı kapasitans değişimlerini yüksek hassasiyetle algılayabilen yerleşik bir donanımdır.

Nesnelerin İnterneti (IoT) ve akıllı ev otomasyon projelerinde fiziksel butonlar yerine dokunmatik yüzeylerin tercih edilmesi, hem estetik açıdan şık bir görünüm sunar hem de mekanik aşınmaları tamamen ortadan kaldırır.

Bu pinler, basit dokunmatik arayüzlerin (butonların) yerini alabileceği gibi, güç tüketiminin kritik olduğu pilli projelerde ESP32’yi derin uykudan (deep sleep) uyandırmak için de mükemmel birer kesme (interrupt) tetikleyicisidir. Bu rehberimizde, kapasitif dokunma algılamasının arkasındaki şarj/deşarj fiziğini, PCB üzerindeki donanımsal tasarım kurallarını, gürültü filtreleme tekniklerini ve derin uyku entegrasyonunu en ince mühendislik ayrıntılarıyla ele alacağız.

ESP32 Kapasitif Dokunmatik Sensör Örnek Devre Görseli

Yazılım tarafında dokunmatik değerleri okumak için, okumak istediğiniz GPIO numarasını parametre olarak alan dahili `touchRead(GPIO)` fonksiyonu kullanılır. Bu fonksiyon, anlık dokunma seviyesini sayısal bir değer olarak döner.

Yazı İçeriği

ESP32 Kapasitif Dokunmatik Sensör Fiziksel Çalışma Prensibi

ESP32’nin içinde yer alan kapasitif dokunmatik algılama donanımı, bir anahtarlamalı kondansatör (switched-capacitor) şarj/deşarj devresine dayanır. Sistem, ilgili GPIO pinine bağlı olan dokunma pedinin sığasını (kapasitansını) sabit bir dahili akım kaynağı ile sürekli olarak belirli bir voltaj sınırına kadar şarj ve deşarj eder. Bu şarj/deşarj çevriminin frekansı, pindeki toplam sığa ile belirlenir.

İletken bir plaka (bakır ped) havada dururken kendi üzerinde çok küçük bir boşta kalma sığasına (C_{pad}) sahiptir. İletken yapıda olan insan parmağı pede yaklaştığında veya dokunduğunda, parmak ile toprak (şase) arasında oluşan parazitik sığa (C_p) devreye girer. Bu durum pindeki toplam sığayı üst üste binerek artırır:

    \[C_{toplam} = C_{pad} + C_p\]

Elektriğin temel sığa-akım denklemi I = C \frac{dV}{dt}‘dir. Sabit şarj akımı (I) altında, sığa (C_{toplam}) arttığı için pindeki gerilimin yükselme süresi (dt) uzar. ESP32, belirli bir zaman penceresi (ölçüm penceresi) boyunca kaç adet şarj/deşarj çevrimi gerçekleştiğini dahili bir sayaç ile sayar. Pilde sığa arttığında (parmak dokunduğunda) şarj süresi uzayacağı için, ölçüm penceresi içine sığan çevrim sayısı (okunan ham sayısal değer) keskin bir şekilde düşer.

Örneğin, boşta duran bir dokunmatik pinden okunan değer tipik olarak 70 - 80 seviyelerindeyken, parmak dokunduğu anda bu değer sığa artışından dolayı 10 - 20 seviyelerine geriler. Yazılımda bu düşüşü bir eşik değer (threshold) ile takip ederek dokunma durumunu algılarız.

ESP32 Kapasitif Dokunmatik GPIO Pin Haritası

ESP32 SoC üzerinde 10 adet bağımsız kapasitif dokunmatik giriş kanalı yer alır. Geliştirme kartınızın pin yapısına göre bu pembe renkli dokunmatik kanalları kolayca bulabilirsiniz:

ESP32 Geliştirme Kartı Üzerindeki Kapasitif Dokunmatik Pinlerin Konum Haritası

ESP32 entegresinin tüm donanımsal pin kısıtlamalarını ve genel amaçlı giriş/çıkış sınırlarını incelemek isterseniz ESP32 Pin Referansı Kılavuzumuzu inceleyebilirsiniz.

Dahili dokunmatik sensörlerin fiziksel GPIO karşılıkları aşağıdaki gibidir:

  • T0: GPIO 4
  • T1: GPIO 0 (Strapping pini – boot kısıtlamalarına dikkat edilmelidir)
  • T2: GPIO 2 (Dahili mavi LED’e bağlıdır)
  • T3: GPIO 15 (Strapping pini)
  • T4: GPIO 13
  • T5: GPIO 12 (Kritik strapping pini – boot anında HIGH olmamalıdır)
  • T6: GPIO 14
  • T7: GPIO 27
  • T8: GPIO 33
  • T9: GPIO 32

Yazılımsal Pin Yer Değiştirme Sorunu (T8 / T9): Bazı eski Arduino Core kütüphane sürümlerinde, GPIO 32 ve GPIO 33 için dokunmatik kanal tanımlamalarında küçük bir yazılım hatası mevcuttur. Eğer yazılımınızda GPIO 32’yi okumak istediğinizde yanıt alamıyorsanız kodunuzda T8 yerine T9 (veya tam tersi) olarak çağırarak bu yazılımsal eşleme hatasını kolayca bypass edebilirsiniz.

Dahili Dokunma Sensörlerini Okuma ve Grafik Analizi

Arduino IDE kullanarak ESP32 programlamaya başlamadan önce, gerekli tüm araç zinciri kurulumlarını eksiksiz tamamladığınızdan emin olmak için Arduino IDE’ye ESP32 Desteği Kurmak rehberimizi inceleyebilirsiniz.

Aşağıdaki basit kod bloğu, GPIO 4 (T0) kanalından kapasitif dokunma verisini okuyarak seri port üzerinden bilgisayara aktarır:

void setup() {
  Serial.begin(115200);
  delay(1000); 
  Serial.println("ESP32 Dokunma Testi Baslatildi");
}

void loop() {
  // GPIO 4 (T0) pinindeki dokunmatik degeri oku ve yazdir
  Serial.println(touchRead(4)); 
  delay(200);
}

Kod yükleme işlemini tamamladıktan sonra, GPIO 4 pinine basit bir erkek jumper kablo bağlayın. Kablonun açıkta kalan metal ucuna parmağınızla dokunduğunuzda, okunan değerlerin aniden düştüğünü göreceksiniz:

Seri Port Ekranında Dokunma Algılandığında Düşen Değerler Grafiği
Dokunma Gerçekleştiğinde Okunan Değerin Hızla Düşmesi

Değerlerdeki bu dinamik değişimi görsel olarak izlemek için Arduino IDE menüsünden Araçlar > Seri Çizici (Tools > Serial Plotter) ekranını açabilirsiniz.

Uygulama Projesi: Dokunma Kontrollü LED Yakan Devre

Bu uygulamamızda, bir kablo ucuna sarılmış küçük bir parça alüminyum folyoyu kapasitif dokunma pedi olarak kullanacağız. Parmağımızı bu iletken pede yaklaştırdığımızda, ESP32 bunu algılayarak GPIO 16’ya bağlı olan LED’i yakacaktır.

Gerekli Malzemeler

  • ESP32 Geliştirme Kartı
  • 5\text{mm} LED ve 330\text{ }\Omega akım sınırlama direnci
  • Breadboard ve bağlantı kabloları
  • Küçük bir parça alüminyum folyo (dokunma pedi olarak)
Kablo Ucuna Sarılmış Alüminyum Folyo Dokunmatik Ped Tasarımı

Alüminyum folyo pedine dokunduğumuzda sığa artışı çok daha yüksek olacağı için okunan değerler tek başına kabloya dokunmaya kıyasla çok daha keskin bir düşüş gösterir:

Alüminyum Folyo Pede Dokunulduğunda Seri Çizicideki Sinyal Düşüş Grafiği

Bizim yaptığımız testlerde, pede dokunulmadığında değer 70 seviyesindeyken, dokunulduğu anda hızla 10’un altına inmektedir. Bu durumda kararlı bir çalışma için eşik değerini (threshold) 20 olarak seçmek mükemmel bir mühendislik tercihidir.

Devre Şeması

Alüminyum Dokunma Pedi ve LED Bağlantılı ESP32 Şematik Diyagramı

Arduino Proje Kodu

const int touchPin = 4;   // Dokunmatik girişi T0 (GPIO 4)
const int ledPin = 16;    // LED baglantisi GPIO 16

const int esikDeger = 20; // Kalibre edilmis esik degeri
int okunanDeger;

void setup(){
  Serial.begin(115200);
  delay(1000);
  pinMode(ledPin, OUTPUT);
}

void loop(){
  okunanDeger = touchRead(touchPin);
  Serial.print("Dokunma Degeri: ");
  Serial.print(okunanDeger);

  // Eger okunan deger esigin altina düstüyse dokunma algilanmistir
  if(okunanDeger < esikDeger){
    digitalWrite(ledPin, HIGH);
    Serial.println(" - LED ACIK (Dokunuldu)");
  }
  else{
    digitalWrite(ledPin, LOW);
    Serial.println(" - LED KAPALI");
  }
  delay(100); // Kararlilik icin ufak gecikme
}
Dokunma Pedi ile Başarıyla Çalıştırılan LED Flaşör Devresi

PCB Tasarımı ve Donanımsal Kararlılık Kuralları

  • Optimum Dokunma Pedi Boyutu: PCB üzerindeki bakır dokunma pedinin boyutu en az 10\text{mm} \times 10\text{mm}, en fazla 15\text{mm} \times 15\text{mm} olmalıdır. Çok küçük pedler parazitik sığayı yeterince değiştiremezken, çok büyük pedler aşırı harici gürültü toplar.
  • Şase (GND) Koruması ve Mesafesi: Dokunma pedinin ve pedden ESP32 pinine giden sinyal yolunun hemen yanına veya altına toprak düzlemi (ground plane) yerleştirilmemelidir. Yakın mesafedeki şase hatları, boşta kalma sığasını (C_{pad}) aşırı artırarak parmağın yaratacağı bağıl sığa değişim oranını (\Delta C / C) düşürür ve hassasiyeti ciddi ölçüde azaltır. Sinyal yolları ile şase hattı arasında en az 1.5 - 2\text{mm} boşluk bırakılmalıdır.
  • ESD (Elektrostatik Deşarj) Koruması: İnsan parmağında biriken statik elektrik, pede dokunulduğu anda ESP32’nin hassas kapı oksit tabakasına zarar verebilir. Bunu önlemek için dokunma pedi ile ESP32 pini arasına seri olarak 1\text{ k}\Omega - 2\text{ k}\Omega değerinde bir koruma direnci bağlanması elzemdir.

Kapasitif Dokunmatik Sinyali ile Derin Uyku Wakeup Ayarları

Kapasitif dokunma pinleri, ESP32 derin uyku modundayken Ultra Düşük Güç (ULP) ortak işlemcisi tarafından sürekli izlenebilir. Bu sayede, butona basmaya gerek kalmadan sadece dokunmatik yüzeye dokunarak sistem uyandırılabilir. Yazılım tarafında derin uyku uyanma kaynağını aktif etmek için aşağıdaki API fonksiyonları kullanılır:

// Dokunmatik pin üzerinden uyanmayi aktif et
esp_sleep_enable_touchpad_wakeup();

// Uyanma esigini tanimla
touchAttachInterrupt(T0, callbackFonksiyonu, esikDeger);

Bu sayede ESP32 derin uykudayken sadece birkaç mikro-amper (\mu\text{A}) akım çeker ve parmak dokunduğu anda anında uyanarak normal çalışma moduna döner.

Özetlemek gerekirse; ESP32’nin dahili kapasitif dokunmatik sensör birimi, ek donanım maliyeti olmadan şık, modern ve kararlı kullanıcı arayüzleri oluşturmanızı sağlar. Şarj/deşarj fiziğine uygun eşik kalibrasyonları ve parazitleri engelleyen PCB tasarım pratikleri ile endüstriyel kalitede dokunmatik sistemler tasarlayabilirsiniz.

ESP32 Veri sayfasına buradan ulaşabilirsiniz.

Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.