Bu eğitimde, ışık yoğunluğunu ölçmek için ESP32 mikrodenetleyicisi ile bir LDR (Işığa Bağımlı Direnç) kullanmayı keşfedeceğiz. LDR'nin direncini okuyarak, ışık seviyesi belirli bir eşiği aştığında bir buzzer'ı etkinleştirmek gibi eylemleri tetikleyebiliriz. Bu proje, ışık seviyeleri ile ESP32'nin analog okuma yetenekleri arasındaki etkileşimi gösterecek ve ortam ışığına dayalı duyarlı uygulamalar oluşturmamızı sağlayacaktır. (videoda 5:30'da)
Donanım Açıklaması
Bu projede kullanacağımız ana bileşenler ESP32 mikrodenetleyicisi, bir LDR ve bir 10 kΩ dirençtir. LDR, yüzeyine çarpan ışığın yoğunluğuna bağlı olarak direncini değiştirir: daha fazla ışık daha düşük dirençle sonuçlanırken, daha az ışık daha yüksek dirençle sonuçlanır. Bu özellik, LDR'yi dirençle bir voltaj bölücü konfigürasyonunda bağlayarak değişen ışık seviyelerini ölçmemizi sağlar.
ESP32 mikrodenetleyicisi, yerleşik Wi-Fi ve Bluetooth özelliklerine sahiptir ve bu da onu IoT projeleri için ideal kılar. Değişen voltaj seviyelerini okuyabilen birkaç analog pime sahiptir; bu pinleri LDR üzerindeki voltajı izlemek için kullanacağız. Bu voltaj, ESP32'nin işleyebileceği ve bir buzzer'ı etkinleştirmek gibi eylemleri tetiklemek için kullanabileceği bir analog değere dönüştürülecektir.
Veri Sayfası Ayrıntıları
Üretici
Espressif Systems
Parça numarası
ESP32
Mantık/IO voltajı
3.3 V
Besleme voltajı
3.0 - 3.6 V
Çıkış akımı (GPIO başına)
40 mA maks.
PWM frekansı kılavuzu
1 kHz - 40 kHz
Giriş mantık eşikleri
Yüksek: 2.0 V min, Düşük: 0.8 V maks.
Voltaj düşümü / RDS(on) / doyum
0.3 V maks.
Termal sınırlar
-40 °C ila 125 °C
Paket
QFN48
Notlar / varyantlar
Birden fazla Wi-Fi ve Bluetooth protokolünü destekler
Voltaj bölme için LDR ile seri olarak 10 kΩ direnç kullanın.
Hasarı önlemek için ESP32'nin 3.3 V ile beslendiğinden emin olun.
Işık yoğunluğunu ölçmek için LDR ve direnci doğru şekilde bağlayın.
Gerekirse güç kaynağını stabilize etmek için bir kapasitör kullanın.
Analog okuma değerlerinin beklenen aralıklarda olduğunu kontrol edin.
Bağlantı Talimatları
ESP32-22_light_sensor-wiring
LDR ve direnci ESP32'ye bağlamak için, LDR'nin bir ucunu ESP32 üzerindeki 3.3 V güç pinine bağlayarak başlayın. LDR'nin diğer ucu, 10 kΩ direncin bir ucuna bağlanmalıdır. Direncin diğer ucunu toprağa bağlayın.
Ardından, LDR ile direnç arasındaki bağlantı noktasından ESP32 üzerindeki 35 pinine bir atlama teli bağlayın. Bu kurulum bir voltaj bölücü oluşturur ve ESP32'nin LDR'ye çarpan ışık yoğunluğuna bağlı olarak değişen voltajı okumasını sağlar. Tüm bağlantıların güvenli olduğundan ve LDR'nin ışık değişimlerini doğru algılayabileceği bir konumda olduğundan emin olun.
Kod Örnekleri ve Açıklama
Kodda, LDR'den gelen okumaları izlemek için seri iletişimi başlatarak başlıyoruz. Buradaki anahtar tanımlayıcı, 35 pininden okumayı saklayan analogValue'dur.
void setup() {
Serial.begin(115200);
}
void loop() {
int analogValue = analogRead(35);
Serial.printf("ADC analog değeri = %d\n",analogValue);
delay(100);
}
Bu kod parçacığı, seri monitörü 115200 baud hızında başlatır ve 35 pininden analog değeri sürekli okur. Değer seri monitöre yazdırılır ve ışık seviyelerine göre nasıl değiştiğini gözlemlememizi sağlar.
Işık yoğunluğu değiştiğinde, LDR'nin direnci değişir ve böylece ESP32 tarafından okunan voltaj da ışık koşullarını yansıtarak değişecektir (videoda 12:45'te).
Gösterim / Beklentiler
Programı çalıştırıp seri monitörü gözlemlediğinizde, ADC analog değeri'nin ortam ışığı koşullarına bağlı olarak dalgalandığını görmelisiniz. LDR'yi kapattığınızda, değer artmalı ve daha yüksek direnci göstermelidir; parlak ışığa maruz bıraktığınızda ise değer önemli ölçüde düşmelidir. Bu davranış, önceden tanımlanmış eşiklere dayalı olarak bir buzzer'ı veya başka herhangi bir eylemi tetiklemek için kullanılabilir.
Okumalar beklenildiği gibi değişmiyorsa, bağlantı sorunlarını kontrol edin, LDR'nin boşta olmadığından emin olun ve ESP32'nin doğru şekilde beslendiğini doğrulayın. Bu, yaygın tuzakları önlemeye ve sorunsuz çalışmayı sağlamaya yardımcı olacaktır (videoda 15:30'da).
Video Zaman Damgaları
00:00 Başlangıç
1:48 LDR'ye Giriş
8:33 Bağlantı açıklaması
11:07 Arduino kodu açıklaması
13:07 Arduino IDE'de ESP32 kartı ve COM portu seçimi
821-ESP32 Tutorial 22/55- Arduino code for Light dependant resistor
Dil: C++
void setup() {
// initialize serial communication at 115200 bits per second:
Serial.begin(115200);
}
void loop() {
// read the analog value
int analogValue = analogRead(35);
// print out the values you read:
Serial.printf("ADC analog value = %d\n",analogValue);
delay(100); // delay in between reads for clear read from serial
}
Açıklama: Amazon Ortaklığı olarak, nitelikli satın alımlardan kazanç sağlıyoruz. Bu, bir bağlantıya tıklayıp satın alma işlemi yaptığınızda, size ek bir maliyet olmadan küçük bir komisyon alabileceğimiz anlamına geliyor.