Claudiu-Marcel Nedelcu (78540) - EasyPlants

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

- Plantele au fost adesea folosite de oameni ca elemente decorative. O planta va aduce mereu un aspect placut unei camere din casa noastra. Fiecare planta are nevoie sa fie udata la un anumit interval de timp si de asemenea anumite plante nu trebuie udate cand este lumina puternica afara sau cand este foarte cald(cand temperaturile sunt foarte mari putem “arde” plantele).

- Scopul acestui dispozitiv este de a uda o planta doar atunci cand este nevoie si la momentul porivit al zilei. Adica atunci cand umiditatea din sol a scazut sub un anumit nivel iar lumina solara nu este foarte puternica. Acest proiect este util pentru oricine nu are timp sa ude plantele atunci cand este necesar. Astfel plantele noastre nu vor mai ramane niciodata fara apa.

- Singurul lucru pe care trebuie sa-l facem este sa avem mereu apa in rezervor.

Descriere generală

Schema bloc

Hardware Design

Listă de piese

Numar piese Nume piesa Obs
1 Placa de bază cu ATMega324A-PU Alimentare la 3.3V
1 Serial SPI Color LCD Module Compatibil cu Nokia 5110 de 1.44' (128×128)
1 Senzor de lumina ambientala TEMT6000
1 Rezervor de apa
1 Electropompa Mini Pompă de Apă Submersibilă
1 Detector de umiditate SOIL-MOISTURE-SENSOR
1 Senzor de temperatura DHT22

Scheme electrice

Microcontroler-ul ATmega324A-PU se va conecta cu componentele din tabelul de mai sus astfel:

LCD si TEMT6000

LCD-ul folosit este compatibil cu cel de pe telefonul Nokia 5110. Comunicatia cu LCD-ul este realizata prin SPI, astfel ca avem pinii: CS, SDA(MOSI), SCK. De asemenea LCD-ul oferă doi pini LED și RESET pentru controlul backlight-ului respectiv resetarea dispozitivului.

TEMT6000 este senzorul de lumina ambientala si este unul analogic, iar pentru a-l conecta am folosit pinul PA0(ADC0) de pe microcontroler.

DHT22 si detector umiditate

Am ales senzorul de temperatura sa fie DHT22 care este unu digital. Pentru a putea functiona, senzorul are nevoie de o rezistenta de pull-up(4.7k) pentru linia de date. Detectorul de umiditate este un senzorul cu care voi masura umiditatea solului. Acesta poate sa transmita si digital(D0) dar si analogic(A0).

Software Design

Mediu de dezvoltare

Pentru realizarea aplicatiei am folosit Microsoft Visual Studio 2015 si avr-g++. Pentru realizarea proiectului am folosit functii si biblioteci din solutiile laboratoarelor.

Pentru detectarea umiditatii pamantului dintr-un ghiveci de flori folosesc un ADC care preia periodic date de la un senzor de umiditate de sol (SOIL-MOISTURE-SENSOR), valoarea umiditatii este citita o data la 2 secunde si este afisata mereu pe ecran. De asemenea exista si un senzor de lumina care citeste intensitatea acesteia. Daca intensitatea luminii este prea mare rezulta ca exista si o crestere de temperatura si atunci pentru a se evita distrugerea plantei nu va avea loc procesul de udare. Temperatura este monitorizata cu ajutorul unui senzor de temperatura.

In functie de fiecare stare a plantei se afiseaza pe ecran mesaje:

- Cand umiditatea este scazuta sub un anumit nivel(cand pamantul este prea uscat), intensitatea luminii este mica si temperatura este optima se aprinde LED-ul verde. Este necesara udarea, iar pompa va fii pornita. Pe ecran apare “Udati planta”

- Cand umiditatea este prea mare clipeste LED-ul verde. Pompa este oprita. Pe ecran apare “Umiditate mare”.

- Cand umiditatea solului este in parametrii normali sau intensitatea luminii este mare, LED-ul este stins. Pompa este oprita. Pe ecran nu se afiseaza nimic.

- Cand umiditatea este scazuta sub un anumit nivel(cand pamantul este prea uscat), intensitatea luminii este mare sau temperatura este mare se stinge LED-ul verde. Pe ecran apare “Lumina puternica” sau “Temperatura mare”.

Udarea corecta a plantelor inseamna si individualizarea plantelor dupa nevoile si specificul lor. Iar aceasta este una din regulile importante de care trebuie sa tii cont la udarea corecta a plantelor.

Pentru a controla pompa am folosit un tranzistor NPN si o dioda. Pentru a porni pompa trimit curent in baza din placuta pentru a-l deschide. Pompa este alimentata de 2 baterii la de 1.5V.

Senzorii

Senzorul de lumina (TEMT6000) este analog, iar pentru citi date de pe acesta am folosit ADC-ul si sistemul de interuperi din interiorul microcontroler-ului nostru. La fel si senzorul de umiditate din sol.

Pentru ADCSRA activez ADC-ul (1 « ADEN), activez intreruperea la terminarea conversiei (1 « ADIE), selectez rata de esantionare ( (1 « ADPS0) | (1 « ADPS2) ) de 32 si pornesc conversia ADC (1 « ADSC). Pentru ADMUX selectez tensiunea de referinta (1 « REFS0) si selectez canalul initial de conversie - 0.

int initLight()
{
    ADMUX = (1 << REFS0) | (1 << ADC_INIT_CHANNEL);
    ADCSRA = (1 << ADEN) | (1 << ADIE) | (1 << ADSC) | (1 << ADPS0) | (1 << ADPS2);

    return 0;
}

Initializez si un timer (Timer1) care se executa o data la 100ms astfel:

void TIMER1_init()
{
    // initializare timer pentru COMPA la 100ms
    TCCR1B = (5 << CS10) | (1 << WGM12);
    TIMSK1 |= (1 << OCIE1A);
    OCR1A = 1561;
	sec = 0;
	secunde = 0;
}

Citirea celor 2 senzori analogi o fac pe canale in rutina de tratare a intreruperilor.

Pentru senzorul de temperatura(DHT22) am folosit biblioteca dhtxx.h pentru a citi valorile acestuia. Cand returnez temperatura o impart la 10 pentru a fi in grade Celsius.

float dht22Temp()
{
    return tempC/DHTXX_MUL;
}

Rezultate Obţinute

Am obtinut urmatoarele rezultate:

1) Poza in ansamblu

2) Ecranul si senzorul in apa

Concluzii

Acest dispozitiv vine in sprijinul atat posesorului de plante cat si plantei insasi, atunci acesta va putea sa se dedice altor activitati. Planta va fi udata atunci cand este necesar evitandu-se astfel distrugerea ei.

Parametrii optimi de utilizare a acestui dispozitiv vor fi stabiliti in functie de tipul de planta. Avertizarea vizuala este data de functionarea LED-ului, iar pe LCD se afiseaza valoarea umiditatii solului, temperaturii si intensitatea luminoasa in procente.

Se afiseaza pe LCD un contor (ore:minute:secunde) care se incrementeaza din momentul in care umiditatea solului este sub valoarea normala, iar planta nu este udata deoarece intesitatea luminii este puternica sau temperatura prea mare. Contorul este resetat la valoarea 0 in momentul in care planta este udata.

Acest proiect poate fi imbunatatit pentru a veni in sprijinul posesorilor caznici de plante ornamentale cat si cultivatorilor(de plante radacinoase si legume). De exmplu: Un senzor de umiditate ambientala, senzor de nivel apa, valorile de referinta impuse(temperatura, umiditate) pentru fiecare tip de planta si alimentarea cu energia necesara de functionare a dispozitivului cu panouri solare.

Download

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

pm/prj2018/amocanu/plants.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0