Universitatea Politehnica din București [626253]

Universitatea “Politehnica” din București
Facultatea de Electronică, Telecomunicații și Tehnologia Informației

Sistem de agricultur ă inteligent ă pentru monitorizarea parametrilor
solului

Proiect de diploma

prezentat ca cerință parțial ă pentru obținerea titlului de
Inginer în domeniul Electronică, Telecomunicații si Tehnologia Informației
programul de studii de licență Microelectronică, Optoelectronică și
Nanotehnologii

Conducători științifici Absolvent
Ș.l. dr. ing. Andrei Drăgulinescu Roxana -Mihaela Stănescu

2020

CUPRINS

LISTA TABELELOR ………………………….. ………………………….. ………………………….. ………………………….. …… 9
LIST Ă FIGURI ………………………….. ………………………….. ………………………….. ………………………….. ………….. 10
LISTA ACRONIMELOR ………………………….. ………………………….. ………………………….. ………………………… 12
INTRODUCERE ………………………….. ………………………….. ………………………….. ………………………….. …………. 6
CAPITOLUL 1 INTERNET OF THINGS (IOT) ………………………….. ………………………….. ……………………… 7
1.1 NOȚIUNI GENERALE ………………………….. ………………………….. ………………………….. ………………………. 7
1.2 EVOLUȚIA INTERNETULUI ………………………….. ………………………….. ………………………….. …………….. 8
1.3 BENEFICIILE PE CARE IOT LE ADUCE IN DOMENIUL AGRICULTURII ………………………….. ……. 10
1.4 ARHITECTURA IOT ………………………….. ………………………….. ………………………….. ………………………. 11
1.4.1 ETAPA 1 (SENZORI / ACTUATORI): ………………………….. ………………………….. …………………… 11
1.4.2 ETAPA 2 (SISTEME DE ACHZITIE A DATELOR) ………………………….. ………………………….. … 12
1.4.3 ETAPA 3 (ANALIZA EDGE): ………………………….. ………………………….. ………………………….. ….. 12
1.4.4 ETAPA 4 (ANALIZA ÎN CLOUD) ………………………….. ………………………….. ………………………… 13
CAPITOLUL 2. PLATFORMELE DE DEZVOLTA RE FOLOSITE ………………………….. …………………… 14
2.1 RASPBERRY PI 4, MODEL B ………………………….. ………………………….. ………………………….. …………… 14
2.1.1 SISTEMUL DE OPERARE ………………………….. ………………………….. ………………………….. …………. 15
2.1.2 CONFIGURAȚIA PINILOR GPIO LA PLACA RASPBERRY PI 3 ………………………….. …………… 15
2.2 MCP3008 ………………………….. ………………………….. ………………………….. ………………………….. …………… 16
CAPITOLUL 3. SENZORII ………………………….. ………………………….. ………………………….. …………………….. 19
3.1 DEFINIȚIE ………………………….. ………………………….. ………………………….. ………………………….. ………… 19
3.2 SEN ZOR VERSUS TRADUCTOR ………………………….. ………………………….. ………………………….. …….. 20
3.3 CLASIFICAREA SENZORILOR SI APLICATII ALE ACESTORA: ………………………….. ………………… 21
3.4 SENZORUL DHT11 DE TEMPERATURĂ ȘI UMIDITATE ………………………….. ………………………….. . 22
3.5 SENZORUL DE UMIDITATE A SOLULUI ………………………….. ………………………….. …………………….. 23
3.6 SENZORUL DE PLOAIE (RAINDROPS) ………………………….. ………………………….. ……………………….. 23
3.7 SENZORUL DE NIVEL AL APEI ………………………….. ………………………….. ………………………….. ……… 24
3.8 SENZORULUI DIGITAL DE LUMINĂ IR, UV ȘI VIZIBIL SI1145 ………………………….. …………………. 25
CAPITOLUL 4 DESCRIEREA TEHNOLOGIILOR FOLOSITE ………………………….. ……………………….. 27
4.1 PYTHON ………………………….. ………………………….. ………………………….. ………………………….. …………… 27
4.2 JAVA ………………………….. ………………………….. ………………………….. ………………………….. ………………… 27
4.3 MYSQL ………………………….. ………………………….. ………………………….. ………………………….. …………….. 28
CE ESTE O BAZĂ DE DATE? ………………………….. ………………………….. ………………………….. …………… 29
4.4 AMAZON EC2 ………………………….. ………………………….. ………………………….. ………………………….. …… 30
CARACTERISTICI AMAZON EC2 ………………………….. ………………………….. ………………………….. …….. 31
4.5 REST ………………………….. ………………………….. ………………………….. ………………………….. ………………… 31
CAPITOL 5 IMPL EMENTAREA FIZICĂ ȘI INTEGRAREA COMPONENTELOR ……………………….. 32
5.1 CONECTAREA SENZORULUI DE TEMPERATURĂ ȘI UMIDITATE DHT11 ………………………….. … 32
5.2 CONECTAREA SENZOR ULUI DE UMIDITATE A SOLULUI ………………………….. ………………………. 33
5.3 CONECTAREA SENZORULUI DE PLOAIE (RAINDROPS ) ………………………….. ………………………… 34
5.4 CONECTAREA SENZORULUI DE NIVEL AL APEI ………………………….. ………………………….. ……….. 35

5.5 CONECTAREA SENZORULUI DIGITAL DE LUMINĂ IR, UV ȘI VIZIBIL SI1145 ……………………… 36
CAPITOL 6 IMPLEMENTAREA SISTEMULUI ȘI ACHIZIȚIA SEMNALELOR ………………………….. . 37
6.1 CONFIGURAR EA PLĂCII RASPBERRY PI 4, MODEL B ………………………….. ………………………….. … 37
6.2 CONFIGURARE PUTTY ………………………….. ………………………….. ………………………….. …………………. 39
6.3 REZULTATE EXPERIMENTALE ………………………….. ………………………….. ………………………….. …….. 40
6.3.1 SENZORUL DHT11 DE UMIDITATE ȘI TEMPERATURA ………………………….. ……………………. 40
6.3.2 SENZORUL DE UMIDITATE A SOLULUI ………………………….. ………………………….. ……………… 42
6.3.3 SENZORUL D E PLOAIE (RAINDROPS) ………………………….. ………………………….. …………………. 43
6.3.4 SENZORUL DE NIVEL AL APEI ………………………….. ………………………….. ………………………….. .. 45
6.3.5 SENZORUL SI1145 ………………………….. ………………………….. ………………………….. …………………… 46
CAPITOLUL 7 IMPLEMENTAREA SOFTWARE ………………………….. ………………………….. ……………….. 47
7.1 APLICAȚIA ANDROID. ………………………….. ………………………….. ………………………….. ………………….. 47
7.1.1 PREGĂTIRE MEDIU DE DEZVOLTARE APLICAȚIE ………………………….. ………………………….. 47
7.1.2 PREZENTAREA APLICAȚIEI ………………………….. ………………………….. ………………………….. ……. 47
7.2 PREGATIRE SISTEM BAZA DE DATE ………………………….. ………………………….. …………………………. 49
7.2.1 INSTALARE UBUNTU AWS EC2 ………………………….. ………………………….. ………………………….. 49
7.2.2 ACCESARE AWS UBUNT U ………………………….. ………………………….. ………………………….. ……… 50
7.2.3 CONFIGURARE SERVER DE BAZE DE DATE MYSQL ………………………….. ………………………. 50
CONCLUZII ………………………….. ………………………….. ………………………….. ………………………….. ……………… 53
REFERINȚE ………………………….. ………………………….. ………………………….. ………………………….. ……………… 55
ANEXE ………………………….. ………………………….. ………………………….. ………………………….. ……………………… 58
ANEXA 1 MONTAJUL FINAL AL SISTEMULUI ………………………….. ………………………….. ………………… 58
ANEXA 2 CO DUL PENTRU SISTEMUL IMPLEMENTAT IN RASPBERRY PI ………………………….. … 59
ANEXA 2 CODUL INTERFEȚEI GRAFICE PENTRU APLICAȚIA ANDROID ………………………….. … 61
ANEXA 3 COD SURS Ă AP LICA ȚIA ANDROID ………………………….. ………………………….. ………………….. 64

Lista tabelelo r

TABEL 3 . 1 COMPARAȚIE ÎNTRE SENZOR ȘI TRADUCTOR [23] ………………………….. ……………………… 20

TABEL 5.1 CONEXIUNILE SENZORULUI DHT11 ………………………….. ………………………….. ………………… 32
TAB EL 5.2 CONEXIUNILE SENZORULUI DE UMIDI TAT E A SOLULUI ………………………….. …………….. 33
TABEL 5.3 CONEXIUNILE SENZORULU I DE PLOAIE ………………………….. ………………………….. ………….. 34
TABEL 5.4 CONEXIUNILE SENZORUL UI DE NIVEL AL APEI ………………………….. ………………………….. 35
TABEL 5. 5 CONEXIUNILE SENZORULUI DIGITAL DE LUMINĂ IR, UV ȘI VI ZIBIL SI1145 …………… 36

Listă figuri

FIGURA 1. AGRICULTURĂ INTELIGENTĂ BAZ ATA PE INTERNET OF THINGS [2] ………………………….. …………… 6

FIGURA 1. 1 INTERNETUL LUCRURILOR. IMAGINE PRELUATĂ DIN SURSA [6] ………………………….. ……………… 7
FIGURA 1. 2 COMUNICAREA PRIN INTERMEDIUL TELEF ONIEI FIXE ȘI MOBILE[7] ………………………….. ………… 8
FIGURA 1. 3 COMUNICAREA CU AJUTORUL INTERNETULUI [7] ………………………….. ………………………….. ………… 8
FIGURA 1. 4 COMUNICAREA CU AJUTORUL RETELELOR SOCIA LE [7]………………………….. ………………………….. . 9
FIGURA 1. 5 COMUNICAREA CU AJUTORUL INTERNETUL LUCRURILOR [7] ………………………….. …………………. 9
FIGURA 1.6 BENEFICII IOT IN AGRICULTURA [11] ………………………….. ………………………….. ………………………….. .. 10
FIGURA 1. 7 ARHITECTURA IOT [7] ………………………….. ………………………….. ………………………….. ……………………… 11
FIGURA 1. 8 ETAPA 1 – SENZORII [7] ………………………….. ………………………….. ………………………….. …………………….. 11
FIGURA 1 . 9 SISTEME DE PRELU CRARE A DATELOR [7] ………………………….. ………………………….. ………………….. 12
FIGURA 1.10 ANALIZA ÎN EDGE [7] ………………………….. ………………………….. ………………………….. ……………………… 13
FIGURA 1. 11 GOOGLE CLOUD ANALYTICS [7] ………………………….. ………………………….. ………………………….. ……. 13

FIGURA 2.1 RASPBERRY PI 4 MODEL B. IMAGINE PRELUATA DIN SURSA [15] ………………………….. …………….. 14
FIGURA 2.2 RASPBERRY PI 4, MODEL B , SEMNIFICATIE PINI DE CONTROL ………………………….. ……………….. 16
IMAGINE PRELUATA DIN SURSA[17] ………………………….. ………………………….. ………………………….. …………………… 16
FIGURA 2.3. CONVERTOR ANALOG DIGITAL, MODEL MCP3008 [19] ………………………….. ………………………….. … 17
FIGURA 2.4 MCP 3008, PINI DE CONTROL [18] ………………………….. ………………………….. ………………………….. ………. 18

FIGURA 3. 1 CONVERTIREA EXCITAȚIE FIZICE ÎN EXCITAȚIE ELECTRICĂ ………………………….. ………………….. 19
FIGURA 3. 2 SENZOR ………………………….. ………………………….. ………………………….. ………………………….. ……………….. 20
FIGURA 3. 3 TRADUCTORUL ………………………….. ………………………….. ………………………….. ………………………….. …… 20
FIGURA 3. 4 SENZORUL DHT11 [27] ………………………….. ………………………….. ………………………….. ……………………… 22
FIGURA 3.5 SENZORUL DE UMIDITATE A SOLULUI [29] ………………………….. ………………………….. ………………….. 23
FIGURA 3.6 SENZORUL DE PLOAIE (RAINDROPS) [31] ………………………….. ………………………….. ……………………… 24
FIGURA 3.7 CONFIGURAȚIA PINULUI SENZORULUI DE PLOAIE ………………………….. ………………………….. ………. 24
FIGURA 3. 9 SENZORULUI DIGITAL DE LUMINĂ IR, UV ȘI VIZIBIL SI1145 [34] ………………………….. ……………… 25

FIGURA 5.1 CONECTAREA SENZORULUI DHT11 DE UMIDITATE ȘI TEMPERATURA ………………………….. ……. 32
FIGURA 5.2 CONECTAREA SENZORULUI DE UMIDITATE A SOLULUI LA RASPBERRY PI …………………………. 33
FIGURA 5.3 CONECTAREA SENZORULUI DE PLOAIE LA RASPBERRY PI ………………………….. ……………………… 34
FIGURA 5.4 CONECTAREA SENZORULUI DE NIVEL AL APEI LA RASPBERRY PI ………………………….. ………….. 35

FIGURA 5. 5 CONECTAREA SENZORULUI DIGITAL DE LUMINĂ IR, UV ȘI VIZIBIL SI1145 LA RASPBERRY PI
………………………….. ………………………….. ………………………….. ………………………….. ………………………….. …………………… 36

FIGURA 6.1 CONFIGURAREA PLĂCII RASPBERRY PI ………………………….. ………………………….. ……………………….. 37
FIGURA 6.2 CONFIGURAREA PLĂCII ………………………….. ………………………….. ………………………….. ……………………. 38
FIGURA 6.3 CREDENȚIALELE SISTEMULUI ………………………….. ………………………….. ………………………….. …………. 38
FIGURA 6.5 ADRESA IP ………………………….. ………………………….. ………………………….. ………………………….. ……………. 39
FIGURA 6.6 : REALIZAREA CON EXIUNII IN PUTTY ………………………….. ………………………….. ………………………….. 40
FIGURA 6.7 CAZ 1 EXPERIMENT – SENZORUL DHT11 DE UMIDITATE ȘI TEMPERATURĂ ………………………….. 40
FIGURA 6.8 VALORI OBȚINUTE DE SENZORUL DHT11 CÂND NU SE EXERCITĂ NICIO ACȚIUNE ASUPRA
LUI ………………………….. ………………………….. ………………………….. ………………………….. ………………………….. ……………… 41
FIGURA 6.9 CAZ 2 EXPERIMENT – SENZORUL DHT11 DE UMIDITATE ȘI TEMPERATURA ………………………….. 41
FIGURA 6.10 CAZ 2 EXPERIMENT – SENZORUL DHT11 DE UMIDITATE ȘI TEMPERATURĂ ……………………….. 41
FIGURA 6.11 CAZ 1 EXPERIMENT –SENZORUL DE UMIDITATE A SOLU LUI ………………………….. ………………….. 42
FIGURA 6.12 VALORI OBȚINUTE DE SENZORUL DE SOL CÂND DETECTEAZĂ UMIDITATE …………………….. 42
FIGURA 6.13 CAZ 3 EXPERIMENT –SENZORUL DE UMIDIT ATE A SOLULUI ………………………….. ………………….. 43
FIGURA 6.14 VALORI OBȚINUTE DE SENZORUL DE SOL CÂND NU DETECTEAZĂ UMIDITATE ………………… 43
FIGURA 6.15 CAZ 1 EXPERIMENT –SENZOR UL DE PLOAIE ………………………….. ………………………….. ………………. 44
FIGURA 6.16 VALORI OBȚINUTE DE SENZORUL DE PLOAIE CÂND NU DETECTEAZA APA ………………………. 44
FIGURA 6.17 CAZ 2 EXPERIMENT –SENZORUL D E PLOAIE CAND ESTE STROPIT CU APA ………………………… 44
FIGURA 6.18 VALORI OBȚINUTE DE SENZORUL DE PLOAIE CAND DETECTEAZĂ APA ………………………….. .. 45
FIGURA 6.19 SENZORUL D E NIVEL APA INTRODUS IN PAHAR CU APA ………………………….. ……………………….. 45
FIGURA 6.20 VALORI OBȚINUTE DE SENZORUL DE NIVEL AL A PEI ………………………….. ………………………….. … 45
FIGURA 5. 21 CAZ 1 EXPERIMENT –SENZORUL DE LUMINA ………………………….. ………………………….. ……………. 46
FIGURA 6.20 VALORI OBȚINUTE DE SENZORUL DE LUMINA ………………………….. ………………………….. ………….. 46
FIGURA 7.1. ACTIVITATEA DE CONFIGURARE ………………………….. ………………………….. ………………………….. ……. 47
FIGURA 7.2 ACTIVITATEA PRINCIPALA ………………………….. ………………………….. ………………………….. ………………. 48
FIGURA 7.3. CONSOLA AWC EC2 ………………………….. ………………………….. ………………………….. …………………………. 49
FIGURA 7.4 STRUCTU RA BAZEI DE DATE ………………………….. ………………………….. ………………………….. ……………. 52

Lista a cronimelor

IoT- Internetul lucrurilor (Internet of Things)
M2M – Machine to machine
2G,3G,4G – A doua/treia/patra generație
I/O – Intrare/ Ieșire ( Input/Output)
SDI- Interfață serial digitală (Serial digital interface)
DC- Curent direct (Direct curr ent )
USB – Magistrală Serială Universală ( Universal Ser ial Bus )
GPIO – Port gene ric de intrare/ie șire (General -Purpose Input/Output )
RAM – Memorie cu acces aleator (Random Access Memory)
SD- Dispozitiv de stocare (Storage Device)
IDE- Mediu de dezvoltare integrat (Integrated development environment )
SCLK – Ceas se rial (Serial clock)
MOSI – Master Ou tput, Slave Input (ieșire master, intrare slave)
MISO – Master Input, Slave Output (intrare master, ieșire slave)
PWM – Modulația impulsurilor în lățime (Puls e width modulation )
CO2 – Dioxid de carbon
PCB – Circuit imprima t/ cablaj imprimat (Printed Circuit Board)
HDMI – Interfață multimedia de înalta definiție ( High -Definition Multimedia Interface)
GND – Masă (ground)
UV- Raze ultraviolete
IR- Radiația în infrar oșu
I2C- Inter -Integrated Circuit
TCP/IP – Protocol de control al transmisiei /Protocol Internet ( Transmission Control
Protocol/Internet Protocol)
ADC – Convertor analog digital
SSH – Secure Shell
VCC – Tensiunea de alimentare (Voltage at the Common Collector )

6
Introducere

Internetul lucrurilor (Internet of Thin gs – IoT) est e o tehnologie în curs de dezvolt are, care tinde
spre a face parte din viața cotidiană din ce î n ce mai mult. Acesta joacă un rol important în transformarea
"tehnologiei tradiționale" în "tehnologie avansată modernă".
Multiple le aspecte ale IoT, fac ca ace sta să fie o tehnologie extinsă în multe domenii.
Unul dintre domeniile principale în care se d esfășoară cercetarea bazată pe IoT și se lansează produse
noi pentru a face activitățile mai inteligente și eficiente, spre o produ cție mai bună, este agricultur a.
În ciuda percepției pe care oamenii o pot avea cu privire la procesul agricol, realitatea es te că
industria agriculturii de astăzi este centrată pe date, este precisă și mai inteligentă ca niciodată.
Producția agricolă nece sită o mulțime de activ ități p recum m onitorizarea solului și a plantelor,
monit orizarea mediului, precum umiditatea și temper atura, transportul, gestionarea lanțului de
aprovizionare, managementul infrastructurii, managementul sistemelor de control, monito rizarea
animalelor, controlul dăunătorilor etc.
IoT aduce o mulțime de avantaj e atât pentru oameni, cât și pentru companii, deoarece acestea
controlează diverse procese, el imină erorile umane, ajută la îmbunătățirea relației cu clienții, la
economisirea t impului și bugetului, la luare a unor decizii bune, la regând irea planurilor bus iness cu
ajutorul tool -urilor de strategie și chiar la creșterea productivității. Foarte multe organizații folosesc IoT
pentru o comunicare mai eficientă, pentru a înțelege mai ușor nevoile clienților sau pe ntru a lua cu
ușurință anumite decizii, ce le pot aduce mai mult profit.
Împreună cu alte dezv oltări tehnologice, cum ar fi Cloud computing, rețelele inteligente,
nanotehnologia și robotica, universul Internetului lucrurilor asigură un uriaș pas înainte s pre o economie
caracterizată p rin eficiență spori tă, productivitate, siguranță și profit. [1]

Figura 1. Agricultur ă inteligent ă bazata pe internet of Things [2]

7
Capitolul 1 Internet of Things (IoT)

1.1 Noțiuni gener ale

Internetul lucrurilor (Internet of Things/ IoT) se refer ă la un sistem tehnol ogic care cuprinde miliarde
de dispozitive din intreaga lume, conectate la Internet, capabile sa interac ționeze intre ele, colect ând si
partaj ând date. Aproape orice obiect f izic poate fi transformat într-un dispozitiv IoT dac ă poate fi conectat
la interne t pentru a fi controlat sau pentru a comuni ca informa ții.[3]
Primele referiri integrate despre Internetul lucrurilor (IoT) apar in 2012 cand , Uniunea Internationala
de Teleco munica ții, define ște Inter netul lucrurilor ca fiind o infrastructura global a pentr u Societatea
Informatic ă, ce permite servic ii avansate prin interconectarea ( fizică si virtual ă ) lucrurilor bazate pe
existen ța si evolu ția informa țiilor integrabile si a t ehnologiilor de comunica re.
Din perspectiva tehnologic ă IoT este o combina ție de componente multiple de software si hardware
a tehnologiilor IoT multistrat. Tehnologia lucrurilor IoT este compus ă din 3 niveluri:
– nivelul lucrurilor sau aparatelor;
– nivel ul conectivit ății;
– nivelul I oT cloud [4]
Definiția IoT a evoluat din cauza con vergenței mai multor tehnologii, a analizelor în timp real,
învățării automate și a sistemelor integrate. Sistemele integrate, rețelele wireless, sistemele de control,
automati zările (inclusiv automat izarea grădinilor) contribuie la facilitarea accesului la i nternet. Există
numeroase aplicații IoT în agricultură, cum ar fi: colectarea datelor privind temperatura, precipitațiile,
umiditat ea, viteza vântului, umiditatea solului. A ceste date pot fi folosi te pen tru a automat iza tehnicile
agricole, pentru a lua dec izii cu scopul îmbunătățirii calității.
„Agricultura de precizie este cel mai avansat sistem de gestionare a agriculturii din ultimii ani.
Include detectarea, măsurarea, răs punsul la informațiile d espre sera fermieri lor, dacă există vreo
schimbare bruscă î n ceea ce priveste productivitatea. Cu aju torul dispozitivelor hardware și conexiunii
la internet, se poate dezvolta un mediu inteligent care să ofere informații pentru oraș e, industrie, sănătate,
energi e și transpor t etc., pentru viaț a noastră de zi cu zi . Acest lucru poate fi posibil numai prin
interconectarea tuturor dispozitivelor în orice mome nt și în orice loc cu acces la date.” [ 5]
Conceptul a evoluat de la ideea de ma chine -to-machine (M2M) ș i anum e ideea de a conecta 2
mașini, sisteme sau servicii c u ajutorul rețelelor locale (WI -Fi, Blue tooth, NFC, RFID, Ethernet) sau a
rețelelor globale (2G, 3G, 4G) pentru a crea o rețea de dispozitive, fără intervenția omului. IoT s e referă
mai exact la in tercon ectarea dispo zitivelor electronice de orice natură ce au încorporate capacități de
comunicare ( Interfață de Ethernet, WI -FI, 2G, 3G, 4G). [ 5]

Figura 1. 1 Internetul lucrurilor. Imagine preluată din sursa [ 6]

8
1.2 Evoluția in ternetului

Fiecare inven ție a început cu o nevoie. Atunci c ând oamenii se afl ă în impas și nu știu cum s ă
rezolve o proble mă, imagina ția îi va duce in punctul în care ei insi și vor inventa un instrument pentru a
le face via ța mai u șoară.
1.Înaintea inte rnetului : cea mai mare parte a comunicării dintre oameni a fost prin intermediul
telefoniei fixe și mobile.
In secolul XIX pr ecursorul internetului este telegraful care globalizeaz ă informa ția pe care o face
să circule mai repede schimb ând viteza cu care s e mișcă lumea . [7]

Figura 1. 2 Comunicare a prin intermediul telefoniei fixe și mo bile[7]

2. Începutul internetului : Apariț ia internetulu i a produs schimbări importante în viața oamenilor
și este una dintre activitățile care a început să ocupe din ce în ce mai mult din timpul nostru liber. Cu
ajutorul internetului reușim să comunicăm c u persoane aflate la distan ță, să aflăm in formații despre orice
în doar câteva minute. [7]
Internetul este o rețea unitară de computere și alte dispozitive cu adrese computer izate, toate
conectate între e le și operâ nd coordonat grație unui ansamblu s tandard izat de protocoale de transfer de
date.
Internetul a intrat cu adevărat în viața noastră, a celor mai mulți, dacă nu chiar a tuturor . O bună
parte din existența noastră se d esfășo ară în acest mediu, căru ia îi folos im intensiv imensele resurse le, de
la come rț și banking online, la lectur ă; de la so cializare l a cursuri universitare, de la muzică, jocuri și
filme la comunicarea cu cei aflați departe. Internetul ne -a schi mbat fundamental experie nțele, trăi rile,
ideile, iar aventura simbioze i noastre cu lumea vi rtuală oferită de el continuă ș i se intens ifică. [8]

Figura 1. 3 Comunicarea cu ajutorul internetului [7]

3.Internetul oamenilor : După inventarea blogurilo r, soc ial media a început să e xplodeze în
rândul oamenilor. Site -uri precum Facebook, Youtube, Li nkedIn au evoluat la începutul anilor 2000 .

9
YouTube a fost creat în februarie 2005, creând un mod complet nou pentru ca oamenii să aibă șansa de
a se face auzi ți și de a descoperi lumea. In ternetul es te cea mai mare rețea de calculatoare din lume, un
spați u public creat prin punerea gra tuită la di spoziția ut ilizatorilor a numeroase servicii și produse.
Internetul a deveni t o obișnuință a zilelor noastre, fiind f olosit foarte des și în diferi te împrejur ari.
Utilizatorii pot găși răspuns la orice întrebare pe care și -o pun, pot trimite mes aje oriunde în lume aproape
instantaneu, pot transfe ra documente cu informații din orice domeniu de activitate. [ 7]

Figura 1 . 4 Co municarea cu ajutorul re telelor soc iale [7]

4.Internetul lucrurilor : „ La inceputul anilor 2000, Kevin Ashton punea deja bazele a ce ea ce
cunoa ștem azi sub denumirea de Internet of Things (IoT). Ashton a fost unul dintre primii care a conceput
aceas tă no țiune, iar acest concept a fost sim plu si puternic. Dacă toate obiectele din viata de zi cu zi ar fi
echipate cu dispozitiv e de identi ficare și ar fi conectate prin tehnologie wireless, atunci aceste obiecte ar
putea comunica unele cu celalalte și ar putea fi coordonate de calcula toare.” In ternetul lucrurilor este o
tehnologie în curs de dezvolta re, care tinde spre a face part e din viața cotidiană din ce în ce mai mult.
Multiplele aspecte pozitive, precum și numărul din ce în ce mare de dispozitive, te hnolo gii și platforme
în acest domeniu, au condus ca IoT să fie o tehnologi e extinsă în multe dom enii. [ 9]

Figura 1. 5 Com unicarea cu ajutorul Internetul lucrurilor [7]

10
1.3 Beneficiile pe care IoT le aduce in domeniul agriculturii

IoT aduce o mulțime de beneficii atât pe ntru oamen i, cât și pentru companii, deoarece acestea
monitorizeaz ă diverse procese, care pot îmbu nătăți agr icultura ș i anume: [ 10]

1. Datele sunt colectate de la senzorii de agricultură inteligentă, de exemplu con dițiile climatice, calitatea
solului, pro gresul cre șterii cult urilor , sănătatea bovinelor sau locatia acest ora. Aceste date pot fi folosit e
pentru a urmări eficiența echipamentului;

2. Un control mai bun asupra proceselor interne . Agricultura inteligentă face posib ilă evitarea
provocărilor și e liminarea tuturor problemelor care pot apărea î n timpul proceselor agricole. Acest lucru
conduce l a o creste re a calit ății produselor;

3. Gestionarea costurilor și reducerea deșeurilor dat orită controlului sporit asupra produ cției. Fiind
capabil să observ e orice a nomal ie în creșterea culturii sau în sănătatea animalelor , se va putea atenua
riscul pier derii rand amentului;

4. Creșterea eficienței afacerii prin automatiza rea proceselor. Prin utilizarea dispozitivelor inteligente , se
pot automatiza mai mu lte procese î n întreg ciclul de producție, de ex. irigare, fertilizare sau combatere a
dăunătorilor;

5. Calitate a și volumul îmbunătățit al produselor. Senzorii îi ajută pe fermieri să stabilească momentul
cel mai bun pentru plantarea culturilor și recoltarea acestora .

Figura 1.6 Beneficii IoT in agricultur a [11]

11
1.4 Arhitectura IoT

IoT este tehnologia care construiește sisteme capabile să perceapă autonom și să răspundă la
stimulii din lumea reală, fără intervenția umană. Arhit ectura IoT cuprind e, în gen eral, patru etape:

Figura 1. 7 Arhitectura IoT [7]

1.4.1 Etapa 1 (senzori / actuatori):

Sistemul IoT „ Internet of Things” este constituit din dispozitive inteligente care utilizeaz ă
procesoare integrate, senzori ș i actuatori care ofer ă capacit atea de a colecta, prelucra și emite datele pe
care le obțin din me diile lor . [7]

Figura 1. 8 Etapa 1 – Senzorii [7]

12
1.4.2 Etapa 2 (Sisteme de achzitie a datelor)

Datele furnizate de senzori sunt în formă analogic ă. Aceste date trebuie să fie transform ate în
fluxuri digitale pentru prelucrarea ulterioară. Aceste date sunt trimise procesorului print r-un mod de
transmisie, conexiune prin cablu sau fără fir, iar sistemele de achiziție a datelor realizează conversia
acestora. Prelucrarea informațiilor încor porate: obiectele inteligente sunt dotate cu un procesor sau
microc ontroler, plus o capacitate de stocare. Ac este resurse pot fi utilizate, de exemplu, pentru
prelucrarea și interpretarea inform ațiilor provenite de la senzori sau pentru a oferi produselor o
„memor ie” privind modul în care acestea au fost utilizate. [ 7]

Figura 1. 9 Sisteme de prel ucrare a dat elor [7]

1.4.3 Etapa 3 ( Analiza Edge):

După ce datele IoT au fost digitalizate și agregate, poate fi necesară o preluc rare suplimentară
înainte de a intra în centrul de date. A ici intervine Edge Analytics.
Până în pre zent, rolul dispozitivului re mote a fost a cela de a asimila, stoca și trimite date către
sistemele de tip Cloud. Cu toate acestea, astăzi Edge Computing vizează stocarea și prelucrarea da telor
la locația mașinii. Edge se concentrează pe dispozitive care su nt compatibile “IoT”.

Există mai m ulte mo tive pentru a efectua operațiuni pe Edge:

• reducerea timpului de reacție, efectuarea unei analize imediate;
• red ucerea costurilor de transfer de date că tre Cloud;
• securitatea cibernetică – evită trimiterea și stocarea datelor în Cloud;
• accesul la da te temporale pentru analiza în timp real;
• capacitatea de a fu ncționa chiar fără conectarea la Cloud.

13

Figura 1 .10 Analiza în Edge [7]

Goog le a anunța t lansarea a do uă componente importante so ftware și hardwa re care conferă
competențe Ed ge Devices:

• Primul este Cloud IoT Edge. Aceasta este o componentă software care extinde procesarea
datelor Google Cloud la mi liarde de dispozitive de ultim ă generație , astfel încât acestea să poată acționa
în timp real asupr a datelor senzorilor și să pr ezică rezulta tele local. Cloud IoT Edge poate rula pe sisteme
de operare bazate pe Linux. [12]
• Al doilea instrument este Edge TPU chip. Este componenta hard ware a Goog le al cărei scop
este îmbogățirea dispozitivelor prin rula rea AI la Edge. Este optimiza t pentru un c onsum redus de
energie. [ 12]

1.4.4 Etapa 4 (Analiza în Cloud )

Datele care necesită o procesare mai amanunti ță sunt tr ansmise către centre de date f izice sau sisteme
bazate pe Cloud.

Figura 1. 1 1 Google Cloud Analyt ics [7]

14
Capitolul 2 . Platformele de d ezvoltare folosite

2.1 Raspberry Pi 4, model B

Raspberry Pi [13] este un sistem de calcul cu un cost redus, car e folosește pentru stocarea de date
un ca rd de memorie extern, ce poate fi conectat la un monitor sa u la un televizor si la care se poate
cone cta o tastatur ă si un mouse. Acesta contine module de Wi -Fi, Bluetooth si este capabil s ă realizeze
toate sarcinil e pe care un calculator clasic te-ai aștepta să le fac ă, cum ar fi, navigarea pe internet, rularea
de continut video de calitate înaltă (high -definition), abilitatea de a crea si edita fisere text sau foi de
calcul, iti ofer ă chiar și posibilitatea de a ju ca jocuri video.
Raspberry Pi are o carac teristică specială pe care calculatoarele nu o folosesc și anume, portul
generic de int rare/ieșire (G eneral -Purpose Input/Output – GPIO). Datorit ă acest eia, i ți ofer ă posibilitatea
de a conecta diverse c omponente electronice specifice: diversi senzori, buto ane, ecran LCD.
Sistemele de calcul Raspberry Pi iti ofer ă posibilitatea s ă interactionezi cu mediul extern prin
intermediul modulele ce se pot ata șa acestuia și se poate folosi intr -o variatate de proiecte precum,
detec ția condi țiilor meteo, supraveghere video etc. [14]

Am ales sa folosesc pentru acest proiect u n dispozitiv Raspberry Pi 4, model B.

Figura 2.1 Raspberry Pi 4 Model B. Imagine preluata din sursa [ 15]

Caracteristicile acestui sistem de calcul sunt:

• Procesor: Broadcom 2711
• Arhitectura pro cesor: Cortex – A72, 64 biti
• Frecventa procesor: 1.5 GHz, 4 nucle fizice
• Memorie RAM: 2 GB LPDDR4 SDR AM

15
• Conectivitate:
– Ethernet: Gigabit
– Bluetooth: 5.0 BLE
– WiFi: 2.4 GHz si 5 GHz IEE 802.11 b/g/n/ac
– 2 x USB 2.0
– 2 x USB 3.0
• Conector de uz general de intrare/ie sire (GPIO) cu 40 de pini
• Video & audio:
– x port micro HDMI cu suport 4k
– 1 x conector MIPI DSI (Di splay Serial Interface)
– 1 x conector MIPI CSI (Camera Serial Interface)
– iesiri audio stereo si pentru continut video
• Multimedia:
– decodare H.265 la rezolutie (4kp60)
– decodare H.264 la rezolutie fullHD (1080p60)
– codare H.264 la rezolutie fullHD (1080p60)
– Grafica OpenGL ES 1.1, 2.0, 3.0
– Slot c ard microSD pentru rularea sistemului de operare și stocare date lor
– Alimentare USB Type C: 5V, 3A
– Temperatură d e operare: 0 – 50 grade Celsius

2.1.1 Sistemul de ope rare

Raspbian este sistemul de operare folosit de Raspberry Pi.
Acesta [ 16] este un sistem de operare open -source bazat pe Debian Linux, optimizat pentru hardware –
ul Raspberry Pi.
Un sistem de operar e reprezinta un set de programe absolut necesare pentru buna func ționare a
sistemului de calcul si programe utilitare. Cu toate acestea, Rasp bian oferă mai mult decât un sistem de
operare pur : este livrat cu peste 35000 de pachete software precompilate care oferă o experien ță placut ă
pentru utilizator. [14]

2.1.2 Configurația pinilor GPIO la placa Raspberry Pi 3

O caracteristică puternică a Raspberry Pi este conectorul de 40 de pini GPIO ( General -Purpose Input
/ Output). Oricare dintre pinii GPIO poate f i desemnat (în software) ca pin de intrare sau de ieșire și
utilizat pentru o gamă largă de scopuri .[17]

16

Figura 2.2 Raspberry Pi 4, mod el B , Semnifica ție pini de control
Imagine preluata din sursa[17]

Din cei 40 de pini avem:

• 2 pini de 5V ( pin 2 si pin 4 )
• 2 pini de 3V3 ( pin 1 si pin 17 )
• 8 pini de GND (masă) – pinii 6, 9, 14, 20, 25, 30, 34 și 39;
• Pinii 27 si 28 – EEPROM Data, EEPROM Clock
• 24 de pini GPIO, unii dintre ei cu funcționalitate dublă;
• Pinii 3 și 5 (GPIO2 – SDA și GPIO3 – SCL) sunt și magistrală I2C;
• Pinii 8 și 10 (GPIO14 – TXD și GPIO15 –RXD) sunt și linii de comunicație
serială UART;
• Pinii 19, 21, 23, 24 și 2 6 (GPIO10 – SPI0_MOSI, GPIO9 – SPI0_MISO, GPIO11 –
SPI0_CLK, GPIO8 – SPI_CE0 și GPIO7 – SPI_CE1) – pini magistrală 0 SPI cu două
semnale de chip select. [ 17]

2.2 MCP3008

MCP3008 este un convertor analog digital pe 10 biti cu opt canale de intrare . Are o interfață
compatibilă SP I care este utilizată pentru a obține o ieșire digitală pentru toate canalele. Precizia acestui
ADC este similară cu cea a unui Arduino Uno .[18]

17
De ce avem nevoie de un ADC?

Raspberry Pi nu dispune de o modalitate de a citi int rări analogi ce. Este un computer doar digital.
MCP3008 acționează ca o "punte" între digital și analog . Raspb erry Pi îl poate interoga folosind 4 pini
digitali . Acest ADC es te completare a perfectă pentru integrarea senzorilor simpli .[18]

Figura 2.3. Co nvertor anal og digital, model MCP3008 [19]

Configurația pinilor MCP3008

MCP3008 se conectează la Raspberry Pi folosind o conexiune serial a SPI.

Pentru a conecta MCP3008 la Raspberry Pi cu o conexiune SPI software, trebuie realizate
următoarele conexi uni:

• MCP3008 VDD → Raspberry Pi 3.3V
• MCP3008 VREF → Raspberry Pi 3.3V
• MCP3008 AGND →Raspberry Pi GND
• MCP3008 DGND → Raspberry Pi GND
• MCP3008 CLK → Raspberry Pi pin 18
• MCP3008 DOUT → Raspberry Pi pin 23
• MCP3008 DIN → Raspberry Pi pin 24
• MCP3008 CS/SHDN → Raspberry Pi pi n 25

18

Figura 2.4 MCP 3008, pini de control [18]

• Specifica ții:
• rezolu ție 10 bit
• Temperatura de operare: -40°C – 85°C
• Tensiuni de lu cru între : 2.7 V – 5 V
• Timp de conversie :10µs
• Tip canal de intrare: Pseudo diferențial, Single Ended
• Nr. Pin i -16

19
Capitolu l 3. Senzorii

3.1 Defini ție

O parte important ă din acest sistem este reprezentat ă de senzori . Cu ajutorul acestora putem s ă
colect ăm datele de care avem nevoie. Senzorii i nterac ționeaz ă cu mediul extern, colect ând date specifi ce
(temperatur ă, umiditate, intensitate luminoas ă).
Senzor ii pot fi definiti ca dispozitiv e utilizate pentru a detecta si a răspunde la semnale electrice
sau optice. Ace știa convertesc parametrii fizic i (temperatur ă, umiditate etc.) intr -un semnal care poa te fi
măsurat electric.[20]

Figura 3. 1 Convertirea excitaț ie fizice în excitație electric ă

Toți suntem familiarizați cu senzorii și îi folosim foarte des : printre cei mai simpli dintre senzori
se numără termometrele pentru a măsura temper atura și benzi le de măsurare pentru a măsura distanța.
Există, pe de alta p arte, o varietate fo arte mare de senzori, funcționând după prin cipii complet
diferite și având caracteristici specifice grupei din care fac parte. Orice senzor poate fi privit însă ca o
"cutie ne agră", la intrarea căreia se a plică mărimile fizice care urme ază a fi măsurate, ieșirea fiin d
constituită din semnale electr ice, adecvate transmiterii către sistemul de comandă. Semnalul de ieșire
poate fi utilizat pentru analize ulterioare, managementul s au luarea deciziilor.
Inainte de a fi adoptat pentru sisteme tehnice, au fost și sunt utilizati pentru a desemna capacitățil e
organelor de simț ale oamenilor și ale organismelor vii, de a culege și prelucra informații din mediul
înconjurător și a le transm ite creierului. Funcția senzor ială vizuală, simțul auzului, s ensibilitatea cut anată,
simțul mirosului (olfactiv) și cel gust ativ sunt extrem de utile omului în viața de zi cu zi, ajut ând să
acționeze conform scopurilor și nevoilor lor .[21]
Senzorii pot fi împărțiți în mai multe catego rii in func ție de tipul semnalu lui de intrare .
Aceștia joacă un rol important în aplicațiile i ndustriale, cum ar fi în monitorizarea zilnică a
transportului, calitatea aerului, medicină, creșterea calității vieți i.
Aparitia Io T a determinat extinderea dome niului de utilizare a senzorilo r, având un rol important
nu doar in sectorul industrial, ci și in domeniul comercial si casnic. Senzorii ajută la monitorizarea,
controlul și eficientizarea operațiunilor în aproap e toate tipuri le de sector , furniz ând fluxur i de date pentru
aplicațiile Io T.[22]

20
3.2 Senzor versus traductor

Una dintre diferențele semnificative dintre senzor și traductor este că senzorul detectează
schimbările fizice care apar în mediul înconjurăt or, în timp ce traductorul convertește canti tatea fizică
sau neelectrică în tr-un alt semnal sau semnal el ectric. Alte diferenț e între senzor și traductor sunt
explicate mai jos în tabelul de comparație. [ 23]

SENZOR TRADUCTOR
DEFINIȚIE
Senzorii transfor mă semnalul rec epționat
în semnal electric ș i colectează informații
din lum ea reală.
Traductorul convertește un anumit
tip de energie într -un alt tip de
energie.

COMPONENTE
Senzor
Senzor și condiționarea semnalului

FUNCȚIE
Detectează modificările ș i induce
semnalele electrice corespunză toare .
Conversia unei forme de ener gie în
alta.

EXEMPLE
Senzor de proximitate, accelerometru,
senzor de lumină etc.
Termistor, potențiometru,
termocuplu etc.

Tabel 3. 1 Comparație între senzor și traductor [ 23]

Figura 3. 2 Senzor

Figura 3. 3 Tr aductor

21
3.3 Clasificarea sen zorilor si aplicatii ale acestora:

Pentru a functiona, senzorii trebuie s ă facă parte dintr -un sistem mai mare format din detectori,
circuite de condiționare a semnalului, conver toare (ADC), memorii, actuatori, etc., numit sistem de
achiziție de date.
Senzorii se cl asific ă în mai multe categorii. Cea mai folosit ă clasificare este cea in func ție de
modul de ob ținere a energiei necesare semnalului:
• Senzori activi sunt cei care au n evoie de putere extern ă pentru f uncționare, numit ă și
semnal de excita ție. Ace st semnal este modificat de senzor pentru a produce semnalul de
ieșire. Senzorii activi sunt numiți și parametrici deoarece își modifică proprietățile interne
ca răspuns la varia ția stimulilor externi
• Senzorii pasivi nu au nevoie de o surs ă de energie supl imentar ă si genereaz ă imediat un
semnal electric ca răspuns la un stimul extern; adic ă energia stimulului de intrare e ste
convertită de către senzor in semnal de iesire.
Exemplu : termocuplele, detectorii piro electrici, s enzorii piezoelectrici, etc. [24]

În func ție de natura semnalului de ie șire, putem avea:
• Rezistivi
• Capacitivi
• Inductivi

De asememnea, senzorii se pot clasifica in func ție de semnalul de la intrare:
• mecanici
• termici
• radiativi
• electrici

După modul de vari ație a semnalului de ie șire, senzo rii sunt clasifica ți în:

• Senzori analogic i. produc un semnal continuu la ieșire. Acest semnal este proporțional cu
amplitudinea stimulului.
Exemplu de senzori analogici: accelerometrul, senzorul de presiune, senzorul de lumină,
senzorul de tempera tură, senzor ul acustic etc.
• Senzorul digital gener ează un semnal fizic, în cazul acestuia conversia și transmisia
datelor făcându -se digital.
Exemplu: accelerometrul digital, senzorul de temperatură digital etc .[24]

Pentru realizarea practică a acestei lucrar i s-au utilizat urmatorii senzori:
• Senzorul DHT11 de temperatură și umiditate
• Senzorul de umiditate a solului
• Senzorul de ploaie (Raindrops)
• Senzorul de nivel al apei
• Senzorului digital de lumină IR, UV și vizibil SI1145

22
3.4 Senzorul DHT11 de temperatu ră și umiditate

DHT11 este un senzor de umi ditate și temperatură de înaltă performanță . Este foarte precis și ușor
de utilizat, iar acesta returnează o valoare digitală interpretabilă de către o platformă de tip Raspberry.
În mare part e, măsurarea temper aturii se bazează p e diverse fenomene și efe cte fizice în cadrul
cărora variația temperaturii determină mod ificări ale unor proprietăți sau caracteristici ale materialelor:
variația rezistenței electrice, intensității radiației emise, fr ecvenței de rezonan ță, apariția unei t ensiuni
electromotoare de -a lungul joncțiunii a două metale. Măsurarea temperaturii treb uie să se realizeze cu o
acuratețe foarte ridicată, aceasta fiind foarte importantă pentru multe aplicații de control a diverselor
procese tehnologic e.[25]
Senzorul de umiditate este un dispozi tiv ce determină cantitatea de vapori prezentă într -un gaz
fie el un amestec sau un gaz pur. Umiditatea reprezintă prezența apei în aer, iar această cantitate de vapori
de apă poate afecta în a numite situații con fortul omului sau d iverse procese fizice, bi ologice sau chimice,
afectând mai apoi și procesele fizice de f abricație din industrie. Măsurarea umidității este foarte
importantă atât în sistemele de control pentru procesele industriale, da r și pentru confort ul omului. Este
necesar un control al umidit ății în purificarea gazelor chimice, cuptoare, prelucrarea prod uselor
alimentare, pentru mediul de viață din interiorul clădirilor, iar pentru a menționa nivelurile de umiditate
se utilizează o varietate de termi nologii. [ 26]
Senzorul DHT11 prezintă o com ponentă capacitivă pentru măsu rarea umidității și o componentă
NTC pentru măsurarea temperaturii, iar când acesta este conectat la un microcontroler oferă o calitate
excelentă, dar și un răspun s rapid și o capaci tate mare de combat ere a interferențelor [ 26]

Specificatii senzor DHT11:
• Tensiune de alimenta re 3.5V – 5V
• Gama de măsurare a temperaturii: 0 °C – 60 °C
• Gama de măsurare a umiditatii: 20% – 90%
• Nu funcțione ază sub 0°C
• Acurate țe: ±1°C și ±1%

Figura 3. 4 Senzorul DHT11 [27]

23
3.5 Senzorul de umiditate a solului

Apa este cea mai important ă resurs ă când vine vorba de agricultur ă, iar gestionarea eficient ă este
un câstig semnificativ at ât pentru mediu c ât și pentru fermieri.
Măsurarea umidita ții solului este foarte important ă pentru aplica țiile agricole deoarece le permite
fermierilor s ă iși gestioneze sistemele de iriga ții intr-un mod eficient.
Monitoriz ând umiditatea solurilor și cunoscand condi țiile met eo, ace știa pot s ă creasc ă
randamentele si calitatea culturilor printr -o gestionare imbun atatita a umidit ătii solului în etapele critice
ale cre șterii plantelor.
Senzorul de umiditate a solului este destul de simplu de utilizat. Cele două plăcuțe mari
funcționează ca sonde pentru senzor, acționând împreună ca un resistor variabil. Cu cât este mai multă
apă în sol cu atât conductivitatea dintre plăcu țe va fi mai mare și rezistență mai mică. [ 28]
Pentru a face senzorul să funcționeze trebuiesc conectați pi nii VCC și GND la o placă de
dezvoltare comp atibilă. De obicei senzorii de umiditate p entru sol au o durată de viață scurtă, datorită
faptului că sunt expuși la un mediu umed, da r pentru a combate acest lucru, placă PCB a fost acoperită
cu un strat subțire de aur (ENIG). [ 28]

Specificatii :
• Tensiuni de lucru între 3,3 V – 5 V
• Mod de ieșire dublu, ieșirea digital ă este simplă, ieșirea analogică mai exactă.
• Nivele de sensibilitate reglabilă (afișată î n controlul potențiometrului digital albastr u)

Figura 3.5 Senzorul de umiditate a solului [29]

3.6 Senzorul de ploaie (Raindrops)

Modulul senzorului de ploaie este folosit pentru a detecta picăturile de ploaie cu ajutorul unui
panou de control și al unei pl ăci de induc ție separate, pe care cad pic ăturile de apa . De asemenea , acesta
poate fi folosit și pentru a m ăsura intensitatea preci pitațiilor.
Placa de se nzori acționează ca un rezistor variabil care se va schimba de la 100k ohmi când este
umed și la 2M ohmi atunci când este uscat.
Sensibilitatea se poate regla cu un poten țiometru.

24
Motivele pentru care acest senzor este folosit sunt urmatoarele: poate da un impuls la un aparat
(pompă) care determină oprirea irigării, sau in cazul in care se dore ște inchiderea unei u și/geam. [30]

Caracteri stici tehnice:
• Tensiune de lucru între 3,3 V – 5 V
• Anti-oxida re și anti-conductivitate cu durata de utilizare îndelungat ă
• Indicator de putere: LED

Figura 3.6 Senzorul de ploaie (Raindrops) [31]

Configurația pinilor:
1. VCC: 5V pentru analogic si 3.3V pentru digital
2. GND: masă
3. DO: ieșire ridicată / scăzută
4. AO: ieșire analogică

Figura 3.7 Configura ția pinului senzorului de ploaie

3.7 Senzorul de nivel al apei

Acest senzor ofer ă măsuratori exacte ale nivelului apei pentru o mulțime de ap licatii. Poate fi
utilizat at ât pentru a detecta prezența sau a bsența apei c ât și pentru a măsura cu precizi e nivelul suprafeței
apei.
Senzorul poate fi utili zat pentru a detecta nivelul apei pe o distanță de 40mm. Acesta are o
eficiență foarte bună și un consum foarte mic. Output -ul este analogic, dând o tensiune în funcție de
nivelul apei. Acesta poate fi folo sit împreună cu microcontrolere și plăcuțe de dezv oltare, precum
Arduino sau Raspberry PI cu ajutorul unui convertor analog digital [32]

25
Specificații:

• Tensiunea de funcționare: 3 VDC până la 5 Vcc ;
• Curent de operare: < 20 mA;
• Suprafață de detecție: 40 mm x 16 mm;
• Temperatura de operare: 10 ˚C până la 30 ˚C;
• Umiditate: 10% până la 90%

Figura 3. 8 Senzorul de nivel al apei [ 32]

3.8 Senzorului digital de l umină IR, UV și vizibil SI1145

SI1145 este un n ou senzor de la SiLabs cu un algoritm de detectare a luminii , care poate calcula
indicele UV. Nu co nține element e de detectare a razelor ultraviolete, însă aproximeaz ă indicele UV pe baza
luminii vizibile și IR (infraro șie) emis ă de soare. Este un senzor d igital care func ționeaz ă cu I2C, ceea ce
înseamn ă că poate fi c ompatibil c u aproape orice microcont roler . Senzorul include elemente ce pot detecta
atât lumina vizibil ă cât și pe cea infraro șie. [33]

Figura 3. 9 Senzorului digital de lumină IR, UV și vi zibil SI1145 [34]

Caracteristici tehnice:
• Spectrul senzorului IR: lungimea d e und ă 550 nm – 1000 nm (centrat ă pe 800 nm);
• Spectrul senzorului de lumin a vizibil ă: lungimea de und ă 400 nm – 800 nm (centrat ă pe 530 nm);
• Temperatura de operare: -40 °C ~ 85 °C;
• Are un stabilizator de tensiune încorporat care permite alimentare a senzorului la 3 V sau 5V.

26

„Razele ultraviolete numite și raze UV, sunt radi ații electromagnetice cu o lungime de und ă mai mic ă
decât radia țiile luminii percepute de ochiul omenesc. Denumirea d e „ultraviolet” provine de la culoarea violet
din spectrul lum inii albe, care ar e o lungime de undă învecinată, doar că ceva mai mar e” [35]

„Spectrul vizibil ( „spectrul optic”) reprezint ă secțiunea spectrului electromagnetic (totalitat ea
radia țiilor electromagnetice existente in univers ) care este vizibil și poate f i detectat de ochi ul uman f ără
mijloace ajut ătoare. Radia țiile electromagnetice din acest interval de lungimi de und ă se numesc lumi nă
(vizibil ă). Lungime a de unda este intre 400 nm (violet) si 700 nm (rosu) .” [36]

„Radia ția în infraro șu (IR) este o radi ație electromagnet ică a cărei lungime de und ă este mai lung ă
decât cea a luminii vizibile (40 0-700 nm), dar mai scurt ă decât cea a r adiației terahertz (100 μm – 1 mm) și a
microundelor (~30000 μm). Lumina infrarosie apar ține s pectrului electromagnetic, fii nd invizibil ă ochiului
uman însă oamenii o pot simti ca și căldură. “ [37]

27
Capitol ul 4 Descrierea tehno logiilor folosite

4.1 Python

,,Python es te un limbaj de programare dinamic, de nivel înalt, ce pune accent pe expresivitatea și
înțelegerea ușoară a codului.
Implementarea de referință a Python este sc risă în C și poartă numele de CPython . Această
imple mentare este software liber și este admini strată de fundația Python Software Foundation.
În ceea ce privește paradigma de programare, Python poate servi ca limbaj pentru software de
tipul object -orient ed, dar permite și programarea imperativă, funcțional ă sau procedurală.
Poate fi utili zat pentr u Web și API development, Data Science, automatizarea sistemelor, Machine
Learning, robotică, inteli gența artificială, crearea de jocuri și multe altele. ”[38]

Dintre caracteristicile principale ale limbajului amin tim:

• simplitate – Python es te un limbaj u șor de învățat și de înțeles.
• expresivitate: indentarea face parte din sintaxă ceea ce duce la un cod ușor de urmărit
• python este un limbaj de programare ȋn totali tate orientat pe obiecte, și nu “tastat stat ic”.
• include structuri de date va riate, ușor de folosit, permite OOP într -un mod facil, permite realizarea
aplicațiilor cu interfață grafică, aplic ații de desenare etc., permite realizarea de aplicații web
(situri ca Youtube, Amazon etc. sunt realizate în Pytho n)
• Spre deosebire de alte l imbaj e de progr amare, nu trebuie sӑ declari variabilele sau tipul lor ȋnainte
de a le utiliza. Fiecare variabilӑ ȋ n Python este consideratӑ un obiect.
• poate fi încorporat în alte programe ca limbaj de script
• este extensibil, se p ot conecta cu ușurinț ă modu le no i și putem extinde funcționalitatea acestuia .
• dispune de accesorii importante de implementare și documentare : IDE cu evidențiere sintactică
și sugestii, debugging ușor [39]

“Limba jul Py thon este interpretat, nu compila t (instrucțiunile sunt citite lin ie cu lin ie de un
program numit interpretor și traduse în instrucțiuni mașină; avantaj: simplitate; dezavantaj: viteza de
execuție redusă ).” [38]

4.2 Java

„Java este un limbaj de programare de nivel înalt, dezvoltat de JavaSoft, companie în cad rul
firmei Sun Mi crosystems.

Dintre caracteristicile principale ale limbajului amintim:

• simplitate – Java este un limbaj ușor de învățat, car acteristicile complicate (supraîncărcarea
operatorilor, moștenirea multiplă, șabloane) î ntâlnite în alte limbaje de progr amar e sunt eliminate.
• robustețe, elimină sursele frecvente de erori ce apar în programare prin eliminarea pointeri lor,
administrarea au tomată a memoriei și eliminarea fisurilor de memorie printr -o procedură de
colectare a ' gunoiului' care rulează în fundal .

28
• complet orientat pe obiecte – elimină complet stilul de programare procedural; se bazează pe
încapsulare, moșten ire, polimorfism
• ușurință în ceea ce privește programarea în rețea
• portabilitate, cu alte cuvinte Java este u n limbaj independent de platforma pe care lucreaza,
aceeași aplicație rulând, fără nici o modificare, pe sisteme diferite cum ar fi Windows, UNIX s au
Macintosh, lucru c are aduce economii substanțiale firmelor care dezvoltă aplicații pentru Internet.
Slogan ul de bază este: „Write once, run anywhere”
• compilat și interpretat
• permite programarea cu fire de execuție (multithreaded)
• este modelat după C și C++, trecerea de la C / C++ la Java făcându -se foarte ușor.
• permite dezvoltarea aplicațiilor pentru Internet – crearea unor documente Web
• îmbu nătățite cu animație și multimedia.

În funcție de modul de execuție al programelor, limbajele de programare se îm part în două
categorii :

• interpretate: instrucțiunile sunt citite linie cu linie de un program numit interpre tor și traduse în
instrucțiuni ma șină; a vantaj: simplitate; dezavantaj: viteza de execuție redusă;
• compilate: codul sursă al programelor este transf ormat de compilator în tr-un cod ce poate fi
executat direct de procesor; avantaj: execuție rapidă; dezavanta j: lipsa portabili tății, codul
compilat într-un format de nivel scăzut nu poate fi rulat decât pe platforma pe care a fost compilat.

Programele Jav a sunt atât interpretat e cât și compilate .” [40]

4.3 MySQL
“MySQL este un popular server de baze de date SQL, ce ofer ă mijloace de accesar e si ges tionare
a bazelor de date SQL , furnizeaz ă de asemenea și instrumente at ât pentru crearea structurilor de ba ze de
date, c ât și pentru a dăugarea, modificarea si eliminarea datelor din aceste structuri .” [41]
Este dezv oltat, distribuit și suportat de Oracle C orporation.” [ 42]

• „MySQL este un sistem de gestiune a bazelor de date:
– O bază de date este o colecție st ructurată de date. Poate fi ceva de la o listă simplă de cumpărături
până la o galerie de imagini sau cantit ățile mari de informații dintr -o rețea co rporativă. Pentru a
adăuga, a accesa și a pr ocesa datele stocate într -o bază de date computerizată, aveți n evoie de un
sistem de gestiune a bazelor de date, cum ar fi serverul MySQL. Deoarece calculatoarele sunt foa rte
bune la manipularea unor cant ități ma ri de date, sistemele de gestiune a bazelor de date joacă un rol
central în calcul, ca utilități standalone sau ca părți ale altor aplicații.” [ 42]
• „Bazele de date MySQL sunt relaționale:
– O bază de date relațional ă stochează datele în tabele sepa rate, în loc să pună toate datele într -un
singur loc . Structurile bazei de date sunt organizate în fișiere fizice o ptimizate pentru viteză. Modelul
logic, cu obiecte precum baze de date, tabele, vizualizări, rânduri și colo ane, oferă un mediu de
programare flexibi l. Se stabilesc reguli care reglementează re lațiile dintre diferitele

29
câmpuri de date, cum ar fi unul la un ul, unul la mulți, unic, necesar sau opțional, și "indici" între
diferite tabele. Baza de date impune aceste reguli, astfel încât, cu o bază de date bine concepută,
aplicația dvs. nu vede nicio dată date incoerente, duplicate, orfane, depășite sau lipsite d e date.
– SQL este cel mai comun limbaj standardizat folosit pentru a accesa bazele de date. În funcție de
mediul dvs. de programare, este po sibil să introduceți direct cod SQL (de exemplu, pen tru a genera
rapoarte), să încorporați instrucțiunile SQL în co duri scrise într -un alt limbaj de programare sau să
utilizați un API specific limbajului care ascunde sintax a SQL .” [42]
• „Software -ul MySQL e ste de t ip Open Source:
-Open Source înseamnă că este posibil ca oricine să utilizeze și să modifice software -ul. O ricine
poate descărca software -ul MySQL de pe Internet și îl poate folosi fără să plătească nimic. Dacă
doriți, p uteți să studiați codul su rsă și să îl schimbați în funcție de ne voile dvs.” [ 42]
• „Serverul de baze de date MySQL este foarte rapid, fiabil, sc alabil și ușor de utilizat:
-Serverul MySQL a fost inițial dezvoltat pentru a gestiona bazele de date mari mult m ai rapid
decât soluțiile e xistente și a fost utilizat cu succes î n medii de producție foarte solicitante timp de mai
mulți ani. Deși în curs de dezvoltare, server -ul MySQL oferă astăzi un set bogat și util de funcții.
Conectivitatea, viteza și secur itatea lui fac ca server -ul MySQL sa fie f oarte potrivit pentru
accesare a bazelor de date pe Internet.” [ 42]
• „Server -ul MySQL funcționează în sisteme de tip client / server sau embedded:
-Software -ul de baze de date MySQL este un sistem de tip client / ser ver car e constă dintr -un
server S QL multit hread, care suportă diferite b ack-end-uri, mai multe programe și biblioteci diferite,
instrumente administra tive și o gamă largă de interfețe de programare a aplicațiilor (API).” [ 42]

Ce este o bază de date?

O bază de date este o colectie de da te centra lizate , conceput ă pentru a stoca eficient datele. O
bază de date permite menținerea si accesarea rapid ă a datelor.[ 43]

Prelucrarea datelor se referă la urmatoarele operatii:
• Inserare
• Actualizare
• Ștergere
• Interogare [43]

Un sistem de baz e de date este un sistem computerizat de menținere a evidenței unei anumite
activități, folosind baze de date. [ 43]

“Componentele unui sistem de baze de date sunt urmatoarele: hardware, software, utilizatori, date
persiste nte.”

• Hardware:
– Sistemele de ba ze de dat e sunt instalate pe calculatoar e de uz general
– Bazele de date sunt memorate fizic ca fișiere pe discuri magne tice

30
– Dimensiunea și performanțele bazei de date depind de sistemul de calcul pe care
este instalată [43]

• Software
– Sisteme de ope rare, b iblioteci , inst rumente de dezvoltare, interf ețe
– Sistemul de gestiune a bazelor de date (SGBD)” [44] “- set de unelte sof tware care
controlează accesul, organizează, stochează, gestionează accesează și menține
datele într -o bază de date” [43]
– “Aplicații de baze de d ate: – sunt programe care creează și ut ilizează baze de date

• Utilizatori
– Administratorul bazei de date
– Analișt i și proiectanți ai bazelor de date
– Programatori de aplicații
– Utilizatori finali [43]

• Date persistente
– Fișiere memorate pe har d-disk” [44]

“Sistemul de pr ograme cu car e se pot construi bazele de date, se pot introduce date in bazele de
date și se pot de zvolta aplicații privind bazele de date se numește sistem de gestiune al bazelor de date
(SGBD). Un SGBD dă posibil itatea utilizatorului să aibă a cces la date folosind un limbaj de nivel înalt
apropiat de modul obișnuit de exprimare pentru a obține informa ții, utilizatorul f ăcând abstracție de
algoritmii aplicați pentru selecționarea datelor implicate și a m odului de m emorare a lor. SGBD -ul este
o interfaț ă între utilizato ri și sistemul de operare. ” [45]

4.4 AMAZON EC2

“Amazon Elastic Compute Cloud (Amaz on EC2) este o parte a platformei de web cloud computing,
Amazon Web Services (AWS) , care permite util izatorilor să închirieze calculatoa re virtua le pe care să
poată rula propriile lor aplicații ”. [46]
“EC2 (Amazon Elastic Compute Cloud) oferă capacitate dinamică computațională în cloud. De
asemenea, pentru a dezvolta și lansa aplicații nu mai ai nevoie să îți achiziționezi hardware -ul, ac est
servi ciu punându -ți la dispoziție: servere virtuale, configurarea securității și networking, ajustarea
spațiului de stocare. ” [46]

Lansat în august 2006, serviciul EC2 oferea Linux și ulterior Sun Microsystems Op enSola ris și
Solaris Express Community Edition. În octombri e 2008, EC2 a adăugat sistemele de operare Windows
Server 2003 și Windows Server 2008 la lista sist emelor de operare disponibile . In noiembrie 2012, a fost
adăugat suportul pentru Windows Server 20 12. [48]
EC2 încu rajează desfășurarea s calabilă a aplicații lor prin furnizarea unui serviciu web prin care un
utilizator poate porni „Amazon Machine Image” (AMI) pentru a configura o mașină virtuală, numit ă
„instanță”, care conține orice software dorit . Aces ta oferă util izatorilor controlul a supra loc ației
geogr afice a instanțelor care permite optimizarea latenței și niveluri ridicate de redundanță. [47]

31
Amazo n EC2 oferă cea mai largă și cea mai profundă selecție de instanțe, bazate pe cele mai noi
tehnologii d e calcul, stoca re și rețea ș i proiectate p entru perfor manț ă și securitate ridicat ă. [46]

Caracteristici Amazon EC2

O serie de avantaje și funcții atrag dezvoltatorii către EC2 pentru cloud computing .
Principalele dintre acestea sunt:
• Raspunsul l a cerin tele de modificare a capacitatii. Scalabil itatea oferit a de EC2 elimina obstacolele
intalnite in dezvoltare atunci cand aplicatiile au nevoie de mai multe resurse .
• Flexibilitatea in configurare. Utilizatorii pot alege marimea memoriei, CPU, si marim ea part itiei
optimizata pen tru sistemul de operar e pe care il aleg.
• Integrare: EC2 poate fi integrat cu alte servicii AWS precum RDS , Simple DB si SQS
• Control precis: utilizatorii primesc acces administrativ al instantelor , pot porni si opri instantele i n
timp c e retin partitiile de date si pot accesa r ezultatele in stant
• Securitate: Utilizatorii pot controla ce instante raman private si care sunt publice.
EC2 sus tine Amazon Virtual Private Cloud (VPC) pentru securitate si afacerile isi pot conecta
infrast ructura IT de securitate la resursele in VPC [48]

4.5 REST

“Reprezintă un model arhitectural de dezvoltare a aplicațiilor web bazat pe reprezentarea datelor.
În acest de tip de arhitectură totul este privit ca o resursa. Orice poate fi referit ca un obiect e ste o resursa.
În general tot ce poate fi stocat în cal culator și reprezentat ca un flux de octeti este o resursă.
Clienții pot interacționa cu reprezent ări ale resurselor prin metode precum:
• GET: este cea mai folosită metodă, fiind utilizată atunci când serverului i se cere o resursă.
• POST – a fost proie ctată pentru a trimite date de intrare către server, pentru a crea noi resurse
• DELETE – folosit pent ru a șterge resurse
• PUT – este utilizat în cele mai multe cazuri pentru actualizări, dar este capabil și să creeze resurse
daca identi ficatorul resurs ei est e dat de client și nu generat de server
• PATCH – folosit pentru actualizarea parțial a unei repreze ntări a unei resurse
• OPTIONS – este folosită pentru identificarea capacităților serverului Web, înain te de a face o
cerere.
• HEAD – se comportă exact ca met oda GET, dar serverul returnează doar antetul resursei, ceea
ce permite clientului să inspecteze an tetul resursei, fără a fi nevoit să obțină și corpul resursei.

Adresarea către un serviciu REST se f ace prin URI, iar fiecare cerere este inde pendentă și t rebuie
să conțină toate informațiile necesare procesării.”[ 49]
Comunicația se realizează prin prot ocolul HTTP și reprezentarea resurselor poate fi transmisă în format :
• “JSON – format de reprezentare ș i interschimbare de date intre ap licați i” [50]
• “XML – meta -limbaj de marcare folosit pentru stocarea si transportul datelor”[ 51]

32
Capitol 5 Implementarea fi zică și integrarea componentelor

5.1 Conectarea senzorului de temperatură și umiditate DHT11

Denumi re componentă Conexiuni:

DHT11 – senzor de umiditate
și temperatură Fire Pini
VCC 3.3V
DATA GPIO26
GND GND (masă)

Tabel 5.1 Conexi unile senzorului DHT11

Figura 5.1 Conectarea senzorul ui DHT11 de umiditate și temperatur a

33
5.2 Conectarea sen zorului de umiditate a solului

Denumire componentă Conexiuni

Senzorul de umiditatea a
solului Fire Pini

VCC
3.3V
GND
GND (masă)
SIG
GPIO2 1
Tabel 5.2 Conexiunile senzorului de umiditate a solu lui

Figura 5.2 Conectarea senzoru lui de umidi tate a solului la Ra spberry PI

34
5.3 Conectarea senzorului de ploaie (Raindrops )

Denumire componenta Conexiuni

Senzorul de ploaie Fire Pini

VCC 3.3V

DO (ieșire
ridicată /
scăzută)
GPIO12
AO (ieșire
analogică) –

GND GND (masă)

Tabel 5.3 Conexiunile senzorul ui de ploaie

Figura 5.3 Conectarea senzorului de ploaie la Raspberry PI

35

5.4 Conectarea senzorului de nivel al apei

Denumire com ponentă Conexiuni

Senzorul de nivel al apei
Fire
Pini

S
CH1

+
3.3V


GND (masă)

Tabel 5.4 Cone xiunile senzor ului de nivel al apei

Figura 5.4 Conectarea senzorului de nivel al apei la Raspberry PI

36

5.5 Conectarea senzor ului digital de lumină IR, UV și vizibil SI1145

Denumire component ă Conexiuni

Senzorul digital de lumin ă IR, U V și vizi bil
SI1145
Fire Pini
3VO 3V
SCL GPIO3
SDA GPIO2

GND GND (masă)

Tabel 5. 5 Conexiunile senzorului digital de lumină IR, UV și vizibil SI1145

Figura 5. 5 Conectarea senzorului digital de lumină IR, U V și vizibil SI1145 la Raspberry PI

37
Capitol 6 Implementarea sistemului și achiziția semnalelor

6.1 Configurarea plăcii Raspberry Pi 4, model B

Pentru a configur a placa Rasberry Pi este nev oie de urmatoarele componente:

1. Cablu micro HDMI
2. Un monitor sau televizor cu intrare HDMI
3. Un c ablu de alimentare cu ieșire de 5V și mufă type C
4. O tastatur ă
5. Un mouse
6. Un card microSD 16GB

Cu ajutorul cablului micro HDMI se conecteaz ă placa Raspberry la un monitor, apoi conectam
tastatură și mous e-ul. Cardul microSD folosit în această lu crare este de 16 GB, iar pe acesta se va stoca
sistemul de operare al pl ăcuței. După realizarea montajului, aceasta se va conecta la rețe a cu ajutorul unei
rețele Wi -Fi. Conectarea la rețea nu este obligatorie, dar este recomandat să se realizeze din motiv e de
securitate și pentru o funcționalitate bună a sistemului. Sistemul de operare se găsește pe pagina oficiala
https://www.raspberrypi. org/downloads/ sub d enumirea: NOOBS sau Raspbian și trebuie copiat pe
cardul microSD după ce acesta a fost for matat ca NFTS . [52]

Pentru instalarea sistemului de operare se introduce cardul în slotul microSD al plăcii prin
intermediul unui adaptor SD și se pornește sistemul după ce toate echipamentele periferice menționate
mai su s au fost conectate. Procesul de instalare durează câteva zeci de minute .

După finalizarea procesului de instalare a sistemului de operare putem utiliza placa Raspberry PI.
Pentru configurarea plă cii se dă click pe prima iconiță din Toolbar, apoi Prefer ences-Raspberry PI
Configuration.

Figura 6.1 Configurarea plăcii Raspberry Pi

38

Figura 6.2 Configurarea plăcii

În linia de comandă (se accesează aplicația Terminal din bara de aplicații) se va introduce
comanda: sudo raspi -config. Această comandă per mite configurarea setărilor plăci i Raspber ry. Se pot
modifica și credențialele i mplicite ale sistemului.

Figura 6.3 Credențialele sistemului

39
Pentru a putea utiliza placa Raspberry Pi fără a fi nevoiti tot timpul sa o conectam la un monitor/
TV, îi putem afla adresa IP și ne putem conecta c u programul PuTTY direct pe laptop (un mod simplu și
usor pentru a utiliza R aspberry Pi oriunde).
PuTTY este un program client care poate fi utilizat pentr u deschiderea unei conexiuni SSH
(protocol de retea care p ermite conectarea la distanta la un echipa ment de re țea sau la un server in mod
securizat), Telnet, Raw, Serial catre un server Linux .
Pentru a a fla adresa IP, am rulat ifconfig în comand prompt -ul din Rapsberry Pi pentru a afla IP –
ul plăcuței.

Figura 6.5 Adresa IP

6.2 Configurare P uTTY :

Putty este foarte usor de utilizat. In Windows programu l nu necesită instalare, trebuie doar
descărcat utilitarul Putty și deschis executabil ul. Clientul ssh este programul putty.exe . Lansat f ără
argumente, acesta de schide o fereastra de configurare . O dat ă deschis, ne vom gasi direc t în pagina
Session pentru a ne conecta la un computer :

1. In pagina session , Host Name(or Ip address) introducem IP -ul din Raspberry
2. Port : 22
3. Connection/SSH

Pentru a evita configurarea la fiecare conectare, în pagina Session in Saved session introducem
numele sub care dorim s ă se salveze set ările. Ulterior , putem deschide o sesiune cu aceea și configura ție
select ând sesiunea salvat ă.

40

Figura 6.6 : Realizarea conexiunii in PuTTY

6.3 Rezultate experimentale

Înainte de a realiz a întregul sistem, am verificat fiecare senzor în parte, determinând astfel
functionalitatea aces tora. Am realizat mai multe experimente, în diverse cazuri .

6.3.1 Senzorul DHT11 de umiditate și temperatura

Cazul 1 – Experimentul a fost realizat cu senzor ul de temperatură și umidita te DHT11 atunci când nu se
exercită nicio acțiune asupra lui (așa cum se ob servă în Figura), astfel măsurând temperatura și umi ditatea
din camera.

Figura 6.7 Caz 1 experiment – senzoru l DHT11 de umiditate și temp eratu ră

41
Temper atura camerei măsurată de senzor este de 25°C și umiditatea de aproximativ 66% , așa
cum se poate observa în figura următoare.

Figura 6.8 Valori obținu te de senzorul DHT11 când nu se exercită nicio acțiune asupr a lui

Cazul 2 – În acest caz, mi -am propu s să verific temperatura și umiditatea atunci când se exercită o acțiune
asupra senzorului.

Figura 6.9 Caz 2 experiment – senzorul DHT11 de umiditate și temperatur a

Valorile obținut e în acest caz sunt:

Figura 6.10 Caz 2 experiment – senzorul DHT1 1 de umiditate și temperatură

42
Concluzie: Se poate observa că atât temperatura cât și umiditatea au crescut. Eroarea de măsurare se
datorează în primul râ nd efectelor de sch imb de căldură dintre senzor și mediu.

6.3.2 Senzo rul de umiditate a sol ului

Cazul 1. Exprimentul a fost realizat cu senzorul de umiditate a solului atunci când acesta a fost introdus
în pământ (Figura 6.11), iar în figura 6.12 se ob servă că acesta detecteaz ă umiditate.

Figura 6.11 Caz 1 e xperiment –senzorul de umiditate a solului

Valo rile obținute în acest caz sunt:

Figura 6.12 Valori obținute de senzorul de sol când detectează umiditate

43
Cazul 2. Exprimentu l a fost reali zat cu senzorul de umiditate a solului atunci când acesta a f ost lasat pe
masă (așa cum se obs ervă în F igura 6.15), astfel observ ând ca acesta nu mai detecteaza umiditate .

Figura 6.13 Caz 3 experiment –senzorul de u miditate a solului

Valorile ob ținute în acest caz sunt:

Figura 6.14 Valori obținute de senzo rul de sol când nu detectează umi ditate

6.3.3 Senzorul de ploaie (Raindr ops)

Cazul 1. Exprimentul a fost realizat cu senzorul de ploaie când acesta a fost lăsat pe masă fără (Figura
6.15) iar în Figura 6.16 se observă că acesta nu detecteaza apa (poaie ).

44

Figura 6.15 Caz 1 experime nt –senzo rul de ploaie

Valorile ob ținute în acest caz sunt:

Figura 6.16 Valori obținute de senzorul de ploaie când nu detecteaza apa

Cazul 2. Expr imentul a fost realizat cu senzorul de ploaie când acesta a fost strop it cu apa (Figura 6.17)
iar în fi gura 6.18 se observă că acesta dete cteaza apa (poaie).

Figura 6.17 Caz 2 experiment –senzorul de ploaie cand este stropit cu apa

45
Valorile obținute în acest caz sunt:

Figura 6.18 Valori obținute de senzorul de plo aie cand detectează apa

6.3.4 Senzorul de nivel al apei

Exprimentul a fost realizat cu senzorul de nivel al apei când aces ta a fost introdus intr -un pahar cu apa :

Figura 6. 19 Senzorul de nivel apa introdus in pahar cu apa

Valorile obținute în ac est caz sunt:

Figura 6.20 Valori obțin ute de senzor ul de nivel al apei

46
6.3.5 Senzorul SI1145

Experim entul a fost realizat cu senzorul de lumina SI1145 :

Figura 5. 21 Caz 1 experiment –senzorul de lumina

Valorile obținute în acest caz sunt:

Figura 6.20 Valori obținute de se nzorul de lumina

47
Capitolul 7 Implementarea softw are

7.1 Aplicația Android .

7.1.1 Pregătire mediu de dezvoltare aplicație

Realizarea aplicației pentru dispozitive cu sistem de operare Android s -a realizat folosind
mediul de dezvo ltare And roid Stud io. Limbajul de programare utilizat este Ja va.
Pentru a instala și configura mediul nostru integrat de dezvoltare, descă rcăm executabilul din
platforma o ficială . [53]

7.1.2 Prezentarea aplicaț iei

S-a dorit crear ea unei interfețe grafice cât mai ușor de folosit pentru orice utilizator.

Interfața este constituita di n 3 fișiere XML fiecare reprezent ând o activitate. Activi țătile cuprind
elemente precum casete text, butoane si elemente de afi șare text. Pentru aranja rea acestor elemente se
folosesc constrâng eri pentru a defini relațiile cu celelalte elemente dar și cu marginile ecranului.

La deschiderea aplica ției se va deschide activitatea de configurare ( Figura 7. 1) , compus ă dintr –
un câmp de tipul “EditText” în care introducem adresa IP a pl ăcuței de dez voltare Raspberry Pi.
Sub aceast ă caseta de text g asim butonul “SAVE” care ne va permite navigarea c ătre activitatea
principal ă.

Figura 7.1. Activitatea de configurare

48
După cum se poate observa în Figura 7.2, în pagina p rincipală gă sim 2 butoane după cum
urmează:
• Un buton de “Live Data ”: acest buton ne ajut ă să accesăm activitatea care con ține datele
preluate în timp real de la senzori . Aceste date vor fi afi șate în urma apăsării butonului “Read ” pe care îl
regăsim în partea de jos a pag inii.
• Un buton de “History Data”: acest buton n e ajut ă să acces ăm pagina care con ține istoricul
datelor colectate de senzori . Pagina se va actualiza în urma ap ăsării butonului “Refresh ”, pe care îl
regăsim în partea de jos paginii.

Figura 7.2 Activitat ea principala

Cele două butoane “Read ” si “Refresh ” sunt de tipul Button și au implementate funcții pentru a
colecta datele.
Fiecare din aceste eleme nte are un id după care poate fi găsit pentru a fi manipulat in aplicație .
Imple mentarea but oanelor p resupune crearea unor metode. De exemplu, pentru butonul “Read ”
se folosește codul de mai jos, acesta având î n fișierul XML id -ul button _get_live necesar pentru a îi
atribui funcția dorită. Metoda getLiveData() face o cerere catre un ser viciu REST , serviciu ce a fost
implementat în python și este g ăzduit pe placu ța Raspber ry PI . Aplica ția web comunic ă atât cu baza de
date c ât și cu senzorii, aceasta reprezent ând punctul de legatur ă dintre cele 3 sisteme ( baza de dat e,
aplica ția Android , sistemul de calcul Raspbbery P I).

Button buttonGetLiveData = fi ndViewById(R.id.button_get_live);
mQueue = Volley.newRequestQueue(this);

buttonGetLiveData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getLiveData();
}
});

49
7.2 Pregatire sistem baza de date

Am fol osit servici ul de cloud Amazon Web Services EC2 , pentru a crea și acc esa o ma șină
virtual ă pe care ruleaza Ubunt u Linux . Pe această mașină virtual ă am instalat un server de MySQL.
Amazon Elastic Compute Cloud (EC2) este Serviciul Web Amazon utilizat pent ru a crea și rula mașini
virtuale în cloud (numim aceste servere virtu ale „instanțe”).
Când lans ăm instanța, o protejam spe cificâ nd o pereche de chei și un grup d e securit ate. În
momentul in care se dore ște realizarea conexiunii la instanț ă, trebuie speci ficată cheia privată a perechii
de chei menționat ă la lansarea instanț ei.

7.2.1 Instalare Ubuntu AWS EC2
Pentru instalare se parc urg urmatorii pasi:
– în panoul de control E C2, se deschide meniul “Instances” și se apas ă butonul “Instances ”
– în ecranul Instanțelo r EC2, se apas ă butonul “Start run ”
– se alege tipul sistemului de ope rare, se alege tipul “Linux” si versiunea “Ubuntu”
– se trec e la pasul urm ător și se select ează tipul de mașină virtuală care va rula Ubuntu Linux
– se apasă butonul „Run”
– se selecteaz ă perech ea de chei care permite conectarea la noua mașină virtuală și se face clic
pe butonul „Launch ”.
– din panoul de control EC2, d eschidem meniul “Instanțe ” și face m clic pe “Instanțe ”.
– după cum se poate vedea , a fost creată o nouă mașină virtual ă.

Figura 7.3. Consola AWC EC2

50
7.2.2 Accesare Aws Ubuntu
Pentru a accesa mașina v irtuală Linux trebuie să transformăm cheia privată din forma t PEM în
format PPK :
• deschid em progra mul PuttyGen, → meniul „Conversii” și select ăm „Import”
• după importul fișierului PEM, se seteaz ă o parolă pentru a proteja cheia privată
• facem clic pe buton ul „Save private key” pentru a crea un fișier cu extensia .p pk
• se desc hide software -ul Put ty, se se lecteaz ă opțiunea SSH și introduc em adresa IP a mașinii
virtuale AWS
• se deschide fila de verificare SSH, face m clic pe butonul „Browse” , localiz ăm fișierul PPK și
apăsăm butonul „Open”

7.2.3 Configurare server de b aze de date MySQL
Instalarea se rverului MySQL versiunea 5.7 pe masina virtuala care ruleaz ă Ubuntu versiunea
18.04 se face rul ând urmatorul set de comenzi:
• sudo apt update
• sudo apt install mysql -server
• Instalarea modulului de securitate:
• sudo mysql_secure _installa tion
• Pentru inițializar ea direct orului de d ate MySQL, folos im:
• mysqld –initialize
• sudo mysql
Pentru a permite accesul de la distan ță la serverul creat, îi vom spune serverului s ă accepte requesturi
de la oricine. Pentru aceasta vom seta in fi șierul mysqld. cnf : bind-address = 0. 0.0.0
• cd /etc/mysql/mysql.conf.d
• sudo vim mysqld.cnf

Adăugam mysql în lista de excepții a firewall -ului folosind comanda:

• sudo ufw allow 3306
• sudo ufw enable

Repo rnim serviciul MySQL pentru a pune în aplicare modificările făcut e in mysqld.cnf:
• sudo syst emctl res tart mysql
Verific ăm statusul rulând urmatoarea comanda:
• service status mysql

51
Logarea în mysql ca root:
• mysql -u root –p
Creare utilizator cu drept de admin istrar e in promptul mysql:
• CREATE USER ' roxana '@'localho st' IDENTIFIED BY 'parola ';
• CREATE USER ' roxana '@'%' IDENTIFIED BY ' parola ';
• GRANT ALL PRIVILEGES ON *.* to roxana @localhost IDENTIFIED BY 'parola ' WITH
GRANT OPTION;
• GRANT ALL PRIVILEGES ON *.* to roxana @'%' IDENTIFIED BY 'parola ' WITH GRANT
OPTION
• FLUSH PRIV ILEGES;
• EXIT;
Pentru te stare, m-am c onectat pe server și am creat o ta bela în care am adăugat câteva intrări:

mysql -u roxana –p
create database agricultura;
use agricultura;
CREATE TABLE data_ty pe (
id int NOT NULL AUTO_INCREMENT,
name varchar(30 ),
PRIM ARY KEY (id)
);
CREATE TABL E data_values (
id int NOT NUL L AUTO_INCREMENT,
value varchar(30),
date datetime,
data_type_id int,
PRIMARY KEY (id),
CONSTRAINT fk_ty pe FO REIGN KEY (data_type_id) REFERENCES data_type(id)
);

52

Figura 7.4 Structura bazei de date

53
Concluzii

Din cele mai vechi timpuri se cunoa ște faptul că agric ultura este principala surs ă de hrană a unei
populații. Pe l ângă hrană, pentru țările în cu rs de dezvoltare, agricultura reprezi ntă una din principalele
ramuri ale economie i naționale.
Într-o lume în care tehnologia este în continuă dezvoltare și simplifică viețile oamenilor, aceasta
este integrată în aproape toate domeniile de activit ate. În agricultură, o zonă pentru care tehnol ogia este
cel mai bun aliat, este esențial ca im plementarea ei să se facă la un nivel cât mai înalt.
În momentul de față, practicarea agriculturii de precizie reprezintă cel mai bun pas către progres
pentru fermele din intreaga lume . Tehnologiile din domeniu (de la sistemele GPS automatizate la
senzorii pentru sol) îi ajută pe cei care lucrează în sectorul agricol să obțină cele mai bune rezultate
într-un mod mai simplu și eficient, fără să risipească resurse le.
Contribu țiile mele la realizarea acestui proiect sunt urm ătoarele:
In ceea ce prive ște parte a teor etică, în Capitolul 1 am realizat o descriere a ceea ce reprezint ă
termenul de IoT, cum a evolut internetul de -a lungul timpului și modurile prin care tehnologia Io T
îmbun ătățește agricultura. În continuare, în Capitolul 2 , am descris platformele de dezvolt are folosite,
și anume Raspberry PI 4, model B si convertoru l MCP3008 . Capitolul 3, conține o clasificare general ă
a senzorilor și descrierea detaliat ă a celor pe ca re i-am fo losit ( senzorul de temperatur ă și umiditate
DHT11, senzorul SI1145 , senzor ul de umiditate a solului , senzorul de ploaie si senzorul de nive l al
apei) iar in Capitolul 4 am realizat descrierea tehnologiilor folosite in aceast ă lucrare.

In ceea ce prive ște partea experimental ă a lucr ării, rezultatele au fost pr ezentate în Capitol ul 5,
unde am explicat mo dul de conectare al fiec ărui senzor la p laca de dezvoltare. În Cap itolul 6 am
realizat diverse experimente verificând func ționalitatea senzorilor în mai mu lte condi ții iar in Capitolul
7 am prezentat imple mentarea software.

Aplica ția realizat ă poate repre zenta un punct de plecare în realizarea unei aplicatii mai
complexe. Sistemul poate fi îmbunătățit atât hardware câ t și software. Din punct de vede re hardware, se
pot adă uga mai m ulti senzori, pomp ă de apă, ventil atoare , etc. . Pe partea so ftware, se pot adăuga noi
funcții în aplicația pe Android, se poate crea un meniu iar accesul la aplicatie s -ar putea face securiza t.
De asemenea, se po ate realiza adăugarea unor grafice de vizualizare a datelor istorice, ad ăugarea unor
alerte(no tificari ) în momentul în care anumite valori ating un anumit prag dar si f uncții de control ale
pompei de apa si a ventilatoarelor.

54

55

Referin țe

[1] Daniel SAVU, Mihaela TOM ESCU , Lidia BĂJENARU , “INTERN ETUL LUCRURILOR – O
NOUĂ PARADIGMĂ A CONECTĂRII ÎN INTERNET , https://rria.ici.ro/wp –
content/uploads/2017/03/03 -ART1-RRIA -1-2017 -Savu -Tomescu -Bajenaru -IoT2017.pdf , accesat la
data 15.04.2020
[2] Smart Farming In Agriculture Sect or, https://ro.pinterest.com/pin/684758318327814931/ , accesat la
data 24.04.20 20
[3] What is the IoT? E verything you need to know about the Internet of Things right now ,
https://www.zdnet.com/article/what -is-the-internet -of-things -everything -you-need -to-know -about -the-
iot-right -now/ , accesat la data 28.04.2020
[4] Felix Wortmann , Kristina Flu chter – “Internet of ThingsTechnology and Value Added ”
https://www.researchgate.net/publication/27 6439592_Internet_of_Things , accesat la 25.04.2020
[5] “Internet of things“, https://despretot.info/inte rnet-of-things -iot-definitie -dex/ , accesat la 24.04.2020
[6] The current state of Internet of things (IoT) and its challenges , https://www.com -strat.com/the –
current -state-of-internet -of-things -and-its-challenges/ , accesat la 07.06.2020
[7] What is IoT (Internet of Things)? Io T Architecture Explaine d, https://www.edureka.co/b log/what –
is-iot/, accesat la data 29.04.2020
[8] Ce este Internetul și cum a apărut? , https://www.descopera.ro/maratoane le-descopera/capcanele –
internetului /9594234 -ce-este-internetul -si-cum-a-aparut , accesat la 29.04.2020
[9] Daniel SAVU, Mihaela TOM ESCU , Lidia BĂJENARU , “INTERNETUL LUCRURILOR – O
NOUĂ PARADIGMĂ A CONECTĂRII ÎN INTERNET “ , https://rria.ici.ro/wp –
content/uploads/2017/0 3/03-ART1 -RRIA -1-2017 -Savu -Tomescu -Bajenaru -IoT2017.pdf , accesat la
30.04.2020
[10] Anand Nayyar (Assistant Professor), Er. Vikram Puri (M.Tech(ECE) Student) ,
https://www.researchgate.net/publication/313804002_Smart_farming_ IoT_based_smart_senso rs_agric
ulture_stick_for_live_temperature_and_moisture_monitoring_using_Arduino_cloud_computing_solar_
technology , accesat la 30.04.2020
[11] IoT in Agriculture: Why It Is A Future of Connected Farming World ,
https://theiotmagazine.com/iot -in-agriculture -why-it-is-a-future -of-connected -farming -world –
70b64936627c , accesat la 05.05.2020
[12] “CE ESTE EDGE COMP UTING? “ , https://www.globema.ro/iot -la-limita -ce-este-edge –
computing/ , accesat la 09.05.2 020
[13] “What is a Raspberry Pi? ”, https://www.raspberrypi.org/help/what -%20is-a-raspberry -pi/, accesat
la 09.05.2020
[14] “Raspberry Pi OS ”, https://github.com/raspberrypi/documentation/tree /maste r/raspbian , accesat la
09.05.2020
[15] “Raspberry Pi 4 Mode l B”, https://vilros.com/products/raspberry -pi-4-2gb-ram, accesat la
09.05.2020
[16] “Raspberry Pi Documentation ”, https://www.raspberrypi.org/documentatio n/, accesat la 09.05.2020
[17] “Raspberry Pi Documentation -GPIO”, https://www.raspberrypi.org/documentation/usage/gpio/
accesat la 09.05.2020

56
[18] Raspberry Pi Analog to Digital Converters , https://learn.adafruit.com/raspberry -pi-analog -to-
digital -converters/mcp3008 , accesat la 17.05.2020
[19] MCP3008 – 8-Channel 10 -Bit ADC With SPI Interface ,https://thepihut.com/products/adafruit –
mcp3008 -8-channel -10-bit-adc-with-spi-interface , accesat la 17.05.2020
[20] Sensors: Different Types of Sensors , https://www.en gineersgarage.com/article_page/ sensors –
different -types -of-senso rs/, accesat la 22.03.2020
[21] “SENZORI ”, http://webbut.unitbv.ro/Carti%20on -line/BSM/BSM/capitol4.pdf 22.03.2020
[22] Different Types of Sensors and their Working , https://circuitdigest .com/tutorial/ different -types -of-
sensors -and-their-working , accesat la 22.03.2020
[23] “Difference Between Sensor & Transducer “ , https://circuitglobe.com/difference -between -sensor –
and-trans ducer.html#ComparisonChart , accesat la 22.03.2020
[24]’’ SENZORI. SISTEM E SENZORIALE ’’
,http://docshare01 .docshare.tips/files/31704/317045255.pdf , accesat la 22.03.2020
[25] Senzor de temperatur a si um iditate DHT11, https://www.robofun.ro/senzor -de-temperatura -si-
umiditate -sns-dh11.html , accesat la data 22.03.2020
[26] Measuring Humidity Using Sensor (DHT11) , https://www.instruc tables.com/id/Measur ing-
Humidity -Using -Sensor -DHT11/ , accesat la data 27.03.2002
[27] DHT11 Sensor , https:/ /www.ek aithau.com/product/dht11 -sensor/ , accesat la data 27.03.2020
[28] Senzor umiditatea solului , https://www.robofun.ro/se nzori/senzor -umiditatea -solului.html , accesat
la data 27.03.2020
[29] Modul cu s enzor umiditate sol , https://cle ste.ro/catalog/product/view/id/77/s/modul -cu-senzor-
umiditate -sol/?gc lid=EAIaIQobChMI_Izn8d 6B6g IVFomyCh25kwdhEAQYASABEgKcJPD_BwE ,
accesat la 28.03.2020
[30] Modul detectare picaturi , https://cleste.ro/modul -detectare -picaturi.html , accesat la 04.04.2020
[31] Raindrop sens or, http://wiki.bernardino.or g/index.php/Raindrop_sensor , accesat la 04.04.2020
[32] Water Level Sensor , https://www.hotmcu.com/water -level -sensor -liquid-water -droplet -depth –
detectio n-p-113.html , accesat la 05.04.2020
[33] Senzor Digital de Lumină IR, UV și Vizibil SI1145 , https://www.optimusdigital.ro/ro/senzori –
senzori -optici/1654 -senzor -digital -de-lumina -ir-uv-i-vizibil -si1145.html , accesat la 04.05.202
[34] Senzor de lumina/IR/UV Si1145 , https://www.robo fun.ro/senzori/senzor -de-lumina -ir-uv-
si1145.html , accesat la 10.04 .2020
[35] Raze ultraviolet e, https://ro.w ikipedia.org/wiki/Ra ze_ultraviolete , accesat la 10.04 .2020
[36] Spectru vizibil , https://ro.wikipedia.org/wiki/Spectru_vizib il, accesat la 10.04 .2020
[37] Radiatiile , https://prezi.com/6rqlwyc29cn1/r adiatiile -infrarosii/ , accesat la data 10.04 .2020
[38] PurePython's Wiki , http://purepyth on.eaudeweb.ro/wiki/Cursuri/Introducere.html , accesat la
15.05.2020
[39] Limbajul de programare PYTHON , http://www.upir.ro/ images/Fisiere/UPIR/PYTHON -CDS.pdf ,
accesat la 15.05.2020
[40] Curs practic de Java, https://profs.info.uaic.ro/~acf/java/Cristian_Frasinaru –
Curs_p ractic_de_Java.pdf , accesat la data 16.05.2020

57
[41] https:/ /www.academia .edu/6808936/Mysql_tutorial_ pe_ubuntu_cum_se_face_romana , accesat la
17.05.2020
[42] What is MySQL? , https://dev.mysql.c om/doc/refman/8.0/en/what -is-mysql.html , accesat la
26.05.2020
[43]Datab ase Fundamentals ,
http://public.dhe.ibm.com/software/dw/db2/expr essc/wiki/Database_fundamentals.pdf , accesat la
26.05.2020

[44] Adriana OLTEANU , Magdalena ANGHEL , Radu Nicolae PIE TRARU – BAZE DE DATE ȘI
UTILIZAREA ACESTORA , http://www.cs.ubbcluj.ro/~vcioban/Mat ematic a/Anul3/BD/Bd.pdf ,
accesat la 26.05.2020
[45] Introducere in baze de date, https: //www.scritub.com/stiinta/informatica/INTRODUCERE -IN-
BAZ E-DE-DATE13191425.php , accesat la 26. 05.2020
[46] Amazon EC2 , https://www.amazonaws.cn/en/ec2/ , accesat la data 10.06.2020
[47] Amazon Elastic Compute Cloud , https://en.wikipedia.org/wiki/Amazon_Elastic_Compute_ Cloud ,
accesat la data 11.06.2020
[48] What Is AWS EC2? , https://www.sumologic.c om/insight/what -is-aws-ec2/,, accesat la 11.06.2020
[49]Servicii Web – REST ,
https://profs.info.uaic.ro/~busaco/teach/courses/web/presentations/web11Servi ciiWeb -REST.pdf ,
accesat la 19.06.2020
[50] JSON, https://ro .wikipedia.org/wiki/JSON, accesat la 20.06.2020
[51] XML, https://ro.wik ipedia.org/wiki/XML, accesat la 20.06.2020
[52] Setting up your Raspberry Pi , https://projects.raspberrypi.org/en/proj ects/raspberry -pi-setting -up
[53]Android Studio ,
https://developer.a ndroid.com/studio/?gclid=EAIaIQobChMI3Lfeo_OI6gIVhLYYCh33uw89EAA [54]
YASAAEgIpOvD_BwE&gclsrc=aw.ds , accesat la 22.06.2020
[55] How to setup Linux on Amazon AWS Virtua l Machine , https://medium.com/@tecyguy/how -to-
setup -linux -on-amazon -aws-virtual -machine -ec2-ce90c653c9e8 , accesat la 22.06.2020

58
Anex e

Anexa 1 Montajul final al sistemului

59

Anexa 2 Codul pentru sistemul implementat in Raspberry PI

import Adafruit_DHT
import RPi.GPIO as GPIO
import json
from gpiozero import InputDevice
from waterlevel import getWaterLevel

class data:
def __init__(self, name, value):
self.name = name
self.value = value

def getData():
dataList=[]
sensor= Adafruit_DHT.DHT11
DHT11_pin = 26
humidity, temperature = Adafruit_DHT.read_retry(senso r, DHT11_pin)
if(humidi ty and temperature):
dataList.append(data('Temperature', temperature))
dataList.append(data('Humidity',humidity))

channel=21
GPIO.setmode(GPIO.BCM)
GPIO.setup(channel,GPIO.IN)

def callback (chann el):
if GPIO.inpu t(channel):
dataList.append(data('Soil moisture',0))
else:
dataList.append(data('Soil moisture',1))
callback(channel)

no_rain=InputDevice(12)

if no_rain.is_active:
dataList.appe nd(data('Raindrops',0))
else:
dataList.append(data('Raindrops',1))

waterLevel = getWaterLevel()
if(waterLevel):
dataList.append(data('Water level', waterLevel ))

return (dataList)

from application i mport *
from getdata i mport getData
from datetime i mport datetime

dL= getData()

60
for i in range(len(dL)):
ob=DataValues()
ob.value= dL[i].value
ob.data_type_id = i+1
ob.date=datetime.now()
db.session.add(ob)
db.session.commit()

61

Anexa 2 Cod ul interfe ței grafice pentru aplic ația Android

<?xml version="1.0" encoding="utf -8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res -auto"
xmlns:tools="http: //schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match _parent"
android:background="@drawable/bg"
tools:context="com.etti.monitoring.ConfigActivity">
<RelativeLayout
android:layout_width="ma tch_parent"
android:l ayout_height="match_parent"
android:layout_weight="4">

<ImageView
android:id="@+id/imageView3"
android:layout_width="172dp"
android:layout_height="171dp"
android:layout_centerHorizon tal="true"
android:la yout_gravity="center"
app:srcCompat="@drawable/logo" />

<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop ="300dp"
android:layout_centerHorizontal="true"
android:background="#CCCCCC"
android:ems="10"
android:inputType="text">

<requestFocus />
</EditText>

<Button
android:i d="@+id/button_Save"
style="@android:style/Widget.Devi ceDefault.Button.Borderless.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_al ignParentBottom="true"
android:layout_centerHorizontal="true"
android:l ayout_marginBottom="360dp"
android:text="Save" />

<Button
android:id="@+id/button_Live_Data"
style="@android:style/ Widget.DeviceDefault.Button.B orderless.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom ="60dp"

62
android:text="Live Data" />

<Button
android:id="@+id/button_History_Data"
style="@android:style/Widget.DeviceDefault.Button.Borderless.Small"
android:layout_width ="wrap_content"
android:layout_height="wrap_content"
android:layout_al ignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="30dp"
android:text="History Data" / >

</RelativeLayout>

</LinearLayout>

<?xml version="1.0" encoding="utf -8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res -auto"
xmlns:tools="http://schemas.android.com/ tools"
android:layout_wid th="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg"
tools:context=".LiveActivity">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height= "match_parent"
android:layout_weight="4">

<ImageView
android:id="@+id/imageView3"
android:layout_width="172dp"
android:layout_height="171dp"
android:layout_centerHorizontal="true"
android:layout_gravity="cent er"
app:srcCompat="@drawable/ logo" />

<TextView
android:id="@+id/textGrid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:la yout_centerInParent="true"
android:textColor="@color/color Primary"
android:textSize="34sp" />

<Button
android:id="@+id/button_get_live"
style="@android:style/Widget.DeviceDefault.Button.Borderless. Small"
android:la yout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="60dp"
android:text="Cites te" />

63

<Button
android:id="@+id/button_reset"
style="@android:style/Widget.DeviceDefault.Button.Borderless.Small"
android:layout_width="wrap_content"
android:layout_hei ght="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="30dp"
android:text="Reset" />

</RelativeLayout>
</LinearLayout>

<?xml versio n="1.0" encoding="utf -8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com .etti.monitoring">

<uses-permission android:name="android.permission.INTERNET" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_ launcher"
android:label="@string/app_name"
android:roundIcon="@mipm ap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
<activity android:name= ".LiveActivity"></activity>
<activity android:name=".HistoryActivity" />
<activity android:name=".ConfigActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category a ndroid:name="android.intent.category.LAUNCHER" />
</intent -filter>
</activity>
</application>

</manifest>

64
Anexa 3 Cod surs ă aplica ția and roid

package com.etti.monitoring;

public class Ap pConfig {

private static String ip;
private static String liveDataUrl;
private static String historyDataUrl;

public static String getLiveDataUrl (){
if(liveDataUrl == null){
liveDataUrl = "http://" + ip + ":5000/live";
}
return live DataUrl;
}

public static String getHistoryDataUrl (){
if(historyDataUrl == null){
historyDataUrl = "http://" + ip + ":5000/datavalues";
}
return historyDataUrl;
}

public s tatic void setIp(String ipp) {
ip = ipp;
}

public static String getIp() {
return ip;
}
}

package com.etti.monitoring;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android .support.v7.a pp.AppCompatActiv ity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.Ed itText;

public class ConfigAc tivity extends AppCompatActivity {
private EditText mEdit;
private static final String IPV4_PATTERN = "^((0|1 \\d?\\d?|2[0-4]?\\d?|25[0-
5]?|[3-9]\\d?)\\.){3}(0|1 \\d?\\d?|2[0-4]?\\d?|25[0-5]?|[3-9]\\d?)$";

@Override
protected void onCreate(B undle savedInstanceState) {
super.onCreate(savedInstanceState);

65
//Remove title bar
this.requestWindowFeature(Window.FEATURE_NO_TITLE);

//Remove notification bar
this.getWindow().setFlag s(WindowManager.LayoutParams.F LAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(R.layout.activity_config);

final Button buttonSave = findViewById(R.id.button_Save);
final Button b uttonHistory = findViewB yId(R.id.button_History_Data);
final Button buttonLive = findViewById(R.id.button_Live_Data);

buttonHistory.setVisibility(View.INVISIBLE);
buttonLive.setVisibility(View.INVISIBLE);

mEdit = findViewB yId(R.id.editText);

buttonSave.setOnClickList ener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mEdit.getText().toString().matches(IPV4_PATTERN)) {
AppConfig.setIp(mEdit.getText().toSt ring());
buttonSave.setVisibility(View.INVISIBLE);
mEdit.setVisibility(View.INVISIBLE);
buttonHistory.setVisibility(View.VISIBLE);
buttonLive.setVisibility(View.VISIBLE);
//HIDE KEYBOARD
InputMethodManager imm = (InputMethodManager)
getSystemService(Activity.INPUT _METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
}
}
});

buttonHistory.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(AppConfig.getIp()!=null) {
openHistoryActivity();
}
}
});

buttonLive.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(AppConfig.getIp()!=null) {
openLiveActivity();
}
}
});
}

public void openLiveActivity() {

66
Intent intent = new Intent(t his, LiveActivity.class);
startActivity(intent);
}

public void openHistoryActivity() {
Intent intent = new Intent(this, HistoryActivity. class);
startActivity(intent);
}

}

package com.etti.monitoring;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Vi ew;
import android.view.Window;
import android.v iew.WindowManager;
import andr oid.widget.Button;
import android.widget.TextView;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volle y.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.etti.monitoring.model.Data;
import com.google.gson.Gson;

import org.json.JSONA rray;
import org.json.JSONException;

public class LiveActivity extends AppCompatActivity {
private TextView mTextViewResult;
private RequestQueue mQueue;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreat e(savedInstanceState);
//Remove title bar
this.requestWindowFeature(Window.FEATURE_ NO_TITLE);

//Remove n otification bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_F ULLSCREEN);

setContentView(R.layout.activity_live);

mTextViewResult = findViewBy Id(R.id.textGrid);
Button buttonGetLiveData = findViewById(R.id.button_get_live);

Button buttonReset = findViewById(R.id.button_reset);

67
mQueue = Volley.newRequestQueue(this);

buttonReset.setOnClickListener(new View.OnCli ckListener() {
@Override
public void onClick(View v) {
mTextViewResult.setText("");
}
});

buttonGetLiveData.setOnClickListener(new View.OnClickListener() {
@Override
public void onCl ick(View v) {
getLiveData();
}
});
}

private void getLiveData() {

StringRequest request = new StringRequest(Request.Method.GET,
AppConfig.getLiveDataUrl(),
new Respon se.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONArray jsonArr = new JSONArray(response);
StringBui lder sb = new StringBuilder();
Gson gson = new Gson();
for (int i = 0; i < j sonArr.length(); i++) {
Data data =
gson.fromJson(jsonArr.get(i).toString(), Data.class);
sb.append(data);
}
mTextViewResult.setText(sb. toString());
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public voi d onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});

mQueue.ad d(request);
}
}

package com.etti.monitoring;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;

68
import android.widget.Button;
import an droid.widget.TextView;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import c om.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox .Volley;
import com.etti.monit oring.model.DataDbModel;
import com.google.gson.Gson;

import org.json.JSONArray;
import org.json.JSONException;

public class HistoryActivity extends A ppCompatActivity {
private TextView mTextViewResult;
private Reque stQueue mQueue;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

//Remove title bar
this.requestWi ndowFeature(Window.FEATURE_NO_TITLE);

//Remove notification bar
this.getWindow().setFla gs(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(R.layout.activity_history);

Button buttonHistory = findViewById(R.id.button_dbData);

mTextViewResult = findViewById(R.id.t extGrid);

mQueue = Volley.newRequestQueue(this);

buttonHistory.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getDbData();
}
});
}

private void getDbData() {

StringRequest request = new StringRequest(Request.Method.GET,
AppConfig.getHistoryDataUrl(),
new Response.Listener<String>() {

@Override
public void onResponse (String response) {
try {
JSONArray jsonArr = new JSONArray(response);
StringBuilder sb = new StringBuilder();
Gson gson = new Gson();

69
for (int i = 0; i < jsonArr.length(); i++) {
DataDbModel data =
gson.fromJson(jsonArr.get(i).toString(), DataDbModel.class);
sb.append(data);
}
mTextViewResult.setText(sb);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Re sponse.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});

mQueue.add(request);
}
}

package com.etti.monitoring.model;

public class DataType {
private int id;
private String name;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}

public void setNa me(String name) {
this.name = name;
}
}

package com.etti.monitoring.model;

public class DataDbModel {
private int id;
private DataType dType;
private S tring date;
private float value;

public int getId() {
return id;
}

70
public void se tId(int id) {
this.id = id;
}

public DataType getdType() {
return dType;
}

public void setdType(DataType dType) {
this.dType = dType;
}

public String getDate() {
return date;
}

public void setDate(String date) {
this.date = date;
}

public float getValue() {
return val ue;
}

public void setValue(float value) {
this.value = value;
}

@Override
public String toS tring() {
return dType .getName() + ": " + value + " \n";
}
}

71
Anexa 4 Aplica ție web – serviciu REST pentru preluarea datelor

import sys
import Adafruit_DHT
import json
from getdata import getData
from flask import Flask, render_template
from flask import jsonify
from flask_sqlalchemy import SQLAlchemy
from dataclasses import dataclass
from sqlalchemy.orm import relationship

app = Flask(__name__, template_folder="templates")
app.config['SQLALCHEMY_DATABASE_URI']='mysql+mysqlconnector://roxana: parola@18.189.
185.218:3306/agricultura'
app.config['SQLALCHEMY_TRACK_M ODIFICATIONS']= False
app.static_folder = 'static'

db=SQLAlchemy(app)

@app.route('/live')
def index():
return json.dumps(getData(),default=obj_dict)

@app.route('/datatype')
def retrieve_data_types():
dataT=DataType.query.all()
return jsonify(dataT)

@app.route('/datavalues')
def retrive_data_values():
data = DataValues.query.all()
return jsonify(data)

class data:
def __init__(self, name, value):
self.name = name
self.value = value

def obj_dict(obj):
return obj.__dict__

@dataclass
class DataType(db.Model):
__tablename__='data_type'

id: int
name: str

id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String())

@dataclass
class DataValues(db.Model):
__tablename__='data_values'
id: int
value: float

72
date: data
data_type_id: DataType
dType: DataType

id = db.Column(db.Integer, primary_key=True)
value = db.Column(db.Float)
date = db.Column(db.DateTime)
data_type_id =db.Column(db.Integer, db.ForeignKey('data_type.id'))
dType = relationship("DataType")

Similar Posts