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
- 1 ks: Arduino UNO
- 1ks: senzor vlhkosti a teploty vzduchu DHT11
- 1 ks: senzor vlhkosti půdy
- přibližně 20 ks: propojovací kabely
- 3 ks: červená LED dioda
- 3 ks: zelená LED dioda
- 3 ks: žlutá LED dioda
- 9 ks: rezistor 220Ω
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)

