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).

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.
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

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
#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);
}
Common Course Links
Common Course Files
Stvari koje bi vam mogle zatrebati
-
AmazonBuy LCD1602-I2C from Amazonamzn.to
-
eBayPurchase LCD1602-I2C from eBayebay.us
-
AliExpressPurchase 10pcs LCD1602-I2C from AliExpresss.click.aliexpress.com
Resursi i reference
-
DokumentacijaESP32 Tutorial 35/55 - SunFounder doc page for plant monitordocs.sunfounder.com
Datoteke📁
Fritzing datoteka
-
DHT11 Humitidy and Temperature Sensor (3 pins)
DHT11 Humitidy and Temperature Sensor (3 pins).fzpz0.20 MB -
LCD LCD1602-I2C module with 4 wires
LCD1602-I2C.fzpz0.01 MB