Search Code

ESP32 ટ્યુટોરિયલ 35/55 - પ્લાન્ટ મોનિટર, માટી, તાપમાન અને પ્રકાશ | SunFounder ની ESP32 IoT લર્નિંગ કિટ

ESP32 ટ્યુટોરિયલ 35/55 - પ્લાન્ટ મોનિટર, માટી, તાપમાન અને પ્રકાશ | SunFounder ની ESP32 IoT લર્નિંગ કિટ

આ ટ્યુટોરિયલમાં, અમે SunFounder ESP32 IoT લર્નિંગ કિટમાંથી ESP32 માઇક્રોકંટ્રોલરનો ઉપયોગ કરીને પ્લાન્ટ મોનિટર બનાવીશું. આ પ્રોજેક્ટ જમીનની ભેજ, તાપમાન, ભેજ અને પ્રકાશ સ્તરને મોનિટર કરવા માટે ઘણા ઘટકોને જોડે છે. આ માર્ગદર્શિકાના અંત સુધીમાં, તમારી પાસે સંપૂર્ણ કાર્યક્ષમ સિસ્ટમ હશે જે છોડની સંભાળ માટે આ મહત્વપૂર્ણ પરિમાણોને સંચાલિત અને પ્રદર્શિત કરી શકે છે. વિગતવાર દ્રશ્ય સમજૂતી માટે, વિડિઓ (વિડિઓમાં 00:00 પર) ચોક્કસપણે જુઓ.

ESP32-25_plant_moitor_schematic

હાર્ડવેર સમજૂતી

આ પ્રોજેક્ટમાં ઉપયોગમાં લેવાતા મુખ્ય ઘટકોમાં ESP32 માઇક્રોકંટ્રોલર, DHT11 સેન્સર, જમીન ભેજ સેન્સર, લાઇટ-ડિપેન્ડન્ટ રેઝિસ્ટર (LDR), અને ડેટા પ્રદર્શિત કરવા માટે LCD નો સમાવેશ થાય છે. ESP32 સેટઅપનું મગજ તરીકે કાર્ય કરે છે, ડેટા પ્રોસેસિંગ અને નિયંત્રણ કાર્યોને સંભાળે છે. તેમાં બિલ્ટ-ઇન Wi-Fi અને બ્લૂટૂથ છે, જે રિમોટ મોનિટરિંગ માટે કનેક્ટિવિટી વિકલ્પો પ્રદાન કરે છે.

ફોટોરેઝિસ્ટર
DHT11 મોડ્યુલ
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 સંપૂર્ણ પ્લાન્ટ મોનિટર આર્ડુઇનો કોડ
  • 29:21 પ્રદર્શન

Images

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
Language: 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);
}

Things you might need

Resources & references

Files📁

Fritzing File