Nota

Ciao, benvenuto nella community SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts su Facebook! Approfondisci Raspberry Pi, Arduino ed ESP32 con altri appassionati.

Perché unirsi?

  • Supporto Esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra community e del nostro team.

  • Impara & Condividi: Scambia consigli e tutorial per migliorare le tue competenze.

  • Anteprime Esclusive: Ottieni l’accesso anticipato agli annunci di nuovi prodotti e anteprime esclusive.

  • Sconti Speciali: Goditi sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni e Concorsi Festivi: Partecipa a concorsi e promozioni festive.

👉 Pronto a esplorare e creare con noi? Clicca [Qui] e unisciti oggi stesso!

Monitor per Piante

Questo progetto irriga automaticamente le piante attivando una pompa dell’acqua quando l’umidità del suolo scende sotto una soglia specifica. Inoltre, visualizza temperatura, umidità e umidità del suolo su uno schermo LCD, fornendo agli utenti informazioni sull’ambiente di crescita della pianta.

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

È sicuramente conveniente acquistare un kit completo, ecco il link:

Nome

ELEMENTI IN QUESTO KIT

LINK

Elite Explorer Kit

300+

Elite Explorer Kit

Puoi anche acquistarli separatamente dai link sottostanti.

INTRODUZIONE COMPONENTI

LINK ACQUISTO

Arduino Uno R4 WiFi

-

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

LCD1602 I2C

ACQUISTA

Pompa DC per Acqua

-

TA6586 - Chip Driver del Motore

-

Modulo di Umidità del Suolo

ACQUISTA

Modulo Sensore di Umidità e Temperatura DHT11

ACQUISTA

Modulo di Alimentazione

-

Collegamenti

Nota

Per proteggere il Power Pack del Modulo di Alimentazione, caricalo completamente prima di utilizzarlo per la prima volta.

../_images/08_plant_monitor_bb.png

Schema Elettrico

../_images/08_plant_monitor_schematic.png

Codice

Nota

  • Puoi aprire il file 08_plant_monitor.ino nel percorso elite-explorer-kit-main\fun_project\08_plant_monitor direttamente.

  • Oppure copia questo codice nell’Arduino IDE.

Nota

Per installare la libreria, usa l’Arduino Library Manager e cerca «DHT sensor library» e «LiquidCrystal I2C» e installale.

08_plant_monitor.ino
 1/*
 2  Automatic watering system based on soil moisture, temperature, and humidity readings.
 3
 4  Board: Arduino Uno R4 
 5  Component: I2C LCD1602, DC Water Pump with TA6586 Motor Driver Chip, Soil Moisture Module, and Humiture Sensor Module
 6  Library: https://www.arduino.cc/reference/en/libraries/liquidcrystal-i2c/ (LiquidCrystal I2C by Frank de Brabander)
 7           https://github.com/adafruit/DHT-sensor-library  (DHT sensor library by Adafruit)
 8*/
 9
10
11#include <Wire.h>
12#include <LiquidCrystal_I2C.h>
13#include <DHT.h>
14
15#define DHTPIN 4              // Digital pin for DHT11 sensor
16#define DHTTYPE DHT11         // DHT11 sensor type
17#define SOIL_MOISTURE_PIN A0  // Analog pin for soil moisture sensor
18#define WATER_PUMP_PIN 8      // Digital pin for water pump
19
20
21// Initialize sensor and LCD objects
22DHT dht(DHTPIN, DHTTYPE);
23LiquidCrystal_I2C lcd(0x27, 16, 2);
24
25void setup() {
26  // Set pin modes
27  pinMode(SOIL_MOISTURE_PIN, INPUT);
28  pinMode(WATER_PUMP_PIN, OUTPUT);
29
30  // Initialize water pump as off
31  digitalWrite(WATER_PUMP_PIN, LOW);
32
33  // Initialize LCD and backlight
34  lcd.init();
35  lcd.backlight();
36
37  // Start DHT sensor
38  dht.begin();
39}
40
41void loop() {
42  // Read humidity and temperature from DHT11
43  float humidity = dht.readHumidity();
44  float temperature = dht.readTemperature();
45
46  // Read soil moisture level
47  int soilMoisture = analogRead(SOIL_MOISTURE_PIN);
48
49  // Display temperature and humidity on LCD
50  lcd.clear();
51  lcd.setCursor(0, 0);
52  lcd.print("Temp: " + String(temperature) + "C");
53  lcd.setCursor(0, 1);
54  lcd.print("Humidity: " + String(humidity) + "%");
55
56  delay(2000);
57
58  // Display soil moisture on LCD
59  lcd.clear();
60  lcd.setCursor(0, 0);
61  lcd.print("Soil Moisture: ");
62  lcd.setCursor(0, 1);
63  lcd.print(String(soilMoisture));
64
65  // Activate water pump if soil is dry
66  if (soilMoisture > 580) {
67    digitalWrite(WATER_PUMP_PIN, HIGH);  // Turn on water pump
68    delay(1000);                         // Pump water for 1 second
69    digitalWrite(WATER_PUMP_PIN, LOW);   // Turn off water pump
70  }
71
72  delay(2000);  // Wait before next loop iteration
73}

Come funziona?

Ecco una spiegazione dettagliata del codice:

  1. Inclusione delle Librerie e Definizioni di Costanti/Variabili:

    Importa le librerie Wire.h, LiquidCrystal_I2C.h e DHT.h. Definisci i numeri dei pin e altri parametri relativi al DHT11, al sensore di umidità del suolo e alla pompa dell’acqua.

  2. setup():

    Inizializza le modalità dei pin relativi al sensore di umidità del suolo e alla pompa dell’acqua. Spegni inizialmente la pompa dell’acqua. Inizializza il display LCD e accendi la retroilluminazione. Avvia il sensore DHT.

  3. loop():

    Leggi l’umidità e la temperatura dal sensore DHT. Leggi l’umidità del suolo dal sensore di umidità del suolo. Visualizza i valori di temperatura e umidità sullo schermo LCD, poi cancella lo schermo e visualizza il valore di umidità del suolo. Determina se attivare la pompa dell’acqua in base all’umidità del suolo. Se l’umidità del suolo è inferiore a 500 (una soglia configurabile), attiva la pompa dell’acqua per 1 secondo.