DOMENIUL: INGINERIE ELECTRONICĂ, TELECOMUNICAȚII ȘI TEHNOLOGII INFORMAȚIONALE PROGRAMUL DE STUDIU: REȚELE ȘI SOFTWARE DE TELECOMUNICAȚII FORMA DE… [632096]
UNIVERSITATEA DIN ORADEA
FACULTATEA DE INGINERIE ELECTRICĂ ȘI
TEHNOLOGIA INFORMAȚIEI
DOMENIUL: INGINERIE ELECTRONICĂ, TELECOMUNICAȚII
ȘI TEHNOLOGII INFORMAȚIONALE
PROGRAMUL DE STUDIU: REȚELE ȘI SOFTWARE DE TELECOMUNICAȚII
FORMA DE ÎNVĂȚĂMÂNT: ZI
PROIECT DE DIPLOMĂ
COORDONATOR ȘTIINȚIFIC
Ș.l.dr.ing.ȚEPELEA LAVINIU
ABSOLVENT: [anonimizat]
2016
Model from Pitis AttilaNot for internet
UNIVERSITATEA DIN ORADEA
FACULTATEA DE INGINERIE ELECTRICĂ ȘI
TEHNOLOGIA INFORMAȚIEI
DOMENIUL: INGINERIE ELECTRONICĂ, TELEC OMUNICAȚII
ȘI TEHNOLOGII INFORMAȚIONALE
PROGRAMUL DE STUDIU: REȚELE ȘI SOFTWARE DE TELECOMUNICAȚII
FORMA DE ÎNVĂȚĂMÂNT: ZI
STAȚIE METEO UTILIZÂND
PLATFORMA ARDUINO
COORDONATOR ȘTIINȚIFIC
Ș.l.dr.ing.ȚEPELEA LAVINIU
ABSOLVENT: [anonimizat]
2016
Model from Pitis AttilaNot for internet
Cuprins
Cuprins………………………….. ………………………….. ………………………….. ………………………. 3
Introducere ………………………….. ………………………….. ………………………….. …………………. 4
Capitolul 1. Prezentare Arduino ………………………….. ………………………….. ………………. 5
1.1. Prezentare generală Arduino ………………………….. ………………………….. ……………… 5
1.2. Ce este Arduino? ………………………….. ………………………….. ………………………….. ….5
1.3. De ce Arduino? ………………………….. ………………………….. ………………………….. ……6
1.4. Instalare mediu de programare Arduino ………………………….. ………………………….. 9
1.4 Configurarea mediului Arduino IDE ………………………….. ………………………….. ….11
Capitolul 2. Prezentare A ndroid………………………….. ………………………….. …………….. 15
2.1. Ce este Android -ul?………………………….. ………………………….. ……………………….. 15
2.2. Istoricul platformei Android ………………………….. ………………………….. ……………. 16
2.3. Platforma Android ………………………….. ………………………….. …………………………. 16
2.4. Ce este un SDK? ………………………….. ………………………….. ………………………….. ..18
2.5. Securitate și confidențialitate ………………………….. ………………………….. …………… 18
2.6. Android -ul din punctul de vedere al clien ților………………………….. ………………… 19
Capitolul 3. Senzori utiliza ți în proiect ………………………….. ………………………….. …….20
3.1. Prezentare generală a senzorilor ………………………….. ………………………….. ……….20
3.2. Senzorul digital de presiune ………………………….. ………………………….. …………….. 21
3.3. Senzorul PIR ………………………….. ………………………….. ………………………….. ……..25
3.4. Ecran LCD cu interfa ță I2C………………………….. ………………………….. …………….. 27
3.5. Senzorul de umiditate ………………………….. ………………………….. …………………….. 28
3.6. Module de tran smisieși recepție ………………………….. ………………………….. ………28
3.7. Modulul bluetooth ………………………….. ………………………….. ………………………….. 30
3.7.2 Descriere modul bluetooth ………………………….. ………………………….. …………….. 30
Capitolul 4. Descriere program Sta ție Meteo ………………………….. ……………………….. 32
4.1. Programul de transmisie a datelor ………………………….. ………………………….. …….32
4.2. Programul de re cepție date………………………….. ………………………….. ……………… 33
4.3. Programul Android ………………………….. ………………………….. ………………………… 34
Concluzii ………………………….. ………………………….. ………………………….. …………………… 35
Anexă………………………….. ………………………….. ………………………….. ………………………… 36
Bibliografie ………………………….. ………………………….. ………………………….. ……………….. 52
Model from Pitis AttilaNot for internet
4Introducere
Înaceastă lucrare delicențăesteprezentatăoStațieMeteorealizată cuajutorul
platformei Arduino , a unor senzori și a unui telef on mobil utilizând sistemul de operare
Android. Stația Meteo afișeaz ă informa ții despre temperatur ă, umiditateși presiune
atmosferică și este compus ă dintr-un emițătorși un receptor care comunic ă datele între ele.
Aceste informa ții sunt preluate de la d oisenzorispecializa ți,senzorul de umiditate și
temperatură DHT11 șisenzorul barometric BMP085. Informa țiileastfelobținute se pot citipe
afișajul LCD cu patru rânduri șiîn plus sunt trimise prin tehnologie bluetooth către alte
dispozitive care suportă acest mod de comunica ție.
Emițătorul sta ției meteo, compus din mai multe module interconectate, se poate monta
în mediul înconjurător într -o incintă de protec ție de genul celei folosite în meteorologie.
Receptorul este situat în interiorul camerei șiesteși el compus din mai multe module
interconectate. Datele sunt transmise între emi țătorși receptor prin unde radio pe frecvența de
433MHz. Distanța întreceledouă module nu poatefi mai mare de 500 metri.
Receptorul afi șează informa țiile primite pe L CD(Liquid Crystal Display) , dar lumina
de fundal pentru afi șaj nu este activat ă decât în prezen ța într-o anumită rază a unei persoane ,
detectată de un modul PIR. Astfel se mic șorează consumul de energie al montajului pentru
eventualitatea utilizării unei surse de energie portabile de genul bateriilor . Toate informa țiile
sunt transmise prin bluetooth și către telefonul mobil, unde cu ajutorul unei aplica ții android
special concepute, informa țiile meteo pot fi citite în orice moment.
Model from Pitis AttilaNot for internet
5Capitolul 1.Prezentare Arduino
1.1.Prezentare generală Arduino
Arduino a fost creat de studentul columbian Hernando Ba rragan care a dezvoltat
plăcuța de cablaj ca proiect al tezei sale de master în 2004. Proiectul s-a născut la Institutul
Ivrae Design de interacț iune din Italia ca un instrument simplu pentru realizarea de prototipuri
rapide care vizează studenți fără un fundal în electronică și programare. Placa Arduino ,după
ce a ajuns la o comunitate mai largă ,a început să se schimbe pentru a seadapta nevoilor și
provocărilor. Diversitatea ofertei sale este mare, de laplăcide opt biți la produse pentru In –
Outpentru diverse aplicații. Echipa de bază inițială Arduino a fost alcătuit ădin Massimo
Banzi, David Cuartielles, Tom Igoe, Gianluca Martino și David Me llis. Numele Arduino
provine de la barul din Ivrae numit Arduin Ivrae care a fost regele al Italiei de la 1002 până la
1014. În urma finalizării platformei pe o plăcu ță de cablaj (versiune mai ușoară, costuri mai
mici),diferite variante au fost create șipuse la dispozi ția comunit ății open-source[6].
1.2.Ce este Arduino?
Arduino este o platformă open -source bazată pe software si hardware, ușor de utilizat.
Placa Arduino este o platformă de dimensiune mică , de6.8 cm X 5.3 cm, care este varianta
cea mai d es întâlnită și este capabilă să citească informațiidin mediul înconjurător printr -o
serie de senzori pentrua efectua acțiuni asupra mediul ui la intrare. De exemplu, lumina pe un
senzor, un deget pe un buton și poate lao ieșiresă activeze un motor sau servomotor, să
pornească un LED sau să publice informații on-line[1]. Procesorul folose ște un cod scris
foarte similar cu limbajul de programare C++. Se poate spune că putem comanda prin tr-un
set de instrucțiuni bazate pe conexiuni. De -a lungul anilor Ar duino a fost creierul pentru mii
de proiecte, de la obiecte de zi cu zi la instrumente științifice complexe. O comunitate la nivel
mondial a factorilor de decizie s-a adunat în jurul acestei platforme open-source,care pot fi de
mare ajutor pentru studenți ipasionați de programare, pentru începători, pentru programatori
și nu în ultimul rând pentru profesioniști. Toate plăcile Arduino sunt complet open -source
ceeace înseamnă că utilizatorii au posibilitatea să construiască independent și să le adapteze
lanevoile specifice. Ce este foarte interesant este ecosistemul extrem de bine dezvoltat în
jurul lui Arduino, vorbind aicidespre comunitate aactivă cât și despre dispozitivele create
special pentru Arduino. Software –ul Arduino este de asemenea open -source, care este și în
Model from Pitis AttilaNot for internet
6prezent în creștere prin contribuțiile utilizatorilor din întreaga lume. În continuare vom
enumera câ teva exemple de senzori folosi țiîn ziua de astăzi:
senzor de distanță (poate măsura de la câțiva centimetri până la opt –nouă
metri)
senzor de sunet
senzor de câmp electromagnetic
senzorde flux lichid ( senzor asemănător se folose ștela pompele de benzină)
senzorde temperatură
senzor de umiditate
Pentru conectivitate există componente capabile care conectează Arduino la rețeaua
Ethernetpentru posibilitatea comunicării informații lorprin internet cu ajutorul componentelor
pentru rețea wireless sau radio. Arduino ,prin dispozitive GSM este capabil să trimită sau să
recepționeze SMS -uri. Prin conectori Bluetooth Arduino se poate conecta cu telefoane mobile
sau calculatoare portabile. Pentru posibilitatea afișăriiinformațiil orpreluate de la senzori
există ecrane LCD pentru Arduino, de la cele mai simple LCD -uri cu 16 caractere până la
LCD-uri grafice.
1.3. De ce Arduino?
Datorităexperiențelorde utilizare simplă și accesibilă, Arduino erafolosit în diferite
proiecte și aplicații [8]. Partea de software este ușor de utilizat pentru începători, dar destul de
flexibilăpentru utilizatorii avansați. Programul Arduino se poate rula pe Mac, Win dows și
Linux. Cadrele didactice și elevii îlfolosesc cu plăcere pentru a construi instrumente
științifice ,pentru a dovedi principii de fizică și de chimie sau pentru a începe programarea.
Muzicienii îlfolosesc pentru a experimenta noi instrumente muzic ale.Pentru cei care doresc
săînvețelucruri noi Arduino este o cheie foarte importantă. Oricine poate începe o meșterire
urmând instrucțiunile unui kit sau schimbarea ideilor cu alți membri ai comunității Arduino
prin diferite forumuri. Există mai multe microcontrolere si platforme de microcontroler
disponibile pentru calculul fizic, de exemplu NETMEDIA lui BX -24, Phidgets și multe altele.
Arduino simplifică procesul de lucru cu microcontrolere, dar oferă și avantaje pentru toți
amatoriisau profesori iinteresați de alte sisteme. Plăcile Arduino sunt relativ ieftine față de
alte platforme de microcontroler. Cea mai ieftină placăArduino se poate asambla manual.
Soft-ul Arduino rulează pe sistemele de operare Windows, Linux și Mac. Cele mai multe
Model from Pitis AttilaNot for internet
7sisteme cu microcontrolere sunt limitate la Windows. Arduino are o serie de variante de
platforme ce au diferite capabilități și dimensiuni:
a)Arduino Duemilanove (6.8 cm X 5.3 cm)
b)Arduino Mega (10.16 cm X 5.3 cm)
c)Arduino Nano (1.8 cm X 4.5 cm)
1.3.1. Arduino Nano
Tensiune de lucru (nivel logic) 5V
Tensiune de intrare recomandat ă7–12V
Tensiune de intrare limită 6–20V
Pini digitali I/O 14
Pini de intrare analogici 8
Curent Continuu pe pinul I/O 40 mA
Memorie flash 32KB
SRAM 2 KB
EEPROM 1 KB
Ceas 16 MHz
Lungime 45 mm
Lățime 18 mm
Greutate 5 g
Tabel 1.SpecificațiiplacăArduinoNano
Model from Pitis AttilaNot for internet
8
Fig. 1.1 Placa Arduino Nano
Arduino Na no este o placă mică, completă șiunbreadboard prietenos bazat pe
Atmega328 (Arduino Nano 3.0) [9]. Are aproximativ ace eași funcționalitate a Arduino
Duemilanove, dar într -un alt pachet. Diferența între cele două plăci este că îi lipsește
mufa de alimentare de curent continuu, este alimentat ăprin cablu USB Mini -B în loc
de unul standard. Placa Arduino Nano a fost proiecta tăși produs ăde Gravitech.
Arduino Nano poate fi alimentat ăcu o tensiune între 6 –20V prin tr-osursă de
alimentare externă (PIN 30) sau cu 5V stabilizat de la osursă de alimentare externă
(PIN 27). Sursa de alimentare este selectată automat la cea mai mare sursă de tensiune.
Atmega328 are o memorie flash de 32KB pentru stocare de cod, din care 2 KB este
utilizatpentru bootloader. Pl aca Arduino are 14 pini digitali care se pot folosi ca
intrare sau ieșire și funcționează pe 5 volți. Fiecare pin poate pr imi sau oferi curent de
maxim 40 mA și auo rezistență de 20 –50 Kohm. Unii pini au funcții specializate
(fig. 1.1):
-Serial: pinul 0 (RX) și pinul 1 (TX). Sunt folosi țipentru a primi și trimite
date seriale TTL.
-Întreruperile externe (pinii 2 și 3) ;potfi configura țipentru a declanșa o
întrerupere la o valoare mică, o margine în creștere sau în scădere, o
modificare a valorii.
-PWM (pinii 3, 5, 6, 9, 10 și 11) ;aurolulde a furniza ieșire PWM de 8 biți
cu funcția analogWriter()
-pinul 13cuLED;atuncicând pinul este pe HIGH ,LED-ul se aprinde, iar
atunci când pinul este pe LOW se stinge.
Model from Pitis AttilaNot for internet
9Placa Nano are opt intrări analogice, fiecare oferă o rezoluție de 10 biți, adică 1024
valori. În m od implicit se măsoară de la masă la 5V. Unii pini au funcții specia lizate:
-I2C pinul A4 (SDA) și pinul A5 (SCL) este suportul pentru comunicare
I2C
-Pinul AREF este o tensiune de referință pentru intrare analogică
-Butonul de Reset este folosit pentru a scoate placa din situa ții de blocaj .
Arduino Nano se poate fi programa t cu ajutorul programului A rduino selectând Arduino
Diecimila, Duemilanove sau Nano,versiunea Atmega328 [3]. Versiunea Atmega328 dotat cu
un bootloader care permite încărcarea noului cod fără utilizarea unui programator hardware
extern, comunică folosind protocolul STK500. Înainte de încărcarea programului prin cablu l
USB care este conectat la calculator ,placa necesită o resetare fizică prin apăsarea butonului
reset.
1.4. Instalare mediu de programare Arduino
Pentru a putea transmite diferite comenzi pe p laca Arduino avem nevoie de Mediul de
dezvoltare Arduino IDE (Integrated Development Environment), care se poate descărca de pe
pagina oficială Arduino http://www.arduino.cc/en/main/software . Trebuie ale asăvarianta
potrivită de sistem de operare ,pentru a o instala pe calculator [2]. Se descarcă fi șierul, dup ă
care se despachetează. În figura 1.2 este prezentat ăfereastra cu structura sistemului de operare
MAC.
Fig. 1.2 Fereastra MAC
Model from Pitis AttilaNot for internet
10
Programele permit calculatorului să comunice cu placa Arduino. Fără aceste progrămele
instalate calculatorul nostru nu este capabil să comunice cu Arduino, astfel că este foarte
important să fie instalate înainte de a încerca să încărcăm orice cod. Structura fi șierelor pe un
calculator cu sistemul de operare Windows sau Linux va fi la fel, dar procesul de instalare
pentru Windows este puțin diferităfață de MAC .
1.3.1Instalarea pe Sistemul de operare MAC X
Instalareamediului Arduino pe sistemul de operare MACX este foar te ușoarăși simplă.
Se glisează Arduino.app la aplica țiiin dosarul Arduino și este și terminat ăinstalarea.
1.3.2Instalarea pe Sistemul de operare Windows
Cel mai simplu și ușor mod de a instala driverele Windows pentru placa Arduino este
conectarea p lăciila calculator șise așteaptăpentru ap arițiaferestrei”Found New Hardware
Wizard”. Este posibil să fie nevoie să se deschidă Device Manager -ul, așa cum este prezentat
în figura 1.3.
Fig. 1.3Fereastra Device Manager
Model from Pitis AttilaNot for internet
11
La fereastra “V ă rugăm să alege ți opțiunile de căutare și instalare”, se adaugă loca ția
dosarului driverelor pe care sistemul de operare va căuta driverul prin adăugarea la ”Căutare
locație pentru software ”, cum este prezentat în figura de mai jos.
Fig. 1.4 Fereastra cu loca ția driver-ului
Se face clic pe Next până când seajunge la ecranul final și apoise faceclic la
Terminare. Driverele sunt instalate șise finalizează instalarea mediului de programare .
1.4 Configurare a mediului Arduino IDE
După instalarea mediului de programare ArduinoIDE, acesta se poate porni . Pe toate
sistemele de operare Arduino IDE este un fi șier executabil în dosarul în car e a fost realizată
instalarea . Nu ar trebui muta texecutabil ulreal, deoarece este nevoie de directoru l hardware
pentru a func ționa perfect. Asta înseamn ăcăodată ce se porneșteIDE va trebui configurat
corect[4].Configurarea se referă în primul rând la placa pe care o utilizăm și portul serial la
careeste conectat ăplacaArduino. Pentru a selecta plac ase merge la Tools –Boardșise
selectează placafolosită,așacum este prezentat în fig .1.5.
Model from Pitis AttilaNot for internet
12
Fig. 1.5 Selectare placă
În continuare trebuie selectat portul pe care va opera placa. Pe sistemul de operare MAC
este opțiunea cu literele tty în ea, așa c um este prezentat în figura 1.6. Pe un calculator cu
sistemul de operare Windows porturile de comunicare vor avea cuvântul COM în titlu. Pentru
a putea determina portul corect la care este conectat ăplaca trebuie realizată o testare.
Fig. 1.6 Selectare port
Model from Pitis AttilaNot for internet
13După terminarea instalării plăcii Arduino este recomandat ătestarea plăcii cu un mic
program scris de firma Arduino. Un astfel de program este ”Blink”. Acest program face ca
LED-ul de pe placă să clipească. Pentru a realizapracticacest lucru, trebuieconectat led -ul cu
placaArduino. LED -ul este la pinul 13 sau se poate conecta un LED cu un rezistor de 5Kohm
așa cum este în figura 1.7. Folosim un rezistor pentru a preveni arderealed-ului, din moment
ce Arduino poate trimite mai mult curent decât u nLED folose ște uzual.
Fig. 1.7 Conectare LED
Dupărealizarea conexiunilor, se încarcă programul pe placă.Încărcarea se face după ce
IDE a terminat compi larea codului . Încărcarea coduluidurează câteva secunde și apoise
observă dacă LED-ul se aprind eși se stinge într-un ritm definit prin program .
Model from Pitis AttilaNot for internet
14
Exemplu 1. Blink
Model from Pitis AttilaNot for internet
15Capitolul 2 .Prezentare Android
2.1.Ce este Android -ul?
Arduino este un sistem de operare dezvoltat în mod privat de către Google în primul
rând pentru dispozitive și telefoane mobil e,bazatpe nucleul Linux. Inova ția a început -o
Android Inc., ce a fost cumpărată de Google în anul 2005, după care Open Handset Alliance a
continuat. Sistemul de operare Android permite dezvoltatorilor să scrie un cod gestionat în
limbajul Java. Prin interme diul bibliotecilor Java dezvoltat e de Google se pot controla
dispozitivele. Primul sistem de operare pentru telefoane mobile cu Android a apărut în anul
2008 prin fon darea Open Handset Alliance cu ajutorul a 48 de companii de hardware,
softwareși de telec omunicații[6].Cea mai mare parte a codului Android a fost dezvoltat de
Google sub licen ța Apache, care este o licen ță de tip free -software și open-source.Aceste
codurisursă rulează fără modificări pe dispozitive.
Codul sursă este adaptat de către pro ducători pentru a rula pe hardware -ul lor.
Androidul nu con ține adesea drivere pe dispozitiv care sunt necesare pentru anumite
componente hardware. Logo -ul Android a fost proiectat în anul 2007 pentru Google de
designerul grafic Irina Blok. Echipa de desig n a fost însărcinat ăcu un proiect pentru a crea o
pictogramă universal identificabilă cu includerea specifică a unui robot în design -ul final.
După numeroase încercări de proiecte bazate pe filme și spații science -fiction,echipa a
finalizat un logo în cele din urmă ,inspirat din simbolul uman pe u șile toaletei, care a fost
modificat într -o formă de robot. După cum Android -uleste open -source, s-a convenit c ălogo-
ul ar trebui să fie de asemenea. După lansarea logo -ului verde ,design-ul a fost reinterpreta t în
nenumărate variante.
Fig. 2.1.Android-figura verde cu ambalaj uloriginal
Model from Pitis AttilaNot for internet
162.2.Istoricul platformei Android
Prima versiune de Android a apărutîn anul 2008 sub licențaApache, care nu a câ știgat
simpatiautilizatorilor în general [10]. Platforma a fostîntr-adevărstabilă, de și utilizarea a fost
mai dificil ă, iar lagradul de utilizare, în multe cazuri a existat un aspect relevant. Modelul G1
fabricat de HTC a fost un concept de telefon cu scopulde a facilita activitatea dezvoltatorilor
și de a informa companiile interesate detelefoane mobile. În 2010 Google a introdus linia
Nexusși împreun ăcu compania HTC a lansat telefonul mobil Nexus One, care avea
versiunea Android 2.1. Mai târziu în acest an s-a anunțat un succes ceea ce a fabricat
Samsung cu modelul Nexus S, care a primit o versiune mai nouă, versiunea de Android 2.3.
În anul următor a apărut Nexus Galaxy tot de lacompania Samsung, pe care era versiunea de
Android4.0 (Ice Cream Sandwich). În lunaiunie a anului 2012 a apărut primul model Nexus
Tablet, cu modelul Nexus 7, după care a urmat Nexus 10. Pe ambele tablete era versiunea de
Android 4.1. În noiembrie a apărut Nexus 4, ce a fost fabricat de compania LG cu Androidul
4.2. În 2013 a apărut Nexus 5 tot de compania LG, care avea versiun ea Android 4.4 (KitKat).
În 2014 a fost prezentat de firma Motorola noul model Nexus, numit Nexus 6 și Nexus 9 de
firma HTC, pe care era versiunea Android 5.0 (Lollipop). Cea mai nouă versiune de Android
este versiunea Android 6.0, numit Marshmallow care a apărut în luna octombrie a anului
2015.
2.3.Platforma Android
Platforma Android are scopul de a oferi u n singur sistem de operare open -source în
dispozitive mobile. Ideeafolosește labazăun sistem de ope rareLinux, care a fost tran sformat
pentru a fi c apabil să gestioneze dispozitive mobile cu hardware -ul integrat (touchscreen,
WIFI, bluetooth, etc.), fără probleme. În primul pa s nu a existat nici un cuvânt din limbajul
Java, dar Google a cumpărat compania Android, iar noua direc ție era dezvoltarea nucl eului
Linux intr -o mașină virtuală, care a fost responsabil ăpentru interfa ța cu utilizatorul și pentru
gestionarea aplicațiilorcare rulează. Acest lucru nu a mers de la o zi la alta, iar Google în
primul an a lucrat foarte lini știt. La începutul anului 2007 a început să se aparăștiri că Google
intră pe pia ța de telefonie mobil ă. Zvonurile de industrie până la urmă s -au dovedit a fi
adevărate .Din data de 5 noiembrie 2007 Open Handset Alliance a anun țat platforma Android
pentru tehnologia mobilă, prin ca re găsim zeci de firme interesa ți de tehnologia mobil ăcu
introducerea platformei open -sourceși cu desf ășurare liber ă.Platforma pare a fi simplă și ușor
Model from Pitis AttilaNot for internet
17este deînțeles în ansamblu .În imaginea de mai jos este prezentat ă arhitectura software
Android:
Fig. 2.2.Arhitectura Android
Cum reiese din figura de maisus,platforma este bazat ăpenucleul Linux , reprezentată
cuculoarea roșie, care con ține gestionarea driverelor specifice hardware. Aceste drivere sunt
pregătite de firmele care doresc să folosea scă dispozitivele pe platforma Android, fiindcă
producătorul nu poate să cunoască mai bine dispozitivele mobile cu periferice integrate. Acest
lucru oferă un mic nucleu de memorie, un consum de energie redus ,facilitând procesele de
tratare. Bibliotecile e xistente, cum ar fi de exemplulibc,SSL, SQLitesuntpuse în aplicare in
C/C++și Linux kernel pentru a rula în mod direct, folosite de sistemele Linux în cadrul
serviciilor kernel. P arțial pe acestea este bazat ămașina virtual ă Dalvik, care nu este deloc
compatibil ăcu mașinile virtuale Sun. Este în totalitate diferit ă în ceea ce prive ștecomenzile
folositeși execută alte programe binare. Programele Java după traducere nu sunt fi șiere de tip
.class, care este un format mai mare. Folose ște un format Dalvi k executabil cu extensie de tip
.dex, care este un fi șier mai mic decât fișierul surs ă de tip .class, deoarece fi șierele pot fi
găsite în mai multe constante Java. Compilarea Dalvikse face o singură dată . Mașina virtual ă
este diferită de ma șina virtual ă Java, adică apare doar limbajul Java. Culoarea albastră
reprezintă sec țiunilesursăJava, care rulează ma șina virtuală și acest lucru definește
importanța Android -ului, sistemul de operare vizibil și tactil și programele care se execut ă.
Mașina virtual ă poate ascunde complet sistemul de fi șiere utilizat de Linux și pot fivăzute
doar fișierele furnizat de Android Runtime.
Model from Pitis AttilaNot for internet
182.4.Ce este un SDK?
SDK-ul Android (Software Development Kit) este un instrument de dezvoltare care
include un program de depanare, bibli oteci, un emulator de dispozitiv, documenta ție, mostre
de codși tutoriale. Pân ă în prezent platformele de dezvoltare includ calculatoare bazate pe
x86 care rulează orice sistem de operare Linux desktop, Windows 8.1 sau Windows 10 și mai
recent Mac OS X 10 .4.8. De asemenea mai includ JDK (Java Development Kit) și Python 2.2.
Pentru editarea fi șierelor XML și Java dezvoltatorii pot folosi orice editor de text și pot
depana aplica ții Android [3]. O versiune pentru examinarea SDK -ului a fost lansat ăla
sfârșitul anului 2007, dar participan țiiau fost anun țațila mijlocul anului 2008 că noua
versiune este disponibilă pentru descărcare într -o zonă ”privată” de echipa Android Developer
Challenge. În 18 august 2008 a fost lansat Android SDK 0.9 bet a, care oferă un API actualizat
și extins. La începutul anului 2009 Google a lansat o nouă versiune de SDK pentru telefonul
Android DEV, care avea câteva actuali zări estetice și cruciale incluzând suport pentru
”căutare prin voce, aplica ții contra cost și notific ări de poștă electronică”. Telefoanele Dev pot
accesa aplica ții plătite, care este un update foarte important pentru dezvoltatori pentru c ă pot
vedea aplica țiile pe magazinul Android.
2.5.Securitate și confidențialitate
Aplicațiile Android ruleaz ă într-o zonă izolată a sistemului și nu auacces la resursele
sistemului, doar în cazul în care permisiunile de acces sunt acordate de către utilizator atunci
când este instalată aplica ția. Magazinul Play afișeaz ă toate permisiunile necesare înainte de a
instala o aplica ție. De exemplu la un joc poate fi necesar ăactivarea vibra țiilor sau salvarea
datelorpe un card de memorie, dar nu are permis să acceseze agenda telefonică sau să
citească mesajele SMS. Pentru a putea instala aplica ția utilizatorul trebuie s ă accepte aces te
permisiuni. Sistemul sandbox și permisiunile micșoreaz ă impactul vulnerabilită ții și a bud –
urilor în aplica ții,dar dezvoltatorii începători și documentarea limitat ă auavut ca rezultat
cererisolicitateîn mod obi șnuitpentru permisiuni care nu sunt ne cesare,reducând eficien ța.
Google a făcut o actualizare pentru verificarea aplica țiilor Android, care ruleaz ă în fundal și
detectează procesele rău inten ționate. În versiunea Android 6.0 sistemul de permisiuni a fost
modificată pentru a permite utilizator ului să controleze permisiunile aplica țiilor în mod
individual pentru a bloca aplica țiilerău inten ționate. Inginerii de la Google spun că
amenințareade tipmalwareși virus pe Android este exagerat ăde companiile de securitate din
Model from Pitis AttilaNot for internet
19motive comerciale și auacuzat industria de securitate. Google spune că aplicațiile malware
periculoase sunt foarte rare, și un studiu f ăcut de firma F -Secure a arătat că doar 0.5% din
malware-ulAndroid raportat a venit de la Magazinul Google Play. Google folose ște Google
Bouncer,scanerulde malware pentru a viziona și a scana aplicațiile din Magazinul Google
Play. Versiunea de Android 4.2 Jelly Bean lansat ăîn anul 2012 avea caracteristicile de
securitate îmbunătățitepentru a avertiza utilizatorul dacă o aplica ție încearc ă sătrimită mesaj
de tip text, și un scaner de malware încorporat în sistem, care funcționeaz ă cu Magazinul
Google Play.
Mai multe firme de securitate au lansat software de securitate pentru dispozitive
Android, cum ar fi de exemplu McAfee sau AVG Technolog ies, dar aceste soft -uri sunt
ineficiente pentru astfel de aplica ții limitând capacitatea acestora de a scana sistemul mai
profund pentru amenin țări. Fragmentarea dispozitivelor Android este o problemă pentru
securitate, pentru că patch -urile pentru bug -uri găsite in sistemul de operare de bază de multe
ori nuajungla utilizator. Smartphone -urile Android au capacitatea de a raporta loca ția de
accesWI-FIca puncte de acces pentru a construi baze de date con ținând locațiile fizice.
Aceste baze de date form ează o hartă electronică pentru a localiza telefoanele.
2.6.Android-ul din punctul de vedere a lclienților
În ziua de astăzi pe telefoanele mobile cel mai des este folosit sistemul de operare
Android. O mare parte din platformă este alcătuit ă din Google Toolbar, care permite să se
introducă ID-ul contului Google ,după lista de contacte, mesajele, conversa țiile, calendar ulși
albume foto web,ne păstrează în sincronizare cu sistemul de operare. Dacă începem să avem
o conversa ție cu un client nou in cadrul Gmail, lista de contacte Android apare in noul nume.
Cu ajutorul unuibrowserde căutare Chrome suntem capabili să ne conectăm la internet.
Platforma Android suportă o varietate de formate multimedia, în mod implicit, fie că este
vorba de muzică sau de vi deo.
Model from Pitis AttilaNot for internet
20Capitolul 3 .Senzoriutilizațiîn proiect
3.1.Prezentare generală a senzorilor
Senzorul este un element sensibil care are rolul de a transforma o valoare fizică
măsurată de aceea și natură sau de natură diferită la intrarea sa într -o mărime electri că.
Senzorii se bazează pe efecte fizice sau chimice la conversia mărimii de intrare sau de ie șire.
Senzorii care detectează mi șcarea se numesc detectori și sunt o categorie aparte. Elementul
format din senzori și elemente de adaptare și prelucrare se nume sctraductoare. Deobiceinu
se facediferență între traductori și senzori [7]. În figura de mai jos (fig. 3.1) este prezentat un
traductor.
Fig. 3.1 Schemă de func ționare a unui traductor
Un traductor integrat este un senzor integrat în aceea și circuit cu un element de
adaptare. Concep ția de senzor inteligent a ap ărut recent și reprezint ă asocierea unui traductor
cu unmicrocontroler , astfel se ob țin semnale de ieșire șiliniarizarea mărimilor de conversie
dela intrare. Senzoriiau o varietate mare deoa rece există un număr mare de mărimi măsurate
și fiecare m ărime poate avea diferite metode de măsurare. Orice semnal neelectric se poate
transforma într -un semnal electriccuajutorul senzorilor. Astfel de senzori sunt:
senzori de radia ție (energia radiat ătransformă în energie electrică)
senzori mecanici (semnalul mecanic transformă în semnal electric)
senzori termici (energia termică este transformat ăîn energie
electrică)
senzorii magnetici transformă semnalul magnetic într -un semnal
electric, de exemplu magnetizarea sau intensitatea câmpului
magnetic
senzori chimici, care transform ă semnalul chimic în semnal electric
Senzoriiprezentațimai sus se numesc senzori electrici datorită faptului că conversia
semnalului neelectric se transformă în semnal electri c.
Model from Pitis AttilaNot for internet
213.2.Senzorul digital de presiune
Interval de presiune Între 300 –1100 hPa
(9000m deasupra mării până la -500m)
Tensiune de alimentare Între 1.8V –3.6V (V DDA)
Între 1.62V –3.6V (V DDD)
Consum redus de energie 0.06 hPa (0.5m)
Putere ultra înaltă 0.03 hPa (0.25m)
Consum 5A în mod standard
Consum in standby 0.1 A
Temperatura de func ționare -40C-+85C
Precizia temperaturii +-2C
Timp de răspuns 7.5 ms
Dimensiune 21x15x10 mm
Interfață I2C
Tabel 2. Caracteristicile senzorului digital de presiu ne
Acest senzor de precizie este cea mai bună solu ție de detectare pentru m ăsurarea
presiuniiși a temperaturii [11]. Datorită faptului că datelese schimbă în func ție de altitudine
este utilă folosirea senzorului șica altimetru. Senzorul este sudat pe plăcuțaPCBîmpreună cu
un regulator de 3.3V. Sursade tensiune joasă este optimizat ăpentru utilizarea în telefoane,
PDA-uri, dispozitive de navigare cu GPS și echipamente mobile în aer liber. Cu un zgomot de
altitudine mic, de doar 0.25m ,timpul de conver sieesterapid. Datorită interfețeiI2C,permite
integrarea sistemului u șor cu un microcontroler. Un astfel de senzor de presiune este
BMP085.
BMP085 constă dintr -un senzor piezo -rezistiv, cu un convertor analog di gitalși o
unitate de control E2PROM șiointerfață serială I2C. E2PROM stochează 176 bi ți de date de
calibrare individuale, care sunt utilizatepentru a compensa offset, dependen ța de temperatur ă
și alți parametri ai senzorului. În schema de mai jos este prezentat ăcomunicarea senzorului
BMP085.
Model from Pitis AttilaNot for internet
22
Fig. 3.2Conectare BMP085 cu interfațăI2C
Microcontrolerul trimite o secven ță de start pentru a porni o măsurare de presiune sau a
temperaturii. După un timp de conversie valoarea rezultatului po ate fi citită pe interfa ța I2C.
Pentru calcularea te mperaturii în gradeCelsiusși a presiunii în hPa ,datele de calibrare trebuie
săfie utilizat e,iaraceste valori se pot citi din E2PROM prin software -ul de inițializare a
interfeței I2C. Rata de eșantionare poate fi crescut ă până la 128 de probe pe secun dă pentru
măsurarea dinamică. În acest caz este suficient să se măsoare temperatura o singură dată pe
secundăși asefolosi această valoare pentru toate măsurătorile de presiune în timpul aceleia și
perioade. Prin utilizarea modurilor diferite ,uncompromi s optim între consum ulde energie,
vitezăși rezoluție poate fi selectat. Acest lucru este prezentat în figura de mai jos.
Model from Pitis AttilaNot for internet
23
Fig. 3.3Măsurare apresiunii și temperaturii
3.2.1. Calculare presiune și temperatur ă
Puterea redusă șirezoluția ultra înalt ă poate fi selectată de către variabila
oversampling_setting (0, 1,2, 3) în codul C. Codul universal BMP085 este în totalitate
compatibil cu SMD500 și recunoaște automat ID -ul dispozitivului. Următoarea figură
prezintă calcularea presiunii și măsurarea temperat urii.
Model from Pitis AttilaNot for internet
24
Fig. 3.4Calculare temperatură și presiune
3.2.2.Calcularea altitudinii absolute
Cu presiunea p măsurată și presiunea la nivelul m ării p0(deex. 1013.25 hPa ),
altitudinea în metri poate fi calculată cu formula barometrică interna țională:
Model from Pitis AttilaNot for internet
25
Astfel o modificare a presiunii de ∆pcorespunde cu8.43m la nivelul mării.
Fig. 3.5Calculare altitudine absolută
3.2.3.Calcularea presiunii la nivelul mării
Cu presiunea p măsurată și altitudinea absolut ă,presiunea la nivelul mării poate fi
calculată cu formula :
Astfel diferen ța de altitudine de ∆altitudine corespunde cu 1.2 hPa la nivelul mării.
3.3.Senzorul PIR
Senzorul PIR este realizat mai complicat decât ceilalți senzori. Senzorul are dou ă sloturi
în el, fiecare este realizat dint r-un material special, care este sensibil la IR. Când senzorul este
inactiv ambele sloturi detectează aceea și cantitate de IR, cantitatea IR este radiat ă de cameră
sau pereți în aer liber. Atunci când un corp cald uman sau animal trece în primul rând se
interceptează cu o jumătate a senzor ului PIR, ceea ce determină o di ferență pozitivă. Atunci
când corpul cald părăse ște zona de detecție se întâmpl ă invers (generează o diferen ță
negativă).
Model from Pitis AttilaNot for internet
26
Fig. 3.6Aria de detectare
Senzorul PIR esterealizatîntr-un metal închis ermetic pentru a îmbunătă țiiraportul
semnal/zgomot, temperatura sau imunitate a de umiditate (fig. 3.7). Există o fereastră făcută
dintr-un metal PIR transmisiv (siliciu tipic acoperit), care protejează elementul senzorial. În
spatele aces tei ferestresunt cei doi senzori echilibra ți.
Fig. 3.7Senzorul PIR Fig. 3.8Schemă internă asenzorului PIR
În figura 3.8 este prezentat ăschema internă a senzorului PIR. Senzorul este defaptun
tranzistor JFET, care este cuzgomotfoarte redus și neutralizeaz ăimpedanțamareasenzorilor
într-un cip low -cost[12].
Lentilele senzorilor PIR sunt destul de generice și pentru cea mai mare parte variază
numai ca preț și sensibilitate. Senzorul PI Rși circuitul este fix , iar lățimea, gama și modelul
de senzor pentru lentile se poate schimba foarte u șor. Datorit ă faptului că obiectivul este o
bucată de plastic înseamnă că zona de detec ție sunt dou ă dreptunghiur i.
Model from Pitis AttilaNot for internet
273.4.Ecran LCD cu interfa țăI2C
Interfață I2C
Adresa I2C 0x27
Pini VCC, GND, SDA, SCL
Luminat din spate Char alb
Tensiune de alimentare 5V
Reglare contrast Cu potențiometru pe spate
Tabel 3.Specificații Ecran LCD
Utilizarea unui displayLCDcu interfa ță serială, care comunică cu Arduino ,estediferită
față deutilizarea unuidisplayLCDcu comunica țieparalelă. Dinpunctul de vedere
operațional este foarte asemănător .Din acest motiv echipa Arduino a creat pentru dif erite
modele de LCD -uri seriale, biblioteci LCD bazatepe biblioteca Liqui dCrystal, dar cu câteva
caracteristici adăugate [5]. Ecranele LCD sunt folosite la multe proiecte șidatorită faptului că
este ușorsă fie folosit la simulări. LCD -ul poate afi șa două rânduri cu caractere, iar fiecare
rând este de 16 caractere. Cu ajutorul modululuide interfa ță I2C, afișajulLCD are nevoie de
doardouă linii ca să sepoatăafișa informațiile [13].În figura 3.9 este prezentat ăreglarea
contrastului și pinii de conectare a iinterfeței.
Fig. 3.9LCD I2C 16×2
Model from Pitis AttilaNot for internet
283.5.Senzorul de umiditate
Fig. 3.10Senzor de umiditate
Senzorul de t emperatură și umiditate digital DHT11 este un senzor ce con ține o ieși re
de semnal calibrat digital pentru temperatură și umidit ate. Senzorul include un element
rezistiv pentru umiditate și un dispozitiv NTC pentrumăsurareatemperaturii șiva ficonectat
la un microcontroler de opt bi ți. Tensiunea de alimentare a senzorului DHT11 este între 3.5V
și 5.5V, curentul de alimentare este 0.3mA și în standby 60uA [14].
3.6. Module de transmisie și recepție
Fig.3.11Modul transmisie –recepție
Un modul receptor are rolul de a recep ționa frecven țe radio modulate pe care le
demodulează. Există două tipuri de module receptoare: receptoare superheterodină și
Model from Pitis AttilaNot for internet
29receptoare super -regenerare. Modulele de super -regenerare sunt de obicei module ieftine și au
puterea redusă, iar din această cauză aceste module sunt imprecise pentrucă frecven ța lor de
funcționare variaz ă în mod considerabil. Receptoarele superheterodină au un avantaj de
performan țăasuprareceptoarelor super -regenerare, pentru că acestea oferă oprecizieși o
stabilitate crescută într -ogamămaredetensiuneși de temperatur ă[15].
Tensiune de alimentare 5V
Curent static 4mA
Frecvență receptor 433.92MHz; 315MHz
Sensibilitate 50 Ohm
Dimensiune 30x14x7 mm
Antenaexternă Fir de sârmă de 32cm, spiralat
Tabel 4.Caracteristici receptor
Un modul transmi țător este un mic PCB care este capabil să transmită unde radio și să
modulezeaceastă undă radio pentru a transmite date le. Modulele emi țătoaresunt de obicei
implementate alăt uri de un microcontroler care v a furniza date către modulul care poate
transmite [16].
Tensiune de alimentare 3–12V
Curent func ționare 20–28 mA
Distanța de transmisie Peste 500 m
Putere de ie șire 40mW
Rata de transfer < 10Kbps
Temperatura de operare -10C-+70C
Dimensiune 19x19x8 mm
Tabel 5. Caracteristici modul transmisie
Model from Pitis AttilaNot for internet
303.7.Modululbluetooth
3.7.1. Ce este un modulBluetooth?
Bluetooth -ul este un protocol de comunicare fără fir utilizat pentru trimiterea și
recepționarea infor mațiilor între dou ă dispozitive. Este liber pentru utilizarea protocolului de
comunicare prin wireless, cu toate că raza este mai mică decât la alte protocoale de
comunicare de tip fără fir, de exemplu WIFI, dar este potrivit pentru multe aplica ții în
domeniul redus de protocol fără fir. Func ționează pe frecven ța de 2.41 GHz. Modulele
bluetooth se poate găsi în mai multe dispozitive cum ar fi:
telefoane mobile, calculatoare, laptop -uri
audioși controlere f ără fir
mouseși tastatur ă fără fir
Un modul blueto oth funcționează ca un master sau slave. Sunt multe module pe pia ță
care func ționează ca master sau slave sau ambele. Un modul master poate trimite sau
recepționa date de la alte module bluetooth , pe când un modul slave poate doar primi
informații de la al te module bluetooth [17].
3.7.2 Descriere modul bluetooth
Fig. 3.12. Modul bluetooth
Privind puterea maximă de ie șire șidistanța între un dispozitiv bluetooth și altul,există
trei tipuri de modul ebluetooth:
Model from Pitis AttilaNot for internet
31100 mW/ 100 m
2.5 mW/ 10 m
3.1 mW/ 10cm
Un modul bluetooth are nevoie de protocoale de comunicare pentru a putea comunica
cu un alt dispozitiv. Comunicarea între un microcontroler șiun dispozitiv bluetooth se face
prin următoarele protocoale de comunicare cu fir pentru a trimite sau recep ționa date de la un
alt dispozitiv.
UART
SPI
USB
În figura 3.1 2este prezentat un modul bluetooth de tip RN -42 cu o interfa ță de
comunicare UART și USB, iar distanța între modulepoate fi maxim 10 m. Poate trimite și
recepționa date, adic ă funcționează ca masterși slave. Acest modul se folosește și la aplicații
audio.Modulul de comandă pentru RN -42 este folosit pentru configurarea modulului
bluetooth, cum ar fi modul său, rata de transfer, controlul fluxului de port serial și codul PIN.
Model from Pitis AttilaNot for internet
32Capitolul 4 .Descriereprogram Stație Meteo
4.1.Programul de transmisie a datelor
În prima parte a acestui capitol este prezentat programul de citireșitransmisie a datelor.
Dupăalimentarea cutieimodulului de emisie, semăsoară prima dată umiditatea cu senzorul
DHT11 du pă careîncepeinițializarea circuitului BMP085. Circuitul BMP085 este folosit
pentrumăsurarea și calcularea temperaturii și a presiunii atmosferice .În primul rând se
măsoară temperatura ,seașteaptă 100 milisecunde după care se repetă comanda pentru
măsurarea presiunii ,se trimitdateleșiseașteaptă din nou 100 milisecunde .După ce s enzorul
DHT11și senzorul barometric BMP085 atrimisvalorile măsurate către placa Arduino Nano
se așteaptă 300 milisecunde înainte de reini țializare.Începe calibrarea se nzorului barometric
și calcularea temperaturii în Celsius și calcularea a presiunii în Pascal. Prima dată secitește
temperatura, seașteaptă 5 milisecunde apoi seciteștepresiunea și iarseașteaptă 5
milisecunde. După terminarea citirii începe conversia datelorși trimitereadatelorcu ajutorul
modulului FS1000A lareceptorul Sta țieiMeteo, care se poate afla la o distan ță maximă de
500 metri. Cutia de transmisie se poate monta de exemplu pe un perete exterior clădirii sau
într-o incintă de protec ție pentru date meteo în afara clădirii .De câte ori se trimite informa ții
se aprinde LED -ul galben montat în cutie. În figura 4.1 este prezentat ăcutia de transmisie.
Fig. 4.1 Cutie transmisie
Model from Pitis AttilaNot for internet
33
4.2. Programul de recep țiedate
Prima dată în programul de recep țieîncepe ini țializarea ecranului LCD și se afișeaz ă
textulStație Meteo și numele proiectantului. Inițialporneșteluminozitatea la maxim, așteaptă
douăsecundeși se oprește luminozitatea LCD -ului. În pasul următor se face recep ționarea
datelorși inițializarea.Dacă senzorul PIR observă mi șcarese dă comandă pentru a porni
luminozitate aLCD-ului, în caz contrar nu se aprinde luminozitatea afișajului. Se aprinde
LED-ul de pe placa Arduino Nano care se află la pinul 13. Placa Arduino Nano prime ște
informațiile de la receptor după care se testează valoarea caracterelor. După ce începe
decodarea se stinge LED -ul. În primul pas se afi șează temperatura dacă informa ția primit ă
începe cu caracterele #C. Se taie caracterele și se afișeaz ă informa ția între caracterul doiși
șapte pentru temperatur ă. Pentru afi șarea informației de umiditate se proces ează la fel,
diferența este căse caută caracterele #H . Pentru presiunea atmosferică se caută caracterele #P
și se taie caracterele ca s ă rămână informa ția între caracterel e doiși opt. Ultimul pas este
afișarea rezultatelor. Se seteaz ă cursorul pe pozi ția a 2-a, se afișează Stație Meteo și se
testează valorile pe rând. Prima dată aparevaloarea temperaturii, se setează cursorul pe rândul
următor, se afi șează valoarea și seașteaptă 100 milisecunde. Apoi setestează valoarea
umidității, se setează cursorul pe rând nou, se afi șează valoarea și se așteapt ă 100
milisecunde. La fel se procedează pentru afi șarea presiunii atmosferice pe ecranul LCD -ului.
Valorile primite de la tra nsmisie vor fi afi șateși pe dispozitiv ul mobil, simultan cu afi șarea
informațiilor pe ecranul LCD. În figura 4.2 este prezentat ăcutiacu modulul derecepție.
Fig. 4.2. Cutie modulrecepție
Model from Pitis AttilaNot for internet
344.3. Programul Android
După pornirea aplica ției Andro idStație Meteo vedem o interfa ță cu o poză și un buton
de conectare care este meniul principal al programului . Imediat după ce am pornit programul
se pornește modulul bluetooth al dispozitivului, iardacă nu a reu șit să pornească modulul se
va afișa mesajul următor: ”Eroare activare modul B luetooth”, în caz contrar se afi șează
mesajul ”Activare modul Bluetooth”. Imaginea afișatăeste o poză cu Sta ția Meteo. Dac ă
apăsăm butonul de conectare ,dispozitivul începe să caute module bluetooth . Dacă s-a găsit
modulul,se conectează la modulul Bluetooth de la recep ție prin adresa Mac dat ăîn program.
După conectarea dispozitivului apare meniul secundar numit ReceptieDate, unde se afi șează
valorile primite. Secreeazănouaactivitate și începe s ă preia informa țiile.Prima dată se
testează dacă lungimea con ținutului este mai mare sau egal ă cu trei, dacă este adevărat se
testează valoarea temperaturii primită diferă de -1. Dacăși aceasta este adev ărat se taie din
lungimea caracterului primit ultimele cinci caractere șise afișează temperatura. Pentru
afișarea valorii umidit ății se procedeaz ă aproximativ la fel, doar că la umiditate se taie doar
ultimele patru caractere. La afi șarea presiunii se procedeaz ă la fel ca și la umiditate. Dacă nu
mai dorim să vedem informa țiile se oprește aplicația. Cu oprirea aplicației se oprește automat
și bluetooth -ul.În figurile de mai jos(fig. 4.3. și fig. 4.4.) suntprezentateactivitatea
principalăși secundarăa aplicației de monitorizare meteo de pe un telefon mobil.
Fig. 4.3. Activitatea principală Fig. 4.4.Activitatea secundară
Model from Pitis AttilaNot for internet
35Concluzii
Stația Meteo funcționeaz ăfără probleme , darpartea de transmisie se poate îmbunătă ți
dacăsenzoriifolosițise montea ză într-oincintă de protec ție meteo ,ca să obținem valori cât
maiaproape de cele oferite de institutele de meteorologie, incintafiind montat ăîn afara
clădirii. Dacă se montează într -o astfel de cutie, atunci se poate monta de exemplu și pe un
copac.
Se poate constata căsenzoriimăsoară destul de precis, ceea ce n eși dorim,iar distanța
de comunicare a datelor este relativ mare, de 500m .
Pentru informarea cu privire la datele meteo, dispunem a șadar și de o aplicație pe
telefonul mobil android, ceea ce duce la avantajul mobilită ții, nefiind nevoie s ă fim prezen ți
lângă modului de recep ție pentru citirea datelor, fiindc ă le putem citi și pe ecranul telefonului
mobil.Cine dore ște poate s ămodifice programele pentru a putea citi și altitudinea cu ajutorul
senzorilor utiliza ți în cadrul stației meteo și astfel ,aceastăStație Meteo ,mobilă,oputemlua
cu noi în excursii.
Model from Pitis AttilaNot for internet
36Anexă
1. Programul de transmisie
//Librariile necesare pentru transmisie
#include <OneWire.h>
#include <DHT11.h>
#include <VirtualWire.h>
#include <Wire.h> // ptSenzorulde presiune
DHT11 dht11(2); / /Definire pin
#define DHT11PIN 2
#define ONE_WIRE_BUS 10
#define BMP085_ADDRESS 0x77 // Adresa I2C pentru senzorul de presiune BMP085
#define INTEGER_MAX (pow(2,31) -1)
#define E_MAX (pow(10, 7))
#define E_MIN (pow(10, -6))
#define EPSILON 0.000000119209
OneWire oneWire(ONE_WIRE_BUS);
int RF_TX_PIN = 12;
//Senzor de presiune
const unsigned char SSE = 0; // Setare supraesantionare
// Calibrare valori
int z1;
int z2;
int z3;
unsigned int z4;
unsigned int z5;
unsigned int z6;
int c1;
int c2;
int s1;
int s2;
int s3;
Model from Pitis AttilaNot for internet
37// c5 secalculează in bmp085GetTemperature(…), acesta variabila estefolositasi in
bmp085GetPressure…)
// Din cauza aceasta se initializeaza …Temperatura(…) inainte de Presiune(…).
long c5;
//Setare
void setup()
{
Serial.begin(9600 );
Serial.println("Setup");
Wire.begin();
bmp085Calibration(); //Calibrare senzor de presiune
vw_set_tx_pin(RF_TX_PIN); // Setare pin de transmisie
vw_setup(2000); //
Serial.println("Start Presiune");
}
void loop() //Program de baza
{
Serial.println(" \n");
//Primul senzor, Umiditate
float temp, humi;
float chk = dht11.read(humi, temp);
SendData("#H"+ ((String)humi)); //Trimite datele de umiditate
Serial.print("umiditatea = ");
Serial.println(humi);
//Senzorul al doile a,Temperaturade la BMP085
float temperatura = bmp085GetTemperature(bmp085ReadUT());
SendData("#C"+(String(temperatura,2))); //Trimite datele de temperatura
Serial.print("temperatura = ");
Serial.println(String(temperatura,2));
delay(100); // Asteapta 100 milisecunde
//Acelasi senzor, Presiune de la BMP085
float presiune = bmp085GetPressure(bmp085ReadUP());
Model from Pitis AttilaNot for internet
38//Trimite datele de presiune
SendData("#P"+(String(presiune/100,2)));
Serial.print("presiunea = ");
Serial.println(String(p resiune/100,2));
delay(100); // Asteapta 100 milisecunde
}
void SendData(String Data)
{
Serial.println(" –>"+ Data + "< –");
const char* rawdata = Data.c_str();
digitalWrite(13, true); // Clipeste LED -ul cand trimite datele
vw_send((uint8_t * )rawdata, strlen(rawdata)); //Trimitere date
vw_wait_tx(); // Asteapta pana mesajele sunt trimise
digitalWrite(13, false);
delay(300); // Se asteapta 300 milisecunde inainte de reinitializare
}
//Calibrare senzorul barometric
void bmp085Calibratio n()
{
z1 = bmp085ReadInt(0xAA);
z2 = bmp085ReadInt(0xAC);
z3 = bmp085ReadInt(0xAE);
z4 = bmp085ReadInt(0xB0);
z5 = bmp085ReadInt(0xB2);
z6 = bmp085ReadInt(0xB4);
c1 = bmp085ReadInt(0xB6);
c2 = bmp085ReadInt(0xB8);
s1 = bmp085ReadInt(0xBA) ;
s2 = bmp085ReadInt(0xBC);
s3 = bmp085ReadInt(0xBE);
}
Model from Pitis AttilaNot for internet
39// Calculare temperatura in Celsius
float bmp085GetTemperature(unsigned int ut){
long p1, p2;
p1 = (((long)ut -(long)z6)*(long)z5) >> 15;
p2 = ((long)s2 << 11)/(p1 + s3);
c5 = p1 + p2;
float temp = ((c5 + 8)>>4);
temp = temp /10;
return temp;
}
// Calculare presiune Pa si calibrare valori
// c5 Prima data porneste subprogramul bmp085GetTemperature(…)
long bmp085GetPressure(unsigned long up){
long p1, p2, p3, c3, c6, t;
unsigned long c4, c7;
c6 = c5-4000;
// Calculare c3
p1 = (c2 * (c6 * c6)>>12)>>11;
p2 = (z2 * c6)>>11;
p3 = p1 + p2;
c3 = (((((long)z1)*4 + p3)<<SSE) + 2)>>2;
// Calculare c4
p1 = (z3 * c6)>>13;
p2 = (c1 * ((c6 * c6)>>12))>>16;
p3 = ((p1 + p2) + 2)>>2;
c4 = (z4 * (unsigned long)(p3 + 32768))>>15;
c7 = ((unsigned long)(up -c3) * (50000>>SSE));
if (c7 < 0x80000000)
t = (c7<<1)/c4;
else
t = (c7/c4)<<1;
p1 = (t>>8) * (t>>8);
p1 = (p1 * 3038)>>16;
Model from Pitis AttilaNot for internet
40p2 = (-7357 * t)>>16;
t+= (p1 + p2 + 3791)>>4;
long temp = t;
return temp;
}
// Citeste primul bit de la adresa BMP085
char bmp085Read(unsigned char address)
{
unsigned char data;
Wire.beginTransmission(BMP085_ADDRESS);
Wire.write(address);
Wire.endTransmission();
Wire.requestFrom(BMP085_ADDRESS, 1);
while(!Wire.available());
return Wire.read();
}
// Citeste al doilea bit de la BMP085
// Primul bit este adresa
//Al doilea bit este adresa+1
int bmp085ReadInt(unsigned char address)
{
unsigned char msb, lsb;
Wire.beginTransmission(BMP085_ADDRESS);
Wire.write(address);
Wire.endTransmission();
Wire.requestFrom(BMP085_ADDRESS, 2);
while(Wire.available()<2);
msb = Wire.read();
lsb = Wire.read();
return (int) msb<<8 | lsb;
}
Model from Pitis AttilaNot for internet
41// Citire valoare temperatura
unsigned int bmp085ReadUT(){
unsigned int ut;
// Scrie 0x2E in registrul 0xF4
Wire.beginTransmission(BMP085_ADDRESS);
Wire.write(0xF4);
Wire.write(0x2E);
Wire.endTransmission();
delay(5); // Asteapta 5 milisecunde
// Citeste al doile a bit de la registrul 0xF6 si 0xF7
ut = bmp085ReadInt(0xF6);
return ut;
}
// Citeste valoarea de presiune necompensat ă
unsigned long bmp085ReadUP(){
unsigned char msb, lsb, xlsb;
unsigned long up = 0;
// Scrie 0x34+(SSE<<6) in registrul 0xF4
//Este gata pentru citirea presiunii
Wire.beginTransmission(BMP085_ADDRESS);
Wire.write(0xF4);
Wire.write(0x34 + (SSE<<6));
Wire.endTransmission();
delay(2 + (3<<SSE)); // Asteapta conversia
// Citeste registrul 0xF6 (MSB), 0xF7 (LSB), si 0x F8 (XLSB)
msb = bmp085Read(0xF6);
lsb = bmp085Read(0xF7);
xlsb = bmp085Read(0xF8);
up = (((unsigned long) msb << 16) | ((unsigned long) lsb << 8) | (unsigned long) xlsb)
>> (8-SSE);
return up;
}
Model from Pitis AttilaNot for internet
422. Programul de recepție
// Librariile necesare p entru receptie
#include <VirtualWire.h>
#include <stdio.h>
#include <string.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
double Temp;
LiquidCrystal_I2C lcd(0x27,20,4); // Setare adresa LCD 0x27 pentru 16 caractere si 2
linii
int Umid; // Valoare u miditate
#define pir A0 // Pinul pentru senzorul PIR
//Definire variabile pentru valori
String TempC="0"; // Temperatura
String Umidi="0"; // Umiditate
String Pres="0"; // Presiune
String txttemp;
String txtumid;
String txtpres;
void setup()
{
Serial.begin(9600); // Se porneste comunicatia bluetooth
pinMode(pir, INPUT);
lcd.init();// initializare LCD
delay(300);
lcd.backlight();
lcd.setCursor(2,0); // Primul caracter apare pe pozitia 2 pe randul 1
lcd.print("Statie Meteo"); // Afisare Stat ie Meteo pe LCD
lcd.setCursor(2,1); // Primul caracter apare pe pozitia 2 pe randul 2
lcd.print("Pitis Attila"); // Afisare nume proiectant pe LCD
Model from Pitis AttilaNot for internet
43// Daca nu primeste informatii apare ”ecran gol” cu luminozitate maxima
delay(2000); // Asteapt a doua secunde
lcd.noBacklight(); // Se opreste luminozitatea
//Receptie date si Initializare
vw_set_ptt_inverted(true);
vw_setup(2000); // Viteza receptie date wireless
vw_rx_start(); // Pornire PLL receptor
}
void loop()
{
// Daca senzorul PIR observa miscare se porneste luminozitatea
// Daca senzorul PIR nu observa miscare se opreste luminozitatea
if (digitalRead(pir))
{
lcd.backlight();
}
else
{
lcd.noBacklight();
}
uint8_t buf[VW_MAX_MESSAGE_LEN] ;
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen))
{
int i;
digitalWrite(13, true); // Se aprinde LED -ul pe placa la pinul 13
char Chars[buflen];
for (i = 0; i < buflen; i++)
{
Chars[i] = char(buf[i] ); // Se testeaza valoarea caracterului
}
Decode(Chars); //Decodare character
digitalWrite(13, false); // Se stinge LED -ul pe placa
Model from Pitis AttilaNot for internet
44}
}
void Decode(char* Raw)
{
String Code = (String)Raw;
if (Code.startsWith("#C")) // Afisare valoare daca incepe cu #C
{
TempC = Code.substring(2,7); // Constrange sirul de caractere de la 2 la 7 la
temperatura
}
if (Code.startsWith("#H")) //Afisare valoare daca incepe cu #H
{
Umidi = Code.substring(2,4);// Constrange sirul de caractere de la 2 la 7 la umiditate
}
if (Code.startsWith("#P")) // Afisare valoare daca incepe cu #P
{
Pres = Code.substring(2,8); // Constrange sirul de caractere de la 2 la 8 la presiune
}
SetScreen(); //Porneste sub programul
}
void SetScreen()
{
lcd.setCursor(2,0); //Setare cursor
lcd.print("Statie Meteo");
if (TempC != "") // Se testeaza daca TempC are valoare
{
lcd.setCursor(0,1); //Setare cursor
lcd.print(((String)"Temp. = " + TempC + " gr C")); // Afisarevaloare temperatura
Serial.print(TempC);
Serial.println("temp");
delay(100); // Asteapta 100 milisecunde
}
Model from Pitis AttilaNot for internet
45if (Umidi != "") // Se testeaza daca Umidi are valoare
{
lcd.setCursor(0,2); // Setare cursor
lcd.print(((String)"Umid. = " + Umidi + "% ")); // Afisare valoare umiditate
Serial.print(Umidi);
Serial.println("umi");
delay(100); // Asteapta 100 milisecunde
}
if (Pres != "") // Se testeaza daca Pres are valoare
{
lcd.setCursor(0,3); //Setare cursor
lcd.print(((String) "Pres. = " + Pres + " mmHg")); // Afisare valoare presiune
Serial.print(Pres);
Serial.println("mhg");
delay(100); // Asteapta 100 milisecunde
}
}
3.Activitatea principală a programul uiAndroid
#Region Module Attributes
#FullScreen: Fal se
#IncludeTitle: True
#ApplicationLabel: Statie meteo
#VersionCode: 2
#VersionName: 2.0
#SupportedOrientations: portrait
#End Region
'Activitatea principala
' Modul de activitate
Sub Process_Globals
Dim pers As BluetoothAdmin
Dim serial1 As Serial
Dim foundDevices As List
Type NameAndMac (Name As String, Mac As String)
Model from Pitis AttilaNot for internet
46Dim connectedDevice As NameAndMac
Dim listenflag As Boolean =False
End Sub
' Se citeste butonul de conectare
Sub Globals
Dim btnSearchForDevices As Button
End Sub
Sub Activity_Create(First Time As Boolean)
If FirstTime Then
pers.Initialize("pers")
serial1.Initialize("serial1")
End If
Activity.LoadLayout("1")
End Sub
' Porneste bluetooth impreuna cu pornirea aplicatiei
Sub Activity_Resume
btnSearchForDevices.Enabled = False
If pers.IsEnabled =True Then
serial1.listen
listenflag=True
End If
If pers.IsEnabled = False Then
If pers.Enable = False Then
ToastMessageShow("Eroare activare modul Bluetooth.", True) ' Daca nu s -a putut
activa bluetooth -ul apare mesajul
Else
ToastMessageShow("Activar e modul Bluetooth…", False) ' Se activeaza bluetooth
End If
Else
pers_StateChanged(pers.STATE_ON, 0)
End If
End Sub
' Se cauta dipozitivele
Model from Pitis AttilaNot for internet
47Sub pers_StateChanged (NewState As Int, OldState As Int)
btnSearchForDevices.Enabled = (NewState = pers.STATE_ON)
End Sub
Sub Activity_Pause (UserClosed As Boolean)
If UserClosed = True Then
pers.Disable
Activity.Finish
End If
End Sub
' Subprogramul de cautare dispozitive
Sub btnSearchForDevices_Click
If listenflag=False Then
serial1.Listen
listenflag=True
End If
' Adresa Mac a placii bluetooth
serial1.Connect("00:06:66:60:34:6B")
End Sub
Sub pers_DiscoveryFinished
ProgressDialogHide
If foundDevices.Size = 0 Then
ToastMessageShow("N -am gasit nici un dispozitiv.", True) ' Daca nu s -a putut conecta
dispozitivul cu placa apare mesajul
Else
Dim l As List
l.Initialize
For i = 0 To foundDevices.Size -1
Dim nm As NameAndMac
nm = foundDevices.Get(i)
l.Add(nm.Name)
Next
Model from Pitis AttilaNot for internet
48serial1.Connect2("00:06:66:60:34:6B", "00001101 -0000-1000-8000-00805F9B34FB")
‘Daca s-a gasit placa se conecteaza dispozitivul
End If
End Sub
' Subprogramul pentru imperecherea dispozitivului cu placa bluetooth
Sub pers_DeviceFound (Name As String, MacAddress As String)
Log(Name & ":" & MacAddress)
Dim nm As NameAndMac
nm.Name = Name
nm.Mac = MacAddress
foundDevices.Add(nm)
ProgressDialogShow("Cautare dispozitive (~ dispozitive gasite)…".Replace("~",
foundDevices.Size))
End Sub
' Subprogram pentru conectare
Sub btnAllowConnection_Click
Dim i As Intent
i.Initialize("android.bluetooth.adapter.action.REQU EST_DISCOVERABLE", "")
i.PutExtra("android.bluetooth.adapter.extra.DISCOVERABLE_DURATION", 300)
StartActivity(i)
If listenflag=False Then
serial1.listen
listenflag=True
End If
End Sub
' Dupa conectare apare activitatea secundara, unde se afiseaza valoril e primite
Sub Serial1_Connected (Success As Boolean)
ProgressDialogHide
If Success = False Then
Else
StartActivity(ReceptieDate)
End If
Model from Pitis AttilaNot for internet
49End Sub
4.Activitatea secundar ăaprogramul uiAndroid
#Region Module Attributes
#FullScreen: False
#IncludeTitle: True
#End Region
'Activitatea secundara
'Modul de activitate
Sub Process_Globals
Dim AStream As AsyncStreams
Dim pw As PhoneWakeState
Dim intr As String
Dim ies As StringBuilder
Dim txttemp As String
Dim txtumiditate As String
Dim txtpresiune As String
Dim valtemp As Int
Dim valumiditate As Int
Dim valpresiune As Int
End Sub
' Variabile globale
Sub Globals
Dim Label1 As Label
Dim txtLog As EditText
Private Label2 As Label
Private Label3 As Label
Private Label4 As Label
Private Label5 As Label
Private Label6 As Label
Private Label7 As Label
End Sub
' Secreeazaactivitatea
Model from Pitis AttilaNot for internet
50Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("2")
If AStream.IsInitialized = False Then
AStream.Initialize(Main.Serial1.InputStream, Main.Serial1.OutputStream, "AStreams")
End If
End Sub
Sub AStreams_NewData (Buffer() As Byte)
intr = BytesToString(Buffer, 0, Buffer.Length, "UTF8")
ies.Append(intr)
If intr.EndsWith(CRLF) Then
TratareDateSenzori(ies.ToString)
ies.Remove(0, ies.Length)
End If
End Sub
' Se preiauinformatiile d e la senzori si se afiseaza pe ecranul dispozitivului
Sub TratareDateSenzori(continut As String)
If continut.Length >= 3 Then ' Se testeaza daca lungimea cara cterului este mai mare sau
egalacu 3
If continut.IndexOf("temp") <> -1 Then' Se testeaza daca valoareatemperaturii difera
de-1
txttemp = continut.SubString2(0, continut.IndexOf(Chr(10)) -5)' Se taie ultimele 5
caractere din caracterele primite
End If
End If
If continut.Length >= 3 Then ' Se testeaza daca lungimea caracterului este mai mare sau
egala cu 3
If continut.IndexOf("umi") <> -1 Then' Se testeaza daca valoare aumiditatii difera de -1
txtumiditate = continut.SubString2(0, continut.IndexOf(Chr(10)) -4)' Se taie ultimele 4
caractere din caracterele primite
End If
End If
If continut.Length >= 3 Then ' Se testeaza daca lungimea caracterului este mai mare sau
egala cu 3
Model from Pitis AttilaNot for internet
51If continut.IndexOf("mhg") <> -1 Then' Se testeaza daca valoare apresiunii difera de -1
txtpresiune = continut.SubString2(0, continut.IndexOf(Chr(10)) -4)' Se taie ultimel e 4
caractere din caracterele primite
End If
End If
End Sub
' Daca dispozitivul nu sepoate conecta se afiseaza mesajul "Conexiune intrerupta"
Sub AStreams_Error
AStream.Close
Main.serial1.Disconnect
ToastMessageShow("Conexiunea este intrerupta.", True)
pw.ReleaseKeepAlive
StartActivity(Main)
Activity.Finish
End Sub
Sub AStreams_Terminated
AStreams_Error
End Sub
Sub Activity_Resume
ies.Initialize
txtLog.Initialize("textlog")
pw.KeepAlive(False)
End Sub
' Se opreste bluetooth -ul daca utilizatorul inchide ap licatia
Sub Activity_Pause (UserClosed As Boolean)
If UserClosed Then
AStream.Close
Main.serial1.Disconnect
Main.listenflag=False
End If
pw.ReleaseKeepAlive
Activity.Finish
End Sub
Model from Pitis AttilaNot for internet
52Bibliografie
1.M. Schmidth, Arduino, Editura The Pragmatic Programmers LLC, 2 011
2.M. Banzi, Getting Started with Arduino , Editura O’Reilly Media Inc., 2011
3.M. Gargenta, Learning Android , Editura O’Reilly Media Inc., 2011
4.J. Noble, Programming Interactivity , Editura O’Reilly Media Inc.,2012.
5.M. Evans, J. Noble, J . Hochenbaum, Arduino in Action , EdituraManning Publications
Co., 2013
6.***,Arduino UNO v3 ,
https://en.wikipedia.org/wiki/Arduino
7.***,Senzoriși Traductoare ,
http://www.referat.ro/laboratoare/Senzori_si_Traductoare_aed2b.html
8.***,Arduino Introduction ,
https://www.arduino.cc/en/Guide/Introduction
9.***,Arduino Nano ,
https://www.arduino.cc/en/Main/ArduinoBoardNano
10.***,ArticleAndroid,
https://en.wikipedia.or g/wiki/Android_(operating_system)#cite_note -androidlogo4 –
105
11.***,BMP085 Datasheet ,
http://www.datasheetlib.com/datasheet/1129446/bmp085_bosch -sensortec.html
12.***,PIR Sensors ,
https://learn.adafruit.com/pir -passive-infrared-proximity -motion-sensor/how -pirs-
work
13.***,Serial I2C 1602 ,
http://www.geeetech.com/wiki/index.php/Serial_I2C_1602_16%C3%972_Character_
LCD_Module
14.***,PIC learning ,
http://www.piclearning.net/122/chipkit -uno-and-dht11-sensor-example.php
15.***,RF433 Wireless TX+RX Pair ,
http://www.electrodragon.com/produ ct/433m-rf-wireless-module-a-pair-of-receiver-
and-transmitter/
16.***,Article RF module ,
Model from Pitis AttilaNot for internet
53https://en.wikipedia.org/wiki/RF_module
17.***,Bluetooth modul interfacing with pic microcontrollers ,
http://microcontrollerslab.com/bluetooth -module-interfacing -pic-microcontrollers/
Model from Pitis AttilaNot for internet
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: DOMENIUL: INGINERIE ELECTRONICĂ, TELECOMUNICAȚII ȘI TEHNOLOGII INFORMAȚIONALE PROGRAMUL DE STUDIU: REȚELE ȘI SOFTWARE DE TELECOMUNICAȚII FORMA DE… [632096] (ID: 632096)
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.
