| 3 dk okuma | 23 okunma

Bölüm 5: Çevresel Verileri Okumak: Sensörler ve Analog İşlemler

ESP32'nin dış dünyayı nasıl algıladığını keşfediyoruz! Bu bölümde dijital ve analog sinyallerin farkını öğrenecek, ESP32'nin üstün ADC (Analog-Dijital Çevirici) özelliklerini kullanarak bir ışık sensöründen (LDR) ortamın aydınlık seviyesini okuyacağız. Artık projelerimiz çevreye tepki verebilecek!

Bölüm 5: Çevresel Verileri Okumak: Sensörler ve Analog İşlemler

Önceki bölümlerde ESP32'ye hep biz komut verdik; bir LED'i yaktık veya web sunucusu üzerinden emirler gönderdik. Bunlar "Çıkış" (Output) işlemleriydi. Şimdi işin rengini değiştiriyoruz ve ESP32'yi bir dinleyici konumuna, yani "Giriş" (Input) moduna alıyoruz.

Bir akıllı ev veya sera projesi yapacaksanız cihazınızın ortamdaki sıcaklığı, nemi, gaz seviyesini veya ışığı bilmesi gerekir. Sensörler tam olarak bu işe yarar.

Dijital ve Analog Arasındaki Fark Nedir?

Sensörleri okumadan önce bu iki kavramı çok iyi anlamalıyız:

  • Dijital Sinyal: Sadece iki durumu vardır. Ya "VAR" (1) ya da "YOK" (0). Örneğin bir buton dijitaldir; ya basılıdır ya da değildir. Düğmesine bastığınız bir lamba ya açıktır ya kapalı.
  • Analog Sinyal: Hayatın kendisidir. Sonsuz ara değere sahiptir. Örneğin havanın sıcaklığı birdenbire 20 dereceden 21 dereceye atlamaz; 20.1, 20.2 diye usulca artar. Gündüzden geceye geçiş anında havanın yavaş yavaş kararması analog bir süreçtir.

ESP32'nin Süper Gücü: 12-Bit ADC

ESP32, analog dünyadaki bu hassas değişimleri anlayabilmek için ADC (Analog-to-Digital Converter - Analog/Dijital Çevirici) pinlerine sahiptir.

Arduino Uno kullananlar bilir, Arduino analog pinlerden okuduğu değeri 0 ile 1023 arasında bir sayıya çevirir (10-bit). "Kaslı abimiz" ESP32 ise çok daha hassastır! Gelen voltajı 0 ile 4095 arasında tam 4096 farklı adıma böler (12-bit). Bu da okuduğunuz sensör verisinin çok daha net ve detaylı olması demektir.

Önemli Uyarı: Standart Arduino 5V ile çalışırken, ESP32 3.3V ile çalışır. ESP32'nin pinlerine asla 5V vermemelisiniz, aksi takdirde çipi yakabilirsiniz!

Proje: LDR (Işık Sensörü) ile Ortam Işığını Ölçmek

Bu projemizde elektroniğin en popüler ve ucuz sensörlerinden biri olan LDR (Light Dependent Resistor - Işığa Duyarlı Direnç) kullanacağız. Üzerine düşen ışık miktarına göre direnci değişen bu minik parça sayesinde odanın ne kadar karanlık veya aydınlık olduğunu ESP32'ye söyleyeceğiz.

Gerekli Malzemeler:

  • 1 adet ESP32
  • 1 adet LDR (Işık Sensörü)
  • 1 adet 10k Ohm Direnç
  • Bağlantı kabloları (Jumper)

(Bağlantı Mantığı: LDR'nin bir bacağını 3.3V pinine bağlayın. Diğer bacağını hem ESP32'nin D34 (veya herhangi bir analog) pinine hem de 10k direnç üzerinden GND (Toprak) pinine bağlayın. Buna "Voltaj Bölücü" devre denir.)

Sensör Okuma Kodu

Bağlantıyı yaptıktan sonra Arduino IDE'yi açın ve aşağıdaki kodu ESP32'ye yükleyin:

C++


// LDR'yi bağladığımız Analog Pinin numarası
// Not: ESP32'de 34, 35, 36, 39 numaralı pinler sadece "Giriş" (Input) olarak kullanılabilen harika analog pinlerdir.
const int ldrPin = 34; 

// Sensörden okuyacağımız değeri tutacak değişken
int isikDegeri = 0; 

void setup() {
  // Bilgisayar ekranına (Seri Port) bilgi yazdırmak için haberleşmeyi başlatıyoruz
  Serial.begin(115200);
  
  // ESP32'ye bir süre tanıyoruz
  delay(1000);
  Serial.println("Isik olcumu basliyor...");
}

void loop() {
  // analogRead komutu ile 34 numaralı pindeki voltajı okuyoruz (0 - 4095 arası)
  isikDegeri = analogRead(ldrPin);
  
  // Okuduğumuz değeri Seri Port Ekranına yazdırıyoruz
  Serial.print("Ortam Isik Seviyesi: ");
  Serial.println(isikDegeri);

  // Değere göre basit bir mantık yürütelim
  if(isikDegeri < 1000) {
    Serial.println("Durum: Hava cok karanlik!");
  } 
  else if (isikDegeri >= 1000 && isikDegeri < 3000) {
    Serial.println("Durum: Normal aydinlik.");
  } 
  else {
    Serial.println("Durum: Cok parlak!");
  }

  Serial.println("-------------------------");
  
  // Okumalar birbirine girmesin diye yarım saniye (500ms) bekliyoruz
  delay(500);
}

Kodu Yükleme ve Sonucu Görme

  1. Kodu ESP32'ye yükleyin.
  2. Sağ üst köşeden Seri Port Ekranı'nı (115200 baud hızında) açın.

Ekranda sürekli olarak akan sayılar göreceksiniz (Örn: Ortam Isik Seviyesi: 2450). Şimdi elinizle LDR sensörünün üzerini kapatıp gölge yapın. Rakamların hızla düştüğünü (örneğin 500'lere) ve ekranda "Hava cok karanlik!" yazdığını göreceksiniz. Ardından sensöre telefonunuzun flaşını tutun; rakamlar 4000'lere fırlayacak!

İşte bu kadar basit! Artık ortam verilerini okuyabilen bir cihazınız var. Bu mantığı kullanarak sıcaklık sensörü (LM35), toprak nemi sensörü veya potansiyometre gibi tüm analog cihazları okuyabilirsiniz. Hatta karanlık çöktüğünde (ışık seviyesi belli bir değerin altına düştüğünde) otomatik yanan gece lambaları bile yapabilirsiniz.

Bir sonraki yazımızda Wi-Fi'ın olmadığı yerler için ESP32'nin diğer kablosuz iletişim gücünü, yani Bluetooth özelliğini keşfedeceğiz. Görüşmek üzere!

Ertan Dağdelen

Yazan

Ertan Dağdelen

Brain & Youth Information Worker, Author, .Net, Flutter, AJAX, Arduino & Esp32, Pcb, 3D, Galatasaray, Gemini

Bu yazıyı paylaş

Yorumlar (0)

Bu yazı için yorumlar kapalı.

Diğer Yazılar