PROGRAMUL DE STUDIU CALCULATOARE FORMA DE ÎNVĂȚĂMÂNT IF Proiect de diplomă COORDONATOR ȘTIINȚIFIC PROF. DR. ING. CORNELIA AURORA GYŐRÖDI ABSOLVENT… [304037]
UNIVERSITATEA DIN ORADEA
FACULTATEA DE INGINERIE ELECTRICĂ ȘI
TEHNOLOGIA INFORMAȚIEI
PROGRAMUL DE STUDIU CALCULATOARE
FORMA DE ÎNVĂȚĂMÂNT IF
Proiect de diplomă
COORDONATOR ȘTIINȚIFIC PROF. DR. ING. CORNELIA AURORA GYŐRÖDI
ABSOLVENT: [anonimizat]
2018
UNIVERSITATEA DIN ORADEA
FACULTATEA DE INGINERIE ELECTRICĂ ȘI
TEHNOLOGIA INFORMAȚIEI
PROGRAMUL DE STUDIU CALCULATOARE
FORMA DE ÎNVĂȚĂMÂNT IF
“SMART GREENHOUSE”
Mini seră automatizată cu acces și control web
COORDONATOR ȘTIINȚIFIC PROF. DR. ING. CORNELIA AURORA GYŐRÖDI
ABSOLVENT: [anonimizat]
2018
UNIVERSITATEA DIN ORADEA
FACULTATEA DE INGINERIE ELECTRICĂ ȘI TEHNOLOGIA INFORMAȚIEI
DEPARTAMENTUL DE CALCULATOARE ȘI TEHNOLOGIA INFORMATIEI
TEMA
Lucrare de Finalizare a studiilor a student: [anonimizat]: George COSMA
1). Tema lucrării de finalizare a studiilor: “SMART GREENHOUSE” Mini seră automatizată cu acces și control web.
2). Termenul pentru predarea lucrării: 03.07.2017
3). Elemente inițiale pentru elaborarea lucrării de finalizare a studiilor: Computer Desktop: Procesor Intel(R) Core(TM) i7-4702MQ CPU @ 2.2 GHz, 2.19 GHz, 8 [anonimizat] 960 SO-Windows 10, [anonimizat](WAN și LAN), cont student: [anonimizat], Visual Studio 2015, [anonimizat], materiale: [anonimizat], [anonimizat], echipamente de prelucrare și taiere materiale.
4). Conținutul lucrării de finalizare a studiilor: Introducere, Capitolul I. [anonimizat]. [anonimizat]. [anonimizat]. Concluzii, Bibliografie.
5).Material grafic: Prezentare PowerPoint.
6). Locul de documentare pentru elaborarea lucrării: [anonimizat].
7). Data emiterii temei: 02.10.2017.
COORDONATOR ȘTIINȚIFIC
PROF. DR. ING. CORNELIA AURORA GYŐRÖDI
Cuprins
Introducere
Prezenta lucrare intitulată “Smart GreenHouse” este o [anonimizat]. Partea fizică presupune o platformă de dimensiuni 120 x 80 x 120 (cm) ,[anonimizat]. Cultivarea în seră poate avea avantaje serioase după cum urmează: plante proaspete pe o perioadă extinsă a anului, nu doar în perioada naturală de creștere a acestora, [anonimizat] [1].
Pentru a [anonimizat]. Cu ajutorul unui microcontroller și al unor module de captare și manipulare a [anonimizat], [anonimizat].
Următorul aspect al funcționalității este accesul și controlul de la distanță al serei prin intermediul internetului. Astfel printr-o [anonimizat], [anonimizat]. [anonimizat]. [anonimizat] ventilare efectuat sau de câte ori a fost deschisă trapa de aerisire.
Așa cum am menționat și în rândurile anterioare, sera funcționează autonom, însă prin intermediul interfeței web, având calitatea de administrator, sistemele de irigație, ventilare sau aerisire pot fi acționate manual, înafara buclei sistemului. De asemenea pot fi setați și parametrii pedoclimatici pornirea sau oprirea sistemelor, cum ar fi pragul de temperatură sau de umiditate al solului, sau duratele ciclurilor de acționare, spre exemplu: un ciclu de irigație durează 5 minute.
Așadar, motivat fiind de posibilitatea de a îmi cultiva propiile legume, crescute cu grijă acasă, într-un mod simplificat, am ales să implementez această lucrare. Avantajele principale ale mini serei sunt constituite din: mediul controlat de creștere al plantelor chiar și atunci când vremea de afară nu este întocmai prielnică, automatizarea pe parcursul dezvoltării acestora care elimină timpii de muncă dar și controlul și monitorizarea de la distanță. Datorită dimensiunilor reduse, mini sera poate fi plasată cu ușurință chiar și în spații mici, precum balconul unui apartament sau curtea din spatele casei.
Capitolul I. Componentele Hardware
I.1. Platforma fizică
Platforma fizică este construită pe baza unui palet de marfă de dimensiuni stardard 120x80cm. Partea superioară a paletului este căptușită cu lambriuri de plastic, iar pereții perpendiculari cu o înățime de 25cm sunt realizați din scânduri de lemn câptușite din nou cu lambriuri de plastic. Izolația colțurilor este realizată cu silicon. Pereții înalți ai platformei sunt realizați cu profile metalice și ating o înalțime maximă de 120cm, așa cum se poate observa în figura 1.1. Întreaga platformă este în final îmbracată în folie de plastic, lipită cu ajutorul unei benzi dublu-adezive, conform figurii 1.2.
I.2. Sistemul de irigație
Sistemul de irigație presupune trei linii de irigație, conform figurii 1.3 și deci oferă posibilitatea utilizării a 5 linii de recoltare în interiorul serei. Acesta a fost realizat cu ajutorul unui kit de micro-irigații care poate fi regăsit în figura 1.4. Kit-ul conține un furtun care poate fi tăiat la dimensiunile necesare, coturi de îmbinare și suporti supraterani pentru picurătoare.
La nivel functional, fiecare linie de irigație dispune de câte un sensor de umiditate și o pompă de apă sumersibilă. În momentul în care senzorul de umiditate sol detectează depășirea pragului inferior stabilit de către utilizator, pompa sumersibilă de pe respectiva linie va porni și va iriga zona pentru o anumită perioadă de timp care este de asemenea setată de către utilizator.
Conexiunile celor 3 pompe sumersibile cu pinii micro-controllerului Arduino Nano sunt realizate în felul următor: pentru punerea în funcțiune, pompele sunt conectate la pinii GND și 5V, iar pentru comandarea acestora sunt folosiți pinii digitali D3, D5 și D7. Deoarece prin pinii digitali ai micro-controllerului nu furniează suficient curent pentru punerea în funcțiune a pompelor sumersibile, între pinii digitali de comandă și pompe au fost plasați tranzistori care au rol în comutarea stării pompelor pornit-oprit. Astfel pompele consumă curentul necesar prin intermediul pinului de 5V, iar pinii digitali au doar rol de comandă. Toate aceste conexiuni sunt surprinse în figura 1.5.
I.3. Sistemul de ventilare și aerisire
Sistemul de ventilare și aerisire este compus din 2 componente importante și anume: trapa de aerisire și perechea de ventilatoare.
Trapa de aerisire este dispusă în partea superioară a serei ținând cont de faptul că aerul cald este mai ușor și tinde să urce. Astfel trapa de aerisire este plasată exact în locul cel mai facil evacuării aerului cald. Trapa este realizată dintr-o folie de plastic maleabilă și două role de lemn. O rolă este amplasată în partea superioară și este folosită pentru adunarea foliei prin rotire, astfel obținem urcarea sau coborârea trapei, iar a doua rolă este statică și este dispusă în partea de jos a foliei având ca scop îndreptarea acesteia și sprijinirea fazei de coborâre a trapei. Fazele de urcare și coborâre ale trapei de aerisire se regâsesc în figurile 1.6 și 1.7.
La nivel funcțional, trapa de aerisire este controlată cu ajutorul unui motor stepper 28BYJ-48 care rotește rola superioară în două sensuri diferite realizând astfel fazele de urcare respectiv coborâre prin intermediul comenzilor date de către micro-controller. Comandarea motorului prin intermediul micro-controllerului se realizează utilizând pinii GND și 5V pentru punerea în funcțiune și pinii digitali D10, D11, D12 respectiv D13 pentru date. Între motor și micro-controller există o interfață utilizată pentru transpunerea semnalelor venite din partea Ardunio Nano în semnale înțelese de motor. Aceste conexiuni sunt surprinse în figura 1.8.
A doua componentă a acestui sistem este reprezentată de perechea de ventilatoare. Cele două ventilatoare sunt dispuse în partea inferioară a serei, chiar deasupra pereților de lemn căptușiți în plastic. Ele sunt dispuse pe diagonală și ambele au rolul de a introduce aer rece din exteriorul serei în interior în momentul în care sistemul detectează această nevoie. Dispunerea pe diagonală are rolul de a crea un curent de aer circular rece la baza mini-serei, care treptat va împinge aerul cald spre partea superioară unde acesta poate fi ușor evacuat prin intermediul trapei de aerisire. Cele două ventilatoare sunt suprinse în figurile 1.9 respectiv 1.10.
La baza funcționării componentei de ventilare avem astfel două ventilatoare care functionează pe o tensiune de 5V. Pentru detectarea temperaturii din interiorul serei, este utilizat un senzor de temperatură. În momentul în care acest senzor detectează depășirea pragului de temperatură setat de către utilizator, sistemul de ventilare și aerisire este pus în funcțiune: în primă fază, trapa de aerisire se ridică până ajunge să fie deschisă complet, urmând ca perechea de ventilatoare să introduca aerul rece la nivelul solui pentru un anumit interval de timp stabilit de către utilizator. După încheierea ciclului de ventilare si aerisire, componentele revin în faza inițială.
În ceea ce priveste conexiunea celor două ventilatoare cu micro-controllerul, sunt utilizați pinii GND și 5V pentru punerea în funcțiune a ventilatoarelor iar pentru comandă este utilizat un singur pin digital și anume pinul D9, deoarece ventilatoarele pornesc concomitent. La fel ca și în cazul pompelor sumersibile care presupun un consum mai mare de curent pentru a funcționa, cele două ventilatoare își au sursa de tensiune în pinul 5V, iar pinul digital D9 care are o tensiune de 3.3V are doar rolul de comutare a stărilor de pornire-oprire a ventilatoarelor prin intermediul celor două tranzistoare aferente, conform figurii 1.11.
I.4. Sistemul de colectare a datelor din mediu
Primele date colectate din mediul serei sunt date privind umiditatea solului. Așa cum a fost prezentat și în rândurile anterioare, sistemul de irigație oferă 3 linii de irigare. Pentru fiecare linie există un senzor de umiditate sol FC-28, conform figurii 1.12
Pentru a recepționa datele referitoare la umiditatea solului, cei 3 senzori sunt conectați la pinii GND și 5V pentru punerea în funcțiune și folosesc pinii analogici A0, A1 și A3 pentru comunicarea datelor din mediu. Aceste conexiuni se pot vedea în figura 1.13.
Următoarele date colectate din mediu sunt date privind temperatura interioară a serei. Temperatura este vitală pentru buna creștere a plantelor, iar detectarea regulată a acesteia permite un control sporit. Pentru captarea temperaturii este utilizat un senzor LM35, conform figurii 1.14. În funcție de datele captate de acest senzor sunt pornite sau nu modulele de aerisire și de ventilare.
Acest senzor este de asemenea conectat și comandat de către micro-controller în felul următor: pentru punerea sub tensiune, acesta este conectat la pinii GND și 5V iar pinul analogic A3 este utilizat pentru captarea și transpunerea spre prelucrare a datelor din mediu. Conexiunile se regăsesc în figura 1.15.
Luminozitatea este de asemenea un factor esențial în creșterea și dezvoltarea plantelor, astfel date privind luminozitatea din mediul serei sunt colectate cu ajutorului unui fotorezistor prezentat în figura 1.16.
Schema de conexiune a fotorezistorului cu micro-controllerul este evidențiată în figura 1.17 și presupune: conectarea cu pinii GND și 5V pentru punerea sub tensiune urmând ca între pinul de intrare al fotorezistorului și pinul 5V să fie plasată conexiunea cu pinul analogic A4, responsabil de citirea datelor efective privind luminozitatea. De asemenea pentru reducerea tensiunii de intrare este plasat un rezistor cu o valoare de 10k ohmi.
I.5. Sistemul de transmitere și recepționare a datelor prin internet
Dacă până în acest moment am avut în vedere prezentarea modulelor de automatizare ale sistemelor mini serei, în continuare va fi prezentat modulul de transmitere și recepționare a datelor prin internet ca un prim pas spre descrierea sistemului de acces și control de la distanță. Conexiunea micro-controllerului la internet se realizează cu ajutorul modulului WIFI – ESP8266, expus în figura 1.18.
Modulul WiFi ESP8266 este un SOC cu protocol TCP / IP integrat care ii poate da acces la reteaua WiFi oricarui microcontroler. ESP8266 este capabil de hosting pentru o aplicație sau să preia toate funcțiile de rețea Wi-Fi de la un alt procesor de aplicație. Fiecare modul vine pre-programat, cu firmware cu comenzi AT. Acest modul are o capacitate de procesare și stocare suficient de puternică, care îi permite să fie integrat cu senzori și dispozitive specifice prin intermediul pinilor GPIO. ESP8266 suportă APSD pentru aplicații VoIP și interfețe cu Bluetooth și conține un RF auto-calibrat care îi permite să lucreze în toate condițiile de funcționare și nu necesită piese RF externe [4].
Astfel în cadrul lucrării, acest modul permite conectarea de tip wireless la o rețea locală și implicit accesul la internet, transmiterea regulată a datelor captate din interiorul mini serei către o bază de date pentru a fi stocate și ulterior manipulate în cadrul interfeței web dar și recepționarea comenzilor manuale venite dinspre interfața web privind acționarea sistemelor de irigație, aerisire sau ventilare. Tot prin intermediul acestui modul sunt recepționate și setările utilizatorului cu privire la parametrii pedoclimatici sau duratele de acționare a sistemelor.
În ceea ce privește conexiunea modului ESP8266 cu micro-controllerul avem: pinii VCC și CH_PD ai modulului ESP8266 conectați la sursa de tensiune 3.3V a micro-controllerului, pinul RXD este conectat prin intermediul unui divizor rezistiv de tensiune format din 3 rezistori de 1k ohm la pinul digital D2 și GND al micro-controllerului, pinul TXD este conectat direct la pinul digital D4 iar pinii GND ai modului și micro-controllerului sunt de asemenea interconectați. Toate aceste conexiuni pot fi regăsite în cadrul figurii 1.19.
Fiecare pin al modului ESP8266 are rolul său, astfel pinul CH_PD va marca starea activă de funcționare a acestuia în momentul în care primește o tensiune de 3.3V. Pinul RXD este pinul care recepționează comenzile venite din partea micro-controllerului. Deoarece întreg modulul funcționează cu o tensiune maximă de 3.3V, pentru a evita o supratensiune venită din partea pinului digital D2 al Arduino, a fost implementat un divizor rezistiv. Pinul TXD este pinul care transmite comenzi către micro-controller, în acest caz nu este necesară implementarea unui divizor rezistiv pentru că pinul D4 al Arduino suportă tensiunea maximă de 3.3V venită din partea modulului ESP8266.
I.6. Controlul general al sistemului – Arduino Nano
Pentru controlul general al sistemelor de irigație, aerisire și ventilare, pentru senzorii de captare a datelor din mediu precum temperatura, umiditatea solului și lumizitatea dar și pentru conexiunea la internet prin intermediul modulului ESP8266 este utilizat micro-controllerul Arduino Nano.
Arduino Nano este o paltforma de dimensiuni reduse, compatibilă cu breadboard-uri și construită în jurul microcontrollerului Atmega328P. Are mai mult sau mai puțin aceleasi functionalități ca o paltformă Arduino UNO, diferența fiind lipsa mufei de alimentare și faptul că această platformă utilizează un cablu Mini USB. Printre specificațiile acestuia se numără: Architectura Atmel AVR 8-bit, tensiune 5V, Memorie Flash 32KB, SRAM 2KB, Viteză 16MHz, 8 intrări analogice, 6 ieșiri PWM și EEPROM 1KB. [6]
Arduino UNO este o platformă de procesare open-source, bazată pe software și hardware flexibil și simplu de folosit. Constă într-o platformă construită în jurul unui procesor de semnal și este capabilă de a prelua date din mediul înconjurator printr-o serie de senzori și de a efectua acțiuni asupra mediului prin intermediul luminilor, motoarelor, servomotoare, și alte tipuri de dispozitive mecanice. Procesorul este capabil să ruleze cod scris într-un limbaj de programare care este foarte similar cu limbajul C++. [7]
Principalul motiv pentru alegerea acestui micro-controller este reprezentat în primul rând dimensiunile reduse ale acestuia, iar faptul că oferă aproximativ aceleași funcționalități ca și plăcile de dimensiuni mai mari conferă de asemenea un avantaj. Figurile 1.20 și 1.21 prezintă micro-controllerul Arduino Nano.
Capitolul II. Componentele Software
II.1. Programul software pentru automatizare
Pentru programarea micro-controllerului Arduino Nano dar și al componentelor conexe, a fost utilizat mediul integrat de dezvoltare furnizat de către compania dezvoltatoare a dispozitivelor Arduino. Limbajul de programare este unul nativ Arduino și este alcătuit dintr-un set de funcții C/C++ și biblioteci aferente.
Arduino Software – IDE (Integrated Development Environment), reprezintă mediul prin care putem comunica direct cu micro-controllerul oricărora dintre plăcile Arduino. El conține un text editor în care se poate scrie codul, un ecran de mesaje care informeaza asupra acțiunilor curente sau erorilor care apar, o consola tex, și desigur o bară de instrumente cu butoane pentru funcții comune dar și un compilator pentru codul scris anterior.
Acest software se instalează pe calculator având versiuni atât pentru Windows cât și Mac OSX sau Linux. [10]
În continuare voi prezenta codul sursă încărcat pe micro-controllerul Arduino Nano.
Primele linii ale codului nativ Arduino sunt alcătuite din inițializarea pinilor și a variabilelor utilizate de către module. Astfel, conform figurii 2.1, observăm inițializarea pinilor utilizați de către cele trei pompe sumersibile și anume pinii 3, 5 și 7. Pe lângă declararea pinilor observăm și variable de tip ‘steag’ care au rolul de a reține stările pompelor dar și variabile de timp utilizate în logica de calculare a intervalelor ciclice de irigație.
În continuare, sistemul de ventilare reprezentat de perechea de ventilatoare împart același pin de comandă și anume pinul 9. De asemenea sunt declarate variabile de timp și de stare pentru funcționarea ventilatoarelor.
Cei trei senzori de umiditate sol se folosesc de pinii A0, A1, A2 pentru a extrage datele din mediu.
În figura 2.2 sunt surprinse inițializările motorului stepper, responsabil de rularea trapei de aerisire, pe pinii digitali 10, 11, 12 și 13 dar și setări funcționale cum ar fi numărul de pași per revoluție.
Senzorul de temperatură folosește pinul analogic A3 pentru preluarea datelor privind temperatura din interiorul mini serei. Pe lângă acest pin analogic, senzorul are nevoie și de câteva variabile utilizate în procesul de extragere. Senzorul de luminozitate utilizează pinul analogic A4.
Modulul WIFI ESP8266 este inițializat prin includerea bibliotecii ‘SoftwareSerial.h’ care are rolul de a facilita un mod de comunicare serial între modul și micro-controller. Pinii utilizați pentru transmiterea și recepționarea datelor sunt pinii analogici D2 și D4. Tot în această fază sunt definite și adresa serverului pe care modulul îl va apela și variabilele necesare în procesul de comunicare prin internet.
Ultimele inițializări presupun stabilirea variabilelor generale utilizate în cadrul aplicației dar și limitelor inferioare sau superioare în funcție de care se declansează sistemele aferente ori intervale ale ciclurilor de funcționare ale acestor sisteme, conform figurii 2.3.
Funcția setup() este funcția care se apelează o singură dată în momentul alimentării micro-controllerului. Această funcție are rolul de a stabilii pinii utilizați în cadrul aplicației dar și felul în care aceștia sunt utilizați. În cazul de față observăm inițializarea pinilor pe varianta ‘OUTPUT’ care subliniază faptul că acești pini nu vor recepționa comenzi, ci vor trimite comenzi dinpre Arduino spre modulele conexe. Tot în cadrul funcției de setup() sunt setate și viteza de rotație a motorului stepper, frecvența conexiunii seriale și apelarea funcțiilor de inițializare a conexiunii la rețeaua wireless. Comenzile inițiale adresate modulului ESP8266 ‘AT+CWMODE=1’ și ‘AT+CIPMUX=1’ au rolul de a specifica faptul că modulul se conectează la rețea din postura de client.
Funcția loop() din cadrul programului Arduino este o bucla infinită în intermediul căreia este implementată logica de funcționare a modulelor, conform figurii 2.4. Aici sunt stabilite criteriile de funcționare, timpii și condițiile. Pentru stabilirea ciclurilor temporare de funcționare a modulelor am optat pentru utilizarea funcționalitatii millis() în diferite momente ale rulării în detrimentul funcției delay(). Ambele variante au rolul de a menține anumite stări pentru un interval de timp, însă singurul impediment al funției delay() este acela că blochează firul de execuție și astfel modulele nu ar fi putut sa funcționeze în paralel. Chiar dacă programarea Arduino este o programare secvențială, prin utilizarea funcționalității millis() se poate obține o funcționare asemănătoare programării pe fire de execuție.
Observăm în primele linii de cod funcționalitățile în oglindă ale fiecărui senzor de umiditate sol. În cazul de față, fiecare senzor citește valorile aferente liniei sale de irigație odată pe secundă.
Figura 2.5. surprinde codul celor trei pompe sumersibile din alcătuirea sistemului de irigație. Fiecare pompă are un criteriu propriu de inițializare a ciclurilor de irigație și anume pragul inferior de umiditate detectat de senzorul de umiditate sol aferent. Acest prag este presetat de către utilizator și reținut cu ajutorul variabilei ‘humidityLowLevel’. Intervalul de timp pentru irigație este de asemenea setat de către utilizator folosing variabila ‘pumpInterval’.
Din figura 2.6 reiese codul sistemului de ventilare și aerisire. Variabila declanșatoare a acestui sistem este temperatura obținută de către senzorul de temperatură din interiorul serei. Dacă această valoare depășește pragul limită superior setat de către utilizator, ‘temperatureHighLevel’, sistemul de aerisire și ventilare va porni. Astfel, trapa de aerisire va fi ridicată și menținută în această stare conform intervalului stabilit de către utlizator ‘stepperMaintainInterval’ iar ventilatoarele vor acționa conform ciclului stabilit de asemenea de către utilizator prin intermediul ‘fansInterval’.
Figura 2.7 evidențiază codul senzorilor de temperatură și luminozitate. Asemeni senzorilor de umiditate sol, aceștia citesc valorile din mediu odată pe secundă.
Figura 2.8 prezintă codul de instrucțiuni ale modului WIFI ESP8266. Într-un interval ciclic de 9 secunde, modulul transmite informațiile privind temperatura, luminozitatea și umiditatea solului pentru cele trei linii de irigație. În primă fază se stabilește o conexiune ‘TCP’ cu website-ul aplicației prin comanda ‘AT+CIPSTART=1,\"TCP\",\"’.
După ce conexiunea a fost stabilită, se efectuează transmiterea prin intermediul unui cereri de tip ‘GET’ către controllerul ‘Api’ al aplicației web, având sintaxa: ‘/add?temperature=" + (String)temperatureVal + "&luminosity=" + (String)luminosity + "&soilMoisture1=" + (String)soilMoisture1 +"&soilMoisture2=" + (String)soilMoisture2 +"&soilMoisture3=" + (String)soilMoisture3 + " HTTP/1.1\r\n"’, conform figurii 2.9
În final, în figura 2.10, sunt prezentate funcțiile ‘connectWifi()’ și ‘reset(). Aceste funcțiile sunt folosite de către modulul WIFI ESP8266 în faza de inițializare. Funcția de resetare este prima funcție apelată în momentul pornirii sistemului și are rolul de a elibera eventuale setări existente pentru a nu intra în conflict cu noul ciclu de funcționare. Comanda de resetare transmisă de către micro-controller către modul este ‘AT+RST’.
Funția de conectare la rețeaua locală fără cablu este ‘AT+CWJAP=\”ssid\”,”password\””’.
II.2. Tehnologiile web utilizate și software-ul interfeței de acces și control
II.2.1. IDE – Visual Studio 2015
Microsoft Visual Studio este un mediu de dezvoltare integrat (IDE) al companiei Microsoft. Este utilizat pentru dezvoltarea programelor pe calculator, în aceeași măsura ca și dezvoltarea aplicațiilor web, a website-urilor, a serviciilor web dar și a aplicațiilor mobile. Visual Studio folosește platforme software precum Windows API, Windows Forms, Windows Presentation Foundation, Windows Store și Microsoft Silverlight.
Visual Studio include și un editor de cod care suportă IntelliSense (componenta pentru autocompletarea codului) dar și funcționalitatea de code refactoring. Debugger-ul integrat funcționează atât ca și debugger la nivel de sursă cât și la nivel de cod-mașină. Alte componente incluse sunt asa numitele code profiler, design-erele pentru formulare, design-erele web, de clase sau de baze de date. Acceptă plugin-uri care pot să îmbogățească funcționalitatea până la orice nivel inclusiv sisteme de control al versiunilor precum Subversion sau Git și alte seturi de echipamente precum Team Foundation Server pentru munca în echipă.
Visual Studio suportă 36 de limbaje de programare diferite, printre care se numără: C++, Visual Basic, .NET, C#, F#, JavaScript, TypeScript, XML, HTML, CSS. Alte limbaje precum Python, Ruby, Node.js sau M sunt disponibile instalând plugin-urile specifice. [11]
II.2.2. Framework-ul .NET MVC 5
Model – View – Controller este un model arhitectural care separă o aplicație în trei mari componente:
Model conține clase ce reprezintă domeniul aplicației. Aceste obiecte încapsulează adesea date memorate într-o baza de date precum și cod folosit pentru a procesa datele și a executa acțiuni specifice logicii aplicației. Cu ASP.NET MVC, acesta este văzut mai ales ca un Data Acces Layer – DAL – de un anumit tip, utilizând de exemplu Entity Framework sau NHibernate combinat cu cod specific logicii aplicației.
View defineste cum va arăta interfața aplicației. View este un template pentru a genera în mod dinamic HTML.
Controller este o clasă specială ce gestionează relațiile dintre View și Model. Controller-ul răspunde la acțiunile utilizatorului, comunică cu modelul și decide ce vizualizare va afișa (dacă există una). În ASP.NET NVC, numele acestei clase conține sufixul Controller.
.NET MVC5 aduce în plus funcționalități precum: rutare bazată pe atribute, ASP.NET Identity, Generare cod automat din model, filtre locale, filtre globale. [12]
Schema arhitecturală a modelului MVC este prezentată în figura 2. 11.
*entity framework
Printre caracteristicile și avantajele utilizării platformei .NET MVC se numără: Separarea sarcinilor aplicației (logica de introducere, logica de bussiness, logica de afișare), testabilitate și dezvoltare bazată pe testare. Funcționalitățile pot fi testate pe obiecte cobai, temporare fără a afecta datele reale; o funcționalitate de mapare a URL-urilor foarte puternică care facilitează dezvoltarea aplicațiilor cu link-uri ușor de parcurs și manipulat, optimizate pentru motoarele de căutare (SEO) dar și adresări de tip REST (representational state transfer); existența View-urilor implicite, data-binding, funcții de localizare; funcționalități de autentificare și validare implicite cu opțiuni de setare a rolurilor fiecărui utilizator. [14]
Motivul pentru care am ales platforma .NET MVC5 și mediul de dezvoltare Visual Studio este familiaritatea cu acest limbaj de programare dar și avantajele din perspectiva programării precum: autogenerarea de controllere și view-uri pe baza modelelor, utilizarea entity framework și funcționalitatea de migrări pentru conexiunea directă și simplificată cu baza de date, ușurință integrării altor pachete de dezvoltare dar și al kit-urilor de interfață utilizator.
În cadrul aplicației, principalele controllere sunt cele responsabile de afișarea datelor cu privire la umiditate sol, temperatură și luminozitate dar și controllerele pentru gestionarea utilizatorilor interfeței web, și a funcționalității de administrare și control al sistemului.
În figura 2.12 pot fi regăsite controllerele de bază: HomeController, LuminosityController, MoistureController, TemperatureController, ApiController UsersController.
În ceea ce privește modele utilizate atât în cadrul aplicației cât și în cadrul bazei de date, aplicația enumeră urmatoarele modele de bază: User (figura 2.13), LuminosityData (figura 2.14), SoilMoistureData (figura 2.15), TemperatureData (figura 2.16)
II.2.3. Baza de date MS – SQL
Pentru stocarea datelor necesare funcționării aplicației dar și a datelor din mediu a fost utilizată tehnologia MS-SQL a companiei Microsoft. Motivul principal al folosirii MS-SQL este reprezentat de compatibilitatea cu tehnologiile prezentate anterior și usurința integrării, conexiunea cu baza de date și manipularea acesteia poate fi efectuată cu ușurință din același cadru de dezvoltare Visual Studio.
În figura 2.17, este prezentată structura bazei de date. Aceasta este formată din cinci tabele după cum urmează: Tabela Users, având câmpurile specifice și cheia straină RoleId, reține datele privind utilizatorii aplicației. Tabela Roles este tabela auxiliară celei de utilizatori și are scopul de a reține rolul fiecărui utilizator, acestea putând fii de utilizator simplu ori de administrator sistem. Tabela SystemModuleStates reține stările actuale ale sistemelor de irigație, aerisire și ventilare. În această tabelă se stabilește dacă sistemele trebuiesc pornite ori oprite. Tabelele TemperatureDatas, LuminosityDatas și SoilMoistureDatas vor stoca datele privind temperatura, luminozitatea și umiditatea solului pentru cele trei linii de irigație comunicate de către micro-controllerul Arduino și modulul wifi ESP8266.
II.2.4. Serviciile Azure
Microsoft Azure este un serviciu de cloud-computing creat de compania Microsoft pentru dezvoltarea, testarea, lansarea și administrarea aplicațiilor și a serviciilor prin intermediul unei rețele globale de data-centere administrate de către Microsoft. Furnizează software ca și serviciu (SaaS), platformă ca și serviciu (PaaS), infrastructură ca și serviciu (IaaS), suportă diferite limbaje de programare, sisteme de operare, unelte și platforme, atât specifice Microsoft cât și din surse externe. [15]
Rularea online a aplicației web și găzduirea bazei de date este realizată cu ajutorul serviciilor Cloud Microsoft Azure, folosind pachetul ‘Student’ conform figurii 2.18.
II.2.5. HTML 5 & CSS3
Unul din primele elemente fundamentale ale WWW ( World Wide Web ) este HTML ( Hypertext Markup Language ), care descrie formatul primar în care documentele sunt distribuite și văzute pe Web. Multe din trasaturile lui, cum ar fi independenta fata de platforma, structurarea formatării și legaturile hypertext, fac din el un foarte bun format pentru documentele Internet și Web.
Orice document HTML incepe cu notația <html> și se termina cu notația </html>. Acestea se numesc în literatura de specialitate "TAG-uri".Prin convenție, toate informațiile HTML incep cu o paranteza unghiulara deschisa " < " și se termina cu o paranteza unghiulara inchisa " > ".
Tag-urile între aceste paranteze transmit comenzi către browser pentru a afișa pagina intr-un anumit mod. Unele blocuri prezintă delimitator de sfârșit de bloc, în timp ce pentru alte blocuri acest delimitator este opțional sau chiar interzis.
Între cele doua marcaje <html> și </html> vom introduce doua secțiuni:
– sectiunea de antet <head>…</head> și
– corpul documentului <body>…</body>.
Blocul <body>…</body> cuprinde conținutul propriu-zis al paginii HTML, adică ceea ce va fi afișat în fereastra browser-ului. [16]
Figurile 2.19 și 2.20 prezintă structura de bază a documentelor HTML.
HTML5, noua versiune majoră a limbajului, a fost aleasă ca recomandare W3C în octombrie, introdus numeroase noi tag-uri, majoritatea având rol semantic sau de structurare, cum ar fi: <header>, <nav>, <article>, <section>, <aside>, <footer>. Aceste elemente vor permite înlocuirea tag-urilor <div>, adeseori deloc sugestive, cu corespondentul semantic. Drept concluzie, codul va fi mai curat și mai ușor de citit și ințeles, iar majoritatea site-urilor vor urma un șablon similar cu cel din figura 2.21. [19]
CSS este limbajul folosit pentru descrierea modului de prezentare a paginilor web, ceea ce include culorile, organizarea structurală a paginii, spațierea diferitelor componente, adăugarea de animații și elemente decorative și stabilirea mărimii și culorii font-urilor.. CSS este independent de HTML, și poate fi folosit împreuna cu orice limbaj de marcare bazat pe XML. Separarea codului HTML de cel CSS faciliteaza mentenanța site-urilor, permite aplicarea de stiluri mai multor pagini, dar și adaptarea anumitor pagini în funcție de diferite medii. Acest concept se numeste separarea conținutului de partea de prezentare. [21]
Astfel, atât versiunea a 5-a a limbajului HTML cât și versiunea a 3-a a limbajului CSS sunt folosite în cadrul proiectului în partea de prezentarea a paginilor, mai exact în componentele de tip View, așa cum se poate observa și în exemplul din figura 2.2.
II.2.6. Google Material Design
Material Design este un limbaj de design creat de compania Google inițial pentru sistemul de operare al telefoanelor mobile Android în anul 2014. Ulterior acest limbaj a fost adaptat și pentru design-ul aplicațiilor web. Principala caracteristică a limbajului este focusarea pe utilizarea texturilor materiale asemănătoare celor din lumea reală. [22]
Am ales utilizarea acestui pachet de componente vizuale datorită design-ului realistic, a paletei de culori de impact și a efectelor de animație sugestive. Datorită faptului că, inițial, Material Design a fost conceput pentru dispozitivele mobile, conferă aplicației web un nivel ridicat de adaptabilitate privind diferitele rezoluțiile ale ecranelor dispozitivelor.
Figurile 2.23 și 2.24 ilustreză câteva dintre componentele Material Design.
Capitolul III. Instrucțiuni de utilizare
Dat fiind faptul că lucrarea ’Smart Greenhouse’ este o automatizare a unei mini-sere, utilizarea acesteia este menită să fie simplistă și să necesite cât mai puțin intervenția utilizatorului.
Pentru monitorizarea și controlul mini-serei se utilizează aplicația web găzduită cu ajutorul serviciilor Microsoft Azure.
În momentul accesării interfeței, utilizatorului îi va fi solicitată autentificarea, conform figurii 3.1. Există doua tipuri de utilizatori: utlizatorul simplu, căruia i se permite doar monitorizarea datelor extrase din seră și administratorul, care pe lângă monitorizare, are și posibilitatea de a controla sistemul, de a modifica setările de automatizare dar și de a adăuga noi utilizatori.
Ulterior autentificării, utilizatorului i se pune la dispoziție pagina panoului general care va conține situația generală a mediului serei în timp real. În partea stângă a paginii este dispus meniul de navigare spre paginile cu detalii amănunțite privind Temperatura, Umiditatea sau Luminozitatea, dar si spre pagina de Administrare, în cazul utilizatorului cu rol de administrator, conform figurii 3.2.
Accesând una dintre paginile Temperatură, Umiditate sau Luminozitate, utilizatorul poate vizualiza date statistice și înregistrări pe o perioadă extinsă pentru fiecare dintre aceste aspecte, conform figurii 3.3.
Astfel, în prim plan se vor afla un panou al situației în timp real, un grafic care surprinde evoluția pe un anumit interval, actualizat la câteva secunde, dar și informații afișate sub formă de înregistrări tabelare.
Prin autentificarea cu drepturi de administrator, utilizatorul are posibilitatea de adăuga noi utilizatori sau de a actualiza datele utilizatorilor existenți prin accesarea paginii de administrare utilizatori, prezentată în figura 3.4.
Controlul și modificarea setărilor se face de către administrator din cadrul paginii Control Sistem.
În cazul de față, utilizatorul va putea acționa manual sistemele de irigație, aerisire sau ventilare, înafara buclei programate, prin utilizarea primelor trei funcționalități din cadrul paginii. Setările privind ciclurile de acționare ale sistemelor sunt ușor configurabile utilizând funcționalitățile din panoul corespunzător, iar în acceași măsură pot fi modificate și setările privind parametrii pedoclimatici.
Toate aceste funcționalități sunt prezentate în figura 3.5
Capitolul IV. Concluzii
În concluzie, lucrarea ’Smart Greenhouse’ permite cultivarea plantelor de dimensiuni mici sau medii și dezvoltarea acestora într-un mediu controlat. Platforma înfoliată în plastic menține temperatura ridicată necesară plantelor pe o perioadă extinsă a anului iar dimensiunile reduse ale acesteia favorizează plasarea în spații relativ mici.
Automatizarea sistemelor de irigație, ventilare și aerisire în funcție de datele colectate de senzorii de umiditate sol, temperatură și luminozitate plasați in interiorul serei elimină necesitatea investirii timpului în îngrijirea plantelor.
Accesul de la distanță asupra mini-serei prin intermediul interfeței web facilitează o monitorizare flexibilă asupra situației plantelor și a mediului de dezvoltare. Date statistice și în timp real pot fi consultate în orice moment datorită funcționalității de transmitere a acestora prin conexiune la internet.
Controlul este de asemenea un mare beneficiu pus la dispoziție prin intermediul interfeței web. Configurarea parametrilor de automatizare este realizabilă, astfel ciclurile de acționare ale sistemelor dar și parametrii pedoclimatici declanșatori ai sistemelor pot fi modificați și adaptați. Sistemele de ventilare, aerisire și irigație pot fi acționate manual dacă utilizatorul consideră necesar acest lucru, înafara buclei automatizate.
Consider că această lucrare este utilă în practică iar realizarea acesteia mi-a consolidat cunoștintele acumulate până în prezent în cei 4 ani de studiu dar în același timp s-a demonstrat a fi o experiență de învățare complexă acoperind arii extinse ale ingineriei IT precum: dezvoltarea aplicațiilor web, utilizarea bazelor de date și a serviciilor de Cloud-Computing Azure, dezvoltarea software-ului nativ Arduino dar și utilizarea și conexiunea componentelor electronice.
Bibliografie
[1] http://blog.seretransilvania.ro/de-ce-sa-cultivam-in-sera-sau-solar/ , Consultat în data de: 15.11.2017
[2] https://probots.co.in/images/LM35.jpg, Consultat în data de: 15.11.2017
[3] https://probots.co.in/images/large/5mmLDRPhotoresistor_LRG.jpg, Consultat în data de: 15.11.2017
[4] https://www.robofun.ro/wifi-module-esp8266 , Consultat în data de: 15.12.2017
[5]https://www.tertiaryrobotics.com/pub/media/catalog/product/cache/c687aa7517cf01e65c009f6943c2b1e9/w/i/wifi_serial_transceiver_module.jpg, Consultat în data de: 15.12.2017
[6] https://www.robofun.ro/arduino-nano , Consultat în data de: 16.12.2017
[7] https://www.robofun.ro/arduino_uno_v3 , Consultat în data de: 16.12.2017
[8]https://storecdn.arduino.cc/usa/catalog/product/cache/1/image/520×330/604a3538c15e081937dbfbd20aa60aad/A/0/A000005_featured_2.jpg, Consultat în data de: 16.12.2017
[9]https://storecdn.arduino.cc/usa/catalog/product/cache/1/image/500×375/f8876a31b63532bbba4e781c30024a0a/A/0/A000005_ISO_2.jpg, Consultat în data de: 16.12.2017
[10] https://microcontrolere.wordpress.com/arduino/arduino-software/ , Consultat în data de: 05.01.2018
[11] https://en.wikipedia.org/wiki/Microsoft_Visual_Studio , Consultat în data de: 16.02.2018
[12] Ioan Asiminoaei – Curs ASP.NET MVC https://profs.info.uaic.ro/~iasimin/Special/Curs_ASPMVC.pdf , Consultat în data de: 16.02.2018
[13] Ioan Asiminoaei – Curs ASP.NET MVC https://profs.info.uaic.ro/~iasimin/Special/Curs_ASPMVC.pdf , Consultat în data de: 16.02.2018
[14] https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions-1/overview/asp-net-mvc-overview , Consultat în data de: 17.02.2018
[15] https://en.wikipedia.org/wiki/Microsoft_Azure , Consultat în data de: 17.02.2018
[16] https://web.ceiti.md/lesson.php?id=1 , Consultat în data de: 20.04.2018
[17] https://web.ceiti.md/images/structura-html.png, Consultat în data de: 20.04.2018
[18] https://web.ceiti.md/lesson.php?id=1 , Consultat în data de: 20.04.2018
[19] Rob Gravelle, New Tags in HTML5, https://www.htmlgoodies.com/tutorials/html5/new-tags-in-html5.html , Consultat în data de: 20.04.2018
[20] Rob Gravelle, New Tags in HTML5, https://www.htmlgoodies.com/tutorials/html5/new-tags-in-html5.html, Consultat la 25.05.2018
[21] HTML & CSS, https://www.w3.org/standards/webdesign/htmlcss.html , Consultat în data de: 25.05.2018
[22] https://envato.com/blog/introduction-material-design/ , Consultat în data de: 26.05.2018
[23]https://i0.wp.com/beebom.com/wp-content/uploads/2015/01/material-ccomponents-1024×576.jpg?resize=640%2C359, Consultat în data de: 26.05.2018
[24]https://cmktimageprd.global.ssl.fastly.net/0.1.0/ps/2103097/580/386/m1/fpnw/wm0/materialdesign_cover.png?1483921025&s=0676a2873749cfe026f8210a65a44906, Consultat în data de: 26.05.2018
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: PROGRAMUL DE STUDIU CALCULATOARE FORMA DE ÎNVĂȚĂMÂNT IF Proiect de diplomă COORDONATOR ȘTIINȚIFIC PROF. DR. ING. CORNELIA AURORA GYŐRÖDI ABSOLVENT… [304037] (ID: 304037)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
