Pretraži kod

ESP32 Tutorijal 35/55 - Monitor biljaka, tlo, temperatura i svjetlost | SunFounder-ov ESP32 IoT komplet za učenje

ESP32 Tutorijal 35/55 - Monitor biljaka, tlo, temperatura i svjetlost | SunFounder-ov ESP32 IoT komplet za učenje

U ovom tutorijalu ćemo napraviti monitor za biljke koristeći ESP32 mikrokontroler iz SunFounder ESP32 IoT Learning Kita. Ovaj projekat kombinuje nekoliko komponenti za praćenje vlažnosti tla, temperature, vlažnosti zraka i nivoa svjetlosti. Do kraja ovog vodiča, imat ćete potpuno funkcionalan sistem koji može upravljati i prikazivati ove ključne parametre za njegu biljaka. Za detaljno vizualno objašnjenje, svakako pogledajte video (u videu na 00:00).

ESP32-25_plant_moitor_schematic

Objašnjenje hardvera

Glavne komponente korištene u ovom projektu uključuju ESP32 mikrokontroler, DHT11 senzor, senzor vlažnosti tla, svjetlosno zavisni otpornik (LDR) i LCD za prikaz podataka. ESP32 služi kao mozak postavke, upravljajući obradom podataka i kontrolnim zadacima. Ima ugrađen Wi-Fi i Bluetooth, pružajući mogućnosti povezivanja za daljinsko praćenje.

fotootpornik
DHT11 Module
DHT11 modul

DHT11 senzor mjeri temperaturu i vlažnost zraka, dok senzor vlažnosti tla detektuje nivoe vlažnosti u tlu. LDR mjeri intenzitet ambijentalne svjetlosti, omogućavajući uvid u uslove osvjetljenja biljke. Svaka komponenta igra ključnu ulogu u osiguravanju zdravlja biljke pružajući podatke u realnom vremenu.

Detalji iz tehničke dokumentacije

Proizvođač SunFounder
Broj dijela DHT11
Logički/IO napon 3.3 V
Napon napajanja 5 V
Izlazna struja (po kanalu) 20 mA
Maksimalna struja (po kanalu) 50 mA
Smjernice za PWM frekvenciju N/A
Ulazni logički pragovi 0.3 VCC (nisko), 0.7 VCC (visoko)
Pad napona / RDS(on) / zasićenje N/A
Toplotna ograničenja 0°C do 50°C
Pakovanje DIP
Napomene / varijante Kompatibilan sa DHT22

 

  • Osigurajte odgovarajuće nivoe napona za svaku komponentu (5V za drajver motora, 3.3V za senzore).
  • Koristite pull-down otpornike za tipke kako biste spriječili plutajuće ulaze.
  • Održavajte ožičenje urednim kako biste izbjegli zabunu i potencijalne kratke spojeve.
  • Provjerite veze prije uključivanja strujnog kruga kako biste spriječili oštećenja.
  • Provjerite ožičenje DHT11 jer je osjetljivo na pogrešne veze.

Upute za ožičenje

ESP32-25_plant_moitor_wiring

Za povezivanje komponenti, počnite spajanjem linija napajanja i uzemljenja. ESP32 treba napajati litijumskom baterijom, povezujući pozitivni terminal na VCC liniju i uzemljenje na GND liniju na breadboardu. Data pin DHT11 senzora povezuje se na PIN 13, dok njegov VCC ide na 3.3V liniju, a GND na uzemljenje. Senzor vlažnosti tla povezuje se slično: njegov signalni pin na PIN 14, VCC na 3.3V, i GND na uzemljenje.

Za LDR, povežite jedan pin na 3.3V liniju, a drugi na PIN 35, sa otpornikom od 10k oma povezanim od LDR-a na uzemljenje. LCD displej se povezuje na 5V liniju za napajanje i koristi SDA i SCL pinove povezane na PIN 21 i PIN 22, respektivno. Na kraju, povežite tipku na PIN 32 sa pull-down otpornikom spojenim na uzemljenje, osiguravajući da očitava nisko kada nije pritisnuta i visoko kada je pritisnuta.

Primjeri koda i objašnjenje

Srž našeg programa počinje definisanjem pinova za svaku komponentu. Na primjer, DHTPIN je dodijeljen na PIN 13 za DHT11 senzor, dok je MOIS_PIN postavljen na PIN 14 za senzor vlažnosti. Ova organizacija pomaže u praćenju koji je senzor povezan na koji pin.


#define DHTPIN 13     // Postavi pin povezan na DHT11 data pin
#define MOIS_PIN 14 // Modul za vlažnost tla
#define LIGHT_PIN 35 // Fotootpornik

Zatim, inicijaliziramo DHT senzor i LCD displej unutar setup() funkcije. Ovo je ključno jer priprema ove komponente za rad. Obavezno pozovite dht.begin() jer je neophodno da DHT senzor počne ispravno očitavati vrijednosti.


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

U loop() funkciji, kontinuirano očitavamo temperaturu i vlažnost zraka, prikazujući ih na LCD-u. Ako je tipka pritisnuta, motor se aktivira za zalijevanje biljaka. Ova logika koristi digitalno očitavanje pina tipke da odredi da li uključiti ili isključiti motor.


void loop() {
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();
  if (digitalRead(BUTTON) == HIGH) {
    digitalWrite(motor1A, HIGH); // Uključi pumpu za vodu
  } else {
    digitalWrite(motor1A, LOW); // Isključi pumpu za vodu
  }
  delay(2000);
}

Ova struktura koda omogućava jasan tok podataka i kontrole, osiguravajući da monitor biljke funkcioniše glatko. Za više detalja, puni kod se učitava ispod članka.

Demonstracija / Šta očekivati

Nakon završetka postavljanja i uploada koda, LCD bi trebao prikazivati očitanja temperature i vlažnosti naizmjenično s nivoima vlažnosti tla i svjetlosti. Kada se pritisne tipka, vodena pumpa bi se trebala aktivirati, dovodeći vodu do biljke. Osigurajte da su svi spojevi sigurni kako biste izbjegli probleme poput plutajućih ulaza ili netačnih očitanja (u videu na 05:30).

Praćenje vrijednosti prikazanih na LCD-u i serijskom monitoru pomoći će da se osigura da sistem funkcioniše ispravno. Ako naiđete na probleme, provjerite ožičenje i osigurajte da su sve komponente pravilno napajane.

Vremenske oznake videa

  • 00:00 Početak
  • 2:23 Uvod u projekat
  • 4:02 Stranica s dokumentacijom
  • 7:43 1-L293D pokretač pumpe motora
  • 14:30 2-Tipka za pumpu
  • 16:35 3-DHT11 senzor temperature i vlažnosti
  • 19:26 4-Senzor vlažnosti tla
  • 21:43 5-Senzor svjetlosti
  • 24:47 6-Senzor vlažnosti tla
  • 26:01 puni Arduino kod za monitor biljke
  • 29:21 Demonstracija

Slike

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

Stvari koje bi vam mogle zatrebati

Resursi i reference

Datoteke📁

Fritzing datoteka