ESP32 Eğitimi 35/55 - Bitki Monitörü, toprak, sıcaklık ve ışık | SunFounder'ın ESP32 IoT Öğrenme Kiti
Bu eğitimde, SunFounder ESP32 IoT Öğrenme Kiti'nden ESP32 mikrodenetleyicisini kullanarak bir bitki monitörü inşa edeceğiz. Bu proje, toprak nemini, sıcaklığı, nemi ve ışık seviyelerini izlemek için birkaç bileşeni bir araya getirir. Bu kılavuzun sonunda, bitki bakımı için bu kritik parametreleri yönetebilen ve görüntüleyebilen tamamen işlevsel bir sisteme sahip olacaksınız. Ayrıntılı bir görsel açıklama için videoyu (videoda 00:00) kontrol ettiğinizden emin olun.

Donanım Açıklaması
Bu projede kullanılan ana bileşenler ESP32 mikrodenetleyicisi, DHT11 sensörü, toprak nem sensörü, ışığa bağımlı direnç (LDR) ve verileri görüntülemek için bir LCD'dir. ESP32, veri işleme ve kontrol görevlerini üstlenerek kurulumun beyni olarak görev yapar. Yerleşik Wi-Fi ve Bluetooth özelliklerine sahiptir ve uzaktan izleme için bağlantı seçenekleri sunar.
DHT11 sensörü sıcaklığı ve nemi ölçerken, toprak nem sensörü topraktaki nem seviyelerini algılar. LDR, ortam ışık yoğunluğunu ölçerek bitkinin aydınlatma koşulları hakkında bilgi sağlar. Her bileşen, gerçek zamanlı veriler sağlayarak bitkinin sağlığını sağlamada çok önemli bir rol oynar.
Veri Sayfası Ayrıntıları
| Üretici | SunFounder |
|---|---|
| Parça numarası | DHT11 |
| Mantık/GÇ voltajı | 3,3 V |
| Besleme voltajı | 5 V |
| Çıkış akımı (kanal başına) | 20 mA |
| Tepe akımı (kanal başına) | 50 mA |
| PWM frekansı kılavuzu | Yok |
| Giriş mantık eşikleri | 0,3 VCC (düşük), 0,7 VCC (yüksek) |
| Gerilim düşümü / RDS(on) / doyum | Yok |
| Termal sınırlar | 0°C ila 50°C |
| Paket | DIP |
| Notlar / varyantlar | DHT22 ile uyumlu |
- Her bileşen için uygun voltaj seviyelerini sağlayın (motor sürücüsü için 5V, sensörler için 3,3V).
- Yüzen girişleri önlemek için butonlar için aşağı çeken dirençler kullanın.
- Karışıklığı ve olası kısa devreleri önlemek için kablolamayı düzenli tutun.
- Hasarları önlemek için devreye güç vermeden önce bağlantıları doğrulayın.
- Yanlış bağlantılara karşı hassas olduğu için DHT11 kablolamasını kontrol edin.
Kablolama Talimatları

Bileşenleri bağlamak için güç ve toprak hatlarını bağlayarak başlayın. ESP32, bir lityum pil ile beslenmeli ve pozitif terminal breadboard üzerindeki VCC hattına, toprak ise GND hattına bağlanmalıdır. DHT11 sensörünün veri pini PIN 13'e bağlanırken, VCC'si 3,3V hattına ve GND'si toprağa gider. Toprak nem sensörü benzer şekilde bağlanır: sinyal pini PIN 14'e, VCC 3,3V'a ve GND toprağa.
LDR için, bir pini 3,3V hattına ve diğerini PIN 35'e bağlayın ve LDR'den toprağa 10k ohm'luk bir direnç bağlayın. LCD ekran, güç için 5V hattına bağlanır ve sırasıyla PIN 21 ve PIN 22'ye bağlı SDA ve SCL pinlerini kullanır. Son olarak, butonu PIN 32'ye bağlayın ve aşağı çeken direnci toprağa bağlayarak, basılmadığında düşük ve basıldığında yüksek okumasını sağlayın.
Kod Örnekleri ve Açıklama
Programımızın çekirdeği, her bileşen için pinleri tanımlamakla başlar. Örneğin, DHTPIN, DHT11 sensörü için PIN 13'e atanırken, MOIS_PIN nem sensörü için PIN 14'e ayarlanır. Bu düzenleme, hangi sensörün hangi pine bağlı olduğunu takip etmeye yardımcı olur.
#define DHTPIN 13 // DHT11 veri pinine bağlı pini ayarlayın
#define MOIS_PIN 14 // Toprak nem modülü
#define LIGHT_PIN 35 // Fotodirenç
Ardından, setup() fonksiyonu içinde DHT sensörünü ve LCD ekranı başlatıyoruz. Bu, bu bileşenleri çalışmaya hazırladığı için çok önemlidir. DHT sensörünün değerleri doğru okumaya başlaması için dht.begin() çağrısını yapmak şarttır.
void setup() {
Serial.begin(115200);
dht.begin(); // DHT11'i başlat
lcd.init(); // LCD'yi başlat
lcd.backlight();
}
loop() fonksiyonunda, sıcaklık ve nem değerlerini sürekli okur ve bunları LCD'de görüntüleriz. Butona basılırsa, bitkileri sulamak için motor etkinleştirilir. Bu mantık, motoru açıp kapatmayı belirlemek için buton pininin dijital okumasını kullanır.
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (digitalRead(BUTTON) == HIGH) {
digitalWrite(motor1A, HIGH); // Su pompasını aç
} else {
digitalWrite(motor1A, LOW); // Su pompasını kapat
}
delay(2000);
}
Bu kod yapısı, veri ve kontrol akışının net olmasını sağlayarak bitki monitörünün sorunsuz çalışmasını garanti eder. Daha fazla ayrıntı için, kodun tamamı makalenin altında yüklenir.
Gösterim / Beklentiler
Kurulumu tamamlayıp kodu yükledikten sonra, LCD ekranda sıcaklık ve nem okumaları ile nem ve ışık seviyelerinin dönüşümlü olarak görüntülenmesi gerekir. Butona basıldığında su pompası devreye girerek bitkiye su sağlamalıdır. Yüzen girişler veya hatalı okumalar gibi sorunları önlemek için tüm bağlantıların güvenli olduğundan emin olun (videoda 05:30'da).
LCD ve seri monitörde görüntülenen değerleri izlemek, sistemin doğru çalıştığından emin olmanıza yardımcı olacaktır. Sorunlarla karşılaşırsanız, kablolamayı tekrar kontrol edin ve tüm bileşenlerin uygun şekilde güç aldığından emin olun.
Video Zaman Damgaları
- 00:00 Başlangıç
- 2:23 Proje Tanıtımı
- 4:02 Doküman sayfası
- 7:43 1-L293D Pompa motor sürücüsü
- 14:30 2-Pompa için buton
- 16:35 3-DHT11 Sıcaklık ve Nem sensörü
- 19:26 4-slild Nem Sensörü
- 21:43 5-Işık Sensörü
- 24:47 6-Toprak Nem Sensörü
- 26:01 Tam Bitki Monitör Arduino Kodu
- 29:21 Gösterim
#include "DHT.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 13 // Set the pin connected to the DHT11 data pin
#define MOIS_PIN 14 // Soil mOisture module
#define LIGHT_PIN 35 // Photoresistor
#define motor1A 27 // Pump pin
#define motor2A 26 // Pump pin
#define BUTTON 32 // Button
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
int page = 0;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(115200);
// Initialize the dht11
dht.begin();
lcd.init(); // initialize the lcd
lcd.backlight();
lcd.clear();
// initialize digital pin as an output.
pinMode(motor1A, OUTPUT);
pinMode(motor2A, OUTPUT);
pinMode(BUTTON, INPUT);
}
void loop() {
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (it's a very slow sensor)
float humidity = dht.readHumidity();
// Read temperature as Celsius (the default)
float temperature = dht.readTemperature();
// Check if any reads failed and exit early (to try again).
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
lcd.clear();
// Show message per 2 second
if ((page++) % 2) {
// Display temperature and humidity
lcd.setCursor(0, 0);
lcd.print("Humi: ");
lcd.print(humidity);
lcd.print("%");
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print("\xDF");
lcd.print("C");
} else {
// Display moisture and light sensor values
lcd.setCursor(0, 0);
lcd.print("Mois: ");
lcd.print(analogRead(MOIS_PIN));
lcd.setCursor(0, 1);
lcd.print("Light: ");
lcd.print(analogRead(LIGHT_PIN));
}
// Water plant while button pressed
Serial.println(digitalRead(BUTTON));
if (digitalRead(BUTTON) == HIGH) {
// Turn on water pump if button is pressed
digitalWrite(motor1A, HIGH);
digitalWrite(motor2A, LOW);
} else {
// Turn off water pump if button is not pressed
digitalWrite(motor1A, LOW);
digitalWrite(motor2A, LOW);
}
delay(2000);
}
Common Course Links
Common Course Files
İhtiyacın olabileceğini düşünüyor
-
AmazonBuy LCD1602-I2C from Amazonamzn.to
-
eBayPurchase LCD1602-I2C from eBayebay.us
-
AliExpressPurchase 10pcs LCD1602-I2C from AliExpresss.click.aliexpress.com
Kaynaklar ve referanslar
-
BelgelendirmeESP32 Tutorial 35/55 - SunFounder doc page for plant monitordocs.sunfounder.com
Dosyalar📁
Fritzing Dosyası
-
DHT11 Humitidy and Temperature Sensor (3 pins)
DHT11 Humitidy and Temperature Sensor (3 pins).fzpz0.20 MB -
LCD LCD1602-I2C module with 4 wires
LCD1602-I2C.fzpz0.01 MB