Zamfir George – Mădă lin [620672]
– Sibiu 2017 –
UNIVERSITATEA “LUCIAN BLAGA” DIN SIBIU
FACULTATEA DE INGINERIE
SPECIALIZAREA INGINERIA SISTEMELOR MULTIMEDIA
PROIECT DE DIPLOMĂ
Absolvent: [anonimizat]
2017
2
UNIVERSITATEA “LUCIAN BLAGA” DIN SIBIU
FACULTATEA DE INGINERIE
SPECIALIZAREA INGINERIA SISTEMELOR MULTIMEDIA
PROIECT DE DIPLOMĂ
Casă automatizată
Profesor îndrumător:
Șef lucr. dr. mat. Crețulescu Radu Absolvent: [anonimizat]
3 UNIVERSITATEA "LUCIAN BLAGA" DIN SIBIU APROBAT(data)
FACULTATEA DE INGINERIE __________________
DEPARTAMENTUL DE CALCULATOARE DIRECTOR DEPARTAMENT
SI INGINERIE ELECTRICA _____________
PLAN TEMATIC
pentru proiectul de diplom ă
Proiectul de diplom ă dat student: [anonimizat] ____________________________ ______
1.Tema proiectului
________________________________________________________________
____________________________________________________ ____________
2.Termenul de predare a proiectului ___________________ __________ ______
3.Elemente ini țiale pentru proiect
________________________________________________________________
________________________________________________________________
________________________ ________________________________________
4.Nota explicativ ă (enumerarea problemelor care vor fi rezolvate)
________________________________________________________________
________________________________________________________________
________________________________________________________________
_____ ___________________________________________________ ________
5. Enumerarea materialului grafic (cu indicarea precis ă a desenelor
obligatorii)_______________________________________________________
___________________________________________________________ _____
__________________________________________________________ ______
6.Consulta ții pentru proiect (s ăptămânal)
________________________________________________________________
____________________________________________________ ____________
7. Data eliber ării temei _____________________________________________
Tema a fost primit ă pentru îndeplinire: CONDUC ĂTOR,
Data _________ (nume, prenume, grad didactic)
__________________
Semn ătură student________________ (semn ătura)
4
Anexa 2
PROCEDURĂ OPERAȚIONALĂ
PRIVIND PROTECȚIA PROPRIETĂȚII INTELECTUALE,
ASIGURAREA RESPECTĂRII DREPTULUI DE AUTOR,
PROTEJAREA OPERELOR ȘTIINȚIFICE ÎN MEDIUL ACADEMIC
VIZAT
Conducător științific
Declarația pentru conformitate asupra originalității o perei științifice
Subsemnatul / Subsemnata…………………………………………………….domiciliat/ă în
localitatea…………………………………………….adresa poștală……………………………… …………………. .
având actul de identitate seria…………….nr……………………, codul numeric
personal……………………………………….înscris/ă pentru examenul de licență / proiect de diplomă
/ disertație / susținere teză de doctorat, cu tema / titlul
…………………………………………………………………………………………………………….. …………………….
……………………………………………………………………………………… ……………………….. ………….. ……..
declar următoarele:
opera științifică nu aparține altei persoane, instituții, entități cu care mă aflu în relații
de muncă sau altă natură;
opera științifică nu este contrară ordinii publice sau bunelor moravuri, iar prin
aplicarea acesteia nu devine dăunătoare sănătății ori vieții persoanelor, animalelor sau
plantelor;
opera științifică nu a mai fost publicată de subsemnatul / subsemnata sau de o terță
persoană fizică sau juridică, în țară sau în străină tate, anterior datei depunerii acesteia
spre evaluare în scopul obținerii recunoașterii științifice în domeniu.
Specific explicit că ideile prezentate sunt originale, iar sursele de informații care stau
la baza emiterii unor teorii originale au fost corect citate și prezentate în opera științifică.
Data…………………………………….
Numele și prenumele………………………………………………….
Semnătura………………………………………….
Notă: Prezenta declarație va purta viza conducătorului științific.
Universitatea
„Lucian Blaga”
din Sibiu PROCEDURĂ Cod: PO – ULBS – DPPI – 06
PRIVIND PROTECȚIA PROPRIETĂTII
INTELECTUALE, ASIGURAREA
RESPECTĂRII DREPTULUI DE AUTOR,
PROTEJAREA OPERELOR ȘTIINȚIFICE ÎN
MEDIUL ACADEMIC Pagina 4 din 65
Ediția 1
Evoluție revizii
Emitent:
Departamentul Protecția Proprietății Intelectuale 0/05.11
5 Cuprins
1 Introducere ………………………….. ………………………….. ………………………….. ……………………. 7
1.1 Tema lucrării ………………………….. ………………………….. ………………………….. …………… 7
1.2 Obiectiv e propuse ………………………….. ………………………….. ………………………….. …….. 8
1.3 Structura documentului ………………………….. ………………………….. …………………………. 8
2 Noțiuni introductive și teoretice ………………………….. ………………………….. ……………………. 9
2.1 Embedded sistems ………………………….. ………………………….. ………………………….. ……. 9
2.2 Ardu ino………………………….. ………………………….. ………………………….. …………………… 9
2.3 Modulul Intel Edison cu extensie Arduino ………………………….. …………………………. 11
2.4 Senzor temperatură TMP36 ………………………….. ………………………….. …………………. 15
2.5 Senzor fum și gaze inflamabile MQ2 -2 ………………………….. ………………………….. …. 16
2.6 Android ………………………….. ………………………….. ………………………….. …………………. 17
2.7 Ubidots ………………………….. ………………………….. ………………………….. …………………. 19
2.8 Yocto Linux ………………………….. ………………………….. ………………………….. …………… 20
2.9 Limbaje de programare utilizate ………………………….. ………………………….. …………… 22
3 Dezvoltarea proiectului ………………………….. ………………………….. ………………………….. …. 24
3.1 Arhitectura de sistem ………………………….. ………………………….. ………………………….. . 24
3.2 Arhitectura software ………………………….. ………………………….. ………………………….. .. 27
3.2.1 Aplicația modulului Intel Edison ………………………….. ………………………….. ……. 28
3.2.2 Aplicația telefonului mobil ………………………….. ………………………….. ……………. 29
3.3 Implementarea Aplicațiilor ………………………….. ………………………….. ………………….. 30
3.3.1 Aplicația modulului Intel Edison ………………………….. ………………………….. ……. 31
3.3.2 Aplicația telefonului mobil ………………………….. ………………………….. ……………. 40
3.4 Unelte folosite pentru dezvoltarea Software ………………………….. ……………………….. 48
3.4.1 Pycharm ………………………….. ………………………….. ………………………….. …………. 48
3.4.2 Android Studio ………………………….. ………………………….. ………………………….. … 53
3.4.3 Bitbucket ………………………….. ………………………….. ………………………….. ………… 59
6 3.4.4 Ubuntu GNOME 17.04 ………………………….. ………………………….. …………………. 62
4 Concluzii ………………………….. ………………………….. ………………………….. …………………….. 63
5 Bibliografie ………………………….. ………………………….. ………………………….. …………………. 64
7 1 Introducere
1.1 Tema lucră rii
În prezent tehnologia este î n continua dezvoltare și începe să acopere o arie din ce în ce mai
larga de domenii pe zi ce trece, fie în agricultură , medic ină sau chiar în construcții.
Tehnologia avansată și modul de gâ ndire a unor oameni în preze nt le face viata mult mai
usoară altora .
Cel mai important, tehnologia ajunge în casele fiecărei persoane î ntr-un fel sau altul,
smartphone -ul care -l folosim zilnic p entru absolut orice, de la a suna și a primi mesaje, la a
ne verifica mailul sau chiar mailurile. Cuptorul cu microunde este un exemplu al tehnologiei
ce se dezvolta continuu, frigiderul la fel. Știați că Samsung a scos pe piață un Smart Fridge ce
prezint ă un display tactil ca interfață de interac ționare cu utilizatorul și ruleaz ă sistemul de
operare Android ? Atâ t de mult a avansat tehnologia.
În această lucrare vom discut a despre tehnologia implementată în casă puț in mai larg, nu ne
vom referii la un obie ct sau alt obiect, ci la intreaga casă, o casă automatizată .
Procesul, acț iunea, produsul final al unei case automatizate poate fii definit pe larg ca și
Domotică , vom utiliza în continuare acest termen pentru a ne referii la o casa automatizata.
Domotica este mai exact o aplicaț ie a calculatoarelor și roboț ilor pentru aplica ții casnice. Este
ținită spre integrarea și răspândirea aplicației proprii pretutindeni. O casă cu un sistem
domotic instalat trebuie să aibă unul sau mai multe calculatoare pe ntru a pr ocesa informaț iile
și cerintele utilizatorului. [1]
O cas ă cu un astfel de sistem trebuie să fie capabilă să avertizeze proprietarul și unde este
cazul să avertizeze și instituț iile specializate necesare pentru a intervenii într -un caz de
urgență (incendiu, intrare prin efractie, etc.)
În mod normal un sistem de acest tip trebuie să colecteze date de la diverși senzori instalați
atât în interiorul câ t și în exteriorul casei (unde este cazul) și pe baza informaț iilor adunate să
poată lua o decizie în acest sens (climatizare, securizare, iluminare)
8 Câteva din sarcin ile ce pot fii indeplinite de un astfel de sistem:
control al draperiilor, instalaț iilor de iluminat din cas ă fară interacț iunea utilizatorului
blocare a sau deblocarea că ilor de acces în incintă
control al sistemului de climatizare
control al unor sisteme de entertainment de tip home cinema
în unele ca zuri se poate extinde chiar la întreț inerea unei sere amplasate în curtea
casei, astfel încât proprietarul să poată să planteze fructe/legume și sistemul să le
întrețină până la maturitate câ nd sunt preg ătite pentru a fi recoltate
1.2 Obiective propuse
Obiectivele propuse în acest proiect su nt de a implementa funcționa litățile de baz ă ale unui
astfel de sistem cum ar fii:
implementarea unui sistem ce poate rula independent fiind necesară doar o sursă de
alimentare și o conexiune la internet
implementarea unei aplicaț ii pe telefonul mobil ce poate trimite comenzi c ătre sistem
achiziț ionarea și procesarea datelor de la senzori pentr u a luat decizii independent față
de utilizator.
1.3 Structura documentului
În afară de prezentarea temei din acest Capitol 1, documentul acesta este alc ătuit din 2 părți
după cum urmeaza.
Partea 1 a documentului c uprinde noț iunile introductive și teoretice necesare pentru
implementar ea sistemului, sinteza cunostințelor actuale. Acestea urmează să fie prezentate în
Capitolul 2 al docu mentului, printre care se numară : tehnologiile fol osite pentru dezvoltarea
aplicaț iilor. Parte a a 2 -a va fii detaliată în Capitolul 3 unde prezentă m conc eptul de
implementare al aplicaților, informații privind modul de funcționare și informaț iile ce le
putem primii de la sistemul nostru Domotic.
În Capitolul 4 vom descrie succint concluz iile trase du pă analizarea și încercarea de
implementare a sistemului Domotic și care ar fii următorii paș i în cadrul dezvoltă rii
proiectului.
9 2 Noțiuni introductive și teoretice
2.1 Embedded sistems
Termenul „sistem înglobat” provine de la expresia engleză emb edded system și semnifică un
mic calculator bazat pe un microprocesor și specializat (dedicat) la îndeplinirea unei sarcini
anume, sau a câtorva sarcini, de obicei în „timp real” (aproape instantaneu). [2]
În zilele noastre termenul „sistem înglobat” nu mai este definibil în mod strict, deoarece toate
aceste sisteme sunt deseori miniaturizate, flexibile, extensibile sau și programabile. Asta este
cazul de exemplu încă de la micii asistenți digitali personali (P DA), care dispun deja de un
sistem de operare, software și/sau firmware, de mai multe aplicații precum și de conectori
pentru aparate periferice suplimentare. Cu atât mai mult la telefoanele mobile de tip
smartphone etc.
Un sistem înglobat este parte dintr -un dispozitiv mai mare, cu componente mecanice și
hardware, constituind „inteligența” acestuia. Se deosebește de un calculator universal, cum
este de ex. orice PC, care acoperă o largă paletă de aplicații.
Sistemele înglobate controlează multe aparate obi șnuite. „Inima” unui sistem înglobat este
alcătuită dintr -un microcontrole r sau dintr -un Digital Signal Processor (DSP).
Caracteristica principală este abilitatea de a executa o sarcină anume, care uneori necesită un
procesor extrem d e rapid . De exemplu, s istemele de control al traficului aerian ale unei țări
pot fi văzute ca sisteme înglobate, deși pot conține calculatoare de tip mainframe precum și
rețele întregi între aeropoarte și stațiile de radar .
În ziua de azi sistemele înglobate sunt de obicei deos ebit de rapide, miniaturizate, fiabile și
convenabile ca preț, profitând de toate tehnologiile avansate și de producția în masă.
2.2 Arduino
Arduino este o companie open -source care produce plăcuțe de dezvoltare bazate pe
microcontrolere și partea de software destinată funcționării și programării acestora.
Pe lângă acestea include și o comunitate uriașă care se ocupă cu creația și distribuirea de
10 proiecte care au ca scop crearea de dispozitive care pot sesiza și controla diverse activități sau
procese în lumea reală. [3]
Proiectul este bazat pe designul plăcilor cu microcontroler produse de câțiva furnizori,
folosind diverse tipuri de microcontrolere. Aceste plăci pun la dispoziția utilizatorului pini
Input/Output , digitali și analogici, care pot fi folosiți ca interfață de comunicare cu o gamă
largă de plăcuțe numite scuturi și/sau cu alte circuite. Plăcile au interfețe de comunicații
seriale, inclusiv USB pe unele modele, pentru a încărca programe din calcul atorele personale.
Pentru programarea microcontrolerelor, Arduino aduce un mediu de dezvoltare integrat bazat
pe proiectul Processing, care include suport pentru limbaje de programare ca C și C++.
O plăcuță Arduino este compusă dintr -un microcontroler Atme l AVR de 8 -, 16- sau 32 -biți
cu componente complementare care facilitează programarea și încorporarea în alte circuite.
Un aspect important la Arduino este că acesta dispune de conectori standard, care permit
utilizatorului să conecteze plăcuța cu procesor ul la diferite module numite shield -uri. Unele
shield -uri comunică cu Arduino direct prin pinii digitali sau analogici, altele sunt adresabile
individual prin magistrala serială I 2C permițând utilizarea mai multor module în paralel.
La nivel conceptual, c ând se folosește mediul de dezvoltare integrat Arduino, programarea
plăcuțelor se face prin conexiune serială. Implementarea acesteia diferă în funcție de
hardware. Unele plăcuțe Arduino au implementate convertoare de nivel logic pentru a realiza
conversia între nivelele logice RS -232 și cele TTL. Plăcuțele din prezent sunt programate
prin USB, având integrate cipuri de conversie USB -serial, cum ar fi FTDI FT232. Unele
modele UNO folosesc un cip AVR separat programat să funcționeze ca un convertor USB –
seria l, care poate fi reprogramat pr într-un port ICSP. Alte variante, cum ar fi Arduino Mini și
versiunea neoficială Boarduino, folosesc adaptoare detașabile USB -serial, ca bluri, Bluetooth .
11 2.3 Modulul Intel Edison cu extensie Arduino
Modulul Intel Edison, numit în continuare doar Edison, e ste un mini computer oferit de I ntel
ca un sistem de dezvoltare pentru gadget -uri „purtabile” (wearable devices) și aplicaț ii de
tipul IOT (Internet of Thin gs). Edison se dorea a fi placuță de dimensiunea unui card SD,
când a f ost lansat s -a văzut că defapt este mai mare de at ât, dar nicidecum nu e ste prea mare
pentru capabilitaț ile acestuia.
Figura 1 – Diagrama Bloc Intel Edison [4]
Modulul Intel Edison este conceput pentru a reduce bariere le la intrare pentru oricare dintre
prototipuri și pentru producerea de produse d e calcul IoT și de uzură. Intel Edison conține
elemente de procesare și conectivitate principale: procesoare și procesoare de gestionare a
energiei IC, RAM, eMMC și Wi -Fi / BT . Intel Edison este un modul care interfa țează cu
sistemele utilizatorilor finali pr într-un conector cu 70 de pini. Intel Edison se bazează pe
utilizatorul final pentru a furniza o putere de intrare și o gestionare globală a alimentării
sistemului, cum ar fi reîncărcarea bateriilor pentru sistemele alimentate de la baterie.
Acesta se conectează la dispozitivul utilizatorului final pr într-un conector cu 70 de pini.
Conectorul de pe Intel Edison este un conector cu antet Hirose cu 70 de pini DF40, denumit
uneori conector "plug". Numărul piesei Hirose pentru conectorul "ante t" al modulului de
calcul Intel Edison este DF40C -70DP -0.4V. Conectorul Hirose de împerechere pe o placă de
12 extensie e ste conectorul "destinatar". Acest conector "recipient" este disponibil în trei înălțimi
diferite . Înălțimea stiva de îmbinare la bord poate fi de 1,5, 2,0 sau 3,0 mm.
Edison este fixat pe o placă de expansiune prin două găuri de montare, fiecare având un
diametru de 2,0 mm. Orice suport de montare va trebui să se potrivească și cu înălțimea
conectorului de îmbinare (1,5, 2,0 sau 3,0 mm).
Edison are două interfețe I2 C disponibile, I2C1 și I2 C6. I2C1 pe pinii 41 și 43 este o interfață
de uz general I2C care se conectează direct la core-ul IA. I2C6 pe pinii 45 și 47 poate fi
configurat ca I2C6 care se conectează la core-ul IA sau ca I2C8 care se conectează la
controler ul de sistem (controlată de MCU). Pentru lansarea inițială a Edison, sunt disponibile
numai I 2C1 și I2C6. Ambele interfețe sunt colector deschis atunci când sunt configurate ca
I2C. Când sunt configurate ca GPI O, ele pot fi ieșiri standard .
Modulul I2C poate funcționa în următoarele moduri:
Mod standard (cu rate de date de până la 100 kbps).
Modul rapid (cu rate de date de până la 400 kbps).
Mod de mare viteză (cu rate de date de până la 3,4 Mbps).
SoC este întotdeauna master I2C, nu suportă modul multimaster.
SoC poate suporta întinderea ceasului prin dispozitive slave.
Sunt acceptate ambele modur i de adresare pe 7 biți și pe 10 biți.
Când I2C6 este configurat ca I2C8, acesta poate rula numai în modul standard sau rapid. Un
număr de intrări / ieșiri cu destinație generală sunt disponibile pe interfața externă. Acestea se
găsesc pe pini: 24, 25, 26, 28, 30, 32, 34, 42 și 48. Unele dintre acestea servesc funcții
alternative de întreruperi pentru suportul senzorului extern. Toate interfeț ele enumerate (I2C,
I2S, UART etc.), dacă nu sunt utilizate, pot fi transformate în intrări / ieșiri cu destinație
generală. Când modul pin este ales ca GPIO, acesta poate fi programat ca ieșire sau intrare.
Când este programat ca o intrare, un GPIO poate servi drept sursă de întrerupere sau trezire.
Intrările au pachete sau pachete programabile. Valoarea Pullup poate să fie 2, 20 sau 50
kOhm. Pinii I2C au, de asemenea, o valoare suplimentară de 910 O hmi. Când este în modul
general, GPIO de intrare semnalele introduc un filtru glitch în mod prestabilit, înainte de a
ajunge la registrele de detectare a marginilor.
Pentru a se asigura că un impuls este detectat de către registrul de detectare a marginilor,
pulsul ar trebui să aibă cinci cicluri de ceas lungi.
13 100 ns pentru un ceas de 50 MHz atunci când SoC este în stare S0.
260 ns pentru ceasul de 19,2 MHz când SoC este în stare S0i1 sau S0i2.
155,5 μs pentru ceasul de 32 kHz (RTC) atunci când SoC se află în starea S0i3.
Majoritatea pinilor compatibili cu GPIO sunt configurați ca intrări GPIO în timpul afirmării
tuturor resetărilor și rămân intrări până când nu este configur at altfel. Ca ieșiri, GPIO -urile
pot fi șterse sau setate individual. Ele pot fi preprogramate fie la intrarea în regim de
așteptare. Unitatea de ieșire este ± 3 mA. Bufferul GPIO este utilizat în diferite interfețe de pe
SoC, cum ar fi GPIO, I2C, I2S, MIP I PTI, SPI, SDIO, SVID, UART, PWM, CAMERA SB,
JTAG și ULPI, FAST -INT, OSC_CLK_OUT, OSC_CLK_CLTRL
Există cinci șine de putere pe modelele Edison: VSYS, 3.3 V, 1.8 V, USB_VBUS și
V_VBAT_BKUP. VSYS este singura șină de alimentare de intrare a modulului Intel®
Edison, iar domeniul de tensiune este de 3,15 – 4,5 V. USB_VBUS este o intrare standard
USB VBUS de la 4,75 până la 5,25 V. Această șină nu este utilizată pentru alimentarea
dispozitivului; Acesta este utilizat numai de dispozitivul USB ULPI PHY pentru a determina
dacă un dispozitiv gazdă a fost atașat la dispozitivul Edison. Vitezele de 3.3 și 1.8 V sunt
ieșiri de putere de la modulul Edison, care sursă maximă de 100 mA fiecare. DCIN este un
semnal care indică dacă dispozitivul Edison este alimentat de la o baterie sau de la o sursă
externă de alimentare.
De asemenea, DCIN stabilește nivelul de tensiune necesar pentru VSYS în vederea încărcării.
Atunci când DCIN plutește sau este legat la masă, tensiunea pe VSYS TREBUIE să crească
de la 2,5 la 3,5 V în 100 ms, altfel boot -ul este întrerupt. Când boot -ul este întrerupt,
alimentarea trebuie să fie mai mică de 2,5 V. Dacă DCIN este conectat la VSYS, dispozitivul
Edison va începe să se încarce când VSYS este peste 2,5 V timp de 100 ms.
Modulul Edison este c ompatibil cu o placa de extensie de tip Arduino Uno lansata tot de
Intel. Placuta de extensie are urmatoarele caracteristici:
20 pini digitali input/output
6 pini output PWM
6 pini input analog
1 UART (Rx/Tx)
1 IIC
1 header de 6 pini SPI ICSP
Conectaore mi cro USB
Slot pentru SD Card
Jack de aimentare ( 7 -16 VDC)
14 Figura 2 – Placuță de extensie pentru Intel Edison [5]
Figura 3 – Inserarea modului în placuț a de extensie
15
2.4 Senzor temperatur ă TMP36
Senzorul TMP36 pentru temperatură este un senzor de temperatur ă de precizie centigrada.
Acesta ne „spune” pe output un voltaj liniar proporț ional cu tempratura în Celsius masurată .
Nu necesita calibrare externa pentru a masura temperatura cu o marjă de eroare de ±2 °C.
Este un senzor uso r de folosit pentru ca nu trebuie decat conectat la o sursa de alimentare
(2.5-7.5 VDC) și se poate utiliza pentru citirea temperaturii pe pinul Vout. Pentru convertirea
valorii masurate se foloseste o formula de tipul 10 mV/ °C.
Specificaț ii
Tensiune de al imentare: 2.7 V to 5.5 VDC
10 mV/°C factor de scalare
±2°C marjă de eroare
±0.5°C linearitate
Aria de operare: −40°C to +125°C
Figura 4 – Senzor temperatură TMP36 [6]
16
2.5 Senzor fum și gaze inflamabile MQ 2-2
Materialul sensibil al senzorului de gaz MQ -2 este SnO2, care are o conductivitate redusă în
aerul curat. Când există gazul combustibil țintă, conductivitatea senzorului este mai mare,
împreună cu creșterea concentrației de gaz. Vă rugăm să ut ilizați elect rocircuit simplu,
convertiți schimbarea de conductivitate pentru a corespunde semnalului de ieșire de
concentrație de gaz. Senzorul de gaz MQ -2 are o sensibilitate ridicată la GPL, Propan și
Hidrogen, de asemenea, poate fi utilizat pentru metan și alte tip uri de abur combustibil, este
ieftin și potrivit pentru aplicații diferite.
Specificatii :
Alimentare : 5V
Temperatură de funcționare : -20 +50
Curent : 150mA
Dimensiuni : 16.8 mm diametru 9.3 mm inaltime fara pini
Figura 5 – Senzor fum și gaze Inflamabile MQ2 -2 [7]
17 2.6 Android
Android este o platformă software și un sistem de operare pentru dispozitive și telefoane
mobile bazată pe nucleul Linux, dezvoltată inițial de compania Google, iar mai târziu de
consorțiul comercial O pen Handset Alliance. Android permite dezvoltatorilor să scrie cod
gestionat în limbajul Java, controlând dispozitivul prin intermediul bibliotecil or Java
dezvoltate de Google. Aplicațiile scrise în C și în alte limbaje pot fi compilate în cod m așină
ARM și executate, dar acest model de dezvoltare nu este sprijinit oficial de către Google. [8]
Figura 6 – Servitorul de ecran SurfaceFlinger [9]
SDK -ul Android include un set complet d e instrumente de dezvoltare. Acestea includ un
program de depanare, biblioteci, un emulator de dispozitiv (bazat pe QEMU), documentație,
mostre de cod și tutoriale. Platformele de dezvoltare sprijinite în prezent includ calc ulatoare
bazate pe x86 care rulează Linux (orice distribuție Linux desktop modernă), Mac OS X
10.4.8 sau mai recent, Windows XP sau Vista. Cerințele includ, de asemenea, Java
Development Kit, Apache Ant, și Python 2.2 sau o versiune ulterioară. Mediul de d ezvoltare
(IDE) suportat oficial este Eclipse (3.2 sau mai recent), utilizând plug -in-ul Android
Development Tools (ADT), deși dezvoltatorii pot folosi orice editor de text pentru a edita
18 fișiere XML și Java și apoi să utilizeze unelte din linia de comandă pentru a crea, să construi
și depana aplicații Android. [10]
Figura 7 – Arhitectura software Android [11]
O versiune pentru examinare a Android Software Develo pment Kit (SDK) a fost lansată la
data de 12 noiembrie 2007.La 15 iulie 2008, echipa Android Developer Challenge a trimis
accidental un e -mail la toți participanții Android Developer Challenge anunțând că o nouă
versiune de SDK era disponibilă într -o zonă de descărcare "privată". Mesajul a fost destinat
pentru câștigătorii primului tur al Android Developer Challenge. Revelația că Google va
furniza noi versiuni SDK unor dezvoltatori și nu altora (și păstra acest regim secret) a condus
la frustrare raportată pe scară largă în comunitatea dezvoltatorilor Android.
19 2.7 Ubidots
Ubidots să născut prima dată ca firmă de servicii de inginerie, specializată în dezvoltarea
hardware și software pentru proiectele IoT din America Latină.
Între 2012 și 2014, am realizat sute de proiecte Internet de obiecte din întreaga industrie, cum
ar fi sănătatea, petrolul și gazele, energia, producția, transportul și comerțul cu amănuntul,
învățarea elementelor IoT.
După ce au trecut prin Boston MassChallenge Accelerator – cu scopul de a se transforma într –
o lansare globală bazată pe produs – s-a născut ideea unui cloud IoT; În special unul care a
înțeles nevoile reale ale inginerilor de hardware.
De la lansarea să în 2014, Ubidots Cloud s-a transformat într -una dintre platformele de top
IoT de pe piață, sprijinind mii de inițiative IoT în peste 40 de țări.
Figura 8 – Dashboard Ubidots [12]
20 2.8 Yocto Linux
Proiectul Yocto este un proiect de colaborare open source care oferă șabloane, instrumente și
metode care vă ajută să creați sisteme personalizate bazate pe Linux pentru produsele
încorporate, indiferent de arhitectura hardware. A fost fondată în 2010 ca o colaborare între
mulți producători de hardware, furnizori de sisteme de operare open -source și companii de
electronice pentru a aduce o ordine în haosul dezvoltării embedded Linux.
Figura 9 – Logo yocto project și placuta Intel Edison cu extensie Arduino [13]
Ca proiect open source, proiectul Yocto funcțion ează cu o structură ierarhică de guvernanță
bazată pe meritocrație și administrată de arhitectul său șef, Richard Purdie, un membru al
Fundației Linux. Acest lucru permite ca proiectul să rămână independent de oricare dintre
organizațiile sale membre, care participă în diverse moduri și oferă resurse proiectului.
Proiectul Yocto are scopul și obiectivul de a încerca să îmbunătățească viața dezvoltatorilor
de sisteme personalizate Linux care să sprijine arhitecturile ARM, MIPS, PowerPC și x86 /
x86 64. O par te esențială a acestui lucru este un sistem open source, bazat pe arhitectura
OpenEmbedded, care permite dezvoltatorilor să își creeze propriile distribuții Linux specifice
mediului lor. Această implementare de referință a OpenEmbedded se numește Poky.
21 Există și alte subproiecte sub umbrela proiectului, care includ EGLIBC, pseudo, cross –
prelink, integrarea Eclipse, ADT / SDK, suita de aplicații cu potrivire pentru dosare și multe
altele. Unul dintre obiectivele centrale ale proiectului este interoperabilita tea dintre aceste
instrumente.
Proiectul oferă obiective de dimensiuni diferite, de la "mici" la imagini complet prezentate,
configurabile și personalizabile de către utilizatorul final. Proiectul încurajează interacțiunea
cu proiectele din upstream și a c ontribuit puternic la OpenEmbedded -Core și BitBake,
precum și la numeroase proiecte în upstream , inclusiv kernel -ul Linux. Imaginile rezultate
sunt de obicei utile în sistemele în care va fi folosit embedded Linux, acestea Fiind sisteme
sau sisteme axate p e o singură utilizare, fără ecrane / dispozitive de intrare obișnuite asociate
sistemelor desktop Linux.
Pe lângă construirea sistemelor Linux, există, de asemenea, posibilitatea de a genera un set de
instrumente pentru compilarea încrucișată și un kit de dezvoltare software (SDK), adaptat la
distribuția proprie, numită și "Application Developer Toolkit" (ADT). Proiectul încearcă să
fie software și vânzător agnostic. Astfel, de exemplu, este posibil să selectați formatul
managerului de pachete pe care să îl utilizați (deb, rpm sau ipk).
În interiorul clădirilor există opțiuni pentru diferite teste de sanitare / regresie de construcție,
precum și opțiunea de a încărca și testa anumite imagini în cadrul QEMU pentru a valida
construcția.
22 2.9 Limbaje de programare utilizate
Python
Python este un limbaj de programare dinamic multi -paradigmă, creat în 1989 de
programatorul olandez Guido van Rossum. Van Rossum este și în ziua de astăzi un lider al
comunității de dezvoltatori de software care lucrează la perfecționarea limbajul Python și
implementarea de bază a acestuia, CPython, scrisă în C. Python este un limbaj
multifuncțional folosit de exemplu de către companii ca Google sau Yahoo! pentru
programarea aplicațiilor web, însă există și o serie de aplicații științifice sau de divertisment
programate parțial sau în întregime în Python. Popularitatea în creștere, dar și puterea
limbajului de programare Python au dus la adoptarea să ca limbaj principal de dezvoltare de
către programatori specializați și chiar și la predare a limbajului în unele medii universitare.
Din aceleași motive, multe sisteme bazate pe Unix, inclusiv Linux, BSD și Mac OS X includ
din start interpretatorul CPython. [14]
Python pune accentul pe curăț enia și simplitatea codului, sintaxa să permite dezvoltatorilor să
exprime unele idei programatice într -o manieră mai clară și mai concisă decâ t în alte limbaje
de programare . În ceea ce privește paradigma de programare, Python poate servi ca limbaj
pentru software de tipul object -oriented, dar permite și programarea imperati vă, funcțională
sau procedurală. Alt avantaj este existența unei ample biblioteci standard de metode.
Implementarea de referință a Python este scrisă în C și poartă deci numele de CPyth on.
Această implementare este software liber și este administrată de fundația Python Software
Foundation.
23 Java
Java este un limbaj de programare orientat -obiect, puternic tipizat, conceput de către James
Gosling la Sun Microsystems (acum filială Oracle) la începutul anilor ʼ90, fiind lansat în
1995. Cele mai multe aplicații distribuite sunt scrise în Java, iar noile evoluții tehnologice
permit utilizarea să și pe dispozitive mobile gen telefon, agenda electronică, palmtop etc . În
felul acesta se creează o platformă unică, la nivelul programatorului, deasupra unui mediu
eterogen extrem de diversificat. Acesta este utilizat în prezent cu succes și pentru
programarea aplicațiilor destinate intranet -urilor. [15]
Limbajul împrumută o parte din sintaxă de la C, C++, dar are un model al obiectelor mai
simplu și prezintă puține facilități de nivel jos. Un program Java compilat, poate fi rulat fără
modificări pe orice platformă care are instalată o mașină virtuală Java. Acest nivel de
portabilitate este posibil deoarece sursele Java sunt compilate într -un format standard numit
cod de octeți care este intermediar între codul mașină și codul sursă.
Mașina virtuală Java este mediul în care se execută programele Java . În prezent, există mai
mulți furnizori de JVM, printre care Oracle, IBM, Bea, FSF . În 2006, Sun a anunțat că face
disponibilă varianta să de JVM ca open -source.
24 3 Dezvoltarea proiectului
3.1 Arhitectura de sistem
Figura 10 – Arhitectura sistem ului
În Figura 10 este prezentat ă arhitectura sistemului ce urmeaz ă să-l implement ăm și vom
explica rolul fiec ărei component ă din figur ă. Interac țiunea cu sistemul Domotic va avea loc
prin aplica ția SmartHome instalat ă pe telefonul mobil al utilizatorului.
25 Aplica ția SmartHome
Aplica ția ofer ă utilizatorului posibilitatea să vadă dacă totul este în regul ă acasă. Acesta poate
vedea pe ecran informa ții legate de temperatura din interiorul casei c ât și din exteriorul ei.
Cum funcțion eazâ acest lucru: Senzorul de temperatur ă îi spune Edison -ului nostru ce
temperatur ă masoar ă, Edison proceseaz ă aceast ă informaț ie și face un HTTP Request de tip
POST c ătre serverul nostru Ubidots. Serverul Ubidots accept ă accest HTTP Request pe baza
unei chei unice care numai noi o avem și salveaz ă în baza sa de date informa ția legat ă de
temperatura ambiental ă. Utilizatorul câ nd porne ște aplicația, aceasta î ncepe un proces de
sincronizare a informa țiilor și face un HTTP Request de tip GET c ătre Ubidots, reques t în
care noi î i cerem să ne trimita toate informaț iile din variabilele care stim ca le avem acolo.
Serverul r ăspunde înapoi cu informațiile c e urmează să fie afișate pe interfaț a grafic ă a
utilizatorului.
Figura 11 – deschiderea aplicaț iei SmartHome
26 Aplicaț ia modulului Intel Edison
Aplicați a Edis on-ului este strict responsabilă de achizi ția și procesarea informa țiilor de la
senzorii atașaț i acesteia. Ea odat ă pornit ă va intra într-o bucl ă infinit ă care va continua să
proceseze informațiile primite de la senzori și să le pun ă pe serverul Ubidots pentru a fii
folosite de c ătre Aplica ția SmartHome.
Modulul Edison este conectat la internet prin intermediul Wi -Fi și periodic interogheaza baza
de date Ubidots prin intermediul HTTP Request pentru comenzi primite de la utilizator prin
intermediul Aplicaț iei SmartHome; totodat ă periodic face upload la informațiile procesate.
27 3.2 Arhitectura software
Figura 12 – Arhitectura Software a aplicaț iilor implementate
Ambele aplica ții implementate sunt capabile să comunice una cu cealalt ă prin intermediul
Ubidots, datorit ă acestui lucru ambele au o arhitectur ă similar ă și mod de rulare similar.
Fiecare aplicație are 3 nivele pe care opereaz ă, nivele ce urmează să le descriem în
urmatoarele 2 subcapitole, Setup, Loop și main -ul propriu -zis.
28 3.2.1 Aplica ția modulului Intel Edis on
Aplica ția de pe modulul Intel Edison este scrisa folosind Python și este structurat ă pe 3
nivele.
Primul nivel, Setup , începe prin conectarea modulului la Internet, acest lucru se face automat
de către Edison prin intermediul sistemului de operare, Yocto Linux, acesta odat ă ce s-a
conectat la un hotspot Wi -Fi va memora informațiile de conectare și urmatoarea dat ă când
hotspotul este disponibil se va conecta singur f ără să fie nevoie de interven ția noastr ă prin
cod. Dupa conectarea la internet se incearc ă conectarea la serviciul Ubidots folosind un API
Key cu care ne autentific ăm pentru a putea avea acces la informațiile salvate pe server.
Se începe verificarea senzorilor și modulelor conectate la Edison prin mici ver ificări de tipul
„aprinderea led -urilor”, citirea informațiilor de la senzori. Acest pas este one -time-only în
momentul în care modulul și aplica ția sunt porni te, pentru a putea verifica dacă toate
conexiunile au fost realizate conform.
În acest pas de setup Edison citeste informațiile de la senzori sa facă un prim upload pe server
cu informațiile citite. Dupa ce toti pa șii au fost executa ți modulul urmează să intre în bucla
continu ă, urm ătorul nivel al acestuia, nivelul Loop.
În nivelul Loop aplicaț ia continu ă să citeasc ă periodic informațiile primite de la senzori, să le
proceseze în informații ce pot fii citite de că tre utilizatori și să le urce pe serverul Ubidots.
Totodat ă acesta interogheaz ă serverul pentru a vedea dac ă utilizatorul a trimis comenzi
folosind aplica ția mobil ă.
În ultimul nivel, nivelul Application modulul nostru Edison va procesa și executa comenzile
primite de la utilizator (aprinderea unui led) și pentru a ne ușura procesul de debug -ing dacă
este necesar și a avea un istoric cu toat e evenimentele ce au loc acesta le salvează sub formă
de text ce poate fii interpretat de utilizator / programator într-un fisier câ t și pe interfața
grafică pentru un live feed al modulul de lucru.
29 3.2.2 Aplicaț ia telefonului mobil
Aplic ația de pe telefonul mobil, numit ă în continuare S martHome este, la fel ca aplicaț ia
modulului Intel Edison, structurată pe 3 nivele de operare.
Primul nivel, Setup , începe cu o conectare / verificare a conexiuni la internet a telefonului
mobil pentru a putea accesa informații le salvate pe Ubidots. urmează apoi pasul de ini țiere a
conexiunii la server, pas car e se face concomitent cu o primă sincronizare cu datele aflate pe
server. SmartHome trimite un HTTP Request de tipul GET în care cere să i se returneze
ultimele valori urc ate pe server pentru toate variabil ele folosite de noi. Serverul răspunde
înapoi sub format de JSON care este procesat în interiorul libră riei aferente serviciului folosit
și noi avem acces direct la valoarea dorită . După ce acesti 2 pași foarte importanți sunt
executaț i cu succes informațiile sunt afișate pe interfaț a grafic ă sub o formă usoar ă de citit
pentru un utilizator normal. Apoi aplicaț ia intr ă în bucla continu ă.
În nivelul de Loop , al 2 -lea nivel, aplicaț ia co ntinuă să citească periodic informații le de pe
server și să le afișeze pe interfața grafică pentru utilizator, unde este cazul să lanseze
notificări că tre utilizator pentru a -l avertiza de anumite informații importante pentru acesta
(scurgeri de gaz, inc ălcări ale perimetrului).
În ultimul ni vel, Application , SmartHome preia comenzi de la utilizator și le transmite
serviciului Ubidots folosindu -se de HTTP Request de tipul POST.
30 3.3 Implementarea Aplicaț iilor
Aplicații le dezvoltate au fost gă zduite pe Bitbucket pentru a putea avea acces la informație
de pe orice calculator cu acces la internet și pentru a ne asigura integritatea datelor în caz de
defectare a calculatorului cu care am început dezvoltarea lor.
Figura 13 – Repository Bitbucket cu Aplicații le dezvoltate
În continuare vom detalia modul de implementare pentru fiecare dintre Aplicații le utilizate.
31 3.3.1 Aplicați a modulului Intel Edis on
Conectarea la internet, precum am precizat în subcapitolul anterior, pe modul se face one –
time-only folosind sistemul de operare de pe acesta urmâ nd ca apoi informațiile să fie stocate
în memoria internă a modulului pentru a putea fi i reutilizat la reconectare următoarea dată
când modulul intra în raza de acoperire a hotspot -ului.
Figura 14 – Configure Edison: WiFi Connection
Conexiunea se face prin introducerea num ârului de ordine în lista de SSID afiș ată de modul
urmănd apoi să ni se cear ă parola pentru a putea accesa re țeaua respectiv ă. Dup ă cum
spuneam, acest pas fiind one -time-only, nu este necesar să mai rul ăm comanda aceasta pentru
a ne connecta la acest hotspot urmatoarea dat ă când vom fii în aria de acoperire a lui.
32 Odat ă ce acest pas a fost î ndeplinit cu succes se poate trece la urmatoarea etap ă, rularea
aplicați ei folosind comanda: „ sudo python run.py ” din terminalul modulului.
În acel moment aplicați a noastră îș i începe partea de setup dup ă cum urmeaz ă:
Figura 15 – Inițializarea modulelor Edison
După cum se vede în Figura 1 5, main -ul Aplicați ei noastre începe prin a executa func ția
worker() care la râ ndul ei urmează să execute procedural init() -urile aferente fiec ârui modul
implementat de noi. Primul fiind cel de logs, modul care îl folosim pentru a afiș a informațiile
pe ecran.
Figura 16 – init logger din modulul logs
33 În figura 1 6 este prezentata intreaga procedura de init a modulului de logare a informațiilor ,
unde creă m un logger denumit „Edison” și îi setă m un nivel de logare.
Urmâ nd apoi să creăm un handler pentr u logger -ul în consol ă și un handler pentru logger -ul
în fișier.
Setăm formatarea dorită , în cazul acesta este de tipul [timp] – [nume logger] – [nivel
prioritate] – [mesajul propriu -zis]
Atribuim formatarea fiecă rui handler și asignă m handler -urile logger -urilor create de noi.
Figura 17 – init conexiune cu Ubidots
În figura 1 7 se observ ă procedura de instanț iere a conexiunii la serverul Ubidots, modul în
care aceasta se face e prin crearea unei variabile de tip Ap iClient cu parametru cheia unică
necesară pentru co nectarea la server. Dacă această parte este ok urmează să facem un push de
test al unei valori ce nu o folosim pe serverul nostru.
Toate acestea sunt în interiorul u nui bloc „try” p entru a putea prinde erorile apă rute în cazul
conectării la server sau a încercă rii de push a unei variabile.
Erorile apă rute în aceste situaț ii pot fii din cauza c onexiunii la internet, a utilizării unei chei
greșite pentr u conectare sau a unei chei pentru variabilă greșită .
34 Figura 18 – Init GPIO
În figura 1 8 prezentă m procedura de inițializare a mod ulului MRAA, modul care se ocupă de
controlul accesului la pinii digitali și analogi ai plăcuței de extensie Arduino atașată
modulului Edison.
Inițializare a se face prin verificarea versiunii librăriei mraa folosind getVersion(), dac ă
librăria nu este instalată vom primii inapoi un mesaj de eroare care ne va cere să instalăm
librăria necesară .
Figura 19 – Inițializare senzor de proximitate
In figura 1 9 prezentăm modul de inițializare a senzorului de proximitate, acest lucru se face
prin interogare a senzorului pentru a vedea dacă acesta returnează informaț ii, în mod normal
el va returna valoarea 0 deoarece nu ar trebuii să fie întrerupt, dupa cum se poate obs erva
utilizatorului i se cere să se asigure că senzorul nu este î ntrerupt în momentul verific ării.
Figura 20 – Inițializare / Citire senzor Gaz
35 Senzorul de gaz nu necesită o inițializare / calibrare în prealabil așa că tot ce vom face și aici
este doar să verificăm statusul librariei mraa, dacă este instalat ă sau nu. Citirea acestuia se
face folosind librăria GPIO creată de noi ce urmează a fii prezentată mai apoi.
Senzorul este destul de simplist și ne returneaza valori digitale în funcție de detecț ia acestuia,
0 dacă totul este în regulă , 1 dacă detectează fum sau gaze inflamabile.
Figura 21 – loop-ul executat în interiorul Aplicați ei
În pasul de loop aplicați a începe prin citirea temperaturii de la senzori TMP 36, rotunjirea
valorii și urcarea acesteia pe serverul ubidots.
Figura 22 – citire temperatură – uploadare pe ubidots
Figura 23 – citire temperatura de la senzor
36 În figura 23 este prezentat modul în care este citita și procesata temperatura de la senzorii
TMP36, la numar 2.
Se inițializează valoriile în care vom ț ine temperatura cu 0 . Facem o citire brută a valorilor
analogice de la pinii atribui ți senzorilor noș trii.
Aici începe puțin calcul matematic pentru a transforma valoarea citit ă de la senzor într-o
valoare ce o poate înț elege utilizatorul.
((citireBruta * ADC) – OFFSET_VOLTAJ)/10.0 + OFFSET_TEMPERATURA
Citirea brută este înmulțită cu valoarea ADC -ul atribuit pinilor analogi . În cazul modulului
nostru, A0 și A1 (pini folosiți pentru senzorii de temperatură ) au un ADC ce ajunge la o
valoare aproximativ ă de 4.19 V . Din rezul tatul aceste i înmul țirii scă dem offset -ul voltajului
citit din datasheet -ul senzorilor, valoarea este de 750 și împarț im totul la 10. Din rezultatul
obținut până acum facem o ultim ă sumă, adună m offset -ul temperaturii pentru senzorii
nostrii, valoare obț inută tot din datasheet -ul acestora, valoarea este de 25.
Rezultatul final este valoarea temperaturii în grade Celsius care o putem afiș a utilizatorului.
Figura 24 – Verificare senzor proximitate
Verificarea senzorului de proximitate se face citind de pe GPIO -ul afe rent acestuia valoarea
returnată de senzor. Datorită posibilelor pr obleme FALSE -POSITIVE ce pot apă rea în citirea
senzorului, fiind un senzor low -cost cu o performanță scăzută, verifică m dacă ultimele 5 citiri
au returnat aceeaș i valoare, 1 aferent „senzor acti vat” sau nu . În funcție de rezultatul acestei
citiri returnăm un status că tre aplicați a principală .
37 Figura 25 – logare informație în python
Logarea informaț iei se face folosind funcția logFile care în funcție de nivelul de prioritate va
apela modulul de logger crea t în partea de init cu prioritatea necesară (critical, error, warning,
info, debug). Priorități definite prin conventie de că tre noi în cadrul aplicați ei – acestea nu fac
decât să evidenț ieze anumite informații într-un fel față de celelalte și pot ajuta l a trierea
informațiilor prin schimbarea nivelului de logare.
Figura 26 – citirea informațiilor de pe Ubidots
În figura 2 6 este citirea informațiilor de pe serverul ubidots și parsarea acestora. Utilizatorul
poate să ceară de pe telefonul mobil ca modulul nostru să aprindă un led (mai multe
funcționalităț i pot fii implementate în viitoarele dezvoltă ri).
Prin co nventie comanda cmd este formată din [NR_LED][STATUS_LED]: spre exemplu
comanda „31” reprezintă LED -ul cu numă rul 3 trecut în starea 1 (prin co nvenț ie 1-HIGH, 0-
LOW) iar com anda „20” reprezinta LED -ul numă rul 2 trecut în starea 0.
38 Figura 27 – funcți i de modificare a starii led -urilor
Funcțiile de modificare a stă rii led -urilor sunt a pelate primind ca parametru numă rul pinului
digital la care este conectat led-ul nostru ur mând la râ ndul lor să apelze funcția setGpio cu
parametrul numă rul pinului și starea în care se doreș te trecerea pinului (Low/High).
Figura 28 – led change
Figura 29 – Set / Read GPIO
În figura 2 9 se regasesc funcț iile de modificare a stă rii unui GPIO (setGpio) care definește o
variabilă gpio de tipul mraa.Gpio([numarul pinului]), modul în care se doreș te utilizarea
acestuia (Input / Output) și pentru cazul de Output, starea în care se dore ște trecerea (Low /
High)
Funcț ia de citire a unui GPIO este similară cu cea de setare, do ar că aici vom definii modul
de utilizare ca și Input și într-o variabilă status vom salva informația returnată de funcția
read() care ne va citii informația returnată de acel GPIO.
39 Figura 30 – citire pin analog
Citirea pinilor analogi se face pu tin mai simplu decât în cazul unui pin digital, def inim pinul
ce dorim sa -l utiliză m și prin simpla apelare a funcție i read() vom primii informația ce este
transmisă prin acel pin.
Pentru anumite utilizări se poate defi nii și numă rul de biti ce se doresc a fii citiți pr in apelarea
funcției setBit(x) unde x este numărul de biti ce dorim să -l citim.
40 3.3.2 Aplicați a telefonului mobil
La fel ca aplicați a de pe Edison, aplicați a de pe telefonul mobil necesită conectare la int ernet,
acest lucru se face de că tre utilizator prin int ermed iul conexiunilor de date oferite de reț eaua
de telefonie mobil ă sau conecatarea la un hotspot Wi -Fi.
În momentul în care aplicați a este deschis ă și încearcă să se conecteze la serverul Ubidots,
întâi verifică starea conexiunii la internet precum este prezentat în Figura 31 .
Figura 31 – Verificare conexiune la Wifi
Se verifică dacă există o conexiun e la Wi -Fi (preferam Wi -Fi mai mult decâ t datele mobile
deoarece acestea pot provoca cost suplimentar, totusi aplicați a noastră nu consuma foarte
mult tr afic de date alocat de că tre operatorul de telefonie mobil ă). Dacă exista conexiune se
apelează funcția de refresh(); care începe să aduc ă informațiile de pe server. Dacă nu există
conexiune la Wi -Fi se trece la verificarea existenț ei unei conexiuni la dat e mobile, pre zentată
în figura 3 2.
Figura 32 – funcție de verificare a conexiunii la date mobile
Dacă exista conexiune la date mobile se va apela funcția de refresh(); dacă nu, utilizatorului i
se cere să se conecteze la internet pentru a putea face sincronizarea datelor.
Dacă acest pas este executat cu succes, funcția refresh() începe să aduca informatiile.
41 Figura 33 – funcț ie refresh
Aceasta la randul ei apeleaza funcți ile separa te de refresh pentru Temperatură , Senzorii
Biometrici (senzorul de Gaz), și senzorul de Proximitate.
Figura 34 – Refresh biometrics – funcție refresh status senzor Gaz
42 Figura 35 – Refresh temp – funcție refresh temperatură
Figura 36 – Refresh proximity – funcție refresh status senzor de proximitate
43 Figurile 3 4, 35, 36 prezintă modul de funcționare al funcți ilor de refresh pentru senzo rii
nostri , acestea rulează pe un t hread separat de cel al interfeț ei gr afice pentru a nu bloca
interfaț a în timp ce asteaptă dupa informații de la server și pentru a nu -i creea utilizatorului
impresia ca aplicați a s-a blocat.
Acestea se excută periodic în funcție de prioritatea acestora: senzorii de proximitate și gaz
sunt cititi odată la 10 secunde, pe când senzorul de temperatură este citit la 120 secunde.
Acest lucru se face pentru a nu creea trafic de date suplimentar și nedorit deoarece am
considera t că în cazul sistemului instal at într-o casă amplasată într-o zon ă cu relief și climă
normală , nu vor exista modific ări bruște de temperatură care să apară de la 1 minut la altul . În
schimb o scurgere de gaze sau o incălcare a proprietăț ii poate avea loc oricâ nd, de aceea
avem nevoie de o citire mai rapid ă și la un timp câ t mai sc urt pentru a ne asigura siguranț a.
Funcți ile de refresh pot să contin ă și un updateUI() care primeste datele ce se doresc a fii
afișate pe interfața grafică a utilizatorului, î ntregul proc es trebuie transferat pe threadul
principal al aplicați ei deoarece nu putem face un update pe main thread dintr -un thread
secundar.
Acest lucru se face prin introducerea funcți ilor de update în interiorul corpului funcție i
runOnUiThread(). Refresh ul mai sus mentionat la rândul sau apelează o funcție din corpul
clasei Ubidots care face un request că tre server pentru a ne returna informațiile care ne sunt
necesare.
Figura 37 – funcție de sincronizare a informațiilor pentru senzorul de Gaz
44 Figura 38 – funcție de sincronizare a informațiilor pentru senzorul de Proximitate
Figura 39 – funcție de sincronizare a temperaturii
Funcți ile de sincronizare sunt apelate periodic, fiecare pe threadul ei separat, și citesc valorile
de la senzori pentru a putea fii afișate pe interfața grafică .
În cazul în care apar situatii de urgență , să zicem o scurgere de gaz sau o incălcare a
proximitatii, utilizatorul poate fii avertizat în 2 feluri: Afisarea unui mesaj de eroare + vibratii
în interiorul Aplicați ei și afisarea unei notificari în bara de sistem a telefonului.
45 Figura 40 – avertizarea utilizatorului în caz de situatii de urgență
In aplicați e utilizatorul poate să și trimita comenzi catre sistem, aprinderea / stingerea
luminilor din cas ă, prin intermediul funcție i postData apelat ă în momentul în care modific ă
starea unuia dintre switch -urile aferente fiecarui LED.
Figura 41 – Post data – funcție pentru trimiterea comenzilor catre Edison
46 Funcți a ruleaz ă pe un thread separat deoarece nu ne permitem să blocăm aplicați a în
momentul în care utilizatorul dore ște să trimita o co mand ă către Edison. Trimiterea comenzii
se face din Clasa Ubidots prin intermediul funcție i sendCmd()
Figura 42 – sendCmd – funcție de post a datelor pe Ubidots
47 Logarea de informații în cadrul aplicați ei se face în 2 moduri: în monitorul android, log -uri
ce pot fii vizualizate folosind Android Debug Bridge (adb) și într-un list box în partea de jos
a aplicați ei care ne va afiș a informații de bază legate de statusul casei și ce se întâmplă în
cadrul aplicați ei cand utilizatorul interactioneaza cu aceasta.
Figura 43 – logInfo – funcție de afi șare / logare a datelor în Aplicați a mobila
48 3.4 Unelte folosite pentru dezvoltarea Software
3.4.1 Pycharm
PyCharm este un mediu integrat de dezvoltare (IDE) utilizat în programarea calculatoarelor,
în special pentru limba Python. Acesta este dezvo ltat de compania cehă JetBrains. Acesta
oferă analiza codului, un debugger grafic, un tester integrat de unități, integrarea cu sistemele
de control al versiunilor (VCSes) și susține dezvoltarea web cu Django. [16]
PyCharm este cross -platform, cu versiuni Windows, MacOS și Linux. Ediția comunitară este
lansată sub licența Apache, și există, de asemenea, o ediție profesională lansată sub licență
proprietară – acest lucru are caracteristici suplimentare.
Caracteristici
Asistență și analiză de codificare, cu finalizarea codului, evidențierea sintaxei și
erorilor, integrarea linterului și remedierile rapide
Navigarea pe proiecte și coduri: vizualizări de proiect specializate, vizualizări de
structuri de fișiere și sărituri rapide între fișiere, clase, metode și utilizări
Python Refactoring: include redenumirea, extrageți metoda, introduceți variabila,
introduceți constantă, trageți în sus, împingeți în jos și altele
Sprijin pentru cadrele web: Django, web 2py și Flask
Debugger integrat Python
Testarea unitară integrată, acoperind codul de linie
Google App Engine Python Dezvoltare
Integrarea controlului versiunii: interfață unificată pentru utilizatorii Mercurial, Git,
Subversion, Perforce și CVS cu liste de schimbare și îmbinare
Acesta concurează în principal cu o serie de alte IDE orientate spre Python, inclusiv
cu PyDev al Eclipse, cu IDE -ul Komodo mai concentrat.
49 Instalarea IDE PyCharm
Când porniți PyCharm pentru prima dată, veți fi întrebaț i dacă aveț i o versiune anterioară și
ce să faceți cu setările.:
Figura 44 – setup initial PyCharm
Apoi suntem întrebaț i cum dorim să fie maparea hotkeys -urilor și tipul interfeț ei care dorim
să-l folosim în continuare.
Figura 45 – Mapare chei, tema IDE, culor și font-uri
Pycharm are catev a keymaps predefinite, similare cu c ele din Eclipse, Visual Studio , pentru
programatorii care au experienta cu acele IDE -uri și doresc să foloseasca acelasi sistem de a
lucra și în acest mediu de dezvoltare (pentru a putea executa anumite task -uri mai rapi d)
50 Dupa ce toate acestea au fost facute, vom vedea fereastra principala în care ni se cere să
creăm un nou proiect, să deschidem un proiect existent sau să facem Check -out folosind
sistemul de versionare disponibil.
Figura 46 – welcome screen pycharm
51 Pentru creear ea unui nou proiect vom da click pe prima op țiune și vom completa c âmpurile
cerute de câ tre interfața grafică .
Figura 47 – creare proiect nou PyCharm
Apoi putem începe să adăugăm primele clase din cadrul proiectului ce urmează sa-l
dezvolt ăm.
Figura 48 – Adaugarea unei noi clase în PyCharm
52 Mod de utilizare
După cum se dovedește, interfața IDE orientată spre proiect a PyCharm este bine organizată
și ușor de înțeles:
Figura 49 – interfata utilizator PyCharm
1. Bara de instrumente oferă acces rapid la anumite acțiuni. Aceste acțiuni sunt de
asemenea disponibile în meniu, prin comenzi rapide de la tastatură și prin căutări de
acțiuni.
2. Ferestrele de unelte legate în partea stângă, dreaptă și inferioară oferă o interfață
bogată în funcțiile IDE, cum ar fi proiectele, structura, bazele de date, f erestrele de
rulare și multe altele. Aceste pictograme ale ferestrei de instrumente pot fi organizate
în moduri bogate.
3. Fereastra instrumentului de proiect navighează resursele din interiorul și activele
externe legate de proiect.
4. Editorul oferă o interfaț ă tabulară pentru editarea fișierelor, a bazelor de date și a altor
elemente.
5. Jgheaburile din stânga și din dreapta oferă pliere, puncte de rupere și arată rezultatele
inspecțiilor.
6. Bara de stare oferă mai mulți indicatori și operațiuni.
53 3.4.2 Android Studio
Android Studio este mediul oficial de dezvoltare integrat (IDE) pentru platforma Android. A
fost anunțat la 16 mai 2013 la conferința Google I / O.
Android Studio a fost în faza de previzualizare a accesului timpuriu începând de la versiunea
0.1 în mai 2013 , apoi a intrat în etapa beta pornind de la versiunea 0.8, care a fost lansată în
iunie 2014. Prima construcție stabilă a fost lansată în decembrie 2014, începând cu versiunea
1.0.
Bazat pe software -ul IntelliJ IDEA al lui JetBrains, Android Studio este co nceput special
pentru dezvoltarea Android. Este disponibil pentru descărcare pe Windows, MacOS și Linux
și a înlocuit Eclipse Android Development Tools (ADT) ca IDE primar Google pentru
dezvoltarea de aplicații native Android. [17]
Caracteristici
Funcțiile noi vor fi lansate cu fiecare versiune de Android Studio. Următoarele
caracteristici sunt furnizate în versiunea stabilă actuală:
Construcția bazată pe gradul de sprijin
Refactorizări specifice pentru Android și remedierile rapide
Instrumente pentru scame pentru a prinde performanța, gradul de utilizare,
compatibilitatea versiunilor și alte probleme
Integrarea ProGuard și capabilitățile de semnare a aplicațiilor
Șabloane bazate pe șabloane pentru a cre a desene și componente comune Android
Un editor de layout bogat, care permite utilizatorilor să tragă și să abandoneze
componentele UI, opțiunea de a previzualiza layout -urile pe mai multe configurații de
ecran
Suport pentru crearea aplicațiilor Android Wear
Suport încorporat pentru platforma Google Cloud Platform, care permite integrarea cu
Firebase Cloud Messaging ("Google Cloud Messaging") și Google App Engine
Dispozitiv virtual Android (Emulator) pentru rularea și depanarea aplicațiilor
54 Mod de instal are
Pentru a instala Android Studio este necesar să descărcăm un kit de instalare de pe site -ul de
developers al Android, în momentul în care rul ăm kit -ul va trebuii să trecem prin urm ătoarele
etape.
Figura 50 – deschiderea kit -ului de instalare
Selectam loca ția de instalare a mediului de dezvoltare Android Studio.
Figura 51 – selectarea pachetelor ce dorim să fie instalate
55 Suntem intreba ți dacă suntem de acord cu termenii și condi țiile de utilizare al software -ului.
Figura 52 – termeni și condi ții de utilizare
Select ăm loca ția de insta lare pentru Android Studio și Android SDK, în mod normal loca țiile
default sunt cele mai ok pentru a fii folosite.
Figura 53 – setarea loca ției de instalare a Android Studio și Android SDK
56 Alegem dacă dorim sau nu să ne fie creat ă o intrare în meniul de Start, aceast ă fereastr ă este
doar pentru utilizatorii de Windows, în cazul utilizatorilor de Ubuntu nu va fii ne voie de a
alege acest lucru, se tarea se face mai t ârziu din cadrul aplicați ei.
Figura 54 – Alegem unde dorim să ni se creeze shortcut în meniul de Start (valabil doar pe Windows)
Gata, am terminat, Android Studio este instalat și putem s ă-l deschidem o prim ă dată.
Figura 55 – finalizarea instalarii
57 În prima rulare suntem intrebati dacă avem setari existente pentru Android Studio din cadrul
unei versiuni mai vechi care a f ost instalat ă.
Figura 56 – prima rulare a Android Studio
Am terminat și cu ultima setare, acum putem să începe m să ne creă m proiectul și să
dezvolt ăm aplicați a care o dorim.
Figura 57 – fereastra principal ă de Welcome
58
Mod de Utilizare
Figura 58 – Interfata Android Studio
1. Bara de instrumente vă permite să efectuați o gamă largă de acțiuni, inclusiv difuzarea
aplicației și lansarea de instrumente Android.
2. Bara de navigare vă ajută să navigați prin proiectul dvs. și să deschideți fișierele pentru
editare. Acesta oferă o vedere mai co mpactă a structurii vizibile în fereastra Project.
3. Fereastra editorului este locul în care creați și modificați codul . În funcție de tipul de fișier
curent, editorul se poate schimba. De exemplu, când vizualizați un fișier de aspect, editorul
afișează Edit orul de Layout.
4. Bara de ferestre a instrumentului rulează în afara ferestrei IDE și conține butoanele care vă
permit să extindeți sau să restrângeți ferestrele individuale ale uneltelor.
5. Ferestrele de instrumente vă oferă acces la anumite sarcini, cum ar f i gestionarea
proiectelor, căutarea, controlul versiunilor și multe altele. Le puteți extinde și le puteți
restrânge.
6. Bara de stare afișează starea proiectului dvs. și IDE în sine, precum și orice avertismente
sau mesaje.
59 3.4.3 Bitbucket
Bitbucket este un serv iciu de găzduire pe bază de web, care este proprietatea Atlassian,
folosit pentru coduri sursă și proiecte de dezvoltare care folosesc sistemele de control
revizuirii Mercurial (de la lansare) sau Git (din octombrie 2011). Bitbucket oferă atât planuri
come rciale, cât și conturi gratuite. Acesta oferă conturi gratuite cu un număr nelimitat de
depozite private (care pot avea până la cinci utilizatori în cazul conturilor gratuite) din
septembrie 2010. Bitbucket se integrează cu alte aplicații Atlassian precum Jira, HipChat,
Confluence și Bamboo. [18]
Este similar cu GitHub, care utilizează în primul rând Git. Bitbucket să adaptat în mod
tradițional pentru a ajuta dezvoltatorii profesioniști cu coduri de pro prietate privată, mai ales
că au fost achiziționați de Atlassian în 2010 . În septembrie 2016, Bitbucket a anunțat că a
ajuns la 5 milioane de dezvoltatori și 900.000 de echipe pe platforma sa. Bitbucket are 3
modele de implementare: Cloud, Bitbucket Server și Data Center.
Într-un post din 2008 pe blog, Bruce Eckel a comparat Bitbucket favorabil cu Launchpad,
care folosește Bazaar.
Bitbucket este cea mai mare parte folosit pentru cod și cod de revizuire. Bitbucket acceptă
următoarele caracteristici:
Trageți cereri cu recenzie de cod și comentarii
Conducte Bitbucket
Verificarea în doi pași și verificarea în două etape
Git mare de stocare a fișierelor (LFS)
Documentație, inclusiv fișiere README redactate automat într -o varietate de formate
de fișier asemănătoar e Markdown
Site-uri statice găzduite pe Bitbucket Cloud: Site -urile web statice au domeniul
bitbucket.io în URL -ul lor
Suplimente și integrare
REST API -uri pentru a construi aplicații de terță parte care pot utiliza orice limbaj de
dezvoltare
Fragmente care permit dezvoltatorilor să partajeze segmente de cod sau fișiere
Smart Mirroring
60 Mod de Utilizare
Inițial, repository -ul pe care îl creați în Bitbucket va fi gol fără niciun cod în el. E în regulă
deoarece veți începe să adăugați niște fișiere în curâ nd. Acest repository Bitbucket va fi
repository -ul central al fișierelor, ceea ce înseamnă că alții pot accesa acel repository dacă le
este acordata permisiunea. După crearea unui repository , veți copia o versiune în sistemul
dvs. local, astfel încât să îl puteți actualiza dintr -un singur repo, apoi să transferați aceste
modificări în celălalt.
Figura 59 – creare repository nou pe Bitbucket
Dupa creare putem deja să il accesam și să exploram continutul acestuia.
Figura 60 – explorare repository
61 În momentul acesta repository -ul nostru este gol, noi totusi putem sa -l clonam pe calculatorul
nostru, adica sa -l clonam local pentru a putea începe să adaugam fisierele locale în acesta.
Figura 61 – clonare repository
Putem acum să ne facem primele commit -uri și să adăugăm fisierele pe Bitbucket .
Figura 62 – commit initial
Acum putem să verific ăm și sursele proiectului nostru.
Figura 63 – sursele proiectului
62 3.4.4 Ubuntu GNOME 17.04
GNOME este un mediu desktop gratuit pentru sisteme compatibile UNIX. Este software
(open source), sub licența liberă (GPL) (anumite biblioteci și toolkitul GTK+ sunt sub licența
LGPL). Este mediul standard de lucru pe un număr mare de distribuții Linux (Ubuntu,
Fedora, Red Hat etc.) și pe sistemele SUN Solaris . În plus, poate fi instalat pe aproape toate
distribuțiile Linux, pe sisteme BSD, etc.
GNOME a apărut în 1997, autorul inițial fiind Miguel de Icaza. Proiectul a fost început ca
urmare a utilizării de către KDE a toolkit -ului Qt, care la vremea respectivă nu era open
source – ducând la limitari asupra a ceea putea fi programat pentru KDE, și l a posibilitatea ca,
în cazul în care Qt își schimbă strategia, KDE să nu mai poată fi folosit legal. Acest lucru nu
mai este o problemă, Qt este software liber astăzi, dar atât Gnome cât și KDE continuă a se
dezvolta, fiecare proiect având obictive diferit e. KDE și GNOME colaborează în cadrul
proiectului Free Desktop, pentru a asigura standardizarea în sisteme Unix/Linux. [19]
Ubuntu Gnome 17.04 este versiunea de sistem de operare cu care am lucrat pentru a dezvolta
în parte fiecare dintre Aplicații le prezentate în cadrul acestui proiect.
63 4 Concluzii
Concluziile care le putem trage legat de implementarea unui astfel de sistem sunt faptul c ă
din punct de vedere financiar, costul implement ării și întreținerii poate să creasc ă direct
proporțional cu numărul de sarcini ce pot fii î ndeplinite de c ătre sistem deoarece acesta poate
necesita senzori suplimentari, componente mai performante, pl ăcute de extensie suplimentare.
Un plan de dezvoltare continu ă pentr u acest sistem ar fii implementarea unor funcționa lități
ce includ captarea de imagini live și distribuirea acestora c ătre telefonul mobil al
proprietarului (live stream) pentru a putea vedea în timp real p e camere de supraveghere ce se
întâmplă acasă, cu posibilitatea de a integra un algoritm de recunoa ștere facial ă.
La final de zi, multe persoane si -ar dori să aibă un astfel de sistem implementat în casa lor,
pentru a le putea asigura siguranț a, un grad crescut de comoditate, și poate pentru a le face
viața mai ușoară . În viitorul ce va veni vor apă rea to t mai multe astfel de implementări, una
mai performantă ca cealaltă , acest lucru este inevitabil datorit ă avans ării tehnologice cu o
viteză așa alert ă ca în prezent.
64 5 Bibliografie
[1] [Online]. https://ro.wikipedia.org/wiki/Domotic%C4%83
[2] [Online]. https://ro.wikipedia.org/wiki/Sistem_%C3%AEnglobat
[3] [Online]. https://ro.wikipedia.org/wiki/Arduino
[4] [Online]. https://en.wikipedia.org/wiki/File:Intel_Edison_PCB_Block_Diagram.png
[5] [Online]. https://en.wikipedia.org/wiki/File:Intel_Edison_Arduino_Photo.gif
[6] [Online]. https://cdn.sparkfun.com//assets/parts/4/1/8/8/10988 -01.jpg
[7] [Online]. https://alselectro.files.wordpress.com /2011/09/image11.png
[8] [Online]. https://ro.wikipedia.org/wiki/Android_(sistem_de_operare)
[9] [Online]. https://goo.gl/9BYYxw
[10] [Online ]. https://ro.wikipedia.org/wiki/Android_(sistem_de_operare)
[11] [Online]. https://goo.gl/HS4nzW
[12] [Online]. https://pbs.twimg.com/media/B -rcaL-XEAAbcer.png
[13] [Online]. https://goo.gl/HJoQyt
[14] [Online]. https://ro.wikipedia.org/wiki/Python
[15] [Online]. https://ro.wikipedia.org/wiki/Java_(limbaj_de_programare)
[16] [Online]. https://en.wikipedia.org/wiki/PyCharm
[17] [Online]. https://en.wikipedia.org/wiki/Android_Studio
[18] [Online]. https://en.wikipedia.org/wiki/Bitbucket
[19] [Online]. https://ro.wikipedia.org/wiki/GNOME
65 [20] [Online]. https://stackoverflow.com/
[21] [Online]. https://bitbucket.org/
[22] [Online]. https://software.intel.com/en -us/iot/hardware/edison
[23] [Online]. https://developer.android.com/studio/index.html
[24] [Online]. https://ubidots.com/
[25] [Online]. https://ubuntugnome.org/
[26] [Online]. https://communities.intel.com/community/tech/edison
[27] [Online]. https://www.yoctoproject.org/
[28] [Online]. https://www.jetbrains.com/pycharm/
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: Zamfir George – Mădă lin [620672] (ID: 620672)
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.
