ESP32 Упатство 35/55 - Монитор за растенија, почва, температура и светлина | SunFounder's ESP32 IoT Learning комплет
Во ова упатство, ќе изградиме монитор за растенија користејќи го ESP32 микроконтролерот од SunFounder ESP32 IoT Learning Kit. Овој проект комбинира неколку компоненти за следење на влажноста на почвата, температурата, влажноста и нивото на светлина. До крајот на ова упатство, ќе имате целосно функционален систем кој може да управува и прикажува овие критични параметри за нега на растенија. За детално визуелно објаснување, задолжително погледнете го видеото (во видеото на 00:00).

Објаснување на хардверот
Главните компоненти користени во овој проект вклучуваат ESP32 микроконтролер, DHT11 сензор, сензор за влажност на почвата, отпорник зависен од светлина (LDR) и LCD за прикажување на податоци. ESP32 служи како мозок на системот, управувајќи со обработката на податоци и контролните задачи. Тој има вградени Wi-Fi и Bluetooth, обезбедувајќи опции за поврзување за далечинско следење.
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 за сензорите).
- Користете pull-down отпорници за копчињата за да спречите лебдечки влезови.
- Чувајте ги жиците уредни за да избегнете конфузија и потенцијални кратки споеви.
- Проверете ги врските пред напојување на колото за да спречите оштетување.
- Проверете го поврзувањето на DHT11 бидејќи е чувствителен на неточни врски.
Инструкции за поврзување

За да ги поврзете компонентите, започнете со поврзување на линиите за напојување и заземјување. ESP32 треба да се напојува со литиумска батерија, поврзувајќи го позитивниот терминал со VCC линијата и заземјувањето со GND линијата на breadboard-от. Податочниот пин на DHT11 сензорот се поврзува на PIN 13, додека неговиот VCC оди на 3.3V линијата и GND на заземјувањето. Сензорот за влажност на почвата се поврзува слично: неговиот сигнален пин на PIN 14, VCC на 3.3V, и GND на заземјувањето.
За LDR, поврзете еден пин на 3.3V линијата и другиот на PIN 35, со отпорник од 10k оми поврзан од LDR до заземјувањето. LCD екранот се поврзува на 5V линијата за напојување и ги користи SDA и SCL пиновите поврзани на PIN 21 и PIN 22, соодветно. Конечно, поврзете го копчето на PIN 32 со pull-down отпорникот поврзан на заземјувањето, осигурувајќи дека чита ниско кога не е притиснато и високо кога е притиснато.
Примери на код и објаснување
Јадрото на нашата програма започнува со дефинирање на пиновите за секоја компонента. На пример, DHTPIN е доделен на PIN 13 за DHT11 сензорот, додека MOIS_PIN е поставен на PIN 14 за сензорот за влажност. Оваа организација помага да се следи кој сензор е поврзан на кој пин.
#define DHTPIN 13 // Поставете го пинот поврзан со податочниот пин на DHT11
#define MOIS_PIN 14 // Модул за влажност на почвата
#define LIGHT_PIN 35 // Фотоотпорник
Следно, ги иницијализираме DHT сензорот и LCD екранот во setup() функцијата. Ова е клучно бидејќи ги подготвува овие компоненти за работа. Осигурувањето да се повика dht.begin() е од суштинско значење за DHT сензорот да започне правилно да чита вредности.
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 Целосен код за монитор на растенија Arduino
- 29:21 Демонстрација
#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
Работи што можеби ќе ви требаат
-
AmazonBuy LCD1602-I2C from Amazonamzn.to
-
eBayPurchase LCD1602-I2C from eBayebay.us
-
AliExpressPurchase 10pcs LCD1602-I2C from AliExpresss.click.aliexpress.com
Ресурси и референци
-
ДокументацијаESP32 Tutorial 35/55 - SunFounder doc page for plant monitordocs.sunfounder.com
Датотеки📁
Fritzing датотека
-
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