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!
Ö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
- Kodu ESP32'ye yükleyin.
- 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!
Yazan
Ertan Dağdelen
Brain & Youth Information Worker, Author, .Net, Flutter, AJAX, Arduino & Esp32, Pcb, 3D, Galatasaray, Gemini
Yorumlar (0)
Bu yazı için yorumlar kapalı.
Diğer Yazılar
ESP32 vs Arduino: 2026’da Hangisini Seçmelisiniz?
ESP32 ve Arduino, hobiden profesyonel IoT projelerine kadar en popüler geliştirme kartlarıdır. Arduino basitliği ve eğitim odaklı yapısıyla yeni başlayanlar için idealken, ESP32 yerleşik Wi-Fi, Bluetooth, yüksek işlem gücü ve düşük maliyetiyle modern bağlı cihazlar için çok daha güçlü bir alternatiftir. Bu yazıda ikisini hız, bellek, bağlantı, güç tüketimi ve kullanım alanları açısından karşılaştırıyoruz. 2026 itibarıyla çoğu IoT ve akıllı ev projesi için ESP32 öne çıkıyor.
Bölüm 10: Kablolara Veda Edin: ESP32'yi Wi-Fi Üzerinden (OTA) Programlamak
Projenizi güzelce kutuladınız, lehimlediniz ve ulaşması zor bir yere monte ettiniz. Peki kodda ufak bir hata fark ederseniz veya yeni bir özellik eklemek isterseniz ne olacak? Cihazı yerinden sökmeye hiç gerek yok! Bu bölümde akıllı telefonların güncelleme almasına benzeyen OTA (Over-The-Air) teknolojisini öğrenecek ve ESP32'mize USB kablosu olmadan, havadan kod yükleyeceğiz.
Bölüm 9: ESP32 ile Mesajlaşın: Kendi Telegram Botunuzu Yapın!
ESP32'nizin cebinize doğrudan mesaj atmasını ister misiniz? Bu bölümde popüler mesajlaşma uygulaması Telegram'ı kullanarak kendi botumuzu oluşturacağız. Cihazımız bir hareket algıladığında, ortam fazla ısındığında veya sadece uyandığında cep telefonumuza anlık bildirim (mesaj) göndermeyi öğrenecek!