Sistem pentru evitarea pericolelor in mediile industriale Coordonator Absolvent Conf Dr.Ing. Mihnea Moisescu Surdu Gheorghe Marian 1.Introducere 1.1… [309568]

Universitatea Politehnica din Bucuresti

Facultatea de Automatica si Calculatoare

Departamentul de Automatica si Informatica Industriala

LUCRARE DE LICENTA

Sistem pentru evitarea pericolelor in mediile industriale

Coordonator Absolvent: [anonimizat]

1.Introducere

1.1 Obiectivele si scopul lucrarii de licenta

Aceasta lucrare este constituita dintr-o [anonimizat]:

mediile industriale

agricultura

in uz individual

In mediile industriale exista o serie de pericole ce pot afectata muncitorii prezenti in cadrul companiei.Cele mai frecvente accidente in aceast mediu sunt intalnite din cauza unor cantitati de gaze ce pot afecta atat personalul cat si intreg mediul de lucru.[anonimizat] a oferi unei persoane un sistem de monitorizare a gazelor periculoase ce pot duce la afectiuni respiratorii ale acestuia si la monitorizare mediului din jurul sau pentru a detecta un pericol pe care acesta nu il poate simti.[anonimizat] a evita un accident ce ar fi pe cale sa se produca.

In mediile industriale se intalnesc sisteme de monitorizare la nivel de companie sau incapere dar majoritatea nu vin cu un sistem de protectie pentru fiecare angajator ci doar cu echipamentul necesar pentru protejarea lui de pericole exterioare.

Un alt obiectiv al proiectului este acela de a da o mai mare siguranta angajatiilor prin emiterea semnalelor de alarma in cazul detectiei unui anumit pericol din jurul sau.

Ca obiectiv al proiectului mai putem enumera creare unui mediu de planificare in companie unde angajatii isi pot vedea activitatiile ulterioare dar isi si pot vedea un raport bazat pe ultimele lor inregistrari din mediul de lucru.Liderul de echipa poate vedea si el inregistrariile membriilor din echipa si poate lua masuri pentru evitarea accidentelor ce sunt pe cale sa se produca(exemplu:cresterea preponderenta a cantitatii de CO2).

Un alt obiectiv al proiectului este de a oferi unui utilizator o experienta cat mai buna si o interfata cat mai simpla pentru utilizarea functionalitatiilor sistemului.

1.2 Prezentarea domeniului

Industria reprezinta unul din cei mai importanti factori in ceea ce priveste procesul de productie al tutoror lucrurilor din jurul nostru ce au la baza un proces tehnologic.De astfel prin acest termen putem clasifica industria ca fiind un mediu in care se executa o suita de proces tehnologice ce au ca scop productia de materiale.Industria se clasifica in 2 categorii:

industria usoara

industria grea

industria usoara se ocupa cu producerea marfurilor iar industria grea cu producerea materialelor de productie si in unele cazuri si a echipamentelor folosite.Procesul implicat in industrie poarta numele de fabricare

Industria se clasifica in mai multe modele si anume:

-[anonimizat]

-industria textila

Romania prezinta o industrie foarte variata ingloband toate aceste tipuri.Industria reprezinta un factor primordial in dezvoltarea economiei unei tarii.Datorita industriei creste puterea economica a tarii.Prin crearea de produse si exportul acestora in tara sau in afara tarii bugetul de dezvoltare creste mai mult si astfel apar o multime de factori de modernizare.

Numarul de angajati prezenti in mediul industrial este foarte mare,chiar daca in majoritatea inteprinderilor sau adoptat mecanismele automate.

Industria petroliera joaca un factor foarte important in cadrul fiecarei tari,doar in Romania acesta fiind estimata la sfarsitul anului 207 la 9 miliarde de euro,consumurile de combustibil pe cap de locuitor fiind intre 140 sin 170 de litri.Consumul total pe an atingea circa 3 milioane de tone de benzina si 4 milioane de tone de motorina.In fiecare an in cadrul mediilor industriale ce emit o serie mare de gaze in urma procesului de productie se intampla o serie de foarte multe accidente,toate datorate in principal neglijentei si nebagari in seama a unui anumit pericol ce poate sa se declanseze.In mediul industrial nu exista echipament pentru monitorizare mediului din jurul unui utilizator ci doar aparate de detectie pentru o incapere de lucru.Se intalnesc senzori de incendiu sau senzori pentru detectia de gaze inflamabile.

1.3 Prezentare pe scurt a capitolelor

Aceasta lucrare este structurata pe 7 capitole.Primul capitol este reprezentat de o introducere in care se prezinta pe scurt continutul lucrarii,domeniul de aplicabilitate al proiectului si o serie de functionalitatii ce le poate aduce sistemul.

Capitolul 2 este impartit in trei sectiuni ce isi propun sa descrie problema tratata dar si rezolvarea propusa.Ultima sectiune din acest capitol este o analiza asupra sistemului propus si alte dispozitive de pe piata.

In capitolul 3 sunt prezentate solutiile tehnice si echipamentele potrivite pentru realizarea sistemului dorit.Acest capitol cuprinde 3 sectiuni.In prima sectiune se prezinta tehnologiile si echipamentele disponibile.Celelalte 2 sectiuni se axeaza pe echipamentele si tehnologiile utilizate si au ca rol descrierea acestora si modului de functionare al acestora

Capitolul 4 are ca rol prezentarea modului de proiectare a sistemului embedded.Se descriu arhitectura sistemului precum si pasii parcursi pentru proiectarea acestuia.Ultima sectiune din capitol este menita prezentarii etapei de testare al acestuia.Putem preciza ca aceasta este realizarea unui procent de 50% din cadrul intregului sistem.

Implementarea aplicatiei software reprezinta realizarea a inca 50% din cadrul sistemului.Acesta etapa este descrisa in capitolul 5.Rolul acestui capitol este de a descrie arhitectura aplicatiei si de a descrie etapele implementarii acesteia.Aplicatia se va prezenta pe module,aceasta fiind consituita din 2 module:

Aplicatie de tip server-side

Aplicatie mobile

La finalul parcurgerii etapelor de implementare are loc etapa de testare a aplicatiei.

In cadrul acestui capitol se afla o sectiune speciala denumita Testarea ansamblului hardware software ce este menita sa arate in procent de 100% functionalitatea intregului sistem si a functionalitatiilor acestuia

Capitolul 6 reprezinta un studiu de caz in care se prezinta diverse functionalitati ale sistemului.

Ultimul capitol este destinat bibliografiei si a resurselor folosite pentru documentare si conceperea acestui sistem.

2.Descrierea problemei abordate si a rezolvari propuse

2.1 Descrierea problemei abordate

In mediul industrial si in toate mediile ce implica cantitatii mari de gaze si temperaturi ce pot ajunge peste limita suportata de om se pot intampla o serie de accidente ce pot avea consecinte grave.De aceea am ales sa adaug un tip nou de sistem ingloband tehnologii software cu tehnologii hardware.Am introdus un nou model de bussines prin care un lider de echipa este alarmat pe telefonul lui daca un angajat din cadrul echipei lui este in pericol.Datorita faptului ca pot aparea probleme de conexiuni prin mediul Internet am adapotat inca 2 tipuri de alarme.Unul din aceste tipuri este reprezentat de o alarma de tip sms si inca o alarma multipla ce se manifesta la utilizatorul in pericol.Aceasta alarma multipla este declansata de dispozitiv continuu pana la reglarea nivelelor de gaz ,temperatura si calitatea aerului la nivele normale.Al doilea tip de alarma se manifesta pe telefonul mobil,acesta monitorizand in timp real nivele de gaz,temperatura si calitatea aerului.

Aplicatiile mobile au o medie de folosire foarte mare si de aceea s-a ales ca aplicatia de tip client sa fie de tip mobile.Pentru oferirea disponibilitatii pe cele mai folosite platforme si anume Android si iOS am optat pentru o aplicatie de tip hybrid.Se mai poate adauga si functionalitatea pe dispozitivele de tip Windows Phone.

In cadrul dezvoltarii software exista o suita de modele de dezoltare printre care putem enumera:

Modelul cascada

Acest model se remarca prin faptul ca dezvoltarea, evolutia si validarea sunt reprezentate separat prin intermediul unor faze precum proiectarea software,implementare,testare,etc.

Figura 2.1.1 Modelul Cascada

Aceasta metoda mai este intitulata si model secvential.Observand modelul de mai sus si tranzitile asociate deducem ca pentru trecerea dintr-o stare in alta poate fi nevoie de o decizie manageriala.Aceasta metoda este aleasa cand complexitatea proiectului este mica.Un dezavantaj al acestei metode e ca cerintele trebuiesc construite foarte atent pana in etapa implementarii si greselile nu sunt permise deoarce cerintele nu mai pot fi modificate dupa publicarea cerintelor finale.

Dezvoltarea evolutiva

Aceasta metoda se bazeaza pe un prototip initial ce respecta o serie de cerinte minime.Acesta este mai apoi aratat clientului ca mai apoi sa se continue dezvoltarea acestuia pe baza noilor cerinte aparute.

Figura 2.1.2 Dezvoltare evolutiva

Rolul prototiplui este de a ajuta clientul in buna definire a cerintelor.Avantajul acestei metode este intretinerea redusa deoarece validarile prototipului au loc in decursul dezvoltarii.Ca dezavantaj putem enumera faptul ca pot aparea distoriuni intre client si echipa de dezvoltare datorita unui timp mai indelungat de dezvoltare.

In cadrul sistemului am folosit dezvoltarea evolutiva deoarece am avut nevoie de o serie de validari pe parcursul dezvoltarii si cerintele au fost progresive.Am inceput prin definirea cerintelor din etapa de analiza.Luand in calcul diverse tipuri de industrie precum industria chimica,petroliera,constructiilor de masini am concluzionat ca in cadrul acestor medii de lucru nu exista un sistem ce poate monitoriza mediul de lucru al fiecarui angajator.Deoarece in aceste industrii se utilizeaza numeroase procedee de prelucrare si transformare a substantelor chimice gazoase,lichide si solide se pot genera amestecuri explozive.In toate mediile de productie apare pericolul de explozie.

In cadrul depozitelor de deseuri si constructii se pot produce gaze inflamabile ce pot proveni din tuneluri,gauri formate ce sunt slab aerisite.In agricultura se utilizeaza instalatii de recuperare a biogazului si in cadrul saparilor pot aparea amestecuri explozive.

Ca exemplu de incident datorat unor scurgeri nedetectate de gaze putem enumera explozia din anul 2014 din Kaohsiung,Taiwan.Trezeci si doi de oameni au fost ucisi si trei sute douzeci si unu au fost raniti datorita unor scurgeri de gas pe scara larga de la niste conducte de gas ale unor fabrici petrochimice.

Cerinta fundamentala a proiectului este o buna monitorizare a acestor accidente si informarea in cel mai scurt timp a responsabililor.

O proasta monitorizare poate duce la pierderea unor vieti omenesti dar si pierderi materiale de ordinul milioanelor de euro.In cadrul unui accident pe scara larga se adauga si gradul de poluare foarte ridicat si cantitatile de gaze poluante ce ajung in atmosfera.

Aplicatia prezinta 2 moduri de functionare pentru diverse tipuri de utilizatori.Utilizatorii sunt de 3 tipuri:

Lider de echipa in cadrul unei companii

Muncitor in cadrul unei companii

O persoana ce foloseste sistemul pentru uz individual

Din etapa de analiza putem observa din diagrama de mai jos modul de functionare al sistemului si fazele de executie in cazul in care sistemul e folosit in cadrul unei companii:

Figura 2.1.3 Diagrama statemachine pentru folosire in companie

In cazul folosirii individuale diagrama se reduce la urmatoarea:

Figura 2.1.4 Diagrama statemachine pentru folosirea individuala

Mai jos putem vizualiza diagrama de activitati in functie de tipul de utilizator.

Figura 2.1.5 Diagrama de activitati pentru aplicatia mobile

Mai sus s-au detaliat detalile proiectarii si cerintele aferente.In vederea proiectarii sistemului trebuie luate in calcul urmatoarele aspecte necesare si anume:

-server pentru crearea serviciilor aplicatiei si emiterea notificarilor

-cloud pentru deploy server

– senzorii pentru detectarea nivelelor anumitor gaze

-senzor pentru stabilirea conexiunii bluetooth cu telefonul

-microcontroller pentru preluarea datelor de la senzori

-aplicatie hybrid

Server-ul are mai multe roluri,principalele roluri fiind de preluarea a datelor,salvarea acestora,oferirea unei serii de servicii precum drepturi,push notifications,serviciu de sms-uri.

Acesta ofera si serviciul de autentificare pentru utilizatori ,avand implementata o politica de securitate foarte minutioasa.Toate parolele utilizatorilor sunt criptate printr-un algoritm cu cheie privata.Baza de date este o baza NoSql iar la prima vedere aceasta nu pare una foarte accesibila.Accesul la baza de date este restrictionat de asemenea printr-un username si o parola.Pentru a nu pune in pericol executia servicilor pentru un numar mare de utilizatori server-ul prelucreaza fiecare serviciu pe cate un fir paralel acestea fiind executate asincron.In cazul unui numar mare de utilizatori aceasta este optiune optima pentru realizarea tutoror operatiilot intr-un mod corect si fara erori de executie.La fiecare eroare de executie utilizatorul va primi in aplicatia mobile un mesaj de atentionare ca operatia selectata nu a putut fi executata cu succes.Baza de date este de tip NoSql in care forma de organizare a datelor este json-ul.

Formatul json este un format usor de interschimbare a datelor avand ca proprietate primordiala faptul ca este usor de citit.Un alt factor care il face foarte des utilizat in cadrul aplicatiilor software este acela ca se transmite foarte usor in retea prin intermediul protocoalelor http si https acesta din urma venind si cu o parte de securitate prin intermediul certificatelor ssl.Transmiterea prin retea a unui json poarta numele de serializare,acesta fiind un procedeu in care json-ul transmis este convertit intr-un sir de biti pentru o transmitere mai rapida.Formatul json reprezinta un subset al limbajului Javascript.[2][3]

Aplicatia hybrid poate rula pe orice platforma mobile.Disponibilitatea si timpul de implementare sunt factorii existentiali in luarea deciziei.Platformele vizate sunt Android si iOS.

Figura 2.1.6 Cod portabil interpretat [4]

Intotdeauna un client va prefera un produs ce consta in costuri reduse de dezvoltare,dezvoltare rapida si mentenanta usoara.In proportie de 80% toate librariile pentru aplicatiile hybrid sunt gratuite,doar anumite companii isi dezvolta functionalitati proprii ce sunt mai apoi scoase la vanzare contra unui anumit pret.Pentru programatori aplicatiile hybrid reprezinta un factor extrem de cautat deoarece prin intermediul acestui tip de aplicatii au o libertate mai mare de a intelege modul de functionare al anumitor functionalitati si posibilitatea de a imbina tehnologia web cu tehnologia mobile.Datorita acestor factori apare o crestere profesionala foarte mare,in principiu datorita controlului complet asupra codului.

In comparatie cu aplicatiile dezvoltate in cod nativ este adevarat ca aplicatiile hybrid au performante mai slabe deoarece odata cu aparitia tehnologiilor noi este nevoie de anumiti dezvoltatori care sa dezvolte respectiva functionalitate.Se poate utiliza codul nativ java in interiorul plugin-urilor ce confera functionalitatile native.

Cele mai populare framework-uri pentru dezvoltarea aplicatiilor native sunt PhoneGap,Cordova si React,acesta din urma fiind dezvoltat de Facebook.

In cazul lucrarii de fata luand in calcul ca aplicatia nu va folosi numeroase functionalitati ale telefonului s-a ales ca aceasta sa fie hybrid pentru o cat mai buna optimizare.Avand in vedere ca durata de viata a bateriilor smartphone-urilor nu rezista in proportie mai mult de o zi aplicatia de tip hybrid a fost din nou de luat in calcul.Dorindu-se costuri de dezvoltare reduse acest tip de aplicatie s-a clasat din nou pe primul loc in luarea deciziei.

Luand in calcul numarul de accidente in mediile industrile datorita neglijentei muncitorilor s-a dorit ca se creeze o aplicatie care sa duca la protectia sanatatii lor .Infectiile pulmonare sunt un factor foarte greu de tratat ce pot duce la complicatii severe.

Luand ca exemplu interiorul unei rafinarii petroliere in care se presteaza munca pentru obtinerea unor produse diverse prin prelucrarea titeiului.Cantitatile de gaz care se degaja pot duce la un numar foarte ridicat de pericolole ,cele mai insemnate fiind infectia pulmonara,intoxicarea sau chiar un incendiu devastator.Sistemele de alarma din mediul industrial au ca raza de detectie interiorul unei unei incaperi de obicei larga si se declanseaza in cazul unui pericol aflat in aceasta arie.Un angajat dintr-un mediu restrans la care senzorii de alarma nu pot detecta un eventual pericol,este intotdeauna intr-o zona foarte mare de risc.

Sistemul trebuie sa aiba capabilitatea sa se adapteze atat in mediul industrial cat si in alt mediu in care pot aprea diverse pericole datorita lipsei umiditatii aerului sau temperaturi foarte mari ce pot duce la complicatii foarte serioase in cazul sanatatii unei persoane.Monoxidul de carbon este un pericol foarte mare datorita faptului ca dupa cum este intitulat,si anume „ucigas tacut„ acesta se face foarte repede resimtit de catre o persoana si poate duce de la respiratie grea pana la pierderea cunostiintei.In foarte mare parte din cazuri cand s-a ajuns la pierderea cunostintei un numar mic de persoane au reusit sa fie savlate de medici.De aceea o avertizare este absolut necesara pentru luarea de masuri in vederea luarii masurilor de siguranta.

2.2Descrierea rezolvarii propuse

Dupa cum s-a enumerat in cadrul prezentarii problemei aplicatia de tip client va fi de tip hybrid datorita functionalitatiilor ce nu influenteaza senzorii telefonului intr-un procent foarte mare.

In cadrul sistemului embedded acesta va fi format dintr-un microcontroller ce va avea atasat un numar de senzori ce vor avea capacitatea de a masura diversi parametrii.Sistemul embedded va trimite la aplicatia hybrid prin intermediul unei conexiuni bluetooth parametrii masurati din mediul in care utilizatorul se afla.Daca parametrii depasesc valorile normale se va emite un semnal de alarma pe ambele dispozitive,acestea fiind sistemul embedded si telefonul mobil.In cazul companiilor se va trimite alarma si catre responsabilul de echipa pentru efectuarea de masuri de interventie pentru indepartarea pericolului si salvarea persoanei aflate in pericol.

Schema de principiu a sistemului este de urmatoarea forma:

Conexiunea bluetooth este foarte populara in randul utilizatorilor de dispozitive mobile,dar si in cadrul laptopurilor si chiar si al imprimantelor.Acesta a avut parte de o dezvoltare progresiva mai ales pe baza vitezei de transfer a fisierelor intre dispozitive.Acesta a fost organizat pe versiuni si de fiecare data s-a incarcat ca dispozitivele de generatie noua sa fie echipate cu ultima versiune aparuta a tehnlologiei bluetooth.

In diagrama de mai jos se poate observa dezvoltarea tehnologiei de tip bluetooth,in decursul anilor:

Figura 2.2.1 Ascensiunea bluetooth [5]

Trecerea de la versiunea 2 la versiunea 3 a avut un impact semnificativ.Un dezavantaj l-a reprezentat faptul ca durata de dezvoltare a fost indelungata.

Senzorii conectatii la microcontroller vor avea ca rol monitorizarea nivelului de:

-Metan

-CO(mooxid de carbon)

-Gas

-CO2(dioxid de carbon)

-NH3(amoniac)

-Temperatura

-Umiditatea aerului

-Calitate a aerului

Fiecare dintre acesti parametri,in cantitati peste limita constituie un pericol pentru o perosana aflata in decursul parcurgerii unei activitati.

Fiecare alarma ce va fi emisa va fi stocata in cadrul unei baze de date ce va retine toate datele utilizatorilor.

Se vor putea emite sfaturi in functie de parametrii masurati,pentru ca utilizatorii sa poata intelege valorile inregistrate fara mari dificultati.Aplicatia trebuie sa fie cu o interfata prietenoasa si cat mai usor de accesat in conditii mai putin potrivnice.

In cadrul unei echipe se vor putea emite activitati pentru membrii grupului pe o anumita perioada,aceste activitatii facand parte dintr-o planificare intocmita de liderul de echipa pentru o perioada selectata.

Alimentarea sistemul se va face prin intermediul bateriilor.Acesta va emite un semnal de alarma cand bateria va fi aproape de descarcare.

Prin intermediul aplicatiei mobile se vor emite alarme de tip push notification,sms,vibratie,blitz pentru alertarea utilizatorului din alta sursa dar si pentru informarea liderului de echipa.

2.3Comparatie intre sistemele disponibile pe piata si sistemul propus

Sistemele de pe piata vin dotate la randul lor cu o serie de functionalitati in care se pune accent in principiu pe reglarea automata.In cadrul locatiilor unde se executa procese industriale este preferat ca masinile si instalatiile sa lucreze automat.Acest lucru are ca scop protejarea fortei de munca de activitati ce ar putea duce la accidente datorita monotoniei sau oboselii adunate.In mare parte dispozitivele de monitorizare de gas din uzine si fabrici nu lucreaza la nivel de persoana ci la nivel de incapere de desfasurare a activitatii.

Exemple de dispozitive:

Figura 2.3.1 Detector de monoxid de carbon si gaz metan [6]

Dispozitivul de mai sus prezinta o alimentare ce necesita 220V pentru functionare.Acesta emite o alarma puternica la fiecare 15 minute in cazul detectiei unor nivele de gaz si metan peste limitele admisibile.Ca dezavantaj fata de sistemul propus acesta nu poate fi transportat de o persoana datorita alimentari si vine cu un numar mai mic de functionalitati.

Figura 2.3.2 Detector de gaz metan si monoxid de carbon [7]

Detectorul de gaz metan si monizid de carbon din figura 2.3.2 ofera o valva de aluminiu sau alama ce poate avea racorduri intre 3/8„-8„.Acesta vine cu o imbunatatire deoarece poate fin alimentat atat la 230V cat si la 12V

Figura 2.3.3 Detector de gaz si monoxid de carbon cu alimentare pe baterii

3.Selectarea solutiilor tehnice si proiectarea algoritmului de implementare

3.1 Analiza asupra tehnologiilor si echipamentelor disponibile

Acest proiect reprezentand un sistem a fost nevoie de crearea a 2 componente cu specifice diferite:

-componenta software

-componenta hardware

Avand in vedere ca aplicatia software ruleaza pe un device,se poate considera ca intreg sistemul reprezinta un ansamblu hardware.

Incepand mai intai cu dispozitivul hardware am ales ca acesta sa fie un sistem embedded datorita faptului ca aceste tipuri de sisteme se potrivesc foarte bine atuncti cand cerintele sunt bine stabilite inca din etapa de proiectare.Un alt motiv pentru alegerea acestui tip de sistem a fost datorita portbabilitatii,costului redus,si datorita ca perturbatiile din jur,fie magnetice sau electrice nu influenteaza transferul de date.

Microcontroller-ul Arduino Uno a fost optiunea aleasa,deoarece acesta vine integrat cu un mediu de dezvoltare integrat,ce include suport pentru diverse limbaje de programare precum C++,C,Java.Poate fi programat cu orice limbaj de programare daca avem un compilator ce poate sa transforme codul sursa in cod binar.Acesta reprezinta un proiect open source si costurile sunt reduse.Acesta se gaseste sub mai multe forme.Varianta aleasa pentru proiect este Arduino Genuino Uno.

Alta varianta disponbila a fost shield-urile Raspbery Pi.Acest sistem este folosit de obicei cu uni sistem de operare Linux.Acesta are abilitatea de a rula mai multe programe,in timp ce Arduino poate sa ruleze un singur program intr-o bucla infinita.Spre deosebire de Arduino ,acesta este mai greu de utilizat.Este folosit cand se doreste sa sa faca multiple task-uri in paralel,sau calcule extrem de complicate.Fata de Arduino acesta prezinta o putere de procesare mult mai mai mare si o memorie extinsa.

Figura 3.1.1 Arduino Genuino Uno

Figura 3.1.2 Sistem Embeded Raspbery pi

Arduino prezinta 3 zone de memorie:

-memoria flash

-SRAM

-EEPROM

Memoria flash si EEPROM sunt ne-volatile,asta insemnand ca informatia este tinuta in memorie si dupa oprirea alimentari sistemului.SRAM este volatile si este stearsa automat la oprirea alimentarii.

Pentru conexiunea bluetooth am ales modulul HC-05.Acesta poate fi folosit fie ca master fie ca slave si detine o memorie flash de 8Mbit.Este un modul de pret mic si poate functiona atat la 3.3V cat si la 5V.

Figura 3.1.3 HC-05 Modul Bluetooth

Acest modul s-a adaptat foarte bine cerintelor de a realiza o conexiune bluetooth seriala pentru montitorizare in timp real a paramentrilor,acesta putand functiona la un Baud Rate egal cu 9600.

Avand in vedere ca unul din scopurile proiectului a fost ca acesta sa fie low cost si sa satisfaca monitorizarea in timp real a parametrilor si valori cat mai apropiate de cele reale cu o marja de eroare foarte mica,am ales senzori din clasa MQ pentru monitorizare gazelor din mediul ambiant.Acestia prezinta un raspuns rapid,au o sensibilitate mare si o raza mare de actiune ,fiind foarte usor de conectat.

Figura 3.1.4 Senzori MQ [11]

Aplicatia software este in totalitate scrisa in cod Javascript.Aceasta foloseste o serie de framework-uri cum ar fi AngularJS,IonicFramework,PhoneGap,Cordova.Folosind AngularJS am putut sa integrez in cadrul proiectul concepul MVC(Model-View-Controller).Prin intermediul acestuia am reusit sa structurez aplicatia in functie de functionalitate.

View-urile aplicatiei au fost realizate folosind HTML si CSS,un mare rol asupra rol avand platforma de ionic care vine cu cu o adaptare a designului aplicatiei pentru mobil.Aceasta tine cont de toate aspectele unei aplicatii mobile cum ar fi:

-sa fie responsive

-bara de stare

-alerte

– invocare tastatura

Accesarea elementelor native s-a facut prin intermediul ngCordova ce reprezinta un wrapper scris in AngularJS ce poate invoca functionalitatile native ale telefonului cum ar fi GPS,Finger Scan,Camera,etc.

Pentru realizarea aplicatiei mobile o alta varianta ar fi fost ReactJS.Acesta este un framework dezvoltat de Facebook pentru aplicatiile de tip hybrid.ReactJS fata de Ionic nu se poate adapta la toate platformele.Acesta nu functioneaza dupa principiul „Scri o data…ruleaza peste tot„.

Pentru aplicatia de server-side am ales sa folosesc tot limbajul Javascript.Cea mai buna varianta a reprezentat-o NodeJS.Acesta foloseste ca si tool pentru librarii npm care este foarte extins si ajuta in dezvoltarea foarte rapida a aplicatiilor.Pentru aplicatiile de acest tip exista o suita de medii de cloud in care se poate face publicarea aplicatiei.Cele mai cunoscute exemple sunt reprezentate de Heroku si Openshift dezvoltat de Redhat,acesta din urma fiind un server bazat pe Linux ce permite conectarea si modificarea fisierelor de pe server.Conectarea se face prin intermediul unei conexiuni de tip ssh.

Am dorit sa realizez o conexiune cu o baza de date NoSql,si fat de Java,C# NodeJs prezinta un driver de conexiune la baza de date ce permite executarea mult mai rapida a query-urilor.

Datorita faptului ca predominanta este tehnologia Javascript am ales sa folosesc MongoDb ca baza de date datorita faptului ca formatul de lucru era reprezentat de Json.

MongoDb nu stocheaza datele in tabele.Acesta stocheaza datele sub forma de documente cu format JSON.Este reprezentat prin scheme dinamice in care se reprezinta tipul campurilor,indecsi prezenti,etc.Limbajul de interogare este reprezentat tot de query-uri si

Imbina tehnica de la SQL cu C++ .

3.2Descrierea tehnologiilor software utilizate

Aplicatia software este scrisa in limbajul Javascript,aceste avand o serie numeroasa de framework-uri.Acesta are o serie de proprietati bine definite ,printre care putem enumera evenimenele,metodele de scriere ala documentelor html,crearea de servicii web,crearea de cookie-uri in interiorul browserului.[12]

Scripturile javascript se terminca cu extensia .js si se pot insera oriunde in corpul documentului html.Este de preferat sa se insereze in interiorul tagurilor

<head></head>.Prin inserarea in aceasta zona scripturile vor fi incarcate pana ca pagina sa se incarce si va putea oferi o functionalitate ulterioara destul de rapida.

Exemplu:

Figura3.2.1 Inserare script in interiorul header-ului html

JavaScript ofera interactivitate in paginile web prin intermediul acestuia putand atribui actiuni la diverse elemente din pagina web cum ar fi butoane,texte,paragrafe,sectiuni.

Folosind Javascript browser-ul retine in memorie pagina web ca un arbore de obiecte ,iar prin intermediul scripturilor se poate citi sau scrie in document.Arborele se numeste Document Object model sau DOM.Pentru manipularea unul element din pagina trebuie sa avem o referinta la elementul respectiv.Se pot obtine elementele prin urmatoarele metode:

-prin identificarea dupa id-ul elementului

Metoda folosita: document.getElementById()

-prin identificarea dupa numele elementului

Metoda folosita: document.getElementByName()

-prin identificarea dupa tag-ul documentului

Metoda folosita: document.getElementsByTagName()

Figura 3.2.2 JavaScript Html DOM [13]

La fel ca si in celelalte limbaje de programare se pot trata exceptiile.Javascript prezinta clasa Error ce poate fi folosita pentru crearea diferitelor tipuri de exceptii.Pentru a inlocui blocurile try-catch din Java acesta trebuie sa foloseasca instructiuni de conditionare impreuna cu instructiunea throw.

Exemplu:

Figura 3.2.3 Mod de folosire a exceptiilor in JavaScript

Acesta este unul din cele mai populare limbaje de programare avand o rata de utilizare de peste 90% in cadrul aplicatiilor de tip website.

Limbajul Javascript se bucura de asemenea de o documentatie bogata dar si de persoane care vor sa il extinda la un alt nivel prin introducerea de noi framework-uri adaptate noilor cerinte.Exemple de framework-uri:

-AngularJS

-Jquery

-BackboneJS

-NodeJS

-ExpressJS

Acesta reprezinta un limbaj interpretat.Executia Javascript este stans legata de un interpretor existent in cadrul browser-ului.

Prin intermediul Javascript se pot crea atat aplicatii de tip client-side cat si server-side.Acesta permite crearea de servicii web prin intermediul Ajax.Aceste permite trimiterea de cereri catre server prin itermediul protocolului http.

Cum am enumerat mai sus,in momentul actual JavaScript s-a extins printr-o serie de framework-uri ce implementeaza o suita de modele existente in cadrul altor limbaje de programare.

Unul din cele mai folosite framework-uri in cadrul aplicatiilor web sau hybrid este AngularJS.Acesta este dezvoltat de compania Google.

Scopul acestui framework a fost de a realiza conceptul de Model-View-Controller.

Figura 3.2.4 Model-View-Controller

Acesta reprezinta un model arhitectural in ingineria software.Acesta are imprumutate principii din logica Java.Acesta are succes datorita izolarii elementelor ce definesc business-ul fata de alte elemente ale aplicatiei,interfata cu utilizatorul fiind cea mai importanta de evitat.Folosint acest principiu va rezulta o aplicatie cu un aspect vizual foarte usor de modificat.Bussines-ul poate fi si el modificat la fel de usor.Celelalte nivele nu sunt modificate la modificarea unui alt nivel.

Angular vine definit cu un set foarte extins de componente pentru realizarea de diverse functionalitati.

Modelul reprezinta baza de cunostinte.Acesta poate fi reprezentat de un singur obiect sau de catre o structura de obiecte.Modelul este reprezentat de HTML.Motivul pentru care a apraut acest framework a fost pentru a aduce in paginile web functionalitatea de data-binding.

Controller-ul poate accesa diferite camuri din interiorul view-ul prin intermediul modelului.Asta inseamna ca pentru actualizarea unei pagini web nu mai este nevoie de o reimprospatare datorita faptului ca modelul este actulizat la fiecare schimbare ce survine in interiorul controller-ului.Controller-ul face legatura cu view-ul prin intermediu a doua elemente.Aceste sunt reprezentate de scope si rootScope.Prin adaugare de proprietati in interiorul controller-ului si atribuindu-le scope-lui oferim acces view-ului catre proprietatea adaugata.

Scope-ul reprezinta un obiect ce contine proprietati si metode ce sunt accesibile si in interiorul view-ului,dar si in interiorul controller-ului.

In cadrul unei aplicatii ce contine AngularJs vom avea de fiecare data un rootScope,din nume intelegandu-se ca reprezinta un scope radacina.Chiar asta si este.Prin intermediul lui orice scope intitializat in cadrul unui controller poate fi mai apoi accesat in interiorul altui controller.Acesta se creeaza prin intermediul directivei ng-app.

AngularJS permite crearea de aplicatii de tip SinglePage Application.Exista un singur fisier de tip html in care se incarca view-urile dorite la anumite actiuni ale utilizatorului precum:

-redirectarea la alta pagina

-schimbarea unei sectiuni

-afisarea unui mesaj de eroare

Prin intermediul acestui framework ne bucuram de o serie de functionalitati precum:

Servicii

Angular vine predefinit cu un serviciu intalnit sub forma de $http pentru crearea de cereri de tim XMLHttpRequest.

Acestea reprezinta obiecte de tip singleton si au proprietatea ca sunt initializate doar o singura data in aplicatie

Directive

Prin intermediul directivelor un dezvoltator ce foloseste AngularJS isi poate crea propriile lui componente ce pot fi mai apoi reutilizate.Poate avea loc parametrizarea lor in fuctie de diferite obiecte de tip scope.Se pot crea tag-ri speciale HTML si widget-uri speciale pentru diverse sectiuni din aplicatie.Angular vine predefinit cu o serie de directive precum:ngBind,ngModel,ngStorage

Dependency injection

Aceasta component are rolul de a ajuta dezvoltatorul in a intelege,crea si testa aplicatiile foarte usor.Componentele precum directivele,filtrele sau serviciile vor

fi injectate prin intermediul unei metode asemanatoare unui constructor.Pentru injectarea unei anumite componente se foloseste $inject.

Figura 3.2.7 Dependency injection

Ca exemplu putem da urmatoarea situatie:Dorim sa injectam in interiorul unui controller variabila scope si directiva license.

Sectiunea de cod va fi de urmatoarea forma:

Figura 3.2.6 Injecarea de componente in controller

In cazul validarii de campuri Angular vine cu 3 componente pentru preluarea erorilor de pe un camp.Acestea sunt:

-$dirty->ne arata ca valoarea campului s-a schimbat

-$invalid->ne arata ca ce s-a introdus este invalid

-$error->eroare survenita in momentul introducerii

Aceste componente sunt utilizate in special in crearea forumularelor ce trebuie sa contina validari pentru campuri de tip email,numar de telefon,data,etc.

Un alt concept interesant folosit in cadrul AngularJS este legat de provideri.Acestea sunt componente ce pot fin configurate in interiorul aplicatiei.Acestia pot fi paramtrizati cu diverse optiuni.

Exemple:

-$routeProviderService->prin intermediul acestuia se seteaza configuratia adreselor prezente in cadrul aplicatiei.Permite asocierea unui controller cu un anumit view.

Expresiile AngularJS au mai multe forme si permit crearea lor prin intermediul directivelor.

Exemple:

3+4

X+y

User.token

Days[index]

<p title="{{ title }}">{{ title }}</p>

Diagrama de mai jos va pune in vedere toate conceptele din interiorul acestui framework,si pe baza aceste se va alcatui o serie de avantaje si dezavantaje ce intervin in folosirea acestui framework.

Figura 3.2.7 Componente si concepte AngularJS [14]

In prezent exista 2 versiuni ale acestui framework,cea mai recenta fiind versiunea 2.

Angular 2 vine cu un concept inedit,acesta folosind Typescript.TypeScript reprezinta un superset sl limbajului JavaScript.Cu acesta se poate construi un software mult mai robost,cu o tratare mult mai buna a exceptiilor,avand puterea de a induce aplicatiilor conceptul de Cross Platform.Acest concept este valabil si in cadrul proiectului,aplicatia fiind disponibila pe mai multe platforme.

Angular 2 randeaza mult mai rapid view-urile pe mobil,acesta fiind unul din motivel pentru care s-a ales aceasta tehnologie.Lucreaza foarte bine cu EcmaScript si alte limbaje ce se pot compila cu JavaScript.Ca dezevantaj se poate enumera faptul ca este un framework nou si nu se bucura momentan de un suport foarte mare din partea comunitatii online.Prin intermediul compilatorului codul typescript va fi convertit in cod javascript.Se folosesc o multime de componente,unele dintre ele fiind foarte asemanatoare cu cele prezente in cadrul limbajului Java.Una din aceste componente este reprezentata de adnotari,acestea permitand definirea de elemente din cadrul proiectului cum ar fi:

-componente->@Component

-view-uri->@View

Refolosirea de componente in cadrul altei componente se face prin intermediul import.

Exemplu: import { Something } from "angular2/core";

Pentru intalarea pachetelor in cadrul unei aplicatii ce prezinta typescript se foloseste modulul npm.

Dependency injection mentine instantele servicilor si poate fi creat folosind un provider,aceasta fiind calea spre crearea unui serviciu.Se pot inregistra servicile mai apoi folosind injectori.[16]

Ionic framework reprezinta un proiect open-source pentru dezvoltarea aplicatiilor de tip hybrid,oferind servicii si componente bazate pe tehnologii web.Este contruit dupa principiul AngularJS si Apache Cordova.Acesta poate fi distribuit in magazinele de aplicatii,putand oferii si functionalitati native in cadrul aplicatiilor.Ionic vine cu o serie de componente foarte puternice,

dezvoltatorul putand crea ujn proiect doar printr-o simpla comanda.Cu ajutorul acestui framework se pot crea aplicatii atat Android cat si iOS.Versiunea a doua de Ionic vine cu suport pentru crearea aplicatiilor pentru sistemul de operare Windows 10.

Ca si performanta,prin intermediul AngularJS Ionic dispune de un factor de accelerare hardware.

Ionic reprezinta un modul npm si de aceea necesita NodeJS pentru instalare.Toate componentele sunt hostate pe un repository de Github.Prin intermediul acesteia oricine e dornic poate sa ajute la buna dezvoltare a acestor componente.Ionic vine construit cu o platforma online ce permite diverse servicii precum autentificare,push notification.La un numar mai mare al acestor cereri acestea se platesc.In cadrul acestei platforme se pot adauga cheile pentru functionalitatile oferite de provideri precum Google,Facebook,Apple pentru obtinerea unor diverse functionalitati native.

Exemplu:Pentru pornirea servicililor de push notification avem nevoie de o cheie venita de la FirebaseCloudMessaging pentru inregistrarea id-ului device-ului in cadrul platformei Android, si de certificatele provenite de la Apple pentru activarea serviciului pe platforma iOS.

Platforma ofera servicii de autentificare de tip OAuth2.Prin OAuth2 utlizatorii se pot inregistra in aplicatie prin intermediul conturilor existente de la Google,Facebook,Twitter,etc.

Platformele pe care ruleaza aplicatia sunt reprezentate de Android,iOS respectiv Windows Phone.

Android reprezinta un sistem de operare pentru dispozitive mobile,acesta fiind dezvoltata si mentinut de compania Google.Aceste este conceput pe baza unui nucleu de tip Linux de aici rezultand ca dezvoltatorii au acces pentru a putea dezvolta functionalitati noi.Aceste functionalitati pot fin dezvoltate prin intermediul limbajului Java.

Ultima versiune a Android este versiunea 7.0 Nougat lansata de Google in anul 2016.Oferind un set mare de functionalitati,si o interfata foarte spectaculoasa si bine adaptata device-urilor Android a crescut progresiv in vanzari de la o cota de 9.6% cu 36% in decursul anului 2011.[17]

Despre sistemul de fisiere putem spune ca este foarte prietenos deoarece Android ofera acces asupra fisierelor.Acest sistem doreste sa lase utilizatorilor o libertate foarte mare in personalizarea dispozitivului achizitionat.Dispozitivele bazate pe sistemul de operare Android se bucura de o popularitate mai mare in randul utilizatorilor,acestia putand alege dintr-o diversitate mai mare de dispozitive.

Pentru dezvoltarea de aplicatii acesta vine impreuna cu IDE-ul Android Studio, ce ofera functionalitatiile necesare pentru implementarea de functionalitati si algoritmi.Acesta ofera suport pentru interfata aplicatiei,acesta putand genera din interfata cod.Un alt element semnificativ al sistemului Android il reprezinta emulatorul ce permite testarea aplicatiilor intr-un mediu ce se aseamana foarte mult cu un dispozitiv de tip mobile.Acesta nu dispune de toate functionalitatiile unui dispozitiv mobil,de aceea multe dintre functionalitatiile native ale unei aplicatii trebuiesc testate pe un dispozitiv fizic.

Mediu de dezvoltare Android mai cuprinde o compenenta foarte importanta.Aceasta este reprezentata de emulator care permite rularea unei aplicatii intr-un mediu ce imita un dispozitiv mobil.Acesta poate fi configurat in mai multe feluri imitand diverse tipuri de performante.Versiunile de Android sunt disponibile si pentru emulator si se pot face teste pentru functionalitatiile implementate.Emulatorul nu suporta toate elementele unui device mobile.Functionalitati precum geolocatie,notificari de tip push,sau amprenta nu pot fi testate in cadrul emulatorului si necesita un dispozitiv fizic.

Android este un sistem de operare mobil foarte popular in randul utilizatorilor atat pe partea de achizitie a dispozitivelor cat si pe partea de interfata ce o aduce utilizatorului.

Figura 3.2.8 Distributii Android in functie de versiune

Rivalul sistemului de operare Android este reprezentat de iOS.Acesta reprezinta ca si Android un sistem de operare mobil,ce este dezvoltat si mentinut de firma Apple.

iOS este ca si Android,tot un sistem de operare bazat pe kernel Unix,dar este mai special deoarece nu este open-source.Apple doreste sa restrictioneze accesul utilizatorului la kernel-ul sistemului de operare pentru a nu pune in pericol modul de functionare.Aceasta companie se bazeaza foarte mult pe functionalitatea produselor,de aici reiesind si popularitatea de care dau parte in randul utilizatorilor.Politica de securitate impusa de Apple este foarte stricta dorind sa pastreze confindentialitatea utilizatorilor.Comapnie isi produce singura piesele pentru dispozitivele create.

iOS poate rula pe mai multe tipuri de dizpozitive precum smartphone-uri,tablete,sau media playere portabile.Pornind de la versiunea 5.0 a iOS pentru update-ul software-ului este necesar iTunes.Ultima versiune anuntata de Apple este versiunea 11.Sistemul de operare este disponibil in 40 de limbi si prezinta un nucleu de tip hybrid sau XNU.Se remarca printr-o suita de platforme precum:

ARMv8-A->pentru dispozitive ce ruleaza iOS 7 sau mai mult

ARMv7-A->pentru dispozitive ce ruleaza pana la pana la versiunea 10

ARM-V6->pentru dispozitive ce ruleaza iOS pana la versiunea 4.2.1

Versiunea 10.3 vine cu un nou sistem de fisiere intitulat APFS(Apple File System).Salvarea fisierelor va avea loc pe unitati solid state,prin intermediul acestora miscsorandu-se efectiv timpul de citire sau salvare a unui fisier.Un alt element de imbunatatire il reprezinta criptarea,Apple dorind sa ofere integritate datelor.

Pentru dezvoltarea aplicatiilor ce ruleaza pe acest sistem de operare se folosesc o suita de componente,pasii pentru punerea in Apple Store a aplicatiei fiind un proces de durata ce trece printr-o suita de etape.Un element extrem de important il reprezinta partea de securitate pe care Apple o ofera dezvoltatorilor prin intermediul certificatelor si profilelor de provisionare.

Cu acestea se stiu dezvoltatorul aplicatiei si se verifica la fiecare pas identitatea acestuia.Un alt element important in dezvoltare este reprezentat de programul xcode care reprezinta mediul de dezvoltare impreuna cu sistemul de operare.Acesta stocheaza profilele de securitate si ofera functinalitati de debugging,de monitorizare a resurselor dispozitivului in timp real.Profilele de securitate sunt de 3 tipuri:

-dezvoltare->cu acest profil se dezvolta functionalitati fara posibilitate de punere in productie

-adhoc->se aseamana foarte mult cu profilul de productie doar ca nu se preteaza la punerea in mediul online.Se foloseste pentru testarea unor functionalitati ce depind de certificate

-productie

Acesta comunica foarte bine cu sistemul de operare.Prin intermediu xCode se poate pune efectiv aplicatia in mediul online.Pasii pentru dezvoltarea si punerea in productie a unei aplicatii se pot observa si in diagrama de mai jos:

Figura 3.2.8 Pasi distributie iOS [18]

Pasii pentru distributia unei aplicatii sunt aceeasi pentru orice tip de aplicatie fie ea hybrid sau nativa.La publicarea aplicatiei Apple are niste teste foarte succinte in ceea ce o priveste si de aceea aplicatia trebuie sa urmeze o serie de standarde impuse.Ceea ce este mai interesant este ca exista efectiv o parte umana care testeaza aplicatia la fiecare pas.

In concluzie ,aceste sisteme de operare sunt foarte bine organizate si mentinute de companii ce doresc sa ofere o experienta cat mai placuta.

Cordova reprezinta un framework pentru dezvoltarea aplicatiilor mobile.Acest frameowrk da programatorilor posibilitatea de a crea aplicatii mobile prin intermediul HTML,CSS si JavaScript cu posibilitatea functionarii pe mai multe sisteme de operare mobile precum Android,iOS sau Windows Phone.Cordova extinde functionalitatiile HTML si Javascript pentru a le face sa lucreze efectiv cu dispozitivul.Prin dezvoltarea unei aplicatii cu acest framework va rezulta o aplicatie de hybrid ce se va vedea ca o aplicatie nativa doar ca aceasta este rulata in interiorul unui webview.

In trecut acest framework era cunoscut ca si Phonegap.Este open-source si pentru el se pot gasi o multime de functionalitati gata implementate de oameni din toata lumea.Multe persoane vad puterea de care poate sa fea dovada acest framework si potentialul de a oferi un mediu cat mai bun in ceea ce priveste aplicatiile hybrid.

Cordova este dezvoltat in mai multe limbaje de programare pentru a oferi suport pe mai multe platforme.Aceste limbaje sunt:

-C#,C++

-CSS,CSS3,HTML,HTML5

-Java

-JavaScript

-Objective C

Cordova are dezvoltate platforme pentru fiecare sistem de operare mobil,iar la realizarea aplicatiei dezvoltatorul importa platforma de care are nevoie pe mediul de lucru.Acest framework face parte din pachetul npm si ca dependinta vine cu nodejs.Acesta este necesar pentru instalarea tutorol dependintelor prezente in aplicatie,cum ar fi platforme ce trebuiesc instalate,plugin-uri sau librarii.Acestea se memoreaza in fisiere de tip json precum package.json,ios.json,android.json sau bower.json.Pentru instalarea pe device cordova impacheteaza aplicatia intr-un singur fisier.Acesta are extensie diferita in functie de platforma.Aceste fisiere se deosebesc in functie de extensie si anume:

-iOS->.ipa(iPhone Application Archive)

-Android->.apk(Android Application Package )

-Windows Phone->.xap(Silverlight Application Package)

Ultima versiune stabila in acest moment este versiunea 6.1.0.[19]

Modul in care lucreaza acest framework este explicat si in imaginea de mai jos

Figura 3.2.9 Modul de functionare al framework-ului Cordova

Node.js reprezinta un platforma scris in Javascript ce este folosit ca limbaj pentru zona de server side.Acesta este populat cu diverse dependinte prin intermediul pachetelor din modul de npm.

Node .js este contstruit pe baza Google Chrome JavaScript Engine versiunea 8.Acesta foloseste un model non-blocking I/O,de aici rezultand o eficienta mai mare,oferind mediul perfect pentru aplicatii in timp real ce ruleaza pe diferite dispozitive.Poate fi rulat pe mai multe sisteme de operare precum OS X,Microsoft Windows si Linux.Acesta se foloseste de 2 componente:

-mediu de executie

-librarie JavaScript

Cele mai importante functionalitati cu care vine NodeJS sunt :

Evenimente asincrone coduse:

Toate librariile Node.js sunt asincrone si non-blocante.Un server creat cu Node.Jjs niciodata nu asteapta un api sa retuneze date.Server-ul apeleaza urmatorul api si printr-o notificare se intoarce la api-ul anterior cand acesta este disponbil pentru oferirea datelor

Rapiditate in executie

Organizare tip single-thread de scalabilitate inalta

Mecanismul de evenimente ajuta sever-ul sa raspunda cererilor intr-un mod non-blocant.Organizarea de tip single-thread ajuta la procesarea unui numar mai mare de cereri

Licenta

Node.js este inregistrat sub licenta MIT

Node.js se preteaza ca server pentru aplicatii de tip Single Page Application,aplicatii bazate pe JSON api,aplicatii de tip Data Intense Real-time Applications(DIRT).

Pentru comunicare in timp real se folosesc o serie de librarii bazate pe web-socketuri ce fac legatura automat intre client si server.Cea mai cunoscuta librarie pentru Node.js ce ofera o astfel de functionalitate este reprezentata de Socket.io.La baza Node.js au aparut de asemenea o serie de framework-uri pentru imbunatatirea si extinederea unor functionalitati.Cel mai cunoscut framework de Node.js este reprezentat de Express.js,acesta fiind reprezentat sub forma unui modul npm.Npm sau Node Package Manager ofera doua functonalitati majore si anume:

-repository online pentru pachete bazate pe Nojde.js

-utilitar de tip command line pentru instalarea pachetelor Node.js,management-ul dependintelor si managementul versiunilor.Pentru instalarea uni pachete se foloseste urmatoarea comanda:

npm install <package_name>

Conceptele Node.js sunt ilustrate in diagrama de mai jos:

Figura 3.2.10 Concepte Node.js [20]

Pentru Node.js evenimentele emise sunt cruciale.Datorita lor se propaga alte functionalitati fara a tine in loc un anumit proces.Acestea se reprezinta prin clasa EventEmitter si din aceasta se pot dezvolta doua concepte si anume:Emmiter si Listener.Toate aceste actiuni se fac la nivel de aplicatie.

Un modul foarte important in cadrul Node.js este reprezentat de modulul fs care are o rapiditate foarte mare in citirea si scrierea fisierelor.Acesta se foloseste pentru aplicatii ce contin salavare sau citire de documente si opereaza la nivel de bit.Metodele din cadrul modulului pot fi de tip asincron sau sincron.

MongoDb reprezinta o baza de date de tip NOSQL ale carui documente sunt reprezentate sub forma de BSON.Toate driverele pentru acest tip de baza de date sunt create cu C++.Colectiile din cadrul bazei de date sunt definite prin intermediul unor scheme.Schemele sunt definite pe server-ul ce face conexiunea si operatiile catre baza de date.Documentele prezente in baza de data mongo nu mai necesita join.

Stiind ca indexarea reprezinta o operatie utilizata in cadrul bazelor de date pentru a mari rapiditatea query-urilor MongoDb vine de asemenea cu un suport pentru indexare,indecsi prestabiliti fiind sub forma de UUID,MongoDB garantand unicitatea lor.MongoDB ofera o flexibilitate mai mare in formarea campurilor in cadrul tabelelelor si o mapare mult mai usoara.Se foloseste foarte mult in cadrul aplicatiilor ce folosesc JSON API.

Figura 3.2.11 Arbore structura MongoDB

Operatiile specifice in cadrul MongoDB sunt asemanatoare cu cele din SQL doar ca opereaza la nivel de BSON si au o structura diferita.Putem enumera urmatoarele exemple:

$set->setarea unui camp cu o valoare data

Db.collection.update({_id:id},{$set:{camp:campnou});

$inc->incrementarea unui camp de tip numar cu o valoare

Db.collection.update({_id:id},{$inc:{camp:valoare}})

$push->adaugarea valoare noua unui camp specificat

Db.collection.update({_id:id},{$push:{camp:campnou});

$addToSet->adaugare valoare in cadrul unui camp de tip Array

Db.collection.update({_id:id},{$addToSet:{camp:campnou});

$pop->eliminarea unui camp din cadrul unui Array

Db.collection.update({_id:id},{$pop:{camp:1 }) ->stergerea primului element din Array-ul camp

Db.collection.update({_id:id},{$pop:{camp:-1 }) ->stergerea ultimului element din Array-ul camp

$pull->stergerea tuturor elementelor dintr-un array care sunt egale cu un camp dat

Db.collection.update({_id:id},{$pull:{camp:campnou});

MongoDb prezinta 2 concepte pentru operatii de procesare batch,agregare si stocarea fisierelor de dimensiuni mari.Acestea sunt reprezentate de Map Reduce si GridFS
Fata de MySql Mongo prezinta o serie de modificari din punct de vedere arhitectural elementele componente ale bazei de date luand alte denumiri.

Exemple:

_id ->cheia primara

Document de tip BSON->rand

Camp BSON->coloana

Colectie->Tabela

MongoDb ofera utilizatorilor un suport foarte mare prin multitudinea de tutoriale si documentatii disponibile atat sub format electronic cat si sub forma de carti.

MongoDb este disponibil pe platformele Microsoft Windows,Linux si OSX.

Ca si client pentru baza de date,MongoDB vine cu utilitarul RoboMongo ce poate fi utilizat pentru interogarea bazei de date,stabilirea conexiunilor,si o vedere mult mai structurata a valorilor campurilor prezente in baza de date.

Exemplu:

Figura 3.2.12 Interfata RoboMongo

MongoDB este bazat pe teoria Nexus.Acesta imbina particularitatiile bazelor de date relationale cu elementele de inovatie ale tehnlogiilor NOSQL.MongoDB vine cu suport si pentru operatii la nivel geospatial prin intermediu indecsilor spatiali.Acestia sunt reprezentati prin tipul 2d.

Pentru deployment-ul bazei de date se folosesc diverse cloud-uri displonibile online cum ar fi Mlab sau Openshift.Acesta din urma prezinta caracteristici speciale,datorita faptului ca pentru fiecare mediu exista cate un cartridge separat,cu versiuni compatibile.Costurile pentru mentinerea unei baze MongoDb sunt foarte mici,acestea depinzand de dimensiunea bazei de date.Dimensiunea bazei de date poate fi foarte usor setata,Mongo oferind acest stil arhitectural.

In diagrama de mai jos se exemplifica motoarele de stocare ale MongoDb.

Figura 3.3.13 Motoare de stocare MongoDB [22]

Din diagrama de mai sus observam ca procesul de stocare se desfasoara intre 2 nivele.Aceste nivele sunt reprezente de nivelul de securitate si nivelul de management.Nivelul de securitate se ocupa cu operatiile de autentificare,criptare decriptare in timp ce nivelul de management se ocupa de administrarea bazei de date,acesta continand operatii la nivel de utilizator si administratori.

MongoDB suporta compresia nativa,prin aceasta operatie reducandu-se spatiul fizic cu aproximativ 80%.Administratorii au libertatea de a initia orice algoritm de compresie dorit,in functie de performantele ce se doresc a fi atinse.

3.3Descrierea echipamentelor hardware utilizate

Arduino Uno reprezinta o placuta ce ofera suport pentru diverse operatii cum ar fi :

Comunicatie seriala

Comanda PWM

Comunicatii analogice si digitale de tip I/O

Aceasta este bazata pe un microcontroller Atmel pe 8 biti.Acesta face parte din famiia AVR si mai poarta numele si de Atmega328P.

Placuta Arduino este formata din mai multe module.Acestea sunt:

Modul de alimentare

Modul serial-USB

Pe placuta sunt disponibile 2 serii de conectori,acestia oferind suport pentru alimentare externa la 5 si 3.3V,porturi digitale si analogice.

Modulele se pot reprezenta prin urmatoarea figura:

Figura 3.3.1[23]

Microcontroller-ul Atmega328 prezinta o arhitectura de tip RISC si face parte din familia Atmel AVR.Performantele atinse de acesta se ridica pana la 1MIPS per MHz.Frecventa maxima pe care o poate atinge este de 20MHz.este organizat in 32 de registre reprezentate pe 8 biti.Acestea se folosesc in uz general.Acesta prezinta 2 tipuri de memorie:

Memorie flash->32KB

Memoria SRAM->1KB

Memorie EEPROM->2KB

Figura 3.3.2 Organizare pini ATmega328

Figura 3.3.2 Arhitectura Arduino[24]

HC-05 reprezinta un modul bluetooth foarte usor de utilizat pentru adoptarea in cadrul unui proiect a functionalitatii de tip Bluetooth SPP.Acesta foloseste sistemul CSR Bluecore 04-External ce prezinta tehnologia CMOS cu frecventa de incarcare adaptabila.

Ca specificatii tehnice se pot enumera:

Sensibilitate de -80dBm

Pana la 4dBm RF putere de transmitere

Interfata UART

Antena integrata

Conector de tip edge

Tensiune de alimentare 3.3V sau 5V

Figura 3.3.3 Descriere pini HC05[24]

Portul PIO8 este folosit pentru a controla LED-ul ce indica starea in care se afla conexiunea cu dispozitivul.

Portul PIO9 este folosit pentru a indica momentul in care se face pereche cu un alt dispozitiv bluetooth.

Portul PIO11 este folosit pentru setarea a doua moduri pentru HC-05 si anume:

Modul de tip comanda AT daca pinul este conectat la 3.3V

Automatic binding daca pinul este conectat la GND

Gama de senzori MQ este folosita pentru monitorizarea diferitelor tipuri de gas din mediul ambiant.Senzorii folositi sunt:

MQ2

MQ4

MQ7

SNS-MQ135

MQ2 este un senzor de fum si gaze inflamabile.Acesta poat detecta gas cu concentratii intre 300 si 10000ppm.Aceast senzor prezinta o sensibilitate foarte mare la gaze de tip combustibil ,LPG,Propane si Hidrogen.

Rezistenta senzorului are urmatoarea valoare exprimata prin intermediul formulei:

*RL

Figura 3.3.4 Senzor fum si gaze inflamabile

MQ4 este un senzor folosit la masurarea de ga metan.Are o mare sensiblilitate la CH4 si gaze naturale,dar o sensibilitate mica la alcool si fum.Poate fi alimentat la 5V si ofera un raspuns rapid.Poate fi folosit in industrie pentru detectia CH4,gaze naturale,LNG.

MQ7 este un senzor folosit pentru detectarea concentratiei de monoxid de carbon.Acesta prezinta o conductivitate mare impreuna cu crestera concentratiei de gaz.Cand valoarea temperaturii este mare acesta curata celelalte gaze absorbite la temperatura scazuta.

Figura 3.3.5 Senzor MQ7

SNS-MQ135 este un senzor ce poate detecta NH3,Nox,alcool ,benzen,fum, si CO2.Acesta opereaza la o tensiune de alimentare de 5V si un curent de 40 mA.

Figura 3.3.6 Senzor MQ135

Senzorul de temperatura LM50 este folosit in cadrul proiectului pentru masurarea temperaturii din mediul ambiant.Acesta poate detecta temperaturi intre -40 de grade si 125 de grade.Acesta opereaza la tensiuni intre 4.5 si 5V.Poate fi folosit in cadrul dispozitivelor medicale portabile sau computere.

Figura 3.3.7LM50

4.Proiectarea sistemului embedded

4.1 Proiectarea sistemului

In proiectare sistemului am folosit placuta Arduino Uno si toti senzorii enumerati in cadrul sectiunii 3.3.

Dispozitivul trebuie purtat de o persoana intr-un loc convenabil ales.Acesta are posibilitatea de atasare.Pentru a oferi portabilitate sistemuluiam folosit o alimentare prin intermediul unei aterii de 9V .Sistemul are capabilitatea de a transmite un semnal de alarma daca bateria este la un voltaj mai mic.

TODO:poza dispozitiv desfacut +poza dispozitiv impachetat +schema descriptiva

4.2 Testare functionalitati

Pentru testarea functionalitatiilor am afisat datele citite de la porturile analogice in cadrul consolei serial.Pentru fiecare senzor am initiat actiuni de modificare a parametrilor ce ii masoara si prin asta am observat schimbarile ce surveneau asupra valorilor.

//TODO ..poza consola serial cu valorile citite de la senzori..poza cu mediu de incercare de modifcare a parametrilor

5.Implementarea aplicatiei software

5.1Arhitectura aplicatiei

Aplicatia dupa cum am descris mai sus este de tip hybrid avand la baza componentele descrise in cadrul sectiuni 3.2.Astfel putem ilustra urmatoarea diagrama care sa ne ofere concret arhitectura aplicatiei,in functie de tehnologiile alese.

Figura 5.1.1 Mod de comunicatie al aplicatiei

Din diagrama se poate observa modul de comunicare in cadrul aplicatiei prin intermediul retelei internet

Figura 5.1.2 Arhitectura aplicatiei

In figura de mai jos putem observa structura aplicatiei mobile in IDE-ul IntellijIdea.

Figura 5.1.3 Structura aplicatiei

5.2Implementarea aplicatiei

In cadrul implementarii aplicatiei am folosit toate resursele prezente in cadrul diagramei 5.1.2 din cadrul sectiunii de mai sus.S-au tinut cont de toate conceptele necesare unei aplicatii de tip mobile cum ar fi :

-autentificare

-creare cont utilizator

Aplicatia comunica cu server-ul prin internet,protocolul folosit de aplicatie fiind http.Aplicatia creeaza o cerere ce este mai apoi trimisa server-ului si in functie de rezultatul executiei cererii se intoarce catre client un cod pentru interpretarea rezultatului(Exemplu:Cod 200->Rezultat cu success).In cadrul implementarii s-a tinut cont de a crea o interfata cat mai adaptabila utilizatorilor,mediile in care aplicatia neavand ca cerinta principala design-ul ci functionalitatea.Aplicatia ofera o serie de functionalitatii in functie de tipul de utilizator.

Functionalitatile de monitorizare a parametrilor se afla pe toate cele 3 tipuri de utilizatori.Pentru utilizatorii de tip lider si muncitor exista functionalitatea de planificare ce ofera suport companiilor pentru desfasurarea activitatiilor.Aceasta functionalitate ofera de asemenea posibilitatea de monitorizare a parametrilor muncitorilor din cadrul unei echipe.

Sistemul de versionare folosit in cadrul aplicatiei este reprezentat de utilitarul Github ce permite salvarea progresului din cadrul aplicatiiei,acesta permintand revenirea la o versiune anterioara a aplicatiei.Pentru crearea structurii proiectului s-a folosit utilizatorul ionic ce permite crearea directa a scheletului aplicatiei in functie de versiunea dorita de utilizator.Se poate alege si template-ul.Pentru implementarea functionalitatiilor native prezente in aplicatie s-au folosit plugin-urile puse la dispozitie de ionic-native si Cordova.Pentru serviciul de alerte de tip push notifications am ales serviciile din cadrul Ionic Platform ce conlucreaza foarte bine cu APNs si FCM(Firebase Cloud Messaging) pentru inregistrarea dispozitivelor.

Aplicatia poate rula in modul background pentru a nu incurca utilizatorii in cadrul activitatiilor desfasurate.

5.3 Testarea aplicatiei

In cadrul testarii aplicatiei s-a pus foarte mult accent pe zona de alarme,acestea reprezentand unul din obiectivele principale ale proiectului.

Un alt obiectiv al testarii a fost oferirea functionalitatiilor pentru fiecare tip de utilizator.Acestia nu trebuie sa acceseze alte functionalitati in afara de cele propuse pentru fiecare dintre ei.De aceea pentru exemplificare am atasat urmatorul tabel ce ajuta la bifarea functionalitatiilor pentru fiecare tip de utlizator in parte.

Lider de echipa:

Muncitor in cadrul unei echipe:

Mod de folosire individual:

6.Studiu de caz

Aplicația hybrid din cadrul sistemului prezintă un modul de autentificare și creare a contului de utilizator, în funcție de modul de folosire al sistemului.

Figura 6.1 Ecran principal Figura 6.2 Opțiuni autentificare

În cadrul opțiunii de creare cont se va deschide o fereastră în care utilizatorul își va introduce datele personale și modul în care va folosi sistemul.Formularul prezintă validări pentru valorile introduse în câmpuri, pentru a nu produce inconsistențe de date pe parcursul folosirii aplicației.Dacă persoana care folosește aplicația reprezintă un lider de echipă din cadrul unei companii acesta trebuie să selecteze opțiunea „Teamleader of a team„ și să introducă CUI-ul aferent companiei în care își desfășoară activitatea.În cazul în care compania nu este înregistrată acesta completează un formular pentru înregistrarea acesteia în sistem.

Figura 6.3 Creare cont Figura 6.4 Adăugare companie

După introducerea datelor contul utilizatorului este creat și acesta este redirectat mai departe către pagina de știri din cadrul companiei.Rolul acestei pagini este de a oferi un mediu interactiv în cadrul companiei în care utilizatorii aplicației pot posta diverse activități,evenimente,etc.

După redirectare meniul inițial s-a schimbat și au apărut o serie de opțiuni noi pentru utilizator.

Figura 6.5 Pagină adaugare știri Pagina 6.6 Meniu aplicație

Prin navigarea în diferitele pagini ale aplicației, dacă selectam opțiunea Functions vom intra în pagina ce conține opțiuni pentru monitorizarea parametrilor din mediul înconjurător.Această pagină conține efectiv functionalitatiile necesare pentru monitorizarea în timp real cât și opțiunea pentru o singură scanare.Se poate observa lista cu dispozitivele bluetooth asociate dispozitivului mobil.în cadrul graficului se poate observa că elementele din cadrul legendei pot fi marcate sau demarcate pentru o mai bună vizualizare a caracteristicilor dorite.

Pagina conține și o serie de elemente de tip input ce afișează valorile actualizate în cadrul măsurării de orice tip(real time sau single time).

Figura 6.6.7 Pagina Functions 1 Figura 6.6.8 Conectare sistem

Figura 6.6.8 Pagina Functions 2 Figura 6.6.9 RTS activat

In figura 6.6.9 putem observa momentul activării monitorizarii in timp real.

RTS=Real Time Scan

În momentul începerii monitorizării datele se trimit către server pentru a fi prelucrate.În cazul detecției unor valori mari peste limita normală,se emite o notificare(alarmă ) către liderul de echipă și muncitor în care se enumeră toate pericolele ce persistă în mediul sau.Alarmă pe dispozitivul mobil constă într-o notificare la care vibrația atașată dureza 5 secunde.Această durată poate fi reconfigurata.

Figura 6.6.9 Notificare in caz de pericol Figura 6.6.10 Notificare pe dispozitiv mobil

Figura 6.6.11 Creștere nivel fum Figura 6.6.12 Caracteristica creștere nivele

Opțiunea numită „Planning„ ne deschide o pagină, în care un lider de echipă sau muncitor are posibilitatea de a-și vedea echipele în care își desfășoară activitatea la momentul curent.Prin vizualizarea echipei se vor afișa membrii prezenți în cadrul acesteia și lista de activități.Utilizatorul are prezente 2 funcții în cadrul fiecărui muncitor din echipă,acesta acesta având posibilitatea de apelare și trimitere sms.

În cazul în care un utilizator a fost adăugat de către un lider acesta primește o notificare în care i se anunța această acțiune.În corpul notificării se precizează echipa în cadrul căreia își va desfășura activitatea în continuare.

Liderul de echipă poate vizualiza datele monitorizate ale fiecărui membru al echipei sale.Se pot detecta eventualele pericole din mediul angajațiilor.

Activitațiile cuprinse în listă sunt valabile pe o anumită perioadă,liderul de echipă fiind cel ce actualizează toate activitațiile din cadrul echipei.

Figura 6.6.10 Echipe din cadrul planificării Figura 6.6.11 Adăugare echipă

Figura 6.6.12 Vizualizare planificare echipă Figura 6.6.13 Vizualizare listă activități

Activitățiile din cadrul echipei se compun din mai multe componente.Liderul de echipă adaugă un nume activității, o locație de desfășurare și o serie de remarci pentru o mai bună înțelegere a activității respective.Activitatea prezintă o dată de valabilitate, aceasta fiind cuprinsă între 2 perioade de timp alese de liderul de echipă.

Figura 6.6.14 Adăugare activitate nouă Figura 6.6.15 Vizualizare date muncitor

În cazul în care un muncitor din cadrul unei echipe vizualizează planificarea, acesta nu poate adauga alte persoane și nu poate vizualiza datele altui utilizator.Acesta va fi redirectat către pagina de profil a muncitorului selectat.

Figura 6.6.16 Pagină Profil utilizator

Opțiunea Personal Data oferă utilizatorului acces la toate înregistrările avute în decursul folosirii sistemului.În această pagină se poate alege popularea primului grafic cu datele din decursul unei zile.Pot exista cazuri în care cineva are probleme respiratorii și vrea să investigheze dacă problema se datorează mediului de lucru.În funcție de datele salvate acesta benficiaza de opțiunea GetAdvice ce oferă utilizatorului o serie de remarci pentru a putea da o serie de informații utiliazatorului despre metodele pe care trebuie să le aplice pentru a evită eventuale complicații pe cale respiratorie.

Figura 6.1.17 Date personale Figura 6.1.18 Primire sfat

Mai jos se poate observa dispozitivul precum si o marcare a componentelor folosite in cadrul proiectului.

//Poza cu dispozitivul impachetat

7.Concluzii

Sistemul dezvoltat poate avea un rol deosebit în cadrul fiecărui mediu de lucru.Acesta aduce un plus de siguranță muncitorilor mai ales prin faptul că se va ști întotdeauna când o persoană se află în zona unui pericol.Cele mai multe accidente se întâmplă din cauza neglijenței personalului.

Putem preciza de altfel că acest sistem vine înglobat și cu o modalitate de lucru nouă în cadrul unei echipe, datorită faptului că se pot organiza evenimentele într-un mod diferit, liderii de echipă având responsabilitatea pentru desfăsurarea și crearea tutoror evenimentelor.Prin sfaturile aplicației, utilizatorul își poate luă măsuri de precauție pentru mediul de lucru și cunoaște în același timp pericolele la care este supus în decursul fiecărei zi de muncă.

Se oferă astfel utilizatorilor o aplicație ce poate rula la nivel multi-platform, fiind disponibilă pe toate platformele mobile, dar putând fi foarte ușor adaptabilă și în navigatorul web.Datorită lansării noii versiuni de Angular și puterea de procesare a noilor device-uri gradul de performanță nu mai reprezintă o problemă.Serviciile din cadrul aplicației sunt de o rapiditate mare.Costurile de producție pentru acest sistem sunt mici, înglobând un număr mare de funcționalități.

Prețul senzorilor este relativ mic și nu oferă impedimente în găsirea lor.Un punct mai complex îl reprezintă calibrarea acestora, fiind nevoie de 24 de ore de funcționare continuă pentru măsurări cât mai exacte .Asamblarea sistemului embedded este una de bază, aceasta putând fi optimizată la un nivel mult mai mare.Asupra sistemului se pot aduce oricând îmbunătățiri și funcționalități noi acesta reprezentând în momentul de față, un proiect open-source ce oferă servicii gratuite.

Se pot aduce și funcționalități care mai apoi să poată fi monetizate în cadrul unei companii.

8.Bibliografie

http://andrei.clubcisco.ro/cursuri/f/f-sym/4idp/1_Etapele_dezvoltarii_doc.pdf

http://www.json.org/json-ro.html

https://ro.wikipedia.org/wiki/JSON

http://ctrl-d.ro/inspiratie/aplicatii-mobile-native-versus-aplicatii-compilate-ionut-ion-timo-editia-14/

https://www.quora.com/What-are-the-latest-features-of-Bluetooth-5-0-version-Technology

https://www.a2t.ro/sisteme-antiincendiu/detector-de-gaz-metan-si-monoxid-de-carbon-standalone.html

http://07detector.ro/index-ro.html?start=sistem&but=2

Curs SMI Radu Pietraru http://acs.curs.pub.ro/2015/pluginfile.php/5433/mod_resource/content/1/smi2015_curs01.pdf

https://ro.wikipedia.org/wiki/Arduino

https://www.arduino.cc/en/tutorial/memory

http://www.china-total.com/Product/meter/gas-sensor/Gas-sensor.htm

http://laurian.ro/wordpress/wp-content/uploads/2013/JavaScript_a5.pdf

https://www.w3schools.com/js/js_htmldom.asp

https://www.tutorialspoint.com/angularjs/angularjs_tutorial.pdf

https://docs.angularjs.org/guide/di

https://www.tutorialspoint.com/angular2/angular2_dependency_injection.htm

https://en.wikipedia.org/wiki/Android_(operating_system)

https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/Introduction/Introduction.html

https://en.wikipedia.org/wiki/Apache_Cordova

https://www.tutorialspoint.com/nodejs/nodejs_tutorial.pdf

https://ro.wikipedia.org/wiki/MongoDB

https://www.mongodb.com/mongodb-architecture

http://acs.curs.pub.ro/2015/course/view.php?id=117 Laborator 1 SMI

http://www.edgefxkits.com/blog/arduino-technology-architecture-and-applications/

https://developer.mbed.org/users/edodm85/notebook/HC-05-bluetooth/

Similar Posts