Search Code

Mafunzo ya ESP32 35/55 - Kifuatiliaji cha Mimea, udongo, joto na mwanga | Kifurushi cha Kujifunza cha IoT cha SunFounder cha ESP32

Mafunzo ya ESP32 35/55 - Kifuatiliaji cha Mimea, udongo, joto na mwanga | Kifurushi cha Kujifunza cha IoT cha SunFounder cha ESP32

Katika mafunzo haya, tutajenga kifuatiliaji cha mimea kwa kutumia kidhibiti cha ESP32 kutoka kwenye Kifurushi cha Kujifunza cha ESP32 IoT cha SunFounder. Mradi huu unachanganya vipengele kadhaa kufuatilia unyevu wa udongo, joto, unyevu wa hewa, na viwango vya mwanga. Kufikia mwisho wa mwongozo huu, utakuwa na mfumo unaofanya kazi kikamilifu ambao unaweza kusimamia na kuonyesha vigezo hivi muhimu kwa utunzaji wa mimea. Kwa maelezo ya kina ya kuona, hakikisha umeangalia video (katika video saa 00:00).

Mchoro wa kifuatiliaji cha mimea ESP32-25

Maelezo ya Vifaa

Vipengele vikuu vinavyotumika katika mradi huu ni pamoja na kidhibiti cha ESP32, kihisi cha DHT11, kihisi cha unyevu wa udongo, kipingamizi tegemezi cha mwanga (LDR), na skrini ya LCD ya kuonyesha data. ESP32 hutumika kama ubongo wa mfumo, ikishughulikia usindikaji wa data na kazi za udhibiti. Ina Wi-Fi na Bluetooth zilizojengewa ndani, ikitoa chaguo za muunganisho kwa ufuatiliaji wa mbali.

Kipingamizi cha picha
Moduli ya DHT11
Moduli ya DHT11

Kihisi cha DHT11 hupima joto na unyevu wa hewa, wakati kihisi cha unyevu wa udongo hugundua viwango vya unyevu kwenye udongo. LDR hupima kiwango cha mwanga wa mazingira, ikiruhusu uelewa wa hali ya mwanga ya mmea. Kila kipengele kina jukumu muhimu katika kuhakikisha afya ya mmea kwa kutoa data ya wakati halisi.

Maelezo ya Karatasi ya Data

Mtengenezaji SunFounder
Nambari ya sehemu DHT11
Voltage ya mantiki/IO 3.3 V
Voltage ya usambazaji 5 V
Pato la sasa (kwa kila chaneli) 20 mA
Kilele cha sasa (kwa kila chaneli) 50 mA
Mwongozo wa mzunguko wa PWM Haipatikani
Vizingiti vya mantiki ya kuingiza 0.3 VCC (chini), 0.7 VCC (juu)
Kushuka kwa voltage / RDS(on) / kueneza Haipatikani
Mipaka ya joto 0°C hadi 50°C
Kifurushi DIP
Vidokezo / lahaja Inaoana na DHT22

 

  • Hakikisha viwango sahihi vya voltage kwa kila kipengele (5V kwa kiendesha motor, 3.3V kwa vihisi).
  • Tumia vipingamizi vya kuvuta-chini kwa vitufe vya kushinikiza ili kuzuia kuingiza kuelea.
  • Weka nyaya vizuri ili kuepuka mkanganyiko na mzunguko mfupi unaowezekana.
  • Thibitisha miunganisho kabla ya kuwasha mzunguko ili kuzuia uharibifu.
  • Angalia wiring ya DHT11 kwani ni nyeti kwa miunganisho isiyo sahihi.

Maagizo ya Wiring

ESP32-25_plant_moitor_wiring

Ili kuunganisha vipengele, anza kwa kuunganisha mistari ya nguvu na ardhi. ESP32 inapaswa kuendeshwa kwa betri ya lithiamu, ikiunganisha terminal chanya kwenye mstari wa VCC na ardhi kwenye mstari wa GND kwenye breadboard. Pini ya data ya kihisi cha DHT11 inaunganisha kwenye PIN 13, wakati VCC yake inakwenda kwenye mstari wa 3.3V na GND kwenye ardhi. Kihisi cha unyevu wa udongo kinaunganisha vivyo hivyo: pini yake ya ishara kwenye PIN 14, VCC kwenye 3.3V, na GND kwenye ardhi.

Kwa LDR, unganisha pini moja kwenye mstari wa 3.3V na nyingine kwenye PIN 35, na kipingamizi cha 10k ohm kilichounganishwa kutoka LDR hadi ardhi. Skrini ya LCD inaunganisha kwenye mstari wa 5V kwa nguvu na hutumia pini za SDA na SCL zilizounganishwa kwenye PIN 21 na PIN 22, mtawalia. Hatimaye, unganisha kitufe cha kushinikiza kwenye PIN 32 na kipingamizi cha kuvuta-chini kilichounganishwa kwenye ardhi, kuhakikisha kinasoma chini wakati hakijashinikizwa na juu wakati kimeshinikizwa.

Mifano ya Msimbo na Maelezo

Kiini cha programu yetu kinaanza kwa kufafanua pini za kila kipengele. Kwa mfano, DHTPIN imetengwa kwa PIN 13 kwa kihisi cha DHT11, wakati MOIS_PIN imewekwa kwa PIN 14 kwa kihisi cha unyevu. Mpangilio huu husaidia kufuatilia ni kihisi kipi kimeunganishwa kwenye pini ipi.


#define DHTPIN 13     // Weka pini iliyounganishwa kwenye pini ya data ya DHT11
#define MOIS_PIN 14 // Moduli ya unyevu wa udongo
#define LIGHT_PIN 35 // Kipingamizi cha picha

Ifuatayo, tunaanzisha kihisi cha DHT na skrini ya LCD ndani ya kazi ya setup(). Hii ni muhimu kwani inatayarisha vipengele hivi kwa uendeshaji. Kuhakikisha kuita dht.begin() ni muhimu kwa kihisi cha DHT kuanza kusoma maadili kwa usahihi.


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

Katika kazi ya loop(), tunasoma maadili ya joto na unyevu wa hewa kila mara, tukiyaonyesha kwenye LCD. Ikiwa kitufe kimeshinikizwa, motor inawashwa kumwagilia mimea. Mantiki hii hutumia usomaji wa dijiti wa pini ya kitufe kuamua kuwasha au kuzima motor.


void loop() {
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();
  if (digitalRead(BUTTON) == HIGH) {
    digitalWrite(motor1A, HIGH); // Washa pampu ya maji
  } else {
    digitalWrite(motor1A, LOW); // Zima pampu ya maji
  }
  delay(2000);
}

Muundo huu wa msimbo unaruhusu mtiririko wazi wa data na udhibiti, kuhakikisha kwamba kifuatiliaji cha mmea kinafanya kazi vizuri. Kwa maelezo zaidi, msimbo kamili unapakia chini ya makala hii.

Maonyesho / Nini cha Kutarajia

Baada ya kukamilisha usanidi na kupakia msimbo, LCD inapaswa kuonyesha usomaji wa joto na unyevu kwa kupishana na viwango vya unyevu wa udongo na mwanga. Wakati kitufe cha kushinikiza kinapobonyezwa, pampu ya maji inapaswa kuwasha, ikitoa maji kwa mmea. Hakikisha kwamba miunganisho yote ni salama ili kuepuka matatizo kama vile pembejeo zinazoelea au usomaji usio sahihi (katika video saa 05:30).

Kufuatilia thamani zinazoonyeshwa kwenye LCD na kifuatiliaji cha mfululizo kutasaidia kuhakikisha mfumo unafanya kazi kwa usahihi. Ikiwa utapata matatizo, angalia mara mbili wiring na uhakikishe vipengele vyote vinatumiwa kwa nguvu inayofaa.

Vidokezo vya Muda wa Video

  • 00:00 Anza
  • 2:23 Utangulizi wa Mradi
  • 4:02 Ukurasa wa Nyaraka
  • 7:43 1-L293D Dereva wa motor ya pampu
  • 14:30 2-Kitufe cha kushinikiza cha Pampu
  • 16:35 3-Kihisi cha Joto na Unyevu DHT11
  • 19:26 4-Kihisi cha Unyevu wa Udongo
  • 21:43 5-Kihisi cha Mwanga
  • 24:47 6-Kihisi cha Unyevu wa Udongo
  • 26:01 Msimbo Kamili wa Arduino wa Kifuatiliaji cha Mmea
  • 29:21 Maonyesho

Bilder

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
Språk: 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);
}

Tänker att du kanske behöver

Resurser och referenser

Filer📁

Fritzing-fil