Indikace stavu rostliny pomocí LED

Adam Vlk

V tomto projektu se za pomocí ledek zobrazuje stav rostliny. Zobrazuje se jaká je vlhkost půdy, teplota vzduchu a vlhkost vzduchu. Projekt je jednoduchý a vhodný pro začátečníky.

Použitý materiál

Zapojení

Piny na arduino uno:

Pin 2: OUT na DHT11
Pin 3: D0 na senzoru vlhkosti půdy
Pin 4: VCC na senzoru vlhkosti půdy
Pin 5: červená LED přes rezistor(220ohm)
Pin 6: zelená LED přes rezistor(220ohm)
Pin 7: žlutá LED přes rezistor(220ohm)
Pin 8: červená LED přes rezistor(220ohm)
Pin 9: zelená LED přes rezistor(220ohm)
Pin 10: žlutá LED přes rezistor(220ohm)
Pin 11: červená LED přes rezistor(220ohm)
Pin 12: zelená LED přes rezistor(220ohm)
Pin 13: žlutá LED přes rezistor(220ohm)
Pin A0: A0 na senzoru vlhkosti půdy
GND: všechny krátké nohy LED diod
GND: – u senzorů
5 V: DHT11

Program

Na začátku je knihovna dht.h kterou stáhnete zde https://github.com/RobTillaart/DHTlib.git

Poté tam jsou definice pinů. Ve void setup se nastaví piny. A void loop se každé 3 sekundy změří hodnoty a podle naměřených hodnot se rozsvítí led diody.

Led diody se rozsvěcí podle naměřených hodnot: když je naměřená hodnota příliš nízká na to, aby se rostlině dařilo, svítí červená LED. Když je hodnota optimální, svítí zelená LED. A když je naopak hodnota příliš vysoká, svítí žlutá LED.       

#include <dht.h>

// Definice pinů pro půdní vlhkoměr
#define analogPin A0
#define digitalPin 3
#define vccPin 4

const int DHT11_PIN = 2;           // Definice pinu pro DHT11

dht DHT;                           // Objekt pro DHT senzor

unsigned long cas = 0;             // Proměnné pro půdní vlhkoměr

//definice pinů ledek:
const int led_Puda_Malo = 5;                  //červená led: nízká vlhkost půdy 
const int led_Puda_OK = 6;                    //zelenáled: dobrá vlhkost půdy
const int led_Puda_Hodne = 7;                 //žlutá led: vysoká vlhkost půdy
const int led_Teplota_Vzduch_Malo = 8;        //červenáled: nízká teplota vzduchu
const int led_Teplota_Vzduch_OK = 9;          //zelená led: dobrá teplota vzduchu
const int led_Teplota_Vzduch_Hodne = 10;      //žlutá led: vysoká teplota vzduchu
const int led_Vlhost_Vzduch_Malo = 11;        //červená led: nízká vlhkost vzduchu         
const int led_Vlhost_Vzduch_OK = 12;          //zelená led: dobrá vlhkost vzduchu        
const int led_Vlhost_Vzduch_Hodne = 13;       //žlutá led: vysoká vlhkost vzduchu            



void setup() {

  //nastavení pinů ledek
  pinMode(led_Puda_Malo, OUTPUT);
  pinMode(led_Puda_OK, OUTPUT);
  pinMode(led_Puda_Hodne, OUTPUT);
  pinMode(led_Teplota_Vzduch_Malo, OUTPUT);
  pinMode(led_Teplota_Vzduch_OK, OUTPUT);
  pinMode(led_Teplota_Vzduch_Hodne, OUTPUT);
  pinMode(led_Vlhost_Vzduch_Malo, OUTPUT);
  pinMode(led_Vlhost_Vzduch_OK, OUTPUT);
  pinMode(led_Vlhost_Vzduch_Hodne, OUTPUT);

  pinMode(analogPin, INPUT);       // Nastavení pinů pro půdní vlhkoměr     
  pinMode(digitalPin, INPUT);           
  pinMode(vccPin, OUTPUT);           

  digitalWrite(vccPin, LOW);       // Vypnutí napájení pro půdní vlhkoměr
}

void loop() {
  if (millis() - cas > 3000) {                // Měření půdní vlhkosti a DHT11 každé 3 sekundy
    
    digitalWrite(vccPin, HIGH);               // Zapnutí napájení pro půdní vlhkoměr
    delay(100);
    
    int analog = analogRead(analogPin);       // Měření půdní vlhkosti: Měření analogového vstupu
    bool digit = digitalRead(digitalPin);     // Měření půdní vlhkosti: Měření digitálního vstupu

    int vlhkostProcenta = map(analog, 0, 1023, 100, 0);  //převod půdní vlhkosti půdy na procenta
    
    DHT.read11(DHT11_PIN);                    // Měření teploty a vlhkosti vzduchu pomocí DHT11
    delay(200);

    float teplota = DHT.temperature;
    float vlhkost = DHT.humidity;

    //zhasnutí ledek(zabrání tomu aby svítilo více než 3 led)
    digitalWrite(led_Puda_Malo, LOW);
    digitalWrite(led_Puda_OK, LOW);
    digitalWrite(led_Puda_Hodne, LOW);
    digitalWrite(led_Teplota_Vzduch_Malo, LOW);
    digitalWrite(led_Teplota_Vzduch_OK, LOW);
    digitalWrite(led_Teplota_Vzduch_Hodne, LOW);
    digitalWrite(led_Vlhost_Vzduch_Malo, LOW);
    digitalWrite(led_Vlhost_Vzduch_OK, LOW);
    digitalWrite(led_Vlhost_Vzduch_Hodne, LOW);

    //rozsvěcení ledek pomocí naměřených hodnot
    if (vlhkostProcenta <= 60 && vlhkostProcenta >= 40) {
      digitalWrite(led_Puda_OK, HIGH);
    }
    else if (vlhkostProcenta < 40) {
      digitalWrite(led_Puda_Malo, HIGH);
    }
    else if (vlhkostProcenta > 60) {
      digitalWrite(led_Puda_Hodne, HIGH);
    }

    if (teplota >= 18 && teplota <= 24){
      digitalWrite(led_Teplota_Vzduch_OK, HIGH);
    }
    else if (teplota < 18) {
      digitalWrite(led_Teplota_Vzduch_Malo, HIGH);
    }
    else if(teplota > 24) {
      digitalWrite(led_Teplota_Vzduch_Hodne, HIGH);
    }

    if (vlhkost >= 40 && vlhkost <= 60){
      digitalWrite(led_Vlhost_Vzduch_OK, HIGH);
    }
    else if(vlhkost < 40){
      digitalWrite(led_Vlhost_Vzduch_Malo, HIGH);
    }
    else if(vlhkost > 60){
      digitalWrite(led_Vlhost_Vzduch_Hodne, HIGH);
    }

    digitalWrite(vccPin, LOW);                // Vypnutí napájení pro půdní vlhkoměr
    cas = millis();                           // Uložení aktuálního času
  }
}

Celé to můžete umístit do krabice s otvorem pro led diody (viz obrázek)

Sdílet článek

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Mohlo by se také líbit

Nejčtenější články