Seră inteligentă pentru creșterea plantelor [619184]
Universitatea “Politehnica” din București
Facultatea de Electronică, Telecomunicații și Tehnologia Informației
Seră inteligentă pentru creșterea plantelor
PROIECT DE DIPLOMĂ
Prezentat ca cerință parțială pentru obținerea titlului de Ingine r în domeniul
Calculatoare și Ingineria Informației programul
de studii Ingineria informației
Conducă tor științificic: Student
Ș.L. Dr. Ing. Vale ntin STOICA Iustin -Alexandru SIMION
București
2018
2
3
4
5
6
7
Cuprins
Lista acronimelor ………………………….. ………………………….. ………………………….. ………………. 11
Lista figurilor ………………………….. ………………………….. ………………………….. ……………………. 13
Lista tabelelor ………………………….. ………………………….. ………………………….. …………………… 17
Introducere ………………………….. ………………………….. ………………………….. ……………………….. 19
Capitolul 1: Conceptul și importanța aplicației ………………………….. ………………………….. ….. 21
Capitolul 2: Microcontroler – noțiuni generale și model folosit ………………………….. ……….. 23
2.1 Noțiun i generale ………………………….. ………………………….. ………………………….. ………….. 23
2.2 ATmega328P ………………………….. ………………………….. ………………………….. ………………. 24
2.3 Plăcuța de dezvoltare Arduino Uno ………………………….. ………………………….. …………….. 25
Capitolul 3: Dispozitive de intrare ………………………….. ………………………….. …………………… 27
3.1 Senzori – tipuri și principii de funcționare ………………………….. ………………………….. …… 27
3.1.1 Noțiuni generale despr e senzori ………………………….. ………………………….. ……………. 27
3.1.2 Modul pentru măsurarea temperaturii și a umidității ………………………….. ……………. 28
3.1.3 Senzor pentru măsurarea umidității solului ………………………….. …………………………. 30
3.1.4 Fotorezistor ………………………….. ………………………….. ………………………….. …………… 31
3.1 Modul pentru ceas de timp real ………………………….. ………………………….. ………………….. 33
3.2.1 Noțiuni generale ………………………….. ………………………….. ………………………….. …….. 33
3.2.1 Modulul DS1307 ………………………….. ………………………….. ………………………….. ……. 33
Capitolul 4: Dispozitive de ieșire și control ………………………….. ………………………….. ………. 35
4.1 Controlul temperaturii ………………………….. ………………………….. ………………………….. ….. 35
4.1.1 Noțiuni generale ………………………….. ………………………….. ………………………….. …….. 35
4.1.2 Element de încălzire PTC ………………………….. ………………………….. …………………….. 35
8
4.1.3 Răcire și ventilare ………………………….. ………………………….. ………………………….. …… 36
4.2 Iluminarea artificială ………………………….. ………………………….. ………………………….. ……. 37
4.2.1 Noțiuni generale ………………………….. ………………………….. ………………………….. …….. 37
4.2.2 Bara de leduri RGB ………………………….. ………………………….. ………………………….. … 37
4.3 Irigarea solului prin picurare ………………………….. ………………………….. ……………………… 38
4.3.1 Aspecte generale ………………………….. ………………………….. ………………………….. ……. 38
4.3.2 Instalația realizată ………………………….. ………………………….. ………………………….. …… 38
4.4 Controlul umidității aerului ………………………….. ………………………….. ……………………….. 39
4.4.1 Principiul de funcționare ………………………….. ………………………….. ……………………… 39
4.4.2 Elementul Peltier ………………………….. ………………………….. ………………………….. ……. 39
Capitolul 5: Interfața c u utilizatorul ………………………….. ………………………….. …………………. 43
5.1 Aspecte generale ………………………….. ………………………….. ………………………….. ………….. 43
5.2 Interfața serială ………………………….. ………………………….. ………………………….. ……………. 43
Capitolul 6: Implementare hardware ………………………….. ………………………….. ………………… 47
6.1 Circuitul de alimentare ………………………….. ………………………….. ………………………….. …. 48
6.1.1 Sursa în comutație AC -DC………………………….. ………………………….. …………………… 48
6.1.2 Modul coborâtor de tensiune DC -DC ………………………….. ………………………….. ……. 49
6.2 Senzorii ………………………….. ………………………….. ………………………….. ………………………. 50
6.3 Dispozitivele de ieșire și control ………………………….. ………………………….. ………………… 52
6.4 Realizarea montajului ………………………….. ………………………….. ………………………….. …… 52
Capitolul 7: Implementare software ………………………….. ………………………….. …………………. 59
7.1 Mediul de programare Arduino IDE ………………………….. ………………………….. …………… 59
7.1.1 Limbajul folosit ………………………….. ………………………….. ………………………….. ……… 60
9
7.1.2 Bibliotecile folosite ………………………….. ………………………….. ………………………….. … 60
7.1.3 Structura programului ………………………….. ………………………….. …………………………. 60
Capitolul 8: Teste și rezultate ………………………….. ………………………….. ………………………….. 63
Concluzii ………………………….. ………………………….. ………………………….. ………………………….. 67
Concluzii generale, contribuții personale și îmbunătățiri ulterioare ………………………….. ….. 67
Bibliografie ………………………….. ………………………….. ………………………….. ………………………. 69
Anexa 1 ………………………….. ………………………….. ………………………….. ………………………….. .. 71
10
11
Lista acronimelor
AC – Alternating Current – curent alternativ
CISC – Complex Instruction Set Computer – microprocesor cu complex redus de instrucțiuni
CPU – Central Processing Unit – unitate centrală de procesare
DC – Direct Current – curent continuu
EEPROM – Electrically Erasable Programmable Read -Only Memory – memorie non -volatilă, ce
poate fi ștearsă p rin aplicarea unor tensiuni mari
I2C – Inter Integrated Circuits – tip de transmisie de date seriale între circuite digitale
LED – Light Emitting Diode – diodă emițătoare de lumină
MIPS – million instructions per second – milioane de instrcuțiune pe secun dă
PTC – Positive Temperature Coefficient – coeficient pozitiv de temperatură
PWM – Pulse Width Modulation – Modulație în lățime a impulsurilor
RAM – Random Access Memory – memorie cu acces aleator
RGB – Red Blue Green – modelul de culoare roșu -albastru -verde
RH – Relative Humidity – umiditate relativă
RISC – Reduced Instruction Set Computer – microprocesor cu set redus de instrucțiuni
ROM – Read -Only Memory – memorie ce poate fi doar citită
RTC – Real Time Clock – computer/circuit integrat ce poate urmăr i timpul real
SCK – Serial Clock – linie pentru transmiterea semnalului de ceas
SPI – Serial Peripheral Interface – interfață serială sincronă
SRAM – Static Random Access Memory – memorie cu acces aleator statică
TTL – Transistor – Transitor Logic – tehnologie în care operațiile logice se realizează cu ajutorul
tranzsitoarelor
TWI – Two Wire Interface – interfață serială cu două linii
UART – Universal Asynchronous Receiver/Transmiter – interfață pentru implementarea
comunicației seriale
UML – Unified Mode ling Language – limbaj universal de modelare
USB – Universal Serial Bus – magristrală serială universală
12
13
Lista figurilor
Figura 1.1 – Schema bloc ………………………….. ………………………….. ………………………….. ………………. 22
Figura 2.1 – Schema generală a unui microcontroler[2] ………………………….. ………………………….. … 23
Figura 2.2 – Placa de dezvoltare Arduino Uno ………………………….. ………………………….. ……………… 25
Figura 2.3 – Diiagrama ATmega328P [3] ………………………….. ………………………….. …………………….. 26
Figura 3.2 – Senzorul DHT21 (AM2301) ………………………….. ………………………….. …………………….. 29
Figura 3.3 – Eroarea umidității relative la 25℃ [7] ………………………….. ………………………….. ……….. 29
Figura 3.4 – Eroarea temperaturii [7] ………………………….. ………………………….. ………………………….. . 30
Figura 3.5 – Senzorul de umidita te a solului [8] ………………………….. ………………………….. ……………. 31
Figura 3.6 – Sensibilitatea diferitelor materiale [10] ………………………….. ………………………….. ……… 32
Figura 3.7 – Fotorezistorul [11] ………………………….. ………………………….. ………………………….. ………. 32
Figura 3.8 – Schema circuitului DS1307 [12] ………………………….. ………………………….. ………………. 33
Figura 3.9 – Diagrama bloc AT24C32 [13] ………………………….. ………………………….. ………………….. 34
Figura 4.1 – Elementul de încălzire PTC ………………………….. ………………………….. ……………………… 36
Figura 4.2 – Mecanismul de aerisire ………………………….. ………………………….. ………………………….. .. 36
Figura 4.3 – Bara cu leduri RGB [16] ………………………….. ………………………….. ………………………….. 37
Figura 4.4 – Pompa de apă ………………………….. ………………………….. ………………………….. …………….. 38
Figura 4.5 – Efectul Peltier [19] ………………………….. ………………………….. ………………………….. ……… 39
Figura 4.6 – Modulul Peltier ………………………….. ………………………….. ………………………….. ………….. 40
Figura 4.7 – Radiatorul pentru condensare ………………………….. ………………………….. …………………… 41
Figura 5.1 – Diagrama funcțională a interfe ței UART [21] ………………………….. …………………………. 43
Figura 5.2 – Structura unui pachet de date [21] ………………………….. ………………………….. …………….. 44
Figura 5.3 – Introducerea parametrilor ………………………….. ………………………….. ………………………… 44
Figura 5.4 – Introducerea parametrilor și răspunsul de confirmare ………………………….. ………………. 45
Figura 6.1 – Schema componentelor principale ………………………….. ………………………….. …………….. 47
Figura 6.2 – Sursa de alimentare ………………………….. ………………………….. ………………………….. …….. 49
Figura 6.3 – Modulul MP145EN ………………………….. ………………………….. ………………………….. ……. 49
Figura 6.4 – Schema elect rică a modului MP145EN [23] ………………………….. ………………………….. . 50
Figura 6.5 – Curba de eficiență [23] ………………………….. ………………………….. ………………………….. .. 50
Figura 6.6 – Protocolul single bus [7] ………………………….. ………………………….. ………………………….. 51
Figura 6.10 – Modulul cu relee ………………………….. ………………………….. ………………………….. ………. 52
Figura 6.11 – Incinta serei ………………………….. ………………………….. ………………………….. ……………… 53
Figura 6.12 – Instalația de irigare ………………………….. ………………………….. ………………………….. …… 53
Figura 6.13 – Amplasarea senzorului pentru umiditatea solului ………………………….. ………………….. 54
Figura 6.14 – Modulul DHT21 și fotor ezistorul ………………………….. ………………………….. ……………. 54
Figura 6.15 – Radiatorul pentru condesare și tava de colectare ………………………….. ……………………. 55
Figura 6.16 – Radiatorul exterior și ventilatorul ………………………….. ………………………….. ……………. 55
Figura 6.17 – Elementul de încălzire ………………………….. ………………………….. ………………………….. . 56
Figura 6.18 – Mecanismul pentru răcire și ventilare ………………………….. ………………………….. ……… 56
Figura 6.19 – Bara pentru iluminarea artificială ………………………….. ………………………….. ……………. 57
14
15
Figura 6.20 – Componentele exterioare ………………………….. ………………………….. ………………………. 57
Figura 7.1 Fereastra principală Arduino IDE ………………………….. ………………………….. ………………… 59
Figura 7.2 – Diagrama UML temperatură ………………………….. ………………………….. ……………………. 61
Figura 7.3 – Diagrama UML pentru umi ditatea aerului ………………………….. ………………………….. …. 61
Figura 7.4 – Controlul irigării solului ………………………….. ………………………….. ………………………….. 62
Figura 7.5 – Diagrama UML pentru controlul iluminării ………………………….. ………………………….. .. 62
Figura 8.1 – Parametrii setați ………………………….. ………………………….. ………………………….. …………. 63
Figura 8.2 – Răspunsul sistemului la evenimentul depășirii temperaturii ………………………….. ……… 63
Figura 8.3 – Plantele cultivate în luna aprilie ………………………….. ………………………….. ……………….. 64
Figura 8.4 – Starea actuală a plantelor (25.06.0218) ………………………….. ………………………….. ……… 64
Figura 8.5 – Starea actuală a plantelor – vedere laterală ………………………….. ………………………….. … 65
16
17
Lista tabelelor
Tabel ul 4.1 – Parametrii modulului Pelier [20] ………………………….. ………………………….. …………….. 40
Tabelul 6.1 – Conexiunile pinilor plăcuței Arduino ………………………….. ………………………….. ………. 48
Tabelul 6.2 – Legenda grupurilor de biți [7] ……………………………………………………. …………………… .51
18
19
Introducere
Cultivarea plantelor a fost un proces deosebit de important pentru om încă din cele mai
vechi timpuri, deoarece acestea constituie una dintre principalele surse de hrană. Folosindu -și
inteligența și cap acitatea de inovație, ca în orice domeniu, omul a căutat să aducă îmbunătățiri
acest ui proces și să își ușureze munca.
Din cauza condițiilor climatice neprielnice , multe plante au un proces îngreunat de creștere .
S-a căutat, astfel, o soluție pentru izola rea plantelor de mediul exterior și creare a unui mediu
adecvat fiecărui tip de plantă.
Prima seră a fost construită în jurul anilor 30 d Hs. la Roma, atunci când împăratul Tiberius
s-a îmbolnăvit și i -a fost recomandat de doctori să mănânce câte un castrave te în fiecare zi.
Deoarece, în mod evident, nu își putea procura castraveți în toate anotimpurile, a ordon at
construirea unei camere cu acoperiș transparent ce permitea razelor solare să pătrundă în interior.
Încălzirea se făcea prin pereții de piatră, la exteriorul acestor a fiind menținut un foc continuu . [1]
Tehnologia pentru creșterea plantelor în sere a avansat considerabil de la sera romanilor dar
conceptul a rămas același – izolarea față de condițiile nefavorabile exterioare și crearea unor
condiții de mediu optime în interiorul acesteia. În prezent, serele sunt construite dintr -un cadru
rezistent ( de obicei din metal sau lemn) pe care este montat un înveliș transparent (sticlă, plastic sau
alte materiale) ce permite luminii naturale să pătrundă în in terior.
Construcția transparentă rezolvă, în cea mai mare parte problema iluminării însă , rămâne, în
continuare , cea a controlului celorlalți parametrii (umiditate, tempe ratură, etc) . Acești parametrii
sunt controlați si adaptați subiectiv de către agricul tori, aceștia bazându -se pe propriile simțuri. De
multe ori, procesul de creștere a plantelor este afectat de aceste măsurători imprecise și, mai ales, de
timpu l mare de reacție a omului.
În zilele noastre, este binecunoscut faptul că lumea se confruntă cu deficitul de hrană,
schimbări și fenomene climatice extreme ce împiedică sau îngreunează semnificativ dezvoltarea
plantelor.
Progresul tehnologic din ultima perioadă, dezvoltarea diferitelor tipuri de senzori și, în
special, micșorarea costurilor acestor a a făcut ușurat semnificativ accesul la diferite tehnologii
inteligente.
În acest context, am decis să realizez un sistem autonom, compus din senzori,
microcontroler și alte elemente mecanice pentru urmărirea și ajustarea parametrilor din sere.
Mi-am prop us să realizez un sistem în cadrul căruia utilizatorul obișnuit, cu minime
cunoștințe în domeniul IT să poată seta ușor parametrii corespunzători fiecărui soi de plantă. Un
astfel de sistem trebuie să fie autonom, să necesite intervenția utilizatorului câ t mai puțin posibil și
să poată fi adaptat în funcție de dimensiunile serei.
Pentru a folosi sistemul prezentat, utilizatorul setează, la început, parametrii doriți apoi
microco ntrolerul va acționa dispozitivele periferice în scopul menținerii parametrilor impuși în
limitele dorite. Sistemul poate detecta și controla temperatura, cantitatea de lumină, umiditatea
solului și a aerului. Utilizatorul va putea, de asemenea, să urmărească, în scopul optimizării
procesului de creștere, evoluția sistemului în timp, condițiile detectate , acțiunile pe care s istemul le –
a întreprins automat și localizarea temporală
20
Capitolele următoare prezintă aspecte teoretice legate de platforma de dezvoltare,
microcontroler, senzori și dispozitive per iferice dar și aspecte practice legate de realizarea schemei
electrice și a montajului propriu zis.
În această lucrare, este prezentată, de asemenea, implentarea software ce constă în realizarea
codului pentru programarea microcontrolerului , prin intermediul unei platformei de dezvoltar e, în
vederea prelucrării informațiilor introduse de utilizator , a datelor primite de la senzori și controlul
celorlalte dispozitive pe baza interpretării acestora.
21
Capitolul 1: Conceptul și importanța aplicației
Sistemul preze ntat este compus dintr -o incintă închisă cu pereți transparenți , senzori pentru
măsurarea diverșilor parametrii (lumină, temperatură, umiditate) microcontroler pentru citirea și
interpretarea datelor primite de la senzori și dispozitive periferice pentru c ontrol (pompă de apă,
element de încălzire, servomotor, etc ).
Un astfel de sistem de automatizare are numeroase aplicații, putând fi folosit atât la nivel
industrial cât și casnic. S e poate adapta ușor la sere de orice dimensiune, principiu l de funcționare
este același, diferind numai dimensiunea dispozitivelor periferice.
În cadrul acestei lucrări , se vor descrie etapele de proiectare și de realizare a unei mini sere
inteligente, capabilă să detecteze și să adapteze parametrii precum temperatura și umidita tea aerului,
nivelul de luminozitate și umiditatea solului . Utilizatorul setează parametrii doriți (în funcție de
condițiile de creștere ale plantelor cultivate , cunoscute din literatura de specialitate ) iar sistemul
monitorizează și adaptează în permanenț ă condițiile de mediu din interiorul serei. Odată ce
parametrii sunt setați, sistemul funcționează independent. Pentru monitorizare și statistică, sistemul
dispune și de un m odul cu ceas pentru timp real.
Pentru implementarea tuturor funcțiilor enumerate mai sus, sistemul va avea următoarele
componente:
1. Plăcuță cu microcontroler;
2. Modul cu senzori pentru măsurarea temperaturii și a umidității aerului;
3. Senzor pentru măsurarea umidității solului;
4. Fotorezistor;
5. Modul ceas timp real;
6. Modul cu relee ;
7. Bară cu leduri;
8. Pompă pentru apă;
9. Element rezistiv pentru încălzire;
10. Element Peltier pentru dezumidificare;
11. Ventilator;
12. Servomotor;
13. Sursă de tensiune;
14. Modul coborâtor de tensiune.
Schema bloc din figura 1. 1 prezintă modul de conectare a componentelor sistemului.
22
Figura 1.1 – Schema bloc
23
Capitolul 2: Microcontroler – noțiuni generale și model folosit
2.1 Noțiuni generale
Un microcon troler, se poate defini ca un sistem ce înglobează toate componentele necesare
pentru a funcționa independent, fiind creat pentru a monitoriza și/sau cont rola diverse sarcini.
Primele modele aveau dimensiuni și consumuri mari de energie, motive pentru care nu se puteau
integra ușor într -o gamă largă de aplicații.
Odată cu dezvoltarea tehnologiei și apariția microprocesoarelor de uz general, principalele
dezavantaje enumerate mai sus s -au dimin uat semnificativ. După un îndelung proces de dezvoltare
și miniaturizare, s -a ajuns la integrarea microcont rolerelor pe un singur microcircuit.
Principalele componente ale unui microcont roler sunt procesorul, memoria, porturile de
intrare/ieșire. De obicei, conține și un numărător, convertoare analog -digitale și controler pentru
întreruperi. Toate aceste componente se conectează între ele prin intermediul unei magistrale. [2]
În figura 2.1 se poate observa schema genera lă a unui microcontroler.
Figura 1.1 – Schema generală a unui microcontroler [2]
În funcție de aplicațiile în care este folosit, microcontrolerul poate avea procesor (CPU) pe 8
biți, 16 biți, 32 biți sau 64 b iți, în funcție de complexitatea operațiilor efectuate.
Transferul datelor între procesor și periferice se realizează prin intermediul magistra lelor de
date. Din acest punct de vedere, microcontrolere se împart în două categorii: microcontrolere cu
arhitectură Von Neumannn și microcontrolere cu arhitectură Harvad.
La arhitectura Von Neumann este folosită o singură magistrală atât pentru date cât și pentru
instrucțiuni, ceea ce înseamnă că aceste operații se vor realiza pe rând, implicând, în mod evident,
un timp mai mare d e calcul.
Microcontrolerele cu arhitectură Harvard dispun de două magistrale separate , pentru date,
respectiv pentru instrucțiuni . Se permite, astfel, transferul simultan de date și instrucțiuni,
conducând la un timp de calcul mai mic. Singurul dezavantaj al acestei arhitecturi poate fi
considerat cel al creșterii numărului de componente. [2]
Setul de instrucțiuni reprezintă o altă caracteristică importantă a unui procesor. Acesta
influențează dimensiunea codului și spațiul de memorie ocupat de acesta.
24
Din punct de vedere al complexit ății setului de instrucțiuni, microprocesoarele se împart în
două mari categorii:
I. RISC – Reduced Instruction Set Computer – microprocesoare cu set redus de instrucțiuni, ce
conțin, în mod uzual 30 de instrucțiuni și au între 3 și 5 moduri de adresare a datelor în
memorie. Fiecare instrucțiune din setul RISC durează un singur ciclu de ceas.
II. CISC – Complex Instruction Set Computer – microprocesoare cu set complex de
instrucțiuni, cu multiple moduri de adresare (12 -24) și circa 8 0 de instrucțiuni. Instrucțiunile
acestor microprocesoare pot dura mai multe cicluri de ceas.
În prezent, nu mai există o diferențiere clară a microprocesoarelor din punctul de vedere al
setului de instrucțiuni, arhitectura RISC a avansat, mărindu -și semni ficativ numărul de instrucțiuni.
Prin mod de adresare se în țelege felul în care se obține adresa la care procesorul găsește un
operand în memorie.
În structura unui microcontroler se găsește și o memorie ce se poate organiza în registre
(memorie de mici dimensiuni inclusă in microprocesor), memorie de date (de obicei în afara
microprocesorului) și memorie pentru instrucțiuni (la arhitectura Von -Neumann aceasta este aceeași
cu memoria de date ).
Uzual, microcontrolere le dispun de o memorie volatilă de tip RAM și de o memorie non-
volatilă, ROM. Capacitatea de stocare a acestor memorii este limitată, însă datorită ariei specifice
de utilizare a microcontrolerelor, aceastea efectuând sarcini simple de cele mai multe ori, acest
inconvenient poate fi depășit pri n folosirea unui număr redus de instrucțiuni . [2]
2.2 ATmega328P
În această lucrare, am folosit plăcuța de dezvoltare Arduino Uno, care are la bază
microcont rolerul A Tmega 328P produs de Microchip. Acest microcontroler pe 8 biți are o
arhitectură de tip RI SC avansată, conținând 131 de instrucțiuni, majoritatea executându -se într -un
singur ciclu de ceas, 32 de registre de uz general, fiecare cu o capacitate de 8 biți și poate executa
până la 20 MIPS la frecvența de 20 MHz.
Din punctul de vedere al memoriei , microcontrolerul ATmega328P , dispune de o memorie
flash cu o capacitate de 32 kOcteți , memorie SRAM de 2 kOcteți și memorie EEPROM de 1
kOcteți . Din memoria flash, bootloader -ul ocupă 8 kOcteți, restul fiind disponibil pentru program.
Toate aces te segmen te de memorie sunt non -volatile, producătorul garantând o perioadă de stocare
de până la 100 de ani, în condiții optime de temperatură (25℃).
Microcontrolerul are 14 pini digitali de intrare/ieșire , dintre care 6 au ieșire PWM, 8 intrări
analogice, oscilat or la 16 MHz, interfețe TWI, SPI și UART. Nivelul logic de tensiu ne pentru acești
pini este 5V.
Pentru a transmite date prin interfața serială TTL se folosesc pinii 0 și 1 (Rx, respectiv Tx).
Pinii 2 și 3 se pot folosi ca întreurperi externe, pinii 3, 5, 6 , 9, 10, 11 se pot folosi ca ieșiri PWM
(rezoluția lor este de 8 biți). Pentru interfața SPI sunt folosiți pinii 10 (SS), 11 (MOSI), 12 (MISO)
și 13 (SCK). Cele 6 intrări analogice sunt marcate de la A0 la A5, fiecare având rezoluție de 10 biți.
Referința de tensiune este , în mod uzual 5V, dar se folosi o refe rință externă, de la pinul AREF.
Pentru interfața TWI se folosesc pinii A4 și A5 (SDA, respectiv SCL) . [3]
25
2.3 Plăcuța de dezvoltare Arduino Uno
În cadrul prezentei lucrări, am folosit platforma de dezvoltare Arduino și plăcuța Arduino
Uno, bazată pe microcontrolerul ATmega328P , prezentat anterior.
Arduino este o platformă de dezvoltare hardware și software de tip sursă -deschisă (open
source ). Cu ajutorul Arduino IDE microcontrolere le se pot programa ușor, în limbajul C++,
mulțumită bibliotec ilor (detaliate în capitolul 6).
Plăcuțele Arduino se pot achiziționa direct, gata asamb late, la un preț accesibil. Ace stea se
conectează la computer prin interfața USB, și se programează folosind mediul de dezvolt are amintit
mai sus (Arduino IDE). Principalul avantaj al platformei Arduino îl reprezintă comunitatea creată î n
jurul acesteia, fiecare utilizator poate crea și adăuga bibliteci și funcții noi.
Arduino IDE ( Arduino Integrated Developement Environment) dispune de un editor text
pentru scrierea codului, zonă pentru mesaje, consolă text și numeroase alte funcționalități.
În contextul actual, producătorii diverselor module electronice dezvoltă biblioteci pentru
aceastea, ușurând semn ificativ munca programatoru lui.
Am ales folosirea plăcuței Arduino în această lucrare pentru a demonstra posibilitatea
realizării unui sistem automat pentru sere și menținerea unor costuri cât mai reduse, pentru a putea
fi accesibil oricărui utilizator. Plăcuțele Arduino au un cost de achiziție mi c și nu necesită
cunoștințe ava nsate de programare – se evită even tualele costuri cu resursele umane.
În Figura 2.2 este prezentată plăcuța Arduino Uno
Figura 2.2 – Placa de dezvoltare Arduino Uno
În figura 2.3 este prezentată diagrama microcontrolerului ATmega328P amplasat pe plăcuța
Arduino.
26
Figura 2.3 – Diagrama ATmega328P [3]
Tensiunea de funcționare a plăcuței este de 5V. Se poate alimenta prin USB, prin conectorul
jack sau la pinul VIN, cu tensiuni între 7V și 12V (mulțumită stabi lizatorului de tensiune).
Alimentarea se poate face, de asemenea, și la pinii marcați cu 5V sau 3.3V, cu tensiunile
corespunzătoare. În acest proiect, alimentarea plăcuței se face de la un modul coborâtor de tensiune,
conectat la pinul 5V.
27
Capi tolul 3: Dispozitive de intrare
3.1 Senzori – tipuri și principii de funcționare
3.1.1 Noțiuni generale despre senzor i
Termenul „senzor” a apărut în literatura de specialitate în a doua parte a anilor ’70, odată cu
dezvoltarea microcontrolerelor și a micro procesoarelor. De multe ori, acest termen este folosit
alături de termenul „traductor” – dispozitiv care convertește efectele fizice în semnale electrice ce
pot fi prelucrate ulterior, de către instrumentele de măsură sau de către computer e.
În domeniul di spozitivelor electro -optice se utilizează termenul „detector”, în timp ce
traductoarele introduse în fluide sunt denumite „probe”.
Senzorul nu are o definiție unanim acceptată. Denumirea sa provine din cuvântul latin
„sensus” care se traduce ca „simț”, fol osit pentru a desemna capacitatea oamenilor și a organismelor
vii de a culege informații din mediul înco njurător și de a le transforma în impulsuri electrice ce vor
fi transmise creierului. Acest model se regăsește în mare parte în sistemele mecatronice , mărimile
fizice neelectrice sunt convertite în semnale electrice. [4]
Struct ura general ă a unui senzor se poate observa în figura 3.1 de mai jos.
Figura 2.1 Structura unui senzor [3]
În prezent, există senzori pentru măsurarea a peste 100 mărimi fizice, iar dacă se consideră
și senzorii pentru anumite substanțe chimice, ordinul este de câteva sute.
Deoarece există numeroase criterii de clasificare a senzorilor, vom pune în evidență doar
câteva dintre acestea, pe cele mai importan te în realizarea prezentei lucrări:
I. După natura mărimii detectate, deosebim senzori de temperatură, de lumină, de
umiditate, de forță, etc;
II. După tipul simțului uman pe îl înlocuiesc, se pot deosebi senzori tactili, acustici,
olfactivi și vizuali;
III. După tipu l mărimii de ieșire, identificăm senzor i analogici, la care semnalul de ieșire
este proporțional cu mărimea fizică de intrare, și senzori digitali (numerici) la care
28
semnalul de ieșire poate lua un număr limitat de valori discrete, permițând
cuantificarea semnalului fizic de intrare;
IV. Din punct de vedere energetic, se deosebesc două tipuri: senzori pasivi, la care
semnalul de ieșire este produs cu ajutorul unei surse externe de energie, și senzori
activi, la care semnalul de ieșire are asociată energia prelu ată de la semna lul de
intrare, nefiind nevoie de o sursă externă de energie.
Pentru urmărirea parametrilor dintr -un anumit mediu, se folosesc mai mulți senzori ce
constituie un sistem complex de măsurare, denumit sistem multisenzorial. [4]
3.1.2 Modul pen tru măsurarea temperaturii și a umidității
Prin umiditate înțelegem prezența vaporilor de apă în aer. Cantitatea vaporilor de apă din aer
reprezintă un parametru esențial în procesul de creștere a plantelor.
Măsurarea umidității ambientale presupune det erminarea cantității de vapori de apă prezentă
într-un mediu gazos. Se pot determina atât cantitățile de vapori dintr -un gaz pur cât și dintr -un
amestec, cum este aerul. [5]
Pentru a indica nivelul umidității sunt folosiți mai mulți termeni și unități de măsură. Printre
cele mai utilizate unități de măsură putem enumera:
1. Umiditatea absolută, măsurată în grame/m3, ce reprezintă masa vaporilor de apă raportată la
volumul mediului în care se efectuează măsurătorile;
2. Umiditatea relativă, măsurată în procente, ce reprezintă raportul dintre presiune parțială a
vaporilor de apă și presiunea de saturație. Prin stare de saturație înțelegem stare a în care cele
două presiuni sunt egale, iar umiditatea are valoare maximă, de 100%.
3. Punctul de evaporare/îngheț, măsurat în grade Celsius, reprezintă o funcție presiune a
gazului, independentă de temperatură. [6]
Senzorii pentru măsurarea umidității se pot împărți în două categorii, în funcție de
tehnologia utilizată:
A. Senzori care au la bază efectul capacitiv – sunt formați dintr -un material dielectric
higroscoopic, poziționat între doi electrozi. Aceste elemente formează un conde nsator a
cărui capacitate crește odată cu absor bția vaporilor de apă din aer.
B. Senzori ce se bazează pe efectul rezistiv – aceștia identifică modif icările rezistenței unui
electrod. De obicei, electrodul este format dintr -un metal prețios (spre exemplu Aur),
depus într -un strat subțire pe un polimer.
În cadrul acestei aplicații, se va folosi modelul DHT21, cunoscut și sub numele AM2301,
produs de co mpania Aosong. Acesta are la bază un senzor capacitiv cu ajutorul căruia se poate
determina umiditatea relativă și un senzor de temperatură.
În Figura 3.2 este prezentat modulul AM2301 .
29
Figura 3.2 – Senzorul DHT21 (AM2301)
Senzorul poate măsura valori ale umidității relative cuprinse între 0 și 99.9%, cu o rezoluție
de 0.1% și o acuratețe uzuală de +/ – 3%, conform graficului de mai jos. Senzorul are o abatere
maximă de 0.5% RH pe an.
Timpul de răspuns al senzorului este de maxim 6 secunde și corespund e cerințelor
sistemului realizat în prezenta lucrare.
Figura 3.3 – Eroarea umidității relative la 25℃ [7]
Senzorul DHT21 poate măsura temperaturi cu valori cuprinse între -40℃ și 80 ℃. Acesta
are o precizie uzuală de +/ -0.3℃ și o rezoluție de 0.1 ℃. Eroarea maximă de măsurare este +/ -1℃
în extremele intervalului de măsurare și este detaliată în figura 3.4
30
Figura 3.4 – Eroarea temperaturii [7]
Modulul AM2301 are la bază un microcontroler pe 8 biți și senzorul DHT21. Interfața
acestuia este de tip single bus . Tensiunea de alimentare a modulului este cuprinsă între 3.3V și
5.2V. În acest proiect, este alimentat cu o tensiune de 5V. Curentul maxim consumat este 500µA, la
măsurare și 15µA în modul economisire energie.
În capitolul 6 ste prezentat modul de conectare dintre senzor și plăcuța Arduino.
3.1.3 Senzor pentru măsurarea umidității solului
În procesul de creștere a plantelor, un alt factor deosebit de important este reprezentat de
umiditatea solului. Pentru monitorizarea și controlul acesteia, v om folosi, în ace astă lucrare un
senzor rezistiv și o instalație de irigare.
Senzorul pentru măsurarea umidității solului dispune de doi electrozi metalici ce se introduc
direct în sol. Este binecun oscut faptul că solul își modifică rezistența în funcție d e cantitatea de apă
prezentă în acesta. Astfel, odată cu creșterea cantității d e apă, rezistența solului va scade (curentul
electric va înt âmpina mai puțină rezistență la parcurgerea distanței dintre cei doi electrozi metalici ).
Tensiunea de alimentare la care acest sen zor poate fi folosit este cuprinsă între 3.3V și 5V.
Este prevăzut atât cu o ieșire analogică, cât și cu una digitală (care folosește comparatorul LM393) .
Ieșirea analogică va oferi o tensiune între 0 și 4.2V (cu cât umiditatea dintre cei doi electrozi
este mai mare cu atât tensiune a va fi mai mare), iar curentul consumat va fi de aproximativ 35 mA.
[8]
În Figura 3.5 este prezentat senzorul de umiditate a solului FC -28.
31
Figura 3.5 – Senzorul de umiditate a solului [8]
În această lucrare, senzorul este folosit în modul analogic. Aceasta oferă o ieșire cuprinsă
între valorile 0 și 1023, ce va fi raportată la intervalul 0 -100% pentru determinarea umidității solului
în procente. În capitolul 6 se va prezenta detaliat schema și modul de conecta re al senzorului la
plăcuța Arduino Uno.
3.1.4 Fotorezistor
Cantitatea de lumină este un factor deosebit de important pentru creșterea plantelor. Aceasta
are o importanță majoră, fiind direct implicată în procesul de fotosinteză. Pentru a măsura nivelul d e
intensitate luminoasă , în scopul menținerii sale la un nivel optim, am folosit, în această lucrare, un
fotorezistor.
Denumirea sa este intuitivă – acest senzor are la bază un rezistor a cărui rezistență este
dependentă de nivelul de lumină la care este e xpus. Valo area rezistenței scade pe măsură ce nivelul
de lumină crește, făcând u-se, astfel o conversie a energiei lumino ase în energie electrică.
Fotorezistorii sunt realizaț i, în general, din sulfat de cadmiu combinat uneori cu alte
impurități, în scopu l detecției nivelelor scăzute ale inte nsității luminoase. Principalul avantaj al
folosirii sulfatului de cadmiu este acela că are un răspuns foarte bun în spectrul de lumină cu
lungimile de undă 560 -600 nm, lumina vizibilă ochiului uman. [9]
În graficul d in figura 3.6 se poate observa variația sensibilității diferitelor materiale din care
pot fi construiți fotorezistorii , în funcție de lungimea de undă.
32
Figura 3.6 – Sensibilitatea diferitelor material e [10]
În această aplicație am folosit fotorezistorul GL5528 produs de firma Lida
Optical&Electronic Co. LTD. Aceasta are, conf orm specificațiilor producătorului o rezistență de
1MΩ în absența luminii și de cca 8 -20kΩ la cel mai ridicat nivel de lumină și poate funcționa în
parametrii normali între temperatu rile -60℃ și 70 ℃.[11] Aceste caracteristici îl fac potrivit pentru
aplicația prezentată.
În figura 3.7 este prezentat fotorezistorul folosit. Aceasta are o capsulă de sili ciu, pentru
protecția împo triva umidității.
Figura 3.7 – Fotorezistorul [11]
33
3.1 Modul pentru ceas de timp real
3.2.1 Noțiuni generale
Un modul cu ceas pentru timp real, denumit și modul RTC ( Real Time Clock ), după cum îî
spune și numele, este un dispozitiv cu ajutorul căruia se pot monitoriza parametrii sistemului în
funcție de timp. Majoritatea microcontrolerelor au un ceas intern care, însă se resetează la
întreruperea alimentării, făcând, astfel imposibil de monitorizat sistemul pe peri oade mari de timp.
Modulele cu ceas pentru timp real au un acumulator sau o baterie , ca me todă de alimentare
de rezervă. Aceste module au, de obicei, un consum redus de energie și pot funcționa cu
alimentarea de rezervă pentru perioade mari de timp, de ordinul lunilor sau al anilor.
În această lucrare se va folosi un astfel de modul în scop st atistic, utilizatorul va putea
analiza parametrii serei pe to t parcursul procesului de creștere a plantelor.
Comunicația cu m icrocontrolerul se realizează prin interfața I2C.
3.2.1 Modu lul DS1307
În realizarea aplicaț iei, am folosit modulul DS1307 ce are la bază circuitul integrat cu
același nume , produs de Maxim Integrated și o memorie de 32 biți de tip EEPROM, modelul
AT24C32, produs de Atmel.
Circuitul DS1307 oferă ora exactă, în format AM sau PM (minute, secunde) și data
completă. Data este ajustată automat pentru lunile cu mai puțin de 31 de zile și pentru anii bisecți.
Comutarea alimentării se face automat, atunci când se întrerupe alimentarea principală,
modulul folosește acumulatorul.
Schema circuitului DS1307 este prezentată în figura 3.8.
Figura 3.8 – Schema circuitului DS1307 [12]
34
Interfața modulului DS1307 este de tip I2C. Acesta funcționează ca un dispozitiv slave ,
accesul făcându -se prin trimiterea unei come nzi de început de către microcontroler.
Modulul folosește un oscilator cu cri stal, ce are o frecvență de 32.768 kHz. Acuratețea
ceasului depinde de acesta, existând mici variații cu temperatura.
Modulul de memorie EEPROM AT24C32 poate memora date și are, de asemenea interfață
I2C pentru comunicație. Acesta este util în realizarea diferitelor rapoarte și statistici.
În figura 3.9 este prezentată diagrama bloc a modulului AT24C32.
Figura 3.9 – Diagrama bloc AT24C32 [13]
35
Capitolul 4: Dispozitive de ieșire și control
4.1 Controlul temperaturii
4.1.1 Noțiuni generale
Temperatura ambientală este un factor decisiv în procesul de creștere și dezvoltare a
plantelor . Atât valoarea temperaturii cât și menținerea unui nivel constant al acesteia reprezintă un
aspect deosebit de important , deoarece variațiile bruște ale tempera turii pot afecta în mod ireversibil
plantele.
În agricultura convențională, serele captează nu numai lumina solară ci și căldura acestuia,
pe timpul ziei. Este necesară instalarea unui sistem de încălzire sau răcire pentru a fi menținută o
temperatură con stantă indiferent de condițiile exterioare.
Un alt aspect demn de luat în seam ă este ventilația serei, plant ele consumând dioxidul de
carbon în procesul de fotosinteză. Astfel, este necesară împrospătarea aerului, aspect care poate
pune în dificultate men ținerea constată a temperaturii dacă nu există o instalație special creată în
acest sens.
Sistemul pentru controlul temperaturii, propus în această aplicație, este format din trei
elemente principale: senzorul de temperatură prezentat în capitolele anteri oare, un modul rezistiv
pentru încălzire și un servomotor ce acționează o trapă, pentru răcirea și împrospătarea aerului.
4.1.2 Element de încălzire PTC
În realizarea prezentei aplicații, pentru încălzirea serei, am folosit un element rezistiv pentru
încălzire, de tip PTC ( Pozitive Temperature Coefficient ).
Elementele de încălzire de tip PTC au ca principal avantaj faptul că își pot menține
temperatura constantă, fără a fi necesar controlul cu alte dispozitive exterioare. Acest fenomen este
posibil mulțu mită procesului de mărire exponențială a rezistenței, odată cu creșterea temperaturii.
Pentru construcția acestor elemente este folosit, uzual, un material siliconic. Temperatura de
încălzire diferă în funcție de tipul materialului folosit. După creșterea exponențială a rezist enței și
atingerea temperaturii, materialul acționează ca un izolator, întrerupând alimentarea, asemenea unui
termostat. [14]
Elementul folosit în aplicația prezentată se alimentează la o tensiune de 12V și are o
temperatură de funcți onare de 60 ℃. Puterea acestuia este cuprinsă între 2 și 8 Watti.
Pentru disiparea optimă a căldurii, am folosit două radiatoare din aluminiu, dispuse de o
parte și de alta a elementului de încălzire. Transferul de căldură dintre elemnt și radiatoare se
realizează cu un randament ridicat mulțumită adezivului termoconductor.
În această aplicație, modulul va porni la comanda microcontrolerului și va fi menținu t activ
până la atingerea tempera turii dorite în seră.
În figura 4.1 este prezentat elementul PTC.
36
Figura 4.1 – Elementul de încălzire PTC
4.1.3 Răcire și ventilare
Procesul de răcire și ventilare al serei prezentate în aplicația curentă a fost inspirat din
modelul clasic de proiectare a serelor. De obicei, serele au diferite trape pentru aerisire ș i răcire,
acestea fiind acționate manual de agricultori.
Pentru automatizarea procesului, în prezenta aplicație am construit o trapă amplasată în
partea superioară a serei (pentru a permite aerului cald să iasă ) ce este acționată de un servomotor.
Aceasta se va deschide automat dacă temperatura interioară depășește un anumit prag prestabilit dar
și periodic, pentru a împrospăta aerul din incintă. S-a demonstrat că împrospătarea aerului de cel
puțin două ori pe oră are un efect benefic în procesul de crește re a plantelor. [15]
Conform foii de catalog, se rvomotorul folosit are o t ensiune de alimentare de 5V, un cuplu
maxim de 1.8 kg×cm. Acesta se controleaz ă prin PWM. În capitolul 6 este prezentat modul de
conectare la plăcuța Arduino și modul de alimentare.
În figura 4.2 este pre zentat mecanismul de aerisire a serei.
Figura 4.2 – Mecanismul de aerisire
37
4.2 Iluminarea artificială
4.2.1 Noțiuni generale
Este binecunoscut faptul că plantele au nevoie de lumină pentru realizarea procesului de
fotosinteză, creștere și dezvoltare, însă t rebuie să acordăm atenție fiecărui parametru al luminii
(lungime de undă, intensitate și durată) deoarece fiecare plantă, în funcție de soiul din care face
parte, se comportă diferit la modificările luminii.
Fotosinteza este procesul în care plantele asimilează carbohidrații din dioxidul de carbon și
din apă, folosind lumina ca sursă de energie. Este, așadar, un proces de transfer de energie.
Carbohid rații constituie o sursă de energie stocată de plante, ce poate fi mutată în diversele părți ale
acesteia, în funcție locul procesului de creștere ( corp, fruct, frunze, etc.).
S-a demonstrat că plantele se dezvoltă cel mai bine dacă sunt expuse la o lumină cu lungime
de undă cuprinsă între 400 nm și 700 nm, spectru pe care îl poat e detecta și ochiul uman. Lumina
soarelui, conține tot spectrul de culori, însă este percepută de ochiul uman ca o lumină albă. [15]
Sistemul de iluminare folosit în aplicația prezentată este alcătuit din senzor ul de lumină
prezentat anterior și un modul cu leduri RGB, detaliat în secțiunea următoare.
4.2.2 Bara de leduri RGB
Iluminarea serelor cu leduri a devenit un proces din ce în ce mai des utilizat de agricultori,
mulțumită consumului redus de energie, cantității de căldură emise semnificativ mai mic i decât cea
a becurilor clasice și, nu în ultimul rând, spectrului larg de culori care se poate obține .
Pentru iluminarea serei realizate în aplicația curentă, am ales să folosesc o bară cu leduri
RGB. Aceasta dispune de 8 leduri de tipul WS2812, adresabi li individual , ce pot fi controlați
independent. Principalul avantaj al iluminării cu leduri RGB este acela că se poate obține lumină cu
orice lungimi de undă din spectrul vizibil ochiului umad . Culoarea luminii este aleasă de utilizator,
putând fi configu rată după cerințele plantelor cultivate.
Bara de leduri dispune de 8 leduri WS2812. Acestea sunt de tip 5050 (dimensiunea fiecărui
este 5mm x 5mm).
În figura 4.3 este prezentată bara cu cele 8 leduri .
Figura 4.3 – Bara cu leduri RGB [16]
38
Leduri le folosite în aplicația prezentată permit tensiuni de alimentare cu valori între 5V și
7V. În montajul realizat, leduri le se alimentează cu tensiune de 5V.
Soluția aleasă permite adaptarea la scară industrială, putând fi înlănțuite mai multe module
de acest tip.
În capitolul 6 este prezentat modul de conectare și contr ol al modulului cu leduri RGB.
4.3 Irigarea solului prin picurare
4.3.1 Aspecte generale
În ultimii ani, sistemul de irigare a solului din serele pentru plante a evoluat semnificativ,
odată cu apariția sistemelor de irigare prin picurare. Principalele avanaje ale irigării prin picurare
sunt utilizarea eficientă a apei – în spațiile mari se irigă doar porțiunile dorite, asigurarea unei
umidități constate a solului, fără variații mari, nu influen țează umiditatea relativă a aerului (aspect
deosbit de important în aplicația curentă), evitarea contactului apei cu frunzele plantei – eventualele
tratam ente aplicate plantelor nu sunt îndepărtate prematur prin spălare, prelungind, astfel dura ta
tratament ului, conducând la micșorarea frecvenței aplicării acestora . [17]
Principalele elemente ale unei instalații de irigare prin picurare sunt: pompa de apă,
elementul f iltrant și o conductă de apă perforată la anumite distanțe prestabilite.
4.3.2 Instalația realizată
Aplicația realizată în acest proiect are la bază o pompă pentru apă ce funcționează la
tensi une de 12V, furtun transparent perforat și un rezervor pentru apă. Principiul de funcț ionare a
sistemului este simplu: microcontrolerul comandă pornirea sau oprirea pompei în funcție de
informațiile primite de la senzorul ce măsoară umiditatea din sol și în funcție de parametrii setați de
utilizator.
În figura 4.4 este prezentată pompa de apă.
Figura 4.4 – Pompa de apă
Pompa de apă folosită în aplicație funcționează la tensiune de 12V, fiind folosită, în mod
normal la automobile. Am ales această pompă pentru fiabilitatea crescută. Are un debit măsurat
experimental de 3l/minut și este controlată de microcontroler prin inte rmediul unui releu.
Furtnul folosit are diametrul de 8mm și este perforat în zonele în care este montat pe solul
serei.
39
4.4 Controlul umidității aerului
4.4.1 Principiul de funcționare
În această aplicație, pentru scăderea umiditații ambientale, am folosi t principiul condensării
pe un corp rece.
În 1978, Chasseriaux a încercat dezumidficarea unei sere de trandafiri cu o supr afață de
3000m2. Sistemul era capabil să elimine o cantitate de 5l de apă pe oră, folosind o putere electrică
de 2-5kW.
În 2002, fol osind un sistem de țevi răcite forțat , Campen & Bot au făcut un alt experiment
prin care au demonstrat că procentul căldurii latente (absorbită în procesul de răcire) este de mai
puțin de 50% din totalul căldurii extrase din seră . Astfel, căldura totală el iminată din seră este de
două ori mai mare decât cea necesară în procesul de condensare. Totuși, grație tehnologiei moderne,
folosind o pompă de căldură, se poate introduce din nou în seră căldura eliberată în urma procesului
de dezumidificare, astfel încâ t această metodă să ofere rezultate optime.
Formula pentru căldura latentă, la o diferență 10 K dintre aerul din seră și corpul rece este
următoarea:
𝑄𝑙𝑎𝑡𝑒𝑛 ă=8×10−3𝑈𝑟𝑒𝑙𝑎𝑡𝑖𝑣 ă−0.36
unde 𝑈𝑟𝑒𝑙𝑎𝑡𝑖𝑣 ă umiditatea re lativă exprima tă în procente. [18]
4.4.2 Elementul Peltier
Pentru creare elementului rece din interiorul serei, în aplicația practică, am folosit un modul
termoelectric Peltier. Acesta are la bază fenomenul căruia îi poartă numele: energia termică poate fi
absorbită d e unul dintre metalele dintr -o joncțiune și transferată celuilalt metal atunci când circulă
un curent electric prin circuit.
În figura 4.5 este prezentată schema efectului Peltier.
Figura 4.5 – Efectul Peltier [19]
40
În figura de mai sus, la aplicarea te nsiunii E in între cele două terminale, T 1 și T 2, un curent I
va trece prin circuit. Ca rezultat, se obține un efect de răcire, căldura Q c fiind absorbită de
joncțiunea A, iar la joncțiunea B se obține un efect de încălzire, unde este degajată cantitatea de
căldură Q h. Inevitabil, apare efectul de încălzire, din cauza trecerii curentului electric prin metale ,
cu o mărime de 𝐼2×𝑅, unde R este rezistența electrică . Acest efect acționează contrar efectului
Peltier.
Din punct de vedere matematic, putem exp rima efectul Peltier după următoare formulă:
𝑄𝑐=𝛽×𝐼=𝛼𝑇 ×𝐼,
Unde β este coeficientul Peltier diferențial între două materiale, A și B, exprimat în volți, I este
curentul ce trece prin circuit exprimat în amperi iar Q c este cantitatea de căldură ex primată în wați.
[19]
În realizarea aplicației practice , am folosit modulul Peltier TEC1 -12706 , construit de firma
Hebei I.T ., Shanghai. Parametrii acestuia se reg ăsesc în tabelul 4.1 .
Tabelul 4.1
Tabel 4.1 – Parametrii modulului Pelier [20]
Temperatura p ărții calde ( ℃) 25 ℃ 50℃
Căldura maximă (W) 50 57
Delta Tmax ( ℃) 66 75
Imax (A) 6.4 6.4
Vmax (V) 14.4 16.4
Rezistență (Ω) 1.98 2.3
Modulul Peltier TEC1 -12706 are cei doi electrozi constru iți din Oxid de Aluminiu (Al 2O3).
Conform producătorului, ar e o durată de viață de peste 200000 ore.
În figura 4.6 se poate observa modulul Peltier.
Figura 4.6 – Modulul Peltier
41
În realizearea aplicației practice, am folosit un radiator de aluminiu pentru partea rece, din
interiorul serei, pe care vor condesa vaporii de apă, sub care am plasat o tăviță pentru captarea apei
în formă lichidă. Pentru a mări eficiența, apa captată se scurge în vasul de alimentare al instalației
de irigare. Pentru răcirea părții calde, am folosit un radiator de aluminiu și un ventil ator alimentat la
12V.
Montajul pr actic se poate observa în figurile 4.7 și 4.8. Pentru transferul optim de căldură
între radiatoare și modulul Peltier am folosit adeziv termoconductor.
Figura 4.7 – Radiatorul pentru condensare Figura 4.8 – Radiato rul pentru r ăcire
42
43
Capitolul 5: Interfața cu utilizatorul
5.1 Aspecte generale
În această aplicație, utilizatorul trebuie să introducă parametrii specifici plantelor cultivate.
Acest lucru se va realiza cu ajutorul computerului, plăcuța A rduino Uno comunicând cu acesta prin
intermediul interfeței seriale. De asemenea, utilizatorul va putea vizualiza informații despre
acțiunile întreprinse automat de sistem. Aceste informații sunt deosebit de utile în scop statistic,
pentru urmărirea evoluț iei plantelor.
5.2 Interfața serială
Plăcuța Arduino Uno dispune de o interfață serială ce poate fi accesată, pe de o parte prin
USB, sau la pinii Rx și Tx. Aceasta se mai numește și interfață UART ( Universal Asynchronous
Receiver Transmitter ). După cu î i spune și numele, transferul de date prin această interfață se
realizează asi ncron, adică nu este transmis niciun semnal de ceas între cele două dispozitive ce
comunică . În locul semnalului de ceas, sunt transmiși biți de început și de sfârșit.
Interfaț a UART este compusă din două elemente principale:
i. Receptorul (Rx) – acesta convertește un flux serial de biți în date paralele (denumite și
cuvinte), pe care microprocesorul le poate prelucra;
ii. Transmițătorul (Tx) – efectuează operația inversă receptorului , acesta preia datele paralele
de la microprocesor și le convertește într -un flux serial de biți, ce urmează a fi transmis.
La primirea bitului de început, receptorul citește datele primite la o frecvență specifică
numită rată de baud.
Diagrama funcționa la a interfeței UART se poate observa în figura 5.1 [21]
Figura 5.1 – Diagrama funcțională a interfeței UART [21]
Datele transmite prin UART sunt organizate în pachete de date. Structura unui pachet de
date se poate observa în figura 5.2.
44
Figura 5.2 – Structura unui pachet de date [21]
Bitul de start – în mod normal, atunci când nu se transmit date prin UART, linia de
transmisie este menținută la nivelul logic HIGH. La începerea transmisiei, transmițătorul ține
această linie la nivelul logic LOW pent ru un ciclu de ceas. La detecția modificării din HIGH în
LOW, receptorul începe să citească datele din Data Frame la rata de baud setată.
Cadrul de date (data frame) – această secțiune conține datele efective ce se doresc a fi
transmise. Poate avea o dim ensiune de la 5 până la 8 biți, dacă este folosit bitul de paritate, sau până
la 9 biți dacă nu există bit de paritate.
Bitul de paritate – acesta este opțional și ajută la identificarea unor eventuale erori. După
recepție, se numără biții cu valorea “1” din data frame. Da că bitul de paritate a fost “1”, numărul de
biți cu valorea “1” trebuie să fie par și invers. Dacă nu sunt respectate aceste reguli, atunci se
detectează apariția unei erori în comunicație.
Bitul de stop – acesta semnalează sfârșitul une i pachet de date. Linia de comunicație este
modificată la nivelul LOW pentru o perioadă egală cu transimisa a doi biți. [21]
În aplicația realizată, computerul trimite datele introduse de utilizator către microcontroler și
afișează informațiile oferite de acesta. Din punct de vedere software, se pot folosi mai multe
programe disponibile gratuit. În această aplicație am folosit, în scop demonstrtiv, software -ul oferit
de platforma Arduino – Serial Monitor. Acesta permite atât afișarea datelor primite de la
microcontroler cât și introducerea datelor de câtre utilizator, în scopul transmisiei către plăcuță.
În figura 5.3 se poate observa modul de introducere al datelor de către utilizator.
Figura 5.3 – Introducerea parametrilor
45
După cum se poate observa în figura de mai sus, utilizatorul introduce parametrul dorit în
caseta de text din partea superioară după care apasă buton Send (trimitere).
Aplicația oferă un răspuns în tim p real utilizatorului, confirmă acceptarea parametrului și
trece la citirea următ orului parametru, ca în figura 5.4 de mai jos.
Figura 5.4 – Introducerea parametrilor și răspunsul de confirmare
46
47
Capitolul 6: Implementare hardware
Implementarea hardware a proiectului necesită următoarele etape:
I. Proiectarea schemei ele ctrice;
II. Montara componentelor;
III. Realizarea conexiunilor.
Proiectarea schemei ele ctrice se va realiza în programul Fritzing , un software oferit gratuit,
util pentru proiectarea de circuite electronice și pentru realizarea cablajelor imprimate asociate
acesto ra. În acest proiect, interconectarea modulelor s -a realizat prin cabluri. Principalul avantaj al
programului Fritzing îl reprezintă faptul că este de tip sursă deschisă (open source), permițând
utilizatorilor să extindă bilbiotecile programului pentru adă ugarea modelelor noilor componente.
Principalele module al progr amului Fritzing sunt:
1) Placa de testare – editorul pentru scheme ;
2) Schema electrică – editorul pentru schemele electrice
3) PCB – editorul pentru cablajele imprimate;
Figura 6.1 – Schema compon entelor principale
48
În tabelul 6.1 se regăsește modul de conectare a dispozitivelor la plăcuța Arduino.
Tabelul 6.1 – Conexiunile pinilor plăcuței Arduino
Pin Arduino Legătură
VIN Alimentarea cu 5V de la modulul coborâtor de tensiune
GND Masa de la mod ulul coborâtor de tensiune
A2 Fotorezistorul
A3 Senzorul de umiditate a solului
A4 Linia SDA a modului DS1307
A5 Linia SCL a modulului DS1307
D2 Linia In2 a modulului cu relee
D3 Linia In3 a modulului cu relee
D4 Linia In4 a modulului cu relee
D7 Linia Data a senzorului DHT21
D10 Linia PWM a servomotorului
D11 Linia DIN a barei cu leduri
În subcapitolele următoare se vor prezenta componentele sistemului electronic și modul de
interconectare a acestora.
6.1 Circuitul de alimentare
Sistemul reali zat în cadrul aplicației practice se alimentează de la rețeaua de tensiune
alternativă de 230V. Toate componentele sistemului funcționează cu tensiune continue , de 12V
respectiv 5V.
6.1.1 Sursa în comutație AC -DC
Pentru obținerea tensiunilor continue, am folosit o sursă în comutație AC -DC. Aceasta
permite tensiuni de intrare cu valori cuprinse în intervalul 85V – 264V AC, la frecvențe de 47 -65
Hz. Tensiune de ieșire a sursei este de 12V iar curentul maxim de ieșire este 30A . Puterea maximă
de ieșire este 3 60W. Sursa funcționează în comutație, oferind un randament mare, cu puține
pierderi. [22]
Specificațiile sursei îndeplinesc cerințele de funcționare ale sistemului, puterea consumată
de componentele acestuia fiind mult mai mică decât puterea maximă a surse i.
În figura 6. 2 este prezentată sursa de alimentare.
49
Figura 6. 2 – Sursa de alimentare
6.1.2 Modul coborâtor de tensiune DC -DC
Cu ajutorul modului coborâtor de tensiune, modelul MP1584EN , se pot obține tensiuni de
ieșire constante, mai mici decât tens iune de intrare. În această aplicație, modulul are la intrare
tensiunea constantă de 12V oferită de sursa în comutație și la ieșire este setat să livreze o tensiune
de 5V, folosită pentru alimentarea plăcuței Arduino, a senzorilor și a celorlalte component e ce
necesită acest nivel de tensiune. Pentru a avea mai mulți pini cu tensiuni de 5V, necesari diferitelor
componente, am amplasat modulul pe un breadboard.
Modulul MP145EN are la bază regulatorul cu același nume, dezvoltat de MPS (Monolithic
Power System s). Acesta suportă tensiuni de intrare în intervalul 4.5V -28V și poate oferi, la ieșire
tensiuni cuprinse între 0.8V și 20V. Curent maxim de ieșire este de 3A, eficiența are o valoare
mare, de 92% ia riplul este de numai 30mV , conform producătorului.
Tensi unea de ieșire se reglează cu ajutorul unui potențiometru. [23]
În figura 6. 3 este prezentat modulul MP145EN.
Figura 6. 3 – Modulul MP145EN
50
Schema electrică a modului coborâtor de tensiune este prezentată în figura 6. 4.
Figura 6. 4 – Schema electrică a m odului MP145EN [23]
Modulul MP145 are o eficien ță de până la 92%. Curba acesteia este prezentată în figura 6. 5.
Figura 6. 5 – Curba de eficiență [23]
6.2 Senzorii
În acest subcapitol se v a prezenta modul de conectare a senzorilor folosiți la plăcuța Ar duino
și la circuitul de alimentare.
Modulul DHT21, pentru măsurarea temperaturii și a umidității permite alimentarea cu
tensiuni între 3.3V și 5V. Conform producătorului [7], tensiunea de alimentare recomandată este
5V. În aplicația realizată, acest modul se alimentează direct de la modulul coborâtor de tensiune,
MP145EN.
Conectarea la plăcuța Arudino se realizează prin intermediul interfeței I2C. Acest tip de
interfață are avantajul conectării mai multor dispozitive de tip slave (în cazul nostru senzorii și
celelalte dispozitive de intrare) la același pin al dispozitivului master (micr ocontroleru l
ATmega328P de pe plăcuța Arduino Uno).
51
Modulul DHT21 folosește protocolul de comunicație single -bus, utilizând numai linia SDA
(semnalul de date). Transferul d e date se realizează conform figurii de mai jos.
Figura 6.6 – Protocolul single bus [7]
În figura 6.6 se pot observa grupurile de biți transmiși. Acestea sunt prezentate în tabelul
6.2.
Tabelul 6. 2 – Legenda grupurilor de biți [7]
Nume Definiție
Start signal Semnal de start – Microcontrolerul notifică senzorul cu un semnal de tip
LOW, pentru o perioadă de minim 800µS pentru pregătirea datelor
Response
signal Semnalul de răspuns – Senzorul setează semnalul LOW apoi HIGH, fiecare
pentru o perioadă de 80 µS ca răspuns la semnalul microcontrolerului.
Data format Sunt recepționați 40 biți de date cu măsurătorile efectuate
Humidity Umiditatea – transmisă cu o rezoluție de 16 biți. După conversia în format
hexazecimal se obține o valo are a umidității multipl icată cu 10
Temp. Temperatura – transmisă cu o rezoluț ie de 16 biți. Bitul 15 indică semnul (1
pentru temperaturi negative, 0 pentru temperaturi pozitive) iar următorii 14
biți indică valoarea temperaturii care, după transformarea în format
hexazecimal es te de 10 ori valoarea reală a temperaturii.
Parity bit Bitul de paritate – pentru verificare
Senzorul pentru măsurarea umidității solului se alimentează cu tensiunea de 5V, obținută
direct de la modulul coborâtor de tensiune. Conectarea la plăcuța Ard uino se realizează prin
interfața analogică , senzorul fiind conectat la pinul D7 al plăcuței.
Ieșirea analogică a senzorului valori cuprinse în intervalul 0 și 1023. Aceste valor i se vor
raporta la intervalul 0 -100% pentru determinarea umidității solului î n procente.
Fotorezistorul se conectează, de asemenea, la intrarea analogică a plăcuței Arduino, la pinul
A2 al acesteia, prin intermediul unui divizor de tensiune .
Modulul DS1307 se alimentează, de asemenea, cu o tensiune de 5V și se conectează la
plăcu ța Arduino prin interfața I2C, folosind liniile SDA și SCL , conectate la pinii A1, respectiv A0.
52
6.3 Dispozitivele de ieșire și control
Pentru dispozitivele de control ce funcționează cu tensiuni de alimentare de 12V, am folosit,
în cadrul aplicației, un modul cu 4 relee. Fiecare releu al modului este comandat de un optocuplor și
acceptă tensiuni alternative de 230V sau continue, de maxim 30V. Curent maxim pe fiecare canal
este de 10A, mai mult decât suficient pentru dispozitivele folosite în această apli cație. [26]
Modulul este prezentat în figura 6.10
Figura 6.10 – Modulul cu relee
Din cele 4 canale disponibile, am folosit doar 3 dintre acestea: pentru elementul PTC pentru
încălzire, pentru pompa de apă și pentru ansamblul dezumidificator (element Pel tier – ventilator
răcire) .
Tensiunea de alimentare a modului este 5V, obținută direct de la modulul coborâtor de
tensiune, iar curentul consumat are valo area maximă de 80mA. [25].
Fiecare releu se controleaz ă prin transmiterea unui semnal HIGH sau LOW d e către
microcontroler. Astfel, se folosesc pinii 2, 3 și 4 ai plăcuței Arduino.
În această aplicație, releele întrerup conexiunea la aplicarea semnalului HIGH și activează
conexiunea la semnalul LOW.
Bara cu leduri funcționează la tensiune de 5V și este controlată de plăcuța Arduino prin
PWM. Este conecta tă la pinul 11 al plăcuței Arduino.
Pentru mecanismul de răcire și aerisire, am folosit un servomotor ce se alimentează de cu o
tensiune de 5V. Acesta se controlează prin PWM și este conectat la pinul 1 0 al plăcuței Arduino.
6.4 Realizarea montajului
În realizarea montajului practic, am folosit o cutie din plastic transparent cu dimensiunile 55
cm x 39 cm x 31 cm.
În figura 6.11 se poate observa exteriorul serei.
53
Figura 6.11 – Incinta serei
Pentru c ultivarea plantelor, am amplasat două tăvit din plastic ce conțin solul. Senzorul
pentru umiditatea solului este plasat într -un dintre acestea. Procesul de irigare se face în mod egal în
ambele tăvițe, astfel că este suficientă măsurarea umidității solului doar într -una dintre tăvițe .
Irigarea se realizează prin furtunul transparent ce are câte patru orificii pentru fiecare tăviță. În
figura 6.12 se poate observa insta lația de irigare , iar în figura 6.13 senzorul de umiditate a solului.
Figura 6.12 – Instalația de irigare
54
Figura 6.13 – Amplasarea senzo rului pentru umiditatea solului
Modulul pentru măsurarea umidității aerului și a temperaturii este amplasat în partea
superioară.
Fotorezistorul este, de asemenea, amplasat în partea superioară, orientat în sus, pentru a
măsura cantitatea de lumină naturală ce pătrunde în seră.
În figura 6.14 se pot observa cele două elemente menționate mai sus, modulul DHT21 și
fotorezistorul.
Figura 6.14 – Modulul DHT21 și fotorezistorul
Instalația pentru dezumidific are, compusă din radiatorul interior, modulul Peltier și
radiatorul cu ventilator exterior sunt prezentate în figurile 6.15 și 6.16 . Sub radiatorul interior, pe
55
care urmează să con denseze vaporii de apă, este plasată o tavă pentru colectarea lichidului. Ap a
colectată se scurge , prin intermediul unui furtun, în vasul de alimentare pentru instalația de irigare,
pentru mărirea eficienței.
Figura 6.15 – Radiatorul pentru condesare și tava de colectare
Figura 6.16 – Radiatorul exterior și ventilatorul
Elem entul PTC pentru încălzire este plasat între două radiatoare de aluminiu, pentru
disiparea rapidă a căldurii. În figura 6.17 se poate observa montajul instalației de încălzire.
56
Figura 6.17 – Elementul de încălzire
Răcirea și aerisirea serei se face prin partea superioară – aerul cald ci rculă, în mod natural,
spre partea superioară. În figura 6.18 se poate observa ansamblul format din serv omotor și trapa
acționată de acesta.
Figura 6.18 – Mecanismul pentru răcire și ventilare
Bara cu leduri pentru ilum inarea artificială este amplasată în partea centrală, superioară,
pentru distribuția uniformă a luminii. În figura 6.19 se poate observa montajul acesteia.
57
Figura 6.19 – Bara pentru iluminarea artificială
Sursa de alimentare, plăcuța Arduino, modulul cu relee și celelala lte componente electronice
sunt amplasate în exteriorul serei. În figura 6.20 se pot observa o parte din conexiunile realizate.
Figura 6. 20 – Componentele exterioare
58
59
Capitolul 7: Implementare software
Software -ul reprezintă sui ta de instrucțiuni care informează și controlează părțile fizice
(hardware) ale unui proiect. În această aplicație, programarea s -a realizat în limbajul C++, în mediul
de dezvoltare prezentat în continuare.
Mediul de dezvoltare Arduino este cunoscut în în treaga lume datorită ușurinței cu care se
pot programa microcontrolerele. Mulțumită integrării complete, microcontrolerul ATmega328P se
programează direct prin USB, nefiind necesară folosirea altor dispozitive periferice.
Programarea în limbajul C++ este posibilă datorită bibliotecilor dezvoltate de comunitatea
Arduino. Orice utilizator poate contribui la dezvoltarea bibliotecilor, întreaga platformă fiind de tip
sursă -deschisă (open -source).
7.1 Mediul de programare Arduino IDE
Mediul de programare exclus iv folosit este Arduino IDE ( Arduino Integrated
Developement) . Acesta este împărțit în trei secțiuni principale.
1) Aria comenzilor – aici sunt disponibile opțiuni pentru fișiere, editare, exemple de
cod și comenzile de rulare și încărcare a programului.
2) Secțiunea pentru cod – în caseta pentru text se scrie codul propriu -zis. Structura
codului este prestabilită, existând două secțiuni principale:
a. Funcția de iniți alizare (void setup ) – în această secțiune se def inesc și se
inițializează variabilele;
b. Bucla ce se execută încontinuu (void loop ) – aici se execută codul scris de
programator;
3) Aria de mesaje – servește la afișarea mesajelor și a erorilor. [26]
În figura 7.1 sunt prezentate cele 3 secțiuni ale mediului de dezvoltare Arduino IDE.
Figura 7.1 Fereastra principală Arduino IDE
60
7.1.1 Limbajul folosit
Limbajul folosit în cadrul platformei de dezvoltare Arduino este o versiune simplificată a
limbajului C++.
Dezvoltarea l imbajul ui C++ a apărut în anul 1979 când Bjarne Stroustrup lucra la teza sa de
doctorat. Acesta a adăugat limbajului C diferite îmbunătățiri precum clasele, funcțiile virtuale,
supraîncărcarea operatorilor și a funcțiilor, alocare dinamică a memoriei și multe altele. [27].
7.1.2 Bibliotecile folosite
Platforma de dezvoltare Arduino se poate extinde, ca majoritatea mediilor de programare,
prin utilizarea bibliotecilor. Acestea oferă funcționalități suplimentare pentru programarea hardware
și manipularea datelor. Mediul de dezvoltare Arduino IDE permite adăugarea noilor bilbioteci, pe
lângă cel e de bază pe care le are preinstalate.
În realizarea aplicației, am folosit următoarele biblioteci:
a) Adafruit_NeoPixel.h – din această bibliotecă am folosit funcții pentru controlul leduri lor
RGB . Biblioteca a fost creată de Phil Burgess în cadrul Adafruit Industries și este oferită
gratuit. [28]
b) Dht.h – cu ajutorul acestei biblioteci, am citit valorile de temperatură și umiditate furnizate
de senzorul DHT21. Aceasta este, de asemenea, realizată de Adafruit Industries și este
oferită gratuit. [29]
c) Servo.h – aceast ă bibliotecă este inclusă în mediul de dezvoltare Arduino IDE. Cu ajutorul
ei, se poate controla majoritatea servomotoarelor prin simpla furniza re a unghiului de rotație
dorit.
d) RTClib.h – am folosit această bibliotecă pentru a comunica ușor cu modul ul DS1307.
Aceasta are funcții de citire directă a datelor. Aceasta este creată de Jeelabs.
e) Wire.h – bibliotecă integrată în programul Arduino IDE, folosită pentru comunicația prin
protocolul I2C.
7.1.3 Struc tura programului
Programele pentru platforma A rduino au o structură fixă și trebuie să conțină cele două
blocuri principale.
Primul blocul este funcția void setup(). Acesta este rulat o singură dată, după ce
programul a fost încărcat sau la conectarea alimentării plăcuței. În realizarea aplicației cur ente, în
funcția void setup() , am citit și inițializat parametrii setați de utilizator și am definit pinii
pentru conectarea diverselor periferice.
Cel de -al doilea bloc este reprezentat de funcția void loop(). Instrucțiunile scrise în
această secțiune se execută una câte una, în ordine scrierii lor. După cum îi spune și numele ( loop –
buclă), acest bloc se execută în mod continuu. Atunci când s -a executat ultima linie din funcție, se
trece automat la prima linie și se reia executarea instrucțiunilor.
Pe lângă cele două blocuri standard, programul prezintă , la început , declararea bibl iotecilor
și a diverselor variabile globale, asemenea unui program standard scris în limbajul C++.
Pentru o mai bună înțelegere a programului, am construi t diagramele UML (Unif ied
Modeling Language) pentru funcțiile sistemului . O diagram ă UML este o prezentare grafică a
61
setului de elemente ale sistemului. Unul dintre cele mai des utilizate moduri de reprezentare, este
cel sub forma de grafuri , elementele fiind reprezentate de n oduri, iar relațiile dintre acestea prin
arce. [30]
În figura 7.2 se poate observa diagrama UML a citirii și cont orulului temperaturii.
Figura 7.2 – Diagrama UML temperatură
Diagrama UML pentru controlul umidității aerului se poate observa în figura 7.3
Figura 7. 3 – Diagrama UML pentru umiditatea aerului
62
Diagrama UML pentru controlul irigării se poate analiza în figura 7. 4.
Figura 7.4 – Controlul irigării solului
Controlul luminozității este prezentat în figura 7 .5
Figura 7.5 – Diagrama UML pent ru controlul iluminării
În Anexa 1 este disponibil codul sursă al programului. Pentru acesta, am folosit bilbiotecile
enumerate mai sus și exemple din secțiunea specială a Arduino Ide.
63
Capitolul 8: Teste și rezultate
Pentru testarea aplicației, am folosi t planta iedera. Aceasta se dezvoltă cel mai bine la
temperaturi cuprinse între 16 ℃ și 20 ℃ iar umiditatea relativă recomandată este de 80 -85% RH.
Solul, de asemenea, trebuie să fie bine îmbibat cu apă. Planta se dezvoltă bine atât la umbră cât și la
soare. [31]
În figura 8.1 se poate observa interfața cu utilizatorul după introducerea parametrilor de mai
sus, specifici plantei alese.
Figura 8.1 – Parametrii setați
Aplicația furnizează informații utilizatorului cu privire la evenimentele apărute și acțiu nile
ce au fost luate automat. În figura 8.2 este prezentat răspunsul sistemului la simularea încălzirii
peste limita impusă.
Figura 8.2 – Răspunsul sistemului la evenimentul depășirii temperaturii
În imaginile următoare se poate observa procesul de cre ștere a plantelor. Plantele au avut o
dezvoltare relativ rapidă, de circa trei luni (de la dimensiunea din primele poz e până la dimensiunile
actuale)
64
Figura 8.3 – Plantele cultivate în luna aprilie
Figura 8.4 – Starea actuală a plantelor (25.06.0218)
65
În figurile 8.4 și 8.5 se poate obs erva și bara de leduri aprinsă, sera fiind am plasată în
interiorul locuinței, după apusul soarelui.
Figura 8.5 – Starea actuală a plantelor – vedere laterală
După cum se poate observa din figuri, plantele s -au dezvolt at suficient de mult încât să poată
fi extrase din seră și cultivate la exterior.
Putem afirma că aplicația și -a îndeplinit scopul propus și s-a comportat conform așteptărilor
în procesul de creștere al plantelor de iederă.
66
67
Concluzii
Concluz ii generale, contribuții personale și îmbunătățiri
ulterioare
În urma etapelor de documentare, proiectare și realizare practică, se pot enumera
următoarele concluzii:
Microcontrolerul ATmega328P are o putere de calcul suficient de mare pentru achiziția ș i
prelucrarea datelor și, mulțumită platformei Arduino , se poate programa ușor. Scalabilitatea și
eventualele îmbunătățiri ce pot fi aduse ulterior proiectului se pot realiza ușor, fără costuri
considerabile.
Am reușit realizarea unui sistem complet fu ncțional, prin con struirea unei sere în miniatură .
Prototipul ac esteia a fost realizat de mine , folosind diferite componente pe care le -am integrat în
sistem și creând noi module prin îmbinarea acestora (spre exemplu, modulul pentru
dezumidificare).
Majoritat ea componentelor sistemului pot fi folosite și după implementarea la sca ră mare
(senzorii, microcontrolerul, releele) . Sera poate fi folosită ca atare, pentru cultivarea plantelor mici ,
sau pentru procesul de răsădire a plantelor mari, după cum s -a demonst rat în capitolul pentru
testare.
Prin realizarea acestui proiect, am demonstrat posibilitatea automatizării c omplete a serelor
convenționale contra unor costuri reduse.
Printre eventualele îmbunătățiri ce pot fi aduse sistemului se numără:
Adăugarea unu i modul de comunicație prin internet, în scopul extinderii interfeței cu
utilizatorul. Totuși, este de menționat faptul că parametrii serei se introduc sau se modifică la
introducerea altui tip de plantă în seră , proces pentru care, este nevoie prezența ut ilizatorului, astfel
că trimiterea parametrilor de la distanță nu este o condiție esențială.
Folosirea unei pompe de căldură pentru a reintroduce în seră căldura eliminată în timpului
procesului de dezumidificare, în scopul minimizării pierderilor de ener gie.
Un alt aspect ce poate fi luat în calcul este adăugarea unui senzor de gaze, pentru urmărirea
nivelului de dioxid de carbon.
Extinderea capacității de memorare, prin adăugarea unui dispozitiv de stocare extern
reprezintă o altă îmbunătățire ce poate fi adusă proiectului. Aceasta poate ajuta la memorarea unui
istoric pe perioade îndelungate, fiind utile în urmărirea dezvoltării plantelor cu timp mare de
creștere.
Adăugarea unui senzor de nivel pentru rezervorul instalației de irigare, în scopul trans miterii
unei alarme poate reprezenta o altă îmbunătățire ce poate fi adusă acestui proiect, însă aceasta nu
are o utilit ate seminficativă dacă aplicația se implementează la scară naturală, alimentarea în acest
caz trebuie făcută de la o sursă continuă de a pă.
68
69
Bibliografie
[1] A Short History of the Greenhouse [online]
https://davesgarden.com/guides/articles/view/3607#b , accesat la data de 10.06.2018
[2] Gunther Gridling, Bettina Weiss – Introducion to Microcontrollers, 2007
[3] http://www.pighixxx.n et, accesat la 11.06.2018
[4] Adrian Dumitriu – Bazele Sistemelor Mecatronice, 2006
[5] https://www.engineersgarage.com/articles/humidity -sensor , accesat la data de
15.03.2018
[6] Mugur Bălan – Noțiuni de termotehnică , 2017
[7] AM 2301 Product Manual, Aos ong.
[8] Foaie de catalog FC -28
[9] http://www.resistorguide.com/photoresistor/, accesat la 20.06.2018
[10] Token – CDS Light -Dependent Photoresistor
[11] CdS PHOTOCONDUCTIVE CELLS – niGate
[12] Maxim Integrated – Foaie de cataog DS 1307
[13] Foaie de catalog AT24C32 – Atmel
[14] Syuuichi Azechi, Tsutomu Nakamura, – ELECTRICALLY CONDUCTIVE
SILICONE RUBBER COMPOSITION, 2001
[15] James W. Bron – Light in the Greenhouse: How much is Enough?
[16] https://www.optimusdigital.ro/ro/optoelectronice -bare-cu-leduri/753 -bara-de-led-uri-
rgb-ws2812 -cu-8-led-uri.html accesat la 21.03.2018
[17] Dragoș Șerban – Aspecte privind tehnologia de cultur ă și consumul de apă la tomatele
cultivate în spații protejate, 2010, în revista Agroromania.
[18] J.B. Campen, G.P.A Bot, H.F. de Zwart – Dehumidification of Greenhouses at
Northern Latitudes
[19] Peltier Cooling Module – Thakkar Mohit Pravinchandra, 2015
70
[20] Hebei I.T. Shanghai – Foaie de catalog TEC1 -127096
[21] http://www.circuitbasics.com/basics -uart-communication/ – accesat la 5.05.2018
[22]https://www.optimusdigital.ro/ro/surse -ac-dc-de-12-v/1950 -sursa -de-tensiune -in-
comutaie -12v-30a-360-w.html accesat la 22.04.2018
[23] Foaie de catalog MP1584 – MPS
[24] https://www.optimusdigital.ro/ro/interfata -convertoare -de-niveluri/182 -translator -de-
nivel -bidirectional -cu-2-canale.html accesat la 22.04.2018
[25] https://www.optimusdigital.ro/ro/electronica -de-putere -module -cu-releu/478 -modul –
releu -cu-4-canale -albastru.html accesat la 22.04.2018
[26] Yusuf Abdullahi Badamasi – The Working Principle Of An Arduino
[27] Bjarne Stroustrup – A hystory of C++
[28] https://learn.adafruit.com/adafruit -neopixel -uberguide – accesat la 25.03.2018
[29]https://github.com/adafruit/DHT -sensor -library/blob/master/DHT.h accesat la
25.04.2018
[30] Mihai Gârboveanu – Curs POO , 2012
[31] Milea Preda, Editura didactica si pedagogica – Floricultura , 1975
71
Anexa 1
În această secțiune este prezentat codul pentru aplicația realizată în plat forma Arduino IDE.
//Includerea bibliotecilor
#include <Servo.h> // Biblioteca
pentru servomotor
#include <Adafruit_NeoPixel.h> //
Biblioteca pentru leduri
#include <dht.h> // Biblioteca
pentru senzorul DHT21
#include "RTClib.h" // Biblioteca
pentru DS130 7
#include <Wire.h> //Biblioteca
pentru comunicatia I2C
//Definirea pinilor
#define LED_PIN 11 //pinul pentru
controlul ledurilor
#define DHT21_PIN 7 //pinul
pentru DHT21
int fotorezistor = A4; //pinul
analogic pentru fotorezistor
int intensitate_lumina= 0;
//stocheaza valorile citite de la
fotorezistor
int senzor_sol=A3; //pinul
analogic pentru senzorul de
umiditate sol
int umiditate_sol=0; //stocheaza
valorile citite de senzorul de
umiditate sol
float umiditate; //stocheaza
valoarea citita de la snezor ul
DHT21
float temperatura; //stocheaza
valoarea citita de la snezorul
DHT21
#define NUMPIXELS 8 //numarul de
leduri de pe bara
//Definirea claselor
RTC_DS1307 rtc;
Servo myservo;
Adafruit_NeoPixel pixels =
Adafruit_NeoPixel(NUMPIXELS,
LED_PIN, NEO_GRB + NEO_KHZ800);
dht DHT21;
//Declararea si initializarea
parametrilor introdusi de
utilizator
String temp_set_min;
int val_temp_set_min=0;
String temp_set_max;
int val_temp_set_max=0;
String umid_set_min;
int val_umid_s et_min=0;
String umid_set_max;
int val_umid_set_max=0;
String sol_set_min;
int val_sol_set_min=0;
String sol_set_max;
int val_sol_set_max=0;
String lum_set_min;
int val_lum_set_min=0;
String culoare;
int val_culo are=0;
72
//Variabile pentru cele 3
componente ale culorii
int cr=0;
int cg=0;
int cb=0;
//Functia setup
void setup()
{
Serial.begin(9600); //Inceputul
comunicatiei seriale la rata de
9600
pixels.begin(); //Initializarea
ledurilor
myservo.attach(10); //atasarea
servomotorului la pinul 10
//Configurarea pinilor
conectati la releu
pinMode(2, OUTPUT); //Pinul de
control pentru dezumidificare
pinMode(3, OUTPUT); //Pinul de
control pentru incalzire
pinMode(4, OUTPUT); //Pinul d e
control pentru irigare
//Initializarea pinilor
(dispozivite oprite la nivelul
HIGH)
digitalWrite(2, HIGH);
//dezumidifcare oprita
digitalWrite(3, HIGH);
//incalzire oprita
digitalWrite(4, HIGH);
//irigare oprita
//Afisarea si citirea
informatiilor prin interfata
seriala
Serial.println(F("Introduceti
valoarea minima a temperaturii
dorite: (grade Celsius)"));
while (!Serial.available());
char c = Serial.read();
//citirea primului bit
while (c != ' \n')
{
temp_set_min+= c;
//construirea sirului bit cu bit
delay(2); //intarziere
pentru incarcarea bufferului
c = Serial.read();
//citirea urmatorului bit
}
//Afisarea parametrilor introdusi
if (temp_set_min.length()>0)
{
Serial.println(F("Temperatura
minima setata este: "));
Serial.print(temp_set_min);
//afisarea pentru utilizator
Serial.println(" grade
Celsius");
val_temp_set_min=(temp_set_min.to
Int()); //transformarea sirului
de caractere in numar intreg
temp_set_min="";
//eliberarea sirului pentru
urmatoare citire
}
//Aceeasi structura pentru
urmatorii parametrii:
Serial.println(F("Introduceti
valoarea maxima a temperaturii
dorite: (grade Celsius)"));
while (!Serial.available());
char d = Serial.read();
73
while (d != '\n')
{
temp_set_max+= d;
delay(2);
d = Serial.read();
}
if (temp_set_max.length() >0)
{
Serial.println(F("Temperatura
maxima setata este: "));
Serial.print(temp_set_max);
//afisarea pentru utilizato r
Serial.println(F(" grade
Celsius"));
val_temp_set_max=(temp_set_max.to
Int()); //transformarea sirului
de caractere in numar si stocarea
in val_temp_set_ax
temp_set_max=""; //golirea
pt urmatoarea citire POSIBIL DE
STERS
}
Serial.pri ntln(F("Introduceti
valoarea minima a umiditatii:
(numar intreg % RH)"));
while (!Serial.available());
char e = Serial.read();
while (e != ' \n')
{
umid_set_min+= e;
delay(2);
e = Serial.read();
}
if (umid_set_min. length() >0)
{
Serial.println(F("Umiditatea
minima setata este: ")); Serial.print(umid_set_min);
//afisarea pentru utilizator
Serial.println(F(" % RH"));
val_umid_set_min=(umid_set_min.to
Int());
umid_set_min="";
}
Serial.println(F("Introduceti
valoarea maxima a umiditatii;
(numar intreg % RH)"));
while (!Serial.available());
char f = Serial.read();
while (f != ' \n')
{
umid_set_max+= f;
delay(2);
f = Serial.read();
}
if (umid_set_max.length() >0)
{
Serial.println(F("Umiditatea
maxima setata este: "));
Serial.print(umid_set_max);
//afisarea pentru utilizator
Serial.println(F(" % RH"));
val_umid_set_max=(umid_set_max.to
Int());
umid_set_max= "";
}
Serial.println(F("Introduceti
valoarea minma a umiditatii
solului – (numar intreg – 0=sol
uscat, 100=sol umed"));
while (!Serial.available());
char g = Serial.read();
while (g != ' \n')
{
sol_set_min+= g;
74
delay(2);
g = Serial.read();
}
if (sol_set_min.length() >0)
{
Serial.println(F("Valorea
minima setata pentru umiditatea
solului este: "));
Serial.print(sol_set_min);
Serial.println(F(" %"));
val_sol_set_min=(sol_set_min.to In
t()); //transformarea sirului de
caractere in numar si stocarea in
val_temp_set_min
sol_set_min="";
}
Serial.println(F("Introduceti
valoarea maxima a umiditatii
solului – (numar intreg – 0=sol
uscat, 100=sol umed"));
while (!Serial.availabl e());
char h = Serial.read();
while (h != ' \n')
{
sol_set_max+= h;
delay(2);
h = Serial.read();
}
if (sol_set_max.length() >0)
{
Serial.println(F("Valorea
maxima setata pentru umiditatea
solului este: ") );
Serial.print(sol_set_max);
Serial.println(F(" %"));
val_sol_set_max=(sol_set_max.toIn
t());
sol_set_max="";
} Serial.println(F("Introduceti
valorea minima a intensitatii
luminoase: (numar intreg –
0=intunecos, 100=luminos)" ));
while (!Serial.available());
char l = Serial.read();
while (l != ' \n')
{
lum_set_min+= l;
delay(2);
l = Serial.read();
}
if (lum_set_min.length() >0)
{
Serial.println(F("Valorea
minima a intensitati i luminoase
este: "));
Serial.print(lum_set_min);
Serial.println(F(" %"));
val_lum_set_min=(lum_set_min.toIn
t());
lum_set_min="";
}
Serial.println(F("Alegeti
culoarea pentru iluminare: "));
Serial.println(F("Tasta 1 pentru
lumina ALBA"));
Serial.println(F("Tasta 2 pentru
lumina ROSIE"));
Serial.println(F("Tasta 3 pentru
lumina VERDE"));
Serial.println(F("Tasta 4 pentru
lumina ALBASTRA"));
Serial.println(F("Tasta 5 pentru
lumina GALBENA"));
Serial.println(F("Tasta 6 pen tru
lumina ALBASTRA DESCHISA"));
Serial.println(F("Tasta 7 pentru
lumina MOV"));
while (!Serial.available());
75
char w = Serial.read();
while (w != ' \n')
{
culoare+= w;
delay(2);
w = Serial.read();
}
if (culoare .length() >0)
{
Serial.println(F("Ati ales
culoarea cu numarul: "));
Serial.println(culoare);
val_culoare=(culoare.toInt());
culoare="";
}
//Sfarsitul citirii parametrilor
//Setarea si initializarea
modului RTC
//Verific are conexiune modul ceas
if (! rtc.begin()) {
Serial.println("Eroare modul
ceas");
while (1);
}
//Verificare stare modul ceas
if (! rtc.isrunning()) {
Serial.println("Modul ceas
deconectat!");
rtc.adjust(DateTime(2018, 6,
29, 12, 0, 0)) ; //Setarea
ceasului.
}
}
void loop()
{
//Citirea intensitatii
lumininoase de la senzor
intensitate_lumina=
analogRead(fotorezistor); //Citirea umiditatii solului
umiditate_sol=analogRead(senzor_s
ol);
//Citirea datelor de la DHT21
int c hk =
DHT21.read21(DHT21_PIN);
umiditate = DHT21.humidity;
temperatura=
DHT21.temperature;
//Citirea momentului de timp
curent
DateTime now = rtc.now();
//Algoritm aerisire/racire si
incalzire in functie de
temperatura – actionare
motor/el ement incalzire
if(temperatura>val_temp_set_max)
//Temperatura prea mare
{
myservo.write(0);
//deschide trapa prin aducerea
bratului motorului la 0 grade
digitalWrite(3, HIGH);
//opreste incalzirea
//Afisarea evenimentului
pentru utilizator
Serial.print(F("Supraincalzire
sera: "));
Serial.print(temperatura);
Serial.println(F(" grade
Celsius. Activare racire. Data si
ora: "));
Serial.print(now.year(),
DEC);
Serial.print('/');
76
Serial.print(now.month(),
DEC);
Serial.print('/');
Serial.print(now.day(),
DEC);
Serial.print(' -');
Serial.print(now.hour(),
DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.println();
}
else
if(temperatura<val_temp_set_min)
//Temperatura prea mica
{
myservo.write(90);
//inchide trapa prin aducerea
bratului motorului la 90 grade
digitalWrite(3, LOW);
//porneste incalzirea
//Afisarea evenimentului
pentru utilizator
Serial.print(F("Aer prea
rece in sera sera: "));
Serial.print(temperatura);
Serial.println(F(" grade
Celsius. Activare incalzire. Data
si ora: "));
Serial.print(now.year(),
DEC);
Serial.print('/');
Serial.print(now.month(),
DEC);
Serial.print('/');
Serial.print(now.day(),
DEC);
Serial.print(' -'); Serial.print(now.hour(),
DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.pri ntln();
}
else
if(temperatura>val_temp_set_min&&
temperatura<val_temp_set_max)
//Temperatura in intervalul setat
{
myservo.write(90); //lasa
trapa inchisa prin aducerea
bratului motorului la 0 grade
digitalWrite(3, HIGH);
//opreste incalzirea
}
//Algoritm pentru dezumidificare
if(umiditate>val_umid_set_max)
//umiditatea peste limita impusa
{
digitalWrite(2, LOW);
//porneste modulul pentru
dezumidificare
//Afisarea evenimentului
pentru utilizat or
Serial.print(F("Umiditate
prea mare: "));
Serial.print(umiditate);
Serial.println(F(" % RH.
Pornire dezumidificare. Data si
ora: "));
Serial.print(now.year(),
DEC);
Serial.print('/');
Serial.print(now.mont h(),
DEC);
Serial.print('/');
77
Serial.print(now.day(),
DEC);
Serial.print(' -');
Serial.print(now.hour(),
DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.println();
}
else
if(umiditate<=val_umid_set_min)
//umiditatea atinge limita
inferioara
{
digitalWrite(2, HIGH);
//opreste modulul pentru
dezumidificare
}
//Algorim pentru irigare
if(umiditate_sol<val_sol_set_min)
;//Sol prea uscat
{
digitalWrite(4,
LOW);//porneste pompa pentru
irigare
delay(5000); //asteapta 5
secunde pentru a permite
disiparea apei
//Afisarea evenimentului
pentru utilizator
Serial.print(F("Sol
uscat: "));
Serial.print(umiditate);
Serial.println(F(" %.
Pornire irigare. Data si ora:
"));
Serial.print(now.year(),
DEC); Serial.print('/');
Serial.print(now.month(),
DEC);
Serial.print('/');
Serial.print(now.day(),
DEC);
Serial.print(' -');
Serial.print(now.hour(),
DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.println();
}
if(umiditate_sol>val_sol_set_max)
//Solul a atins umiditatea dorita
{
digitalWrite(4,
HIGH);//opre ste pompa pentru
irigare
}
//Algoritm pentru iluminare
//La detectarea luminii sub
limita impusa:
//Aprinde bara de leduri
if(intensitate_lumina<val_lum_set
_min)
{
//Calculul componentelor
culorii in functie de optiunea
utilizatorului
if(val_culoare==1) {cr=255;
cg=255; cb=255; }
else if(val_culoare==2)
{cr=255; cg=0; cb=0; }
else if(val_culoare==3)
{cr=0; cg=255; cb=0; }
78
else if(val_culoare==4)
{cr=0; cg=0; cb=255; }
else if(val_culoare==5)
{cr=255 ;cg=255; cb=0 ; }
else if(val_culoare==6)
{cr=0; cg=255; cb=255; }
else if(val_culoare==7)
{cr=255; cg=0; cb=255; }
for(int
i=0;i<NUMPIXELS;i++)//porneste
bara de leduri
{
pixels.setPixelColor(i,
pixels.Color(cr,cg,cb));
//setarea fiecarul led pe rand
pixels.show();
//pornirea ledurilor
}
//Afisarea evenimentului
pentru utilizator
Serial.print(F("Lumina
slaba: "));
Serial.print(umiditate);
Serial.println(F("Activarea
iluminare artifi ciala. Data si
ora: "));
Serial.print(now.year(),
DEC);
Serial.print('/');
Serial.print(now.month(),
DEC); Serial.print('/');
Serial.print(now.day(),
DEC);
Serial.print(' -');
Serial.print(now.hour(),
DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.println();
}
//La detectarea luminii
suficiente
//Stinge bara de leduri
else
if(intensitate_lumina>val_lum_set
_min)//opreste lumina
{
for(int
i=0;i<NUMPIXELS;i++)
{
pixels.setPixelColor(i,
pixels.Color(0,0,0)); //Seteaza
toate culorile la 0 – leduri
stinse
pixels.show();
//Trimite comanda la leduri
}
}
//Sfarsitul buclei loop
}
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Seră inteligentă pentru creșterea plantelor [619184] (ID: 619184)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
