Bu eğitimde, SunFounder ESP32'yi bir toprak nem sensörüyle birlikte kullanarak topraktaki nem seviyesini nasıl ölçeceğimizi öğreneceğiz; bu, sulama sistemlerini otomatikleştirmeye yardımcı olabilir. Nem seviyelerini izleyerek, nem belirli bir eşiğin altına düştüğünde bir buzzer'ı tetikleyebilir ve bitkilerin sulanması gerektiğini belirtebiliriz. Bu proje, bitki sağlığını korumak için değerlidir ve çeşitli çevresel algılama uygulamaları için genişletilebilir. (videoda 00:00'da)
toprak_nem_modülü
Çevresindeki ortamın nem içeriğine bağlı olarak değişen iki plaka arasındaki kapasitans değişimini ölçerek çalışan kapasitif bir toprak nem sensörü kullanacağız. Bu sensör, nem seviyesini yansıtan analog bir çıkış sağlayacak ve okumalara dayalı kararlar almamıza olanak tanıyacaktır. ESP32, analog çıkışı okuyacak ve toprak çok kuruysa bir buzzer'ı etkinleştirecektir.
Donanım Açıklaması
Bu proje için ana bileşenler SunFounder ESP32 mikrodenetleyicisi, kapasitif toprak nem sensörü ve bir buzzer'dır. ESP32, uzaktan izleme ve kontrol sağlayan yerleşik Wi-Fi ve Bluetooth özelliklerine sahiptir. Toprak nem sensörü, topraktaki nem seviyesine bağlı olarak değişen kapasitansı ölçen iki plakadan oluşur. Kapasitanstaki bu değişim, ESP32'nin analog girişi aracılığıyla okuduğu çıkış voltajını değiştirir. Buzzer, nem seviyesi belirlenen bir eşiğin altına düştüğünde bizi uyaracaktır.
toprak_nem_modülü_şeması
Veri Sayfası Detayları
Üretici
SunFounder
Parça numarası
Toprak Nem Sensörü
Çalışma voltajı
3,3 ila 5 V
Çıkış tipi
Analog
Sinyal aralığı
0 ila 3,3 V
Tepki süresi
Hızlı
Boyutlar
Yaklaşık 60 x 20 mm
Notlar / varyantlar
Kapasitif tip sensör
Sensörün hasar görmesini önlemek için tamamen suya daldırılmadığından emin olun.
Stabil okumalar için gerekirse uygun pull-up dirençleri kullanın.
Doğru nem okumaları için sensörü kendi toprak tipinize göre kalibre edin.
Sinyal kaybını önlemek için doğru kablo bağlantılarını koruyun.
Aşırı voltaj durumlarından kaçınmak için güç kaynağına dikkat edin.
Bağlantı Talimatları
ESP32-24-soild-moisture-wiring
Toprak nem sensörünü ESP32'ye bağlamak için sensörün VCC pinini ESP32 üzerindeki 3.3V pinine bağlayın. Ardından, sensörün GND pinini ESP32 üzerindeki bir GND pinine bağlayın. Toprak nem sensöründen gelen analog çıkış pini, ESP32 üzerindeki analog pin 35'e bağlanmalıdır. Buzzer için, pozitif pini ESP32 üzerindeki dijital pin 13'e ve negatif pini GND'ye bağlayın. Çalışma sırasında aralıklı sorunları önlemek için tüm bağlantıların güvenli olduğundan emin olun.
Kod Örnekleri ve Açıklama
Aşağıda, seri iletişimi başlatan ve nem sensörü değerini okuyan kodun kısa bir alıntısı bulunmaktadır:
void setup() {
// Seri iletişimi saniyede 115200 bit olarak başlat:
Serial.begin(115200);
}
Bu kod parçası, seri iletişimi kurarak nem sensöründen gelen okumaları seri monitörde görüntülememizi sağlar.
Ardından, sensörden analog değerin okunduğu ana döngüyü görüyoruz:
void loop() {
// Analog değeri oku
int analogValue = analogRead(35);
// Değerleri yazdır
Serial.printf("Analog değer = %d\n",analogValue);
delay(300); // seri monitörden net okuma için okumalar arasında gecikme
}
Bu döngüde, kod sürekli olarak pin 35'ten analog değeri okur ve her 300 milisaniyede bir seri monitöre yazdırır. Bu, nem seviyesini gerçek zamanlı olarak izlememizi sağlar.
Gösterim / Beklentiler
Nem sensörü kuru toprağa yerleştirildiğinde, analog değer daha yüksek olacak ve düşük nemi gösterecektir. Tersine, sensör nemli toprağa yerleştirildiğinde, değer önemli ölçüde düşecektir. Okuma belirlenen eşiğin (örneğin, 2000) altına düşerse, pin 13'e bağlı buzzer etkinleşecek ve bitkinin sulanması gerektiğini işaret edecektir. Yüzen girişlere dikkat edin ve sensörün önerilen sınırların ötesinde suya maruz kalmadığından emin olun (videoda 02:30'da).
Video Zaman Damgaları
00:00 Başlangıç
1:51 Projeye giriş
5:53 Bağlantı açıklaması
7:23 Arduino Kodu açıklaması
9:09 Arduino IDE'de ESP32 Kartı ve COM portu seçimi
823-ESP32 Tutorial 24/55- Arduino code for soil moisture measurement
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
Serial.printf("Analog value = %d\n",analogValue);
delay(300); // delay between reads for clear read from serial monitor
}
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.