কোড অনুসন্ধান

ESP32 টিউটোরিয়াল ৩৫/৫৫ - প্ল্যান্ট মনিটর, মাটি, তাপমাত্রা এবং আলো | সানফাউন্ডারের ESP32 আইওটি লার্নিং কিট

ESP32 টিউটোরিয়াল ৩৫/৫৫ - প্ল্যান্ট মনিটর, মাটি, তাপমাত্রা এবং আলো | সানফাউন্ডারের ESP32 আইওটি লার্নিং কিট

এই টিউটোরিয়ালে, আমরা SunFounder ESP32 IoT লার্নিং কিট থেকে ESP32 মাইক্রোকন্ট্রোলার ব্যবহার করে একটি প্ল্যান্ট মনিটর তৈরি করব। এই প্রকল্পটি মাটির আর্দ্রতা, তাপমাত্রা, আর্দ্রতা এবং আলোর মাত্রা পর্যবেক্ষণের জন্য বেশ কয়েকটি উপাদান একত্রিত করে। এই গাইডের শেষে, আপনার কাছে একটি সম্পূর্ণ কার্যকরী সিস্টেম থাকবে যা উদ্ভিদের যত্নের জন্য এই গুরুত্বপূর্ণ পরামিতিগুলি পরিচালনা এবং প্রদর্শন করতে পারে। বিস্তারিত ভিজ্যুয়াল ব্যাখ্যার জন্য, ভিডিওটি (ভিডিওতে 00:00 এ) দেখতে ভুলবেন না।

ESP32-25_plant_moitor_schematic

হার্ডওয়্যার ব্যাখ্যা

এই প্রকল্পে ব্যবহৃত প্রধান উপাদানগুলির মধ্যে রয়েছে ESP32 মাইক্রোকন্ট্রোলার, DHT11 সেন্সর, মাটির আর্দ্রতা সেন্সর, আলো-নির্ভর প্রতিরোধক (LDR), এবং ডেটা প্রদর্শনের জন্য একটি LCD। ESP32 সেটআপের মস্তিষ্ক হিসেবে কাজ করে, ডেটা প্রসেসিং এবং নিয়ন্ত্রণ কাজ পরিচালনা করে। এতে বিল্ট-ইন Wi-Fi এবং ব্লুটুথ রয়েছে, যা দূরবর্তী পর্যবেক্ষণের জন্য সংযোগের বিকল্প প্রদান করে।

ফটোরেসিস্টর
DHT11 Module
DHT11 মডিউল

DHT11 সেন্সর তাপমাত্রা এবং আর্দ্রতা পরিমাপ করে, যখন মাটির আর্দ্রতা সেন্সর মাটিতে আর্দ্রতার মাত্রা সনাক্ত করে। LDR পরিবেষ্টিত আলোর তীব্রতা পরিমাপ করে, যা উদ্ভিদের আলোর অবস্থার অন্তর্দৃষ্টি প্রদান করে। প্রতিটি উপাদান রিয়েল-টাইম ডেটা প্রদান করে উদ্ভিদের স্বাস্থ্য নিশ্চিত করতে গুরুত্বপূর্ণ ভূমিকা পালন করে।

ডেটাশিট বিবরণ

প্রস্তুতকারক SunFounder
পার্ট নম্বর DHT11
লজিক/IO ভোল্টেজ 3.3 V
সাপ্লাই ভোল্টেজ 5 V
আউটপুট কারেন্ট (প্রতি চ্যানেল) 20 mA
পিক কারেন্ট (প্রতি চ্যানেল) 50 mA
PWM ফ্রিকোয়েন্সি নির্দেশিকা N/A
ইনপুট লজিক থ্রেশহোল্ড 0.3 VCC (নিম্ন), 0.7 VCC (উচ্চ)
ভোল্টেজ ড্রপ / RDS(on) / স্যাচুরেশন N/A
থার্মাল সীমা 0°C থেকে 50°C
প্যাকেজ DIP
নোট / ভেরিয়েন্ট DHT22 এর সাথে সামঞ্জস্যপূর্ণ

 

  • প্রতিটি উপাদানের জন্য সঠিক ভোল্টেজ স্তর নিশ্চিত করুন (মোটর ড্রাইভারের জন্য 5V, সেন্সরগুলির জন্য 3.3V)।
  • ফ্লোটিং ইনপুট প্রতিরোধ করতে পুশ বাটনের জন্য পুল-ডাউন রোধ ব্যবহার করুন।
  • বিভ্রান্তি এবং সম্ভাব্য শর্ট সার্কিট এড়াতে তারের সংযোগ পরিপাটি রাখুন।
  • ক্ষতি রোধ করতে সার্কিটে পাওয়ার দেওয়ার আগে সংযোগগুলি যাচাই করুন।
  • DHT11 তারের সংযোগ পরীক্ষা করুন কারণ এটি ভুল সংযোগের প্রতি সংবেদনশীল।

ওয়্যারিং নির্দেশাবলী

ESP32-25_plant_moitor_wiring

উপাদানগুলি ওয়্যার করতে, পাওয়ার এবং গ্রাউন্ড লাইন সংযোগ করে শুরু করুন। ESP32 একটি লিথিয়াম ব্যাটারি দিয়ে পাওয়ার করা উচিত, ব্রেডবোর্ডে ধনাত্মক টার্মিনালটি VCC লাইনে এবং গ্রাউন্ডটি GND লাইনে সংযোগ করুন। DHT11 সেন্সরের ডেটা পিন PIN 13 এর সাথে সংযোগ করে, যখন এর VCC 3.3V লাইনে এবং GND গ্রাউন্ডে যায়। মাটির আর্দ্রতা সেন্সর একইভাবে সংযোগ করে: এর সিগন্যাল পিন PIN 14 এ, VCC 3.3V এ এবং GND গ্রাউন্ডে।

LDR এর জন্য, একটি পিন 3.3V লাইনে এবং অন্যটি PIN 35 এ সংযোগ করুন, LDR থেকে গ্রাউন্ডে একটি 10k ওহম রোধ সংযুক্ত সহ। LCD ডিসপ্লে পাওয়ারের জন্য 5V লাইনের সাথে সংযোগ করে এবং SDA এবং SCL পিন ব্যবহার করে যথাক্রমে PIN 21 এবং PIN 22 এর সাথে সংযুক্ত। অবশেষে, পুশ বাটনটি PIN 32 এ গ্রাউন্ডের সাথে সংযুক্ত পুল-ডাউন রোধ সহ ওয়্যার করুন, নিশ্চিত করুন যে এটি চাপা না হলে নিম্ন এবং চাপা হলে উচ্চ পড়ে।

কোড উদাহরণ ও ওয়াকথ্রু

আমাদের প্রোগ্রামের মূল অংশ প্রতিটি উপাদানের জন্য পিন সংজ্ঞায়িত করার মাধ্যমে শুরু হয়। উদাহরণস্বরূপ, DHTPIN DHT11 সেন্সরের জন্য PIN 13 এ নির্ধারিত, যখন MOIS_PIN আর্দ্রতা সেন্সরের জন্য PIN 14 এ সেট করা হয়। এই সংগঠনটি কোন সেন্সর কোন পিনের সাথে সংযুক্ত তা ট্র্যাক রাখতে সাহায্য করে।


#define DHTPIN 13     // DHT11 ডেটা পিনের সাথে সংযুক্ত পিন সেট করুন
#define MOIS_PIN 14 // মাটির আর্দ্রতা মডিউল
#define LIGHT_PIN 35 // ফটোরেসিস্টর

এরপর, আমরা setup() ফাংশনের ভিতরে DHT সেন্সর এবং LCD ডিসপ্লে আরম্ভ করি। এটি অত্যন্ত গুরুত্বপূর্ণ কারণ এটি এই উপাদানগুলিকে অপারেশনের জন্য প্রস্তুত করে। DHT সেন্সর সঠিকভাবে মান পড়া শুরু করার জন্য dht.begin() কল করা নিশ্চিত করা অপরিহার্য।


void setup() {
  Serial.begin(115200);
  dht.begin();  // DHT11 আরম্ভ করুন
  lcd.init();  // LCD আরম্ভ করুন
  lcd.backlight();
}

loop() ফাংশনে, আমরা ক্রমাগত তাপমাত্রা এবং আর্দ্রতার মান পড়ি, সেগুলি LCD তে প্রদর্শন করি। যদি বাটনটি চাপা হয়, মোটরটি উদ্ভিদে জল দেওয়ার জন্য সক্রিয় হয়। এই লজিকটি মোটর চালু বা বন্ধ করতে হবে কিনা তা নির্ধারণ করতে বাটন পিনের ডিজিটাল রিড ব্যবহার করে।


void loop() {
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();
  if (digitalRead(BUTTON) == HIGH) {
    digitalWrite(motor1A, HIGH); // জল পাম্প চালু করুন
  } else {
    digitalWrite(motor1A, LOW); // জল পাম্প বন্ধ করুন
  }
  delay(2000);
}

এই কোড কাঠামোটি ডেটা এবং নিয়ন্ত্রণের একটি স্পষ্ট প্রবাহ তৈরি করতে দেয়, যা নিশ্চিত করে যে প্ল্যান্ট মনিটরটি মসৃণভাবে কাজ করে। আরও বিস্তারিত জানতে, সম্পূর্ণ কোডটি নিবন্ধের নীচে লোড হয়।

প্রদর্শন / কী আশা করবেন

সেটআপ সম্পন্ন করে কোড আপলোড করার পরে, LCD-তে তাপমাত্রা এবং আর্দ্রতার রিডিং পর্যায়ক্রমে আর্দ্রতা এবং আলোর মাত্রার সাথে প্রদর্শিত হওয়া উচিত। যখন পুশ বাটন চাপা হয়, তখন জল পাম্প সক্রিয় হওয়া উচিত, গাছে জল পৌঁছে দেওয়া উচিত। ভাসমান ইনপুট বা ভুল রিডিংয়ের মতো সমস্যা এড়াতে সমস্ত সংযোগ নিরাপদ কিনা তা নিশ্চিত করুন (ভিডিওতে 05:30 এ)।

LCD এবং সিরিয়াল মনিটরে প্রদর্শিত মানগুলি পর্যবেক্ষণ করা সিস্টেমটি সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করতে সাহায্য করবে। যদি সমস্যার সম্মুখীন হন, তাহলে ওয়্যারিং দুবার পরীক্ষা করুন এবং নিশ্চিত করুন যে সমস্ত উপাদান সঠিকভাবে পাওয়ার পাচ্ছে।

ভিডিও টাইমস্ট্যাম্প

  • 00:00 শুরু
  • 2:23 প্রকল্প পরিচিতি
  • 4:02 ডক্স পৃষ্ঠা
  • 7:43 1-L293D পাম্প মোটর ড্রাইভার
  • 14:30 2-পাম্পের জন্য পুশ বাটন
  • 16:35 3-DHT11 তাপমাত্রা এবং আর্দ্রতা সেন্সর
  • 19:26 4-স্লিল্ড আর্দ্রতা সেন্সর
  • 21:43 5-আলো সেন্সর
  • 24:47 6-মাটির আর্দ্রতা সেন্সর
  • 26:01 সম্পূর্ণ প্ল্যান্ট মনিটর Arduino কোড
  • 29:21 প্রদর্শন

ছবি

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
ভাষা: 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);
}

আপনাকে যা প্রয়োজন হতে পারে

সম্পদ ও রেফারেন্সসমূহ

ফাইলসমূহ📁

ফ্রিটজিং ফাইল