Kod Ara

ESP32 Eğitimi 35/55 - Bitki Monitörü, toprak, sıcaklık ve ışık | SunFounder'ın ESP32 IoT Öğrenme Kiti

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.

ESP32-25_plant_moitor_schematic

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.

Fotodirenç
DHT11 Modülü
DHT11 Modülü

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ı

ESP32-25_plant_moitor_wiring

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

Görseller

DHT11 Module
DHT11 Module
5V DC water pump
5V DC water pump
soil_mositure_module
soil_mositure_module
photoresistor
photoresistor
ESP32-25_plant_moitor_schematic
ESP32-25_plant_moitor_schematic
ESP32-25_plant_moitor_wiring
ESP32-25_plant_moitor_wiring
836-ESP32 Tutorial 35/55- Arduino code for plant monitor
Dil: C++
#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);
}

İhtiyacın olabileceğini düşünüyor

Kaynaklar ve referanslar

Dosyalar📁

Fritzing Dosyası