Raadi Koodka

Tutorial ESP32 35/55 - Kormeeyaha Dhirta, ciidda, heerkulka iyo iftiinka | Qalabka Barashada IoT ee SunFounder ee ESP32

Tutorial ESP32 35/55 - Kormeeyaha Dhirta, ciidda, heerkulka iyo iftiinka | Qalabka Barashada IoT ee SunFounder ee ESP32

Cashigarkani, waxaan ku dhisaynaa kormeere dhirta iyadoo la adeegsanayo kontoroolka ESP32 ee ka yimid SunFounder ESP32 IoT Learning Kit. Mashruucani wuxuu isku darayaa qaybo kala duwan si loo kormeero qoyaanka ciidda, heerkulka, qoyaanka hawada, iyo heerka iftiinka. Markaad dhammaystirto hagahan, waxaad yeelan doontaa nidaam si buuxda u shaqeeya oo awood u leh inuu maareeyo oo muujiyo cabbiraadahan muhiimka ah ee daryeelka dhirta. Faahfaahin muuqaal ah oo dhamaystiran, hubi inaad daawato fiidiyowga (fiidiyowga 00:00).

ESP32-25_plant_moitor_schematic

Qaybaha Qalabka La Sharaxay

Qaybaha ugu muhiimsan ee loo adeegsaday mashruucan waxaa ka mid ah kontoroolka ESP32, sensor-ka DHT11, sensor-ka qoyaanka ciidda, resistor-ka iftiinka ku xiran (LDR), iyo LCD-ga lagu muujiyo xogta. ESP32 wuxuu u shaqeeyaa sida maskaxda qaabaynta, isagoo gudanaya hawsha habaynta xogta iyo kontoroolka. Wuxuu leeyahay Wi-Fi iyo Bluetooth oo ku dhex jira, isagoo bixinaya fursado isku xirid ah oo lagu kormeero meel fog.

photoresistor
DHT11 Module
DHT11 Module

Sensor-ka DHT11 wuxuu cabbiraa heerkulka iyo qoyaanka hawada, halka sensor-ka qoyaanka ciidda uu ogaado heerka qoyaanka ee ciidda. LDR wuxuu cabbiraa xoojinta iftiinka deegaanka, isagoo u oggolaanaya fahamka xaaladaha iftiinka ee dhirta. Qayb kastaa waxay door muhiim ah ka ciyaartaa hubinta caafimaadka dhirta iyadoo bixinaysa xog waqti-ku-ool ah.

Faahfaahinta Xogta

Soo saaraha SunFounder
Nambarka qaybta DHT11
Danabka Logic/IO 3.3 V
Danabka sahayda 5 V
Korontada soo-saarka (kanaal kasta) 20 mA
Korontada ugu sarreysa (kanaal kasta) 50 mA
Hagaha soo noqnoqoshada PWM N/A
Heerarka xadka logic-ga 0.3 VCC (hoose), 0.7 VCC (sare)
Hoos u dhaca danabka / RDS(on) / saturation N/A
Xadka kulaylka 0°C ilaa 50°C
Baakad DIP
Qoraallo / noocyo kale La jaan qaadaya DHT22

 

  • Hubi heerarka danabka ku habboon qayb kasta (5V matoorka darawalka, 3.3V sensor-yada).
  • U adeegso resistor-yada hoos u jiidaya ee badhamada riixista si looga hortago gelitaanka sabeynaya.
  • Ka dhig fiilooyinka habaysan si looga fogaado jahwareer iyo gaabiska suurtagalka ah.
  • Xaqiiji isku xirka ka hor intaadan shidin korontada si looga hortago dhaawaca.
  • Hubi fiilada DHT11 maadaama ay u nugul tahay isku xirka khaldan.

Tilmaamaha Fiilada

ESP32-25_plant_moitor_wiring

Si aad u xirto qaybaha, waxaad ku bilaabaysaa isku xirka khadadka korontada iyo dhulka. ESP32 waa in lagu shideeyaa batteriga lithium-ka, isagoo ku xiraaya terminal-ka togan ee khadka VCC iyo dhulka ee khadka GND ee breadboard-ka. Pin-ka xogta ee sensor-ka DHT11 wuxuu ku xirmaa PIN 13, halka VCC-ga uu aado khadka 3.3V iyo GND-ga dhulka. Sensor-ka qoyaanka ciidda wuxuu si la mid ah u xirmaa: pin-kiisa signal-ka ee PIN 14, VCC ee 3.3V, iyo GND ee dhulka.

LDR-ka, ku xir hal pin khadka 3.3V iyo kan kale PIN 35, iyadoo resistor 10k ohm ah laga xiro LDR-ka dhulka. LCD-ga wuxuu ku xirmaa khadka 5V ee korontada wuxuuna adeegsadaa pin-yada SDA iyo SCL ee ku xiran PIN 21 iyo PIN 22, siday u kala horreeyaan. Ugu dambeyntii, ku xir badhanka riixista PIN 32 iyadoo resistor-ka hoos u jiidaya uu ku xiran yahay dhulka, hubinta inuu akhriyo hoose marka aan la riixin iyo sare marka la riixo.

Tusaalooyinka Koodhka & Sharaxaada

Xudunta barnaamijkeena waxay ku bilaabantaa qeexida pin-yada qayb kasta. Tusaale ahaan, DHTPIN waxaa loo qoondeeyay PIN 13 ee sensor-ka DHT11, halka MOIS_PIN loo qoondeeyay PIN 14 ee sensor-ka qoyaanka. Habkani wuxuu kaa caawinayaa inaad la socoto sensor-ka ku xiran pin-ka.


#define DHTPIN 13     // Deji pin-ka ku xiran pin-ka xogta DHT11
#define MOIS_PIN 14 // Qaybta qoyaanka ciidda
#define LIGHT_PIN 35 // Photoresistor

Marka xigta, waxaan ku bilaabaynaa sensor-ka DHT iyo LCD-ga gudaha shaqada setup(). Tani waa muhiim maadaama ay u diyaariso qaybahan hawlgalka. Hubinta inaad u wacdo dht.begin() waa lama huraan si sensor-ka DHT uu u bilaabo inuu si sax ah u akhriyo qiimaha.


void setup() {
  Serial.begin(115200);
  dht.begin();  // Bilaab DHT11
  lcd.init();  // Bilaab LCD
  lcd.backlight();
}

Gudaha shaqada loop(), waxaan si joogto ah u akhrinaynaa qiimaha heerkulka iyo qoyaanka, anagoo ku muujinayna LCD-ga. Haddii badhanka la riixo, matoorka waa la hawlgeliyay si uu u waraabiyo dhirta. Macnahan wuxuu adeegsadaa akhrinta dijitaalka ah ee pin-ka badhanka si loo go'aamiyo in matoorka la shido ama la damiyo.


void loop() {
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();
  if (digitalRead(BUTTON) == HIGH) {
    digitalWrite(motor1A, HIGH); // Shid matoorka biyaha
  } else {
    digitalWrite(motor1A, LOW); // Dam matoorka biyaha
  }
  delay(2000);
}

Qaab-dhismeedka koodhkani wuxuu u oggolaanayaa socodka xogta iyo xakamaynta si cad, isagoo hubinaya in kormeeraha dhirta uu si habsami leh u shaqeeyo. Faahfaahin dheeri ah, koodhka buuxa ayaa hoos ku xiran maqaalka.

Muuujin / Waxa Lagu Filan Karaa

Markaad dhamaystirto dejinta oo aad kor geliso koodhka, LCD-ga waa inuu muujiyaa akhrinta heerkulka iyo qoyaanka iyadoo isku beddelaya heerka qoyaanka ciidda iyo iftiinka. Marka la riixo badhanka, matoorka biyuhu waa inuu shaqeeyaa, isagoo biyo u geynaya dhirta. Hubi in dhammaan xiriirada ay yihiin kuwo adag si looga fogaado arrimo ay ka mid yihiin gelinta sabeynaysa ama akhrin khaldan (fiidiyowga 05:30).

La socoshada qiimaha lagu muujiyo LCD-ga iyo kormeeraha taxanaha ah waxay kaa caawin doontaa hubinta in nidaamku si sax ah u shaqeeyo. Haddii aad la kulanto dhibaatooyin, laba jeer hubi xiriirada oo hubi in dhammaan qaybaha ay ku shaqeeyaan koronto ku habboon.

Waqtiyada Fiidiyowga

  • 00:00 Bilow
  • 2:23 Hordhaca Mashruuca
  • 4:02 Bogga dukumeentiyada
  • 7:43 1-L293D Matoorka darawalka bamka
  • 14:30 2-Badhan lagu shideeyo Bamka
  • 16:35 3-DHT11 Dareemaha Heerkulka iyo Qoyaanka
  • 19:26 4-Dareemaha Qoyaanka Ciidda
  • 21:43 5-Dareemaha Iftiinka
  • 24:47 6-Dareemaha Qoyaanka Ciidda
  • 26:01 Koodhka Buuxa ee Kormeeraha Dhirta Arduino
  • 29:21 Muujin

Sawirro

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

Waad u baahan tahay

Kheyraadka & Tixraacyada

Faylasha📁

Faylka Fritzing