Sunteți pe pagina 1din 65

Universitatea ,,tefan cel Mare, Suceava

Facultatea de Inginerie Electric i tiina Calculatoarelor


Programul de studiu: Automatic i Informatic Aplicat


LUCRARE DE LICEN

Sistem automat de asigurare a
poziiei corecte de studiu





ndrumtor tiinific, Absolvent,
Conf.dr.ing Clin Ciufudean Mihil Alexandru-Petru



-2014-

i

CUPRINS

Motivarea alegerii temei pag 1
Capitolul 1 Introducere pag 2
1.1 Stadiul actual al cunoaterii n domeniu pag 2
1.2 Soluia propus de noi pag 4
1.3 Desfurarea lucrrii pag 6

Capitolul 2 Descriere la nivel de schem bloc pag 7
2.1 Schema bloc a sistemului pag 7
2.2 Descrierea blocurilor funcionale ale sistemului pag 8
2.3 Descrierea modului de funcionare al sistemului pag 10

Capitolul 3 Descriere suport hardware pag 12
3.1 Platforma de dezvoltare Arduino Uno pag 12
3.1.1 Privire de ansamblu pag 12
3.1.2 Specificaii tehnice pag 14
3.1.3 Memoria pag 15
3.1.4 Intrarile si iesirile digitale pag 16
3.1.5 Intrarile analogice pag 16
3.1.6 Comunicatia cu alte dispozitive pag 17
3.1.7 Protectia la supracurenti pag 17
3.1.8 Programarea microcontrolerului pag 18

ii

3.2 Traductorul de acceleraie ADXL 345 pag 19
3.2.1 Generaliti pag 19
3.2.2 Modul de funcionare pag 21
3.2.3 Asamblarea i conectarea la platforma Arduino pag 22
3.3 Modulul bluetooth HC-06 pag 24
3.3.1 Generaliti pag 24
3.3.2 Detalii HC-06 pag 26
3.3.3 Sumar al comenzilor AT uzuale pag 28
3.4 Mini-difuzorul pag 29
3.4.1 Generaliti pag 29
3.4.2 Specificaii tehnice ale Loudity LD-BZEN-1212 pag 29
3.4.3 Conectarea la platforma Arduino pag 30
3.5 Interconectarea modulelor. Realizarea cablajului imprimat pag 31

Capitolul 4 Descriere suport software pag 34
4.1 Mediul de dezvoltare Arduino IDE pag 34
4.1.1 Generaliti pag 34
4.1.2 Realizarea de programe pag 35
4.1.3 Bibliotecile utilizate de ctre Arduino IDE pag 38
4.1.4 Aplicaia Arduino IDE realizat n cadrul proiectului pag 39
4.2 Descrierea aplicaiei pentru smartphone pag 41
4.3 Descrierea proiectului realizat n Altium Designer pag 44


iii

Capitolul 5 Concluzii pag 47
5.1 Contribuia personal pag 47
5.2 Rezultate experimentale pag 48
5.3 Posibiliti de dezvoltare ulterioar pag 50

Capitolul 6 Bibliografie pag 51

Capitolul 7 Anexe pag 53
7.1 Schema electronic a circuitului pag 53
7.2 Cablajul imprimat pag 54
7.3 Aplicaia realizat n mediul de dezvoltare Arduino IDE pag 55
7.3.1 Partea de iniializare a aplicaiei pag 55
7.3.2 Partea de execuie a aplicaiei pag 56
7.3.3 Definirea funciilor folosite n cadrul aplicaiei pag 57
7.4 Partea aplicaiei pentru smartphone folosit
pentru preluarea datelor de la Arduino pag 58









1

MOTIVAREA ALEGERII TEMEI

Prezenta lucrare de licen, ntitulat sugestiv Sistem automat de asigurare a
poziiei corecte de studiu trateaz tema meninerii unei poziii corecte a spatelui n
timpul studiului, lucrului la birou sau la calculator. Am ales aceast aceast tem din
dou motive prezentate succint n continuare.
n primul rnd, un sistem automat care s asigure o poziie corect a spatelui
operatorului uman s-ar dovedi foarte util att pentru persoanele care ntreprind
aciuni de lung durat la birou, ct i pentru studeni, dat fiind numrul alarmant de
ridicat al persoanelor prezentnd afeciuni ale spatelui din cauza unei posturi
incorecte a spatelui pe o durat prelungit. Mai mult dect att, acest sistem ar
putea fi folosit i de ctre prini pentru a monitoriza n timp real poziia spatelui
copilului lor i corectarea acesteia unde este cazul.
n al doilea rnd, ne-am dorit ca sistemul creat de noi pentru monitorizarea
poziiei spatelui utilizatorului i avertizarea sonor ori de cte ori aceasta este
incorect, s se dovedeasc a fi o alternativ ieftin, simpl i mai prietenoas
pentru utilizator, fa de produsele deja existente pe pia. Dat fiind faptul c pentru
monitorizarea poziiei spatelui utilizatorului ne vom folosi doar de un microcontroler i
un accelerometru, iar pentru avertizarea sonor vom apela la un simplu difuzor, este
clar c soluia prezentat de noi pentru a construi un sistem de meninere a unei
poziii corecte a spatelui n timpul studiului este una simpl i ieftin. n ideea
conceperii unui dispozitiv prietenos pentru utilizator, ne-am hotrt s realizm o
aplicaie pentru smartphone, prin care s se poat monitoriza n timp real evoluia
poziiei spatelui, ct i realizarea unui grafic care s reliefeze variaia n timp a
acesteia [9], [10].
Trebuie s menionm faptul c am ales tema asigurrii unei poziii corecte de
studiu ca i completare la o lucrare de licen deja existent i anume lucrarea
ntitulat Sistem automat de monitorizare a condiiilor de lucru la calculator, dat fiind
natura complementar a celor dou teme, ambele viznd lucrul la calculator,
respectiv la birou.


2

1. INTRODUCERE

1.1. Stadiul actual al cunoaterii n domeniu

Tema aleas de noi pentru prezenta lucrare de licen, respectiv crearea unui
sistem care s-l ajute pe utilizator s-i menin o poziie corect a spatelui n timpul
studiului sau lucrului la birou, a mai fost abordat i de ctre alte persoane,
proiectndu-se astfel dou dispozitive despre care vom vorbi n continuare i fa de
care ne-am raportat pentru crearea propriului nostru dispozitiv de acest gen.
Lumoback reprezint un dispozitiv wireless de asigurare a poziiei corecte a
spatelui care dispune de un sistem de alarmare prin vibraie a utilizatorului, activat
ori de cte ori poziia spatelui acestuia nu este corect. Pe lng funcia de
avertizare prin vibraie a purttorului acestui aparat atunci cnd spatele nu este
meninut drept, Lumoback dispune i de o aplicaie pentru smartphone care i
permite utilizatorului s urmreasc evoluia n timp a poziiei spatelui [11].

Figura 1.1 Dispozitivul Lumoback [12]

3

Dispozitivul este proiectat pentru a fi purtat cu o curea n jurul coloanei
lombare, folosindu-se de un accelerometru pentru determinarea gradului de nclinare
a spatelui i de un microcontroler pentru interpretarea i transmiterea mai departe a
datelor ctre un smartphone.
Atunci cnd gradul de nclinare, exprimat printr-o valoare numeric de tipul
ntreg (dup cum se va putea observa i din aplicaia aferent proiectului
Lumoback), depete un anumit prag, se va considera c poziia spatelui nu este
corect, declanndu-se astfel o alarm de tipul unei vibraii. Datele furnizate
microcontrolerului de ctre accelerometru sunt transmise ctre un smartphone prin
intermediul unui modul bluetooth, date care vor fi ulterior utilizate de ctre aplicaia
pentru smartphone care vine la pachet cu dispozitivul Lumoback.
Momentan, dezvoltatorii aplicaiei Lumoback pentru smartphone furnizeaz
doar o versiune pentru platforma iOS a acesteia, fapt care limiteaz considerabil
sfera potenialilor clieni, dat fiind rspndirea smartphone-urilor folosind alte
sisteme de operare dect iOS, precum sunt sistemele de operare Android,
BlackBerry sau Windows Phone [13].

Figura 1.2 Interfaa Lumoback pentru sistemul de operare iOS [14]

4

UpRight cel de-al doilea sistem pentru asigurarea unei poziii corecte a
spatelui cruia i-am acordat un grad sporit de atenie este o versiune ,,mbuntit
a dispozitivului Lumoback, dac ne referim la preul de cost mai sczut al lui UpRight
(60 $ fa de 150 $). UpRight este conceput asemntor cu echivalentul su
Lumoback, cu excepia faptului c UpRight se folosete de o marc tensometric
pentru determinarea poziiei spatelui, pe cnd Lumoback folosete un accelerometru
[15].
Ambele dispozitive dispun de aplicaii pentru smartphone prin care utilizatorul
poate monitoriza evoluia n timp a poziiei spatelui. Trebuie menionat faptul c prin
folosirea unei mrci tensometrice n locul unui accelerometru se reduce preul de
cost al dispozitivului, ns se face un compromis privind sensibilitatea dispozitivului.
Dispozitivul UpRight este aflat nc n starea de prototip i se preconizeaz a
fi scos pe pia n martie 2015 [16].

Figura 1.3 Dispozitivul UpRight [17]




5

1.2. Soluia propus de noi

Sistemul de asigurare a unei poziii corecte de studiu conceput de noi se dorete
a fi un produs nou care s cuprind avantajele celor dou sisteme prezentate
anterior, ns care s nu aduc cu sine dezavantajele acestora.
Un prim avantaj al sistemului nostru fa de alte alternative existente pe pia
este preul redus de producie, estimat de noi la maxim 40$ (plcu de dezvoltare
Arduino =10$ +modul bluetooth =7$ +accelerometru =8$ +difuzor =1$ +cablaj
imprimat 5$ + baterie 9V = 4$). Este evident c n cazul producerii n serie a
conceptului nostru, preul de producie s-ar reduce considerabil. Toate preurile
menionate mai sus reprezint preurile minime disponibile pe piaa mondial, toate
componentele din cadrul sistemului nostru fiind achiziionate din China [18].
Al doilea avantaj adus de ctre dispozitivul nostru fa de alte dispozitive de
meninere a poziiei corecte a spatelui este dat de sensibilitatea ridicat a acestuia,
mai exact de sensibilitatea ridicat la un pre de cost sczut. Dac ne raportm la
dispozitivul UpRight descris mai sus, putem afirma c soluia noastr se constituie
ntr-un dispozitiv cu o sensibilitate superioar, dat fiind tipul senzorului de care se
folosete fiecare dispozitiv pentru asigurarea unei poziii corecte a spatelui
utilizatorului, anume o marc tensometric la dispozitivul UpRight i un
accelerometru la conceptul nostru. Comparnd soluia noastr cu sistemul
Lumoback, putem afirma c sensibilitile celor dou dispozitive sunt apropiate,
factorul de departajare constituindu-se din preul extrem de redus al sistemului
nostru fa de sistemul Lumoback (40$ fa de 150$).









6

1.3. Desfurarea lucrrii

n continuare se va descrie succint coninutul fiecrui capitol din prezenta lucrare
de licen.
Capitolul 2, Descriere la nivel de schem bloc, are ca scop prezentarea la nivel
de schem bloc a dispozitivului de asigurare a unei poziii de studiu i descrierea
fiecrui bloc funcional din cadrul sistemului. Tot n acest capitol se va prezenta
funcionalitatea per ansamblu a dispozitivului electronic conceput de ctre noi.
Capitolul 3, Descriere suport hardware, trateaz descrierea detaliat a suportului
hardware de care ne-am folosit pentru a face posibil implementarea schemei bloc
prezentat n capitolul 2, ct i prezentarea amnunit a modului de funcionare a
fiecrei componente electronice inclus n cadrul proiectului. Pe lng acestea, tot n
capitolul 3 ne-am ocupat de descrierea procesului de realizare a cablajului imprimat,
de la proiectarea sa ntr-un software specializat, pn la realizarea efectiv a
montajului.
Capitolul 4, Descriere suport software, vizeaz prezentarea mediului software
care a fcut posibil programarea microcontrolerului ct i aplicaia n sine,
prezentarea aplicaiei pentru smartphone, iar n final, prezentarea mediului de
proiectare i dezvoltare n care a avut loc proiectarea schemei electronice i a
cablajului imprimat.
Capitolul 5, Concluzii, cuprinde rezultatele experimentale, ct i contribuia
personal la realizarea dispozitivului de asigurare a poziiei corecte de studiu,
prezentat ntr-un mod amnunit.
Capitolul 6, Bibliografie, menioneaz toate sursele bibliografice de care ne-am
folosit pentru a putea ntocmi prezenta lucrare.
Capitolul 7, Anexe, cuprinde aplicaiile software pentru programarea
microcontrolerului i realizarea aplicaiei pentru smartphone, ct i schema
electronic a circuitului, alturi de cablajul imprimat proiectat ntr-un program
specializat.

7

2. DESCRIERE LA NIVEL DE SCHEM BLOC


2.1. Schema bloc a sistemului

Figura 2.1 - Schema bloc a sistemului

Platforma de dezvoltare
Arduino
(microcontroler Atmel
ATmega 328)

Modul
bluetooth
(HC06)
Accelerometru
(ADXL 345)

Smartphone
Mini-difuzor
Baterie 9V

Si stem de asigurare a poziiei corecte de studiu
Conexiune
wireless
Aplicaie utilizator

8

2.2. Descrierea blocurilor funcionale ale sistemului

Dat fiind schema bloc a sistemului nostru, n cele ce urmeaz ne vom ocupa de
descrierea funcionalitii fiecrui bloc din cadrul acesteia.
Platforma de dezvoltare Arduino (microcontroler Atmel ATmega 328) reprezint
nucleul dispozitivului de meninere a unei poziii corecte de studiu, aici avnd loc
execuia tuturor instruciunilor necesare bunei funcionri a sistemului. Acest bloc
central comunic direct cu aproape toate celelalte blocuri funcionale din cadrul
schemei, exceptnd blocul Smartphone. Platforma de dezvoltare Arduino este
alimentat prin intermediul unei baterii de 9V/400 mA, reprezentat sugestiv prin
intermediul blocului Baterie 9V. Platforma de dezvoltare comunic n sens
unidirecional cu blocul dat de ctre un mini-difuzor, n sensul plac de dezvoltare ->
difuzor. Microcontrolerul comunic n sens bidirecional cu accelerometrul ADXL 345
i cu modulul bluetooth HC-06. Comunicaia dintre accelerometru i microcontroler
se realizeaz astfel: microcontrolerul transmite ctre accelerometru date de tipul
unor interogri, acesta din urm transmind primului date coninnd gradul de
nclinare al dispozitivului. Referitor la comunicaia dintre bluetooth si microcontroler,
aceste dou module comunic folosind semnale de tipul Tx (transmitted data) i Rx
(received data).
Accelerometrul (ADXL 345) reprezint blocul care se ocup cu achiziia datelor
privind gradul de nclinare a spatelui operatorului uman. Un accelerometru sau un
senzor de acceleraie reprezint un dispozitiv capabil s sesizeze variaia
acceleraiei unui corp. Deoarece este dificil ca un asemenea dispozitiv s msoare
direct acceleraia, un senzor de acceleraie msoar fora exercitat asupra sa, date
fiind anumite repere. Cum gravitaia reprezint o for, un accelerometru poate fi
utilizat pentru a msura gradul de inclinare al obiectelor pe 3 axe, motiv pentru care
am ales un accelerometru pentru msurarea gradului de nclinare a spatelui. Modulul
senzor de acceleraie comunic cu platforma de dezvoltare Arduino prin intermediul
interfeei seriale SPI. [19]


9

Modulul Bluetooth HC-06 are rolul de a transmite datele furnizate de ctre
microcontroler unui smartphone. Aadar, blocul Bluetooth face posibil legtura
indirect ntre blocurile Smartphone i Platform de dezvoltare. Modulul Bluetooth
este conectat la smartphone prin intermediul microundelor, comunicaia ntre cele
dou dispozitive fiind ,,ghidat cu ajutorul semnalelor de tipul Tx i Rx.[20]
Blocul Smartphone are rolul de a interpreta datele primite de la microcontrolerul
platformei de dezvoltare prin intermediul modulului bluetooth, date ce sunt folosite
ulterior n cadrul aplicaiei utilizator. Aplicaia pentru smartphone are rolul de a
furniza utilizatorului informaii referitoare la poziia spatelui acestuia i realizarea unui
grafic care s reliefeze evoluia poziiei de studiu a operatorului uman n timp.
Blocurile Baterie 9V, respectiv Mini-difuzor reprezint blocuri auxiliare, primul
avnd rolul de a alimenta platforma de dezvoltare cu energie electric i implicit
toate celelalte blocuri (evident, cu excepia smartphone-ului), pe cnd cel din urm,
mini-difuzorul, are rolul de a avertiza utilizatorul cu privire la depirea unui anumit
grad de nclinare a spatelui, aferent unei poziii incorecte de studiu.
Componentele electronice ale ansamblului care constituie sistemul de asigurare
a unei poziii corecte de studiu sunt conectate prin trasee imprimate, fire
conductoare i prin intermediul unei conexiuni wireless.










10

2.3. Descrierea modului de funcionare al sistemului

Sistemul de asigurare a unei poziii corecte de studiu, aa cum am menionat i
n capitolul introductiv, se dorete a fi un sistem util unei persoane care petrece mult
timp la birou, respectiv n faa calculatorului, datorit faptului c vine n ajutorul
utilizatorului n a-i menine o poziie corect a spatelui n timpul lucrului. Pe lng
faptul c sistemul conceput de noi il avertizeaz sonor pe operatorul uman ori de
cte ori acesta nu menine o poziie corect a spatelui, sistemul dispune i de
funciile de afiare a datelor furnizate de ctre senzorul de acceleraie pe ecranul
unui smartphone i crearea unui grafic care s evidenieze evoluia poziiei spatelui
ntr-un anumit interval de timp. Totodat, nostru este util persoanelor care petrec
multe ore la volan, la mana avionului sau la punctul de comand al unei locomotive.
Pentru posibilitatea realizrii funciilor amintite mai sus, sistemul de asigurare a
poziiei corecte de studiu funcioneaz n modul urmtor: n primul rnd, platforma de
dezvoltare Arduino este alimentat n curent continuu de la o baterie de 9V. Odat
alimentat, plcua furnizeaz o tensiune de 5V curent continuu pentru punerea n
funciune a modulului bluetooth HC-06 i o tensiune 3V3 curent continuu pentru
alimentarea accelerometrului ADXL 345. Din acest moment, accelerometrul
transmite microcontrolerului Atmel ATmega 328 date privitoare gradului de nclinare
al senzorului. Prin ,,gradul de nclinare al spatelui utilizatorului ne referim la gradul
de nclinare dat de axa z a accelerometrului (axele x i y sunt ignorate deoarece nu
avem nevoie de ele n cadrul sistemului nostru, lucru explicat mai pe larg n
Capitolul 3).
Datele referitoare la gradul de nclinare sunt interpretate de ctre microcontroler,
nclinarea fiind dat de o valoare cuprins ntre -160 i 120. Dac aceast valoare
este mai mare dect 20, microcontrolerul semnalizeaz o poziie incorect a
spatelui, urmat de atenionarea utilizatorului printr-un semnal sonor emis de mini-
difuzor. Mini-difuzorul este acionat folosind semnale PWM i este programat s
emit pe frecvena de 440 Hz.



11

Gradul de nclinare este transmis mai departe smartphone-ului prin intermediul
modulului bluetooth, urmnd ca aplicaia pentru smartphone s se foloseasc de
gradul de nclinare pentru crearea unui grafic privind poziia spatelui utilizatorului n
timp.
Aplicaia pentru smartphone este conceput n limbajul de programare Java i
are la baz principiile de programare pentru sistemul de operare Android. Aceast
aplicaie se dorete a fi una sugestiv, uor de neles i de utilizat de ct mai multe
persoane. Conectarea unui smartphone la dispozitivul de meninere a unei poziii
corecte la birou se face activnd mai nti modul bluetooth intern al telefonului, dup
care se conecteaz smartphone-ul la modulul bluetooth HC-06 via aplicaiei pe
Android. Odat realizat conexiunea ntre smartphone i modulul bluetooth a
dispozitivului nostru, aplicaia de monitorizare a poziiei spatelui va furniza
utilizatorului informaii referitoare la corectitudinea posturii acestuia, prin intermediul
interfeei instalate pe telefonul mobil.
















12

3. DESCRIERE SUPORT HARDWARE

Acest capitol vizeaz descrierea ct mai detaliat i ct mai complet a
suportului hardware de care ne-am folosit pentru a face posibil realizrea practic a
prezentului proiect. Vom ncepe cu descrierea amnunit a tuturor componentelor
folosite n cadrul sistemului de asigurare a poziiei corecte de studiu, continund cu
proiectarea i apoi realizarea practic a cablajului imprimat necesar bunei funcionri
a dispozitivului nostru. Se va explica n mod amnunit i modul de interconectare al
tuturor modulelor, n concordan cu specificaiile tehnice aferente fiecruia.
3.1. Platforma de dezvoltare Ardui no Uno
3.1.1 Privire de ansamblu
Denumirea de ,,Uno provine din limba italian i reprezint o emblem a viitoarei
versiuni ce urmeaz a fi lansate pe pia, Arduino 1.0. Arduino Uno i Arduino 1.0
vor deveni versiuni de referin pentru marca Arduino. Arduino Uno este ultima dintr-
o serie de platforme de dezvoltare Arduino bazate pe comunicaie prin USB.
Platforma de dezvoltare Arduino Uno reprezint un circuit integrat dotat cu un
microcontroler Atmel ATmega 328. Aceast plac de dezvoltare dispune de 14 pini
digitali de intrare/ieire (dintre care 6 pot fi folosii ca ieiri PWM), 6 pini analogici de
intrare, un rezonator ceramic de 16 MHz, un conector de tipul USB, un conector de
alimentare prin intermediul unei baterii, un modul programator ICSP i un buton de
reset.

Figura 3.1 Platforma de dezvoltare Arduino Uno Rev 3 [21]

13

Platforma de dezvoltare Arduino Uno conine toate componentele necesare
pentru a pune n funciune microcontrolerul. Aadar, pentru ca microcontrolerul
ATmega 328 s poat fi programat de ctre un utilizator, nu este nevoie dect s se
conecteze placa de dezvoltare la un calculator prin intermediul portului USB. De
asemenea, platforma Arduino Uno poate fi alimentat printr-o alt surs de
alimentare dect portul USB al calculatorului, spre exemplu o baterie, ca i n cazul
nostru. Versiunea Uno difer de toate celelalte plci de dezvoltare dinaintea sa, prin
faptul c nu mai folosete un adaptor USB magistral serial. n schimb, Arduino
uno dispune de un microcontroler programat ca un convertor USB magistral
serial.
Denumirea complet a versiunii platformei Arduino folosit de noi este Adruino
Uno Revizia a 3-a, versiune care dispune de o serie de caracteristici diferite fa de
versiunile precedente. Ne referim aici la nlocuirea microcontrolerului ATmega 16U2
cu ATmega 8U, folosit ca i un convertor USB magistrala serial. Revizia a 3-a a
platformei de dezvoltare Arduino UNO se evideniaz i printr-o dispunere diferit a
pinilor: au fost adugai pinii SDA (data line) i SCL (clock line) apropiai de pinul
AREF (referina analogic), ct i ali doi pini apropiai pinului de RESET, anume
pinul IOREF, care are rolul de a ajuta plcile de extensie pentru Arduino (denumite
shield) s se adapteze la tensiunea furnizat de ctre platforma Arduino. Pe viitor,
se preconizeaz ca plcile de extensie s fie compatibile att cu platformele Arduino
care folosesc microcontrolere AVR, care operezeaz cu tensiuni de 5V, ct i cu
Arduino Due care opereaz cu tensiuni 3V3. Pinul de lng IOREF reprezint pinul
NC (not connected sau neconectat) care este rezervat pentru a fi folosit de ctre
utilizator n diverse scopuri.
Lungimea i limea maxime ale unei platforme de dezvoltare Arduino Uno Rev 3
sunt de 6,9 cm, respectiv 5,4 cm, conectorul de alimentare prin baterie, alturi de
conectorul USB extinznd aceste dimensiuni. Placa dispune i de patru guri pentru
uruburi care au rolul de a permite fixarea plcii pe o anumit suprafa. Distana
ntre pinii alturai este dat de standardul de 2,54 mm. Totui, distana ntre piniiVin
A0 este de aprox 5,5 mm, iar distana ntre pinii digitali 7 i 8 de aproximativ 4 mm,
distane care nu reprezint multipli ai standardului de 2,54 mm [4], [5], [22] .


14

3.1.2 Specificaii tehnice
Tabelul 3.1 Specificaii tehnice ale platformei de dezvoltare Arduino Uno [22]
Tipul microcontrolerului ATmega 328
Tensiunea de lucru 5V
Tensiunea de alimentare recomandat 7-12V
Limitele tensiunii de alimentare 6-20V
Pini digitali de intrare/ieire 14, dintre care 6 cu ieire PWM
Pini analogici de intrare 6
Curentul printr-un pin de intrare/ieire 40 mA
Curentul printr-un pin 3V3 50 mA
Memorie flash 32 Kb, 0,5 Kb pentru bootloader
Memorie SRAM 2 Kb
Memorie EEPROM 1 Kb
Frecvena de ceas 16 Mhz

Arduino Uno poate fi alimentat prin conectorul USB sau printr-o surs extern de
tensiune. Sursa de alimentare este selectat automat de ctre dispozitiv.
Alimentarea extern poate proveni fie de la un adaptor de tipul curent alternativ
curent continuu, fie de la o baterie. Adaptorul sau bateria pot fi conectate la Arduino
prin intermediul unui conector de 2,1 mm cu borna pozitiv n centru i masa la
exterior. Dac nu dispunem de un asemenea conector, putem alimenta platforma cu
ajutorul a dou fire conectate la un capt la bornele ,,+ i ,,- ale bateriei, iar la
cellalt capt la pinii Vin i unul din pinii GND ai plcii.
Platforma de dezvoltare poate opera cu o tensiune de alimentare extern
cuprins ntre 6 i 20 V. Totui, dac alimentm placa cu mai puin de 7V, pinul 5V
ar putea furniza o tensiune mai mic dect cinci voli, ceea ce ar instabiliza
platforma. Pe de alt parte, dac tensiunea de alimentare depete 12V,
stabilizatorul de tensiune s-ar putea supranclzi, ceea ce ar duce la avarierea plcii.
Aadar, este recomandat alimentarea cu o tensiune cuprins ntre 7 12 V, pentru
evitarea oricreia dintre inconvenientele amintite mai sus [4], [5], [22].


15

Pinii de alimentare sunt urmtorii:
- Vin pin de intrare a unei tensiuni de alimentare pentru Arduino dat de o
surs extern de tensiune (alt surs de tensiune dect 5V provenii de la
conexiunea USB sau de la oricare alt surs de tensiune stabilizat). Placa
de dezvoltare poate fi alimentat prin intermediul acestui pin sau, dac
aceasta este alimentat prin intermediul conectorului unei surse externe de
tesiune, de la pinul Vin se poate accesa tensiunea cu care a fost alimentat
platforma;
- 5V pin prin intermediul cruia se furnizeaz la ieire o tensiune de 5V, dat
de ctre stabilizatorul de tensiune. Acest pin este de o importan major
pentru majoritatea senzorilor conectat la platforma de dezvoltare Arduino,
deoarece de la acest pin se poate obine o tensiune de 5V stabilizat,
tensiune standard pentru circuitele logice TTL;
- 3V3 pin care furnizeaz la ieire o tensiune stabilizat de 3,3V, generat de
ctre stabilizatorul de tensiune. Consumul maxim de curent de la acest pin
este de 50 mA;
- GND reprezint pinii de mas i sunt n numr de trei;
- IOREF furnizeaz referina de tensiune cu care opereaz microcontrolerul.
O plac de extensie pentru Arduino (shield) configurat corespunztor poate
citi tensiunea de la pinul IOREF, urmnd s selecteze sursa de tensiune
adecvat [4], [5], [22].

3.1.3 Memoria
Microcontrolerul Atmel ATmega 328 dispune de o memorie intern de 32 Kb,
dintre care 0,5 Kb fiind folosii de ctre bootloader (program folosit pentru ncrcarea
unui sistem de operare sau a unui soft n memorie). De asemenea, microcontrolerul
dispune de 2 Kb de memorie SRAM i 1 Kb de memorie EEPROM (memorie care
poate fi citit i rescris utiliznd biblioteca EEPROM library aferent Arduino) [12].



16

3.1.4 Intrrile i ieirile digitale
Fiecare dintre cei 14 pini digitali disponibili platformei de dezvoltare Arduino Uno
poate fi folosit att ca intrare, ct i ieire, folosindu-se funciile pinMode(),
digitalWrite() i digitalRead(). Intrariile i ieirile digitale ale platformei opereaz cu o
tensiune de 5V i pot primi sau furniza un curent de maxim 40 mA. Mai mult dect
att, anumii pini de intrare i ieire dispun de funcii specializate:
- pinii 0(Rx) i 1(Tx) au rolul de a recepiona, respectiv transmite date pe
magistrala serial. Aceti pini sunt conectai la pinii corespunztori chipului
ATmega 8U2, folosit pentru conversia USB magistral serial;
- pinii 2 i 3 (ntreruperi externe) pot fi configurai pentru a declana o
ntrerupere la o valoare sczut, prezena unui front cresctor sau
descresctor sau pur i simplu a o schimbare n valoare a tensiunii. Funcia
attachInterrupt() este folosit pentru programarea unor astfel de ntreruperi;
- pinii PWM, 3, 5, 6, 9, 10 i 11, pot furniza o ieire PWM de 8 bii (256 de valori
diferite), folosind funcia analogWrite();
- interfaa serial SPI: pinii 10(SS), 11(MOSI), 12(MISO), 13(SCK), asist
comunicaia folosind biblioteca SPI library aferent Arduino;
- LED integrat, conectat la pinul digital 13. Cnd pinul este n starea activ
(high), LED-ul lumineaz, iar cnd pinul este n starea inactiv (low), invers
[4], [5], [22].

3.1.5 Intrrile analogice
Platforma de dezvoltare Arduino Uno Rev 3 dispune de 6 pini folosii ca intrri
analogice, denumii A0 A5, fiecare dintre acetia dispunnd de o rezoluie descris
de un numr de 10 bii (1024 de valori diferite). Pinii A4 i A5 dispun i de funcii
speciale, avnd posibilitatea de a lucra ca i pin SDA, respectiv pin SCL pentru a fi
utilizai n comunicaia I2C, cunoscut i sub denumirea de TWI (Two Wire Interface)
.



17

Mai exist i ali civa pini pe o platform Arduino Uno:
- pinul AREF - poate fi folosit ca referin de tensiune pentru intrrile
analogice, dac apelm funcia analogReference().
- pinul Reset se aduce n starea low dac se dorete resetarea
microcontrolerului. Acest pin este util atunci cnd se lureaz cu plci de
extensie pentru Arduino, care obstrucioneaz de obicei accesul la butonul de
reset de pe platforma Arduino [12].

3.1.6 Comunicaia cu alte dispozitive
Arduino Uno R3 dispune de cteva faciliti pentru a putea comunica cu alte
dispozitive, cum ar fi un calculator, o alt plac de dezvoltare Arduino sau alte tipuri
de microcontrolere. Microcontrolerul ATmega 328 suport comunicaia serial de
tipul UART TTL (5V), disponibil prin intermediul pinilor 0 (Rx) i 1 (Tx). Cipul
ATmega 8U2 face conversia acestui tip de comunicaie ctre USB, fcnd platforma
de dezvoltare s par ca un port COM virtual pentru calculator. Soft-ul de
programare a integratului ATmega 8U2 folosete driverele standard ale porturilor
USB, nefiind necesar prezena driverelor externe. Soft-ul Arduino include un
program de monitorizare a magistralei seriale (Serial Monitor) care permite
transmiterea datelor simple de tipul irurilor de caractere de la i ctre platforma
Arduino. LED-urile Rx i Tx semnalizeaz atunci cnd sunt transmise date de la
USB ctre cipul serial i de la USB ctre calculator. Biblioteca SoftwareSerial
permite comunicaia serial prin intermediul oricrui pin digital. ATmega 328 suport
de asmenea i comunicaiile TWI (I2C) i SPI. Software-ul Arduino include i o
bibliotec Wire util n simplificarea utilizrii magistralei I2C i o bibliotec SPI,
pentru facilitarea comunicaiei interfeei sincrone cu acelai nume [22].
3.1.7 Protecia la supracureni
Platforma Arduino Uno dispune de o metod proprie de protecie la scurtcircuituri
i supracureni, anume ntoarcerea caracteristicii de curent, care protejeaz porturile
USB ale calculatorului. Cu toate c majoritatea calculatoarelor dispun de protecii
interne proprii, aceast metod furnizeaz un grad sporit de protecie [22].

18

3.1.8 Programarea microcontrolerului
Microcontrolerul Atmel ATmega 328 poate fi programat folosind software-ul
Arduino, care este instalat pe calculator i configurat conform versiunii placii de
dezvoltare. ATmega 328 are instalat din fabric un bootloader care permite
utilizatorului s ncarce cod nou pe microcontroler fr folosirea unui programator
hardware extern. Se poate evita programarea prin bootloader, apelndu-se la
programarea microcontrolerului utiliznd programatorul ICSP (In Circuit Serial
Programming). [6]
Resetarea microcontrolerului poate fi realizat n mod automat, prin
intermediul software-ului Arduino, fr a fi necesar apsarea butonului de reset ori
de cte ori se ncarc un nou program pe microcontroler, prin intermediul
calculatorului. Pentru ca microcontrolerul s nu se reseteze dect cnd acesta
urmeaz a fi reprogramat corect, ignornd informaiile eronate, acesta interpreteaz
primii civa bii de date. Arduino Uno Revizia a 3-a dispune de un traseu imprimat
care poate fi ntrerupt dac se dorete dezactivarea funciei de auto-reset. Dac se
dorete reactivarea funciei de auto-reset, cele dou pad-uri de pe fiecare parte a
traseului pot fi unite ntre ele. Pentru localizarea zonei n care putem gsi cele dou
pad-uri, ne vom ghida dup inscripia RESET-EN de pe platforma de dezvoltare. De
asemenea, funcia de auto-reset se poate dezactiva prin conectarea unui rezistor de
110 ntre pinul 5V i linia de reset [22].









19

3.2. Traductorul de acceleraie ADXL 345

3.2.1 Generaliti
Circuitul integrat ADXL 345 reprezint un accelerometru pe 3 axe, de dimensiuni
extrem reduse, avnd un consum de energie foarte de mic (maxim 0,14 mA) i o
rezoluie ridicat, exprimat de un numr pe 10 bii. Accelerometrul ADXL 345 poate
funciona setnd nivelul sensibilitii la 2g, 4g, 8g sau 16g, atingndu-se un
maxim al sensibilitii la valoarea de 16 g. Circuitul funcioneaz de asemenea ntr-
o plaj larg de temperaturi de lucru, de la -40 C, pn la + 85 C. Datele furnizate
la ieire sunt formatate n grupuri de cte dou numere de 10 bii pentru fiecare ax
(x, y sau z) i sunt accesibile folosind fie intefaa serial SPI (3 sau 4 fire), fie
interfaa digital I2C. [8]
Senzorul de acceleraie ADXL 345 este foarte util pentru conceperea de aplicaii
pentru dispozitive mobile, dispunnd de posibilitatea msurrii acceleraiei statice
dat de gravitaie, foarte util n aplicaiile de sesizare a gradului de nclinare (ca i
n proiectul nostru), ct i de posibilitatea msurrii acceleraiei dinamice rezultate n
urma micrii sau ocurilor. Rezoluia foarte ridicat a senzorului, de 3,9 mg/LSB
(cel mai puin semnificativ bit), permite msurarea nclinaiilor de mai puin de 1 [24].

Figura 3.2 Axele de msurare ale gradului de nclinare [23]

20

Circuitul ADXL 345 aduce cu sine o serie de funcii speciale. Acesta dispune de
posibilitatea sesizrii activitii sau inactivitii i detectarea prezenei sau absenei
micrii, prin compararea acceleraiei pe oricare dintre cele trei axe cu referine date
de utilizator. Funcia de tap sensing permite accelerometrului s sesizeze atingeri pe
oricare direcie. Detecia cderii n gol permite sesizarea atunci cnd dispozitivul se
afl n cdere. Aceste funcii pot fi mapate individual pentru fiecare dintre cei doi pini
de ntreruperi (INT 1 i INT 2). Managementul memoriei interne a accelerometrului
se bazeaz pe 32 de nivele gestionate dup principiul primul intrat, primul ieit
(FIFO), folosindu-se un buffer care stocheaz datele pentru a minimiza activitatea
microprocesorului gazd i pentru a reduce consumul de energie per ansamblu.
Modul consum redus permite o gestionare inteligent a consumului de energie,
folosindu-se anumite praguri de msurare a acceleraiei, la un nivel foarte redus de
disipare de putere [24].
Tabelul 3.2 - Configuraia pinilor integratului ADXL 345 [24]
Nr.
pin
Denumire Descriere
1 V
dd

I/O
Pin alimentare interfa digital.
2 GND Pin de mas.
3 Rezervat Se conecteaz la V
s
sau se las n aer.
4 GND Pin de mas.
5 GND Pin de mas.
6 V
s
Pin alimentare n tensiune.
7 CS Pinul chip select.
8 INT1 Pin de ntreruperi 1.
9 INT2 Pin de ntreruperi 2.
10 NC Pin fr conexiune intern.
11 Rezervat Se conecteaz la mas sau se las n aer.
12
SDO/ALT
ADRESS
Pin ieire de date (pentru comunicaia SPI cu 4 fire) / pin de
selecie a adresei (comunicaia I2C)
13 SDI/SDIO/SDA
Pin intrare de date (SPI cu 4 fire) / pin intrare i ieire de date
(SPI cu 3 fire) / pin de date (I2C)
14 SCLK/SCL Ceasul pentru comunicaia serial SPI / I2C


21

3.2.2 Modul de funcionare
ADXL 345 reprezint un sistem de msurare a acceleraiei pe 3 axe care se
folosete de un senzor compus dintr-o structur mobil din polisilicon. Aceast
structur reprezint de fapt dou condensatoare cu o armtur comun care este
mobil. Aceast armtur deplasndu-se ca efect al acceleraiei, apar variaii ale
capacitii celor dou condensatoare. Acceleraia este dat de diferena dintre
capacitile celor dou condensatoare. Pentru determinarea amplitudinii i direciei
acceleraiei, se folosete o demodulaie sensibilil la faz (phase sensitive
demodulation) [1], [2], [24].
Trebuie s menionm c integratul ADXL 345 folosit de ctre noi a fost fixat
din fabric pe o platform care s faciliteze lucrul cu acesta. De acum nainte ne
vom referi la traductorul ADXL 345 ca i ntreg ansamblul format din senzorul ADXL
345 propriu zis i platforma pe care acesta este fixat. Aadar, traductorul de
acceleraie folosit de ctre noi va dispune de o configuraie diferit a pinilor fa de
circuitul integrat propriu zis i anume:
Tabelul 3.3 Semnificaia pinilor traductorului de acceleraie ADXL 345 [24]
Denumire pin Descriere
GND Pin de mas.
VCC Pin alimentare n tensiune.
CS Pin chip select.
INT1 Pin de ntreruperi 1.
INT2 Pin de ntreruperi 2.
SDO Pin intrare de date.
SDA Pin ieire de date.
SCL Pin semnal de ceas.


22


Figura 3.3 Traductorul de acceleraie ADXL 345 [25]

3.2.3 Asamblarea i conectarea la platforma Arduino
Traductorul ADXL 345 vine cu aproape toate componentele sale lipite pe
plac, cu excepia regletei cu cei 8 pini tat. Lipirea regletei la cei 8 pini ai
traductorului s-a fcut manual, folosindu-ne de o staie de lipit. Lipirea regletei s-a
fcut la o temperatur de 320 C. Odat fcut lipitura, traductorul de acceleraie
ADXL 345 a putut fi conectat pe o plac de test (breadboard), unde am efectuat
testul bunei funcionri a dispozitivului. Traductorul dispune i dou guri pentru
uruburi, ns nu a fost necesar fixarea acestuia, deoarece nu s-a intenionat
supunerea dispozitivului la acceleraii mari, ocuri sau vibraii puternice [24].
n continuare vom descrie cum s-a fcut interconectarea dintre platforma de
dezvoltare Arduino i accelerometrul ADXL 345. Pentru aceasta ne vom folosi de o
diagram preexistent pe internet care s evidenieze modul de conectare a pinilor,
dup care se va ncerca o scurt explicare a motivelor respectivei interconectri
dintre Arduino i ADXL 345.


23


Figura 3.4 Modul de conectare a platformei Arduino Uno cu traductorul de
acceleraie ADXL 345 [26]

Tabelul 3.4 Interconectarea pinilor Arduino Uno i ADXL 345 [27]

Pin ADXL 345 Pin Arduino Uno
GND GND
VCC 3V3
CS DIGITAL 10
INT1 NECONECTAT
INT2 NECONECTAT
SDO DIGITAL 12
SDA DIGITAL 11
SCL DIGITAL 13

Pinul GND al accelerometrului se conecteaz la masa platformei de dezvoltare
Arduino prin intermediul unuia dintre cei trei pini GND al acesteia. Alimentarea
traductorului se face la o tensiune de 3,3V, conectnd pinul VCC al acestuia la pinul
3V3 al plcii de dezvoltare. Pinii INT1 i INT2 nu se vor folosi n cazul de fa,
deoarece aplicaia noastr nu necesit lucrul cu ntreruperi. Nu n ultimul rnd, pinii
CS, SDO, SDA i SCL se conecteaz la pinii digitali 10, 12, 11 i 13 ai platformei
Arduino, n concordan cu posibilitile de utilizare a comunicaiei seriale SPI [27].

24

3.3. Modulul bluetooth HC-06

3.3.1 Generaliti
Modulul bluetooth HC-06 este alctuit din dou circuite integrate, conectate
impreun pe o platform coninnd o anten. Cele dou circuite integrate sunt:
- adaptorul bluetooth propriu zis utilizat pentru transmiterea datelor prin
microunde ctre un alt dispozitiv bluetooth;
- modulul de interfa cu magistrala serial utilizat pentru realizarea
comunicaiei dintre modulul bluetooth integral i platforma de dezvoltare
Arduino.
n cele ce urmeaz ne vom referi la modulul bluetooth HC-06 ca fiind un tot unitar
compus din cele dou componente prezentate mai sus. Un modul bluetooth dispune
de posibilitatea de lucru n dou moduri: master i slave. Dispozitivele HC definite de
un numr par (de exemplu HC-06, dispozitivul folosit de ctre noi) sunt proiectate din
fabric s lucreze doar ntr-un singur mod, fie master, fie slave, fr posibilitatea
schimbrii modului de funcionare. Pe de alt parte, dispozitivele HC cu un numr
impar la final au posibilitatea de a lucra n ambele moduri, programarea din master
n slave i invers realizndu-se folosind comenzi AT (comenzi folosite de obicei
pentru configurarea modem-urilor). Dispozitivele bluetooth de pe pia sunt n
majoritatea cazurilor fie dispozitive de tipul master, fie dispozitive de tipul slave,
preul de cost al acestora fiind puin mai sczut dect cel al dispozitivelor bluetooth
hibride.
Modulul bluetooth utilizat de ctre noi, HC-06, lucreaz permanent n modul
slave. Acest mod de lucru este foarte folositor atunci cnd se dorete realizarea
comunicaiei modulului bluetooth HC-06 cu adaptorul bluetooth dintr-un calculator
sau smartphone. Odat realizat conexiunea dintre modulul bluetooth al
smartphone-ului i modulul bluetooth HC-06 (ca i n cazul nostru), se va crea o linie
de comunicaie indirect ntre microcontrolerul ATmel ATmega 328 al paltformei de
dezvoltare Arduino Uno i smartphone. Aadar, modulul bluetooth al smartphone-
ului inclus n cadrul sistemului conceptul de noi pentru meninerea a poziiei corecte
de studiu va lucra n modul master [3], [28].

25

Comunicaia dintre dou module bluetooth necesit ndeplinirea a dou condiii
necesare:
- comunicaia trebuie s se realizeze ntre master i slave;
- parola de siguran trebuie s fie corect.
Modulele bluetooth HC definite de un numr par (HC-04 i HC-06) sunt
compatibile ntre ele. De asemenea, toate modulele slave sunt compatibile ntre ele.
Dup cum am amintit anterior, versiunea HC-06 nu i poate reseta modul de lucru
(master sau slave) i doar puine comenzi AT i funcii pot fi folosite de ctre
aceasta, precum sunt funciile de resetare a numelui modului bluetooth (doar pentru
slave), resetarea parolei, resetarea vitezei de transmitere a datelor (baud rate) sau
funcia de verificare a versiunii modulului [3], [28].

Figura 3.5 Modul bluetooth HC-06 vedere fa, petru observarea celor dou
integrate: adaptorul bluetooth i modulul de interfa cu magistrala serial [29]


Figura 3.6 Modul bluetooth HC-06 vedere verso, pentru observarea pinilor [30]


26

3.3.2 Detalii HC 06

- modul master sau slave este predefinit din fabric i nu poate fi schimbat de
ctre utilizator;
- numele de identificare predifinit: Linvor;
- parola predefinit: 1234;
- modul de lucru master: dispune de funcia de memorare a ultimului dispozitiv
de tip slave conectat la acest. Se va conecta doar la respectivul dispozitiv, cu
excepia cazului n care pinul Key este setat pe starea high;
- dispozitivul master va cuta i se va conecta n mod automat la un dispozitiv
slave;
- comunicaia este de tipul punct-la-punct i se poate realiza doar ntre dou
module, ns adaptorul bluetooth poate comunica cu multi-module;
- nainte de interconectarea a dou module bluetooth, fiecare se afl n modul
AT, adic poate interpreta i rspunde comenzilor AT. Dup realizarea
conexiunii, fiecare trece n modul de comunicaie deschis (transparent
communication). Dac se dorete trecerea napoi n modul AT, va trebui
ntrerupt conexiunea dintre cele dou dispozitive;
- rata predefinit de transmisie a datelor este de 9600 bauds, ns aceasta
poate fi schimbat la o valoare inclus n urmtorul set: 1200, 2400, 4800,
9600, 19200, 38400, 57600, 115200;
- dac se aplic tensiune pe pinul Key n cazul unui dispozitiv master, acest
lucru va duce la tergerea memoriei sale;
- frecvena de clipire a LED-ului dispozitivului slave este de 750 ms, n absena
unei conexiuni ctre un alt dispozitiv. Dup conectare, indiferent dac
dispozitivul este de tipul master sau slave, LED-ul va lumina continuu.
- consumul de energie n cazul conectrii a dou module bluetooth este de 30-
40 mA pentru fiecare. n lipsa unei conexiuni, consumul de curent este de
8mA. Nu exist mod de repaos (sleep mode) [3], [28].




27

Tabelul 3.5 Semnificaia pinilor modulului bluetooth HC-06 [7], [31]
Denumire
pin
Descriere
STATE Pin conectat la LED, indicator al modului de lucru.
RXD Intrarea de date pentru comunicaia serial. Se conecteaz la pinul
TX al microcontrolerului. Semnalul folosete un nivel logic 3V3.
TXD Ieirea de date pentru comunicaia serial. Se conecteaz la pinul
RX al microcontrolerului. Semnalul folosete un nivel logic 3V3.
GND Pinul de mas.
VCC Alimentarea n tensiune, cuprins ntre 3,6 6V. Dispozitivul
funcioneaz normal att cu o tensiune de alimentare de 3,3V, ct
i cu o tensiune de 5V, ambele putnd fi furnizate de ctre
platforma Arduino Uno.
KEY n cazul unui dispozitiv master, acest pin este folosit pentru golirea
memoriei (dac este n starea high).


3.3.3 Modul de conectare a pinilor

Figura 3.7 Modul de interconectare dintre platforma Arduino Uno i modulul
bluetooth HC-06 [32]

28

n principiu, modulul bluetooth HC-06 poate funciona n timp ce doar patru
dintre cei ase pini ai si sunt conectai, anume pinii RXD, TXD, GND i VCC.
Totui, pentru rezultate de testare mai bune, se recomand conectarea pinilor
STATE i KEY (atunci cnd se testeaz modul de lucru master). Pentru conectarea
modulului bluetooth HC-06 la o platform de dezvoltare cum este Arduino Uno, se
vor conecta pinii n modul urmtor: pinul RX al modulului bluetooth se va conecta la
pinul TX al platformei de dezvoltare, pinul TX al modulului bluetooth se va conecta la
pinul RX al platformei, urmnd ca pinii VCC i GND ai modulului bluetooth s fie
conectai la pinul 5V, respectiv la unul dintre pinii GND ai plcii Arduino Uno [7], [31].

3.3.4 Sumar al comenzilor AT uzuale
Dac se dorete configurarea modulului bluetooth HC-06 dup preferinele
noastre, se vor folosi comenzile AT, transmise acestuia prin intermediul unui terminal
serial. Terminalul serial folosit de ctre noi pentru configurarea modulului bluetooth
se numete MTTTY, fiind simplu de instalat i utilizat. Lista comenzilor AT uzuale
pentru configurarea modulului HC-06 este urmtoarea:

Tabelul 3.6 Comenzi AT uzuale[8], [33]
Comanda AT Ce se trimite ctre
HC-06
Rspunsul primit de la
HC-06
Testeaz comunicaia AT OK
Schimb rata de transmisie a
datelor
AT + BAUD1/ AT +
BAUD2/ ... / AT +
BAUD8
OK1200/ OK 2400/ ... /
OK115200
Schimb numele dispozitivului AT+NAMEnumenou OKnumenou
Schimb parola AT+PINxxxx OKsetpin




29

3.4. Mini-difuzorul

3.4.1 Generaliti
Pentru semnalizarea unei depiri n limita admis a nclinrii spatelui
operatorului uman, am folosit un sistem de alarmare simplu i ieftin, anume un mini-
difuzor. Modelul folosit de ctre noi n cadrul acestui proiect este LOUDITY LD-
BZEN-1212, fiind conectat la platforma de dezvoltare Arduino Uno. Acest mini-
difuzor este acionat prin semnale PWM. [34].

3.4.2 Specificaii tehnice ale LOUDITY LD-BZEN-1212
Tabelul 3.7 Specificaiile tehnice ale mini-difuzorului LOUDITY LD-BZEN-1212 [35]
Specificaie Descriere
Tipul difuzorului Electromagnetic
Trsturi speciale Fr generator ncorporat
Tipul componentei THT
Frecvena de rezonan 2.4 kHz
Curentul de funcionare 40 mA
Temperatura de funcionare -20 70 C
Diametru 12 mm
nlime 9 mm
Tensiunea de alimentare 12 V c.a.
Limite tensiune de alim. 6-15 V c.a.
Rezistena bobin 140
Toleran rezisten bobin 14
Nivelul sonor 85 dB




30

3.4.3 Conectarea la platforma Arduino i punerea n funciune
Cele dou terminale ale mini-difuzorului LUDITY sunt conectate la platforma de
dezvoltare Arduino Uno prin intermediul pinului digital 9 (ieire digital) i a unui pin
de mas (GND). ntre pinul 9 al plcii de dezvoltare i pinul ,,+ al mini-difuzorului se
conecteaz un rezistor. Am ales conectarea mini-difuzorului la pinul 9 al plcii de
dezvoltare deoarece, conform specificaiilor Arduino Uno, doar pinii digitali 3, 5, 6, 9,
10 i 11 dispun de ieire n semnale PWM, semnale utilizate pentru punerea n
funciune a difuzorului.



Figura 3.8 Interconectarea dintre platforma Arduino i minidifuzor [26]


Mini-difuzorul a fost programat s emit sonor pe o frecven de 440 Hz ori de
cte ori se depete o valoare a nclinrii spatelui prestabilit (z>20). Pentru
acionarea din program a difuzorului se folosesc funciile tone() i noTone() aferente
limbajului de programare Arduino.





31

3.5. Interconectarea modulelor. Realizarea cablaj ului i mprimat

Pentru realizarea interconectrii tuturor modulelor descrise pn acum i testarea
bunei funcionri a ansamblului, s-a folosit o plac de test (breadboard) de 170 de
puncte, de dimensiuni relativ reduse, alturi de fire conectoare de tip tat-tat. Date
fiind dimensiunile conceptuale ale sistemului proiectat de noi, utilizarea unei plci de
test de dimensiuni mai mari ar fi fost redundant.

Figura 3.9 Plac de test 170 de puncte [37]

Odat ce s-a stabilit corectitudinea realizrii montajului i buna funcionare a
sistemului propus de noi, ne-am putut canaliza toat atenia asupra proiectrii i apoi
realizrii practice a cablajului imprimat aferent proiectului nostru. Proiectarea
circuitului imprimat sau a PCB-ului (Printed Circuit Board) s-a efectuat n mediul de
proiectare de circuite electronice Altium Designer, despre care vom vorbi n capitolul
urmtor. Dup proiectarea circuitului, a urmat realizarea practic a cablajului
imprimat, folosindu-ne de metoda termotransferului. Materialele necesare realizrii
unui circuit prin aceast metod sunt: o plac de cablaj neprelucrat, bomfaier, hrtie
fotografic, imprimant, soluie de clorur feric, alcool izopropilic, aceton, fier de
clcat, burete de vase, burete de srm, bormain, staie de lipit.
Descrierea metodei termotransferului, ct i paii pe care i-am urmat pentru a
realiza cablajul imprimat, vor fi prezentate n continuare.

32

Paii necesari realizrii cablajului imprimat

- Se decupeaz placa brut de cablaj la dimensiunile dorite folosind un
bomfaier;
- Se lustruiete riguros placa cu ajutorul unui burete de vase. Aceast etap
este de o importan major n obinerea unui rezultat ct mai bun la final;
- Se cur placa cu ajutorul unei soluii degresante, precum este alcoolul
izopropilic. n lipsa alcoolului izopropilic, se poate cura placa folosind
detergent;
- Se imprim pe hrtie fotografic stratul inferior al cablajului proiectat cu
ajutorul mediului de proiectare Altium Designer. Imprimanta folosit trebuie s
fie realizat prin tehnologia laser, deoarece va fi nevoie s operm cu toner i
nu cu cerneal. De asemenea, circuitul trebuie imprimat folosind o imprimant
cu o rezoluie ct mai ridicat. Nu n ultimul rnd, este foarte important tipul
hrtiei folosite, cele mai bune rezultate obinndu-se atunci cnd folosim
hrtie fotografic cu o fa lucioas i una mat;
- Se fixeaz hrtia fotografic pe plac, dup care se apas peste aceasta
folosind un fier de clcat la o temperatur mai mare de 200 C. Se freac
suprafaa hrtiei cu fierul de clcat pentru circa 2-3 minute, asigurndu-ne c
s-a realizat un transfer uniform de cldur pe suprafaa plcii;
- Se refac traseele care nu s-au imprimat corect pe plac cu ajutorul unui
marker;
- Se introduce cablajul ntr-o soluie de clorur feric i se las la corodat
pentru aproximativ 15 min. Partea superior a cablajului va fi lipit cu band
adeziv, pentru a nu fi corodat n acest moment;
- Clorura va coroda straturile de cupru neacoperite cu toner. Dup ce ne
asiguram c procesul de corodare a avut loc n totalitate, se scoate cablajul
din soluie;
- Se cur placa folosind aceton;
- Se verific la lumina unei lmpi dac exist vreun traseu ntrerupt, urmnd ca
acesta s fie ntrit cu fludor;


33

- Se repet procesul pentru stratul superior al cablajului;
- Se imprim partea de text, respectiv partea grafic, pe faa superioar a
cablajului. Se folosete aceeai metod a termotransferului, dup care se
ndeprteaz bucile de hrtie lipit pe cablaj folosind aceton;
- Se aplic un strat de lac de protecie pe fiecare fa a plcuei folosindu-se o
pensul sau, n lipsa acesteia, un simplu erveel. Se pune accent pe
micrile lente pentru evitarea apariiei bulelor. Dac totui apar bule, se va
atepta cateva minute pn acestea vor disprea, dup care lacul se
uniformizeaz. Placa se las apoi la uscat pentru circa o or.
- Dup uscarea lacului, placa se cur cu detergent, urmnd gurirea acesteia
folosind o bormain. Pentru realizarea gurilor n cablaj, am folosit mai nti
un burghiu de 0,7 mm, dup care un burghiu de 1 mm, pentru lrgirea
acestora;
- Se lipesc pe plac componentele cu ajutorul unei staii de lipit. Temperatura la
care s-au efectuat lipiturile a fost de 320 C [38].

Schema electronic a circuitului proiectat de ctre noi, ct i cablajul imprimat
realizat n mediul de proiectare i dezvoltare Altium Designer, pot fi analizate n
Capitolul 7 Anexe.










34

4. DESCRIERE SUPORT SOFTWARE

Acest capitol va trata descrierea instrumentelor software care s-au folosit
pentru asigurarea bunei funcionri a Sistemului automat de asigurare a poziiei
corecte de studiu. Vom ncepe cu descrierea mediului de dezvoltare Arduino IDE,
folosit pentru programarea microcontrolerului Atmel ATmega 328 al platformei de
dezvoltare Arduino Uno, ct i descrierea programului realizat de ctre noi n
acest mediu de dezvoltare. Vom continua cu prezentarea mediului de proiectare
i dezvoltare de circuite Altium Designer i vom ncheia cu prezentarea aplicaiei
J ava adaptate sistemului nostru, bazat pe o aplicaie preexistent denumit
Amarino, conceput special pentru realizarea comunicaiei dintre platforma
Arduino i un smartphone.


4.1. Mediul de dezvoltare Arduino IDE.

4.1.1 Generaliti
Un mediu de dezvoltare integrat (integrated development environment IDE)
reprezint o aplicaie software care furnizeaz faciliti de nelegere mai uoar a
programelor, ct i posibiliti sporite de dezvoltare de aplicaii software. IDE-urile
moderne conin un editor de cod surs, un depanator de cod (debugger), ct i o
varietate de unelte, biblioteci i funcii care pot fi folosite de ctre utilizator pentru
facilitarea dezvoltrii de aplicaii. [39]
Mediul de dezvoltare Arduino (Arduino IDE) este compus dintr-un editor de text
pentru scrierea de cod surs, o zon destinat mesajelor, o consol de text, o bar
de instrumente cu butoane i fucii comune, alturi de o serie de meniuri. Acest
software este folosit de ctre platforma de dezvoltare Arduino Uno pentru a se
realiza conexiunea dintre mediul hardware i mediul software, precum i ncrcarea
de programe n memoria microcontrolerului ATmega 328. Aplicaiile scrise pentru
Arduino IDE folosesc un limbaj asemntor cu limbajul de programare Java. Acest
limbaj de programare este special conceput pentru a fi uor de utilizat de ctre ci
mai muli utilizatori [6], [40].

35

4.1.2 Realizarea de programe
Programele realizate folosind Arduino se numesc schie (sketches) i se
salveaz n calculator sub forma de fiiere cu extensia .ino. Aceste schie sunt
scrise n editorul de text, care dispune de funciile de copiere/lipire de text, ct i
funciile de cutare/nlocuire. Prin zona destinat mesajelor, se furnizeaz
rspunsuri utlizatorului privitoare la corectitudinea textului, apariia erorilor sau a
atenionrilor. Consola afieaz text furnizat de ctre mediul de dezvoltare Arduino,
inclusnd mesaje de eroare complete, legate de linia de apariie a erorii sau alte
tipuri de informaii.
Colul din dreapta jos al aplicaiei Arduino IDE este destinat afirii versiunii
platformei de Arduino folosite, ct i portul serial utilizat. Butoanele din bara de
unelte permit utilizatorului s verifice i s ncarce programe n memoria
microcontrolerului, ct i s creeze, s deschid i s salveze schie. O funcie
special a mediului de dezvoltare Arduino IDE este monitorul serial (serial monitor),
care permite utilizatorului s observe fluxul de date transmis prin intermediul
magistralei seriale [6], [40].
n continuare se vor descrie uneltele speciale de care dispune mediul de
dezvoltare Arduino i rolul fiecreia.
Tabelul 4.1 Uneltele speciale ale aplicaiei Arduino IDE [40]
Unealt Descriere
Auto Format Aceast unealt permite formatarea ordonat a codului, prin
introducerea de tab-uri i dispunerea ,,aerisit a acestuia.
Archive Sketch Creeaz o copie arhivat (.zip) a schiei curente. Arhiva este
salvat n acelai director ca i schia.
Board Permite selectarea platformei de dezvoltare folosit.
Serial Port Meniu ce conine toate dispozitivele seriale, reale sau
virtuale, asociate cu calculatorul.
Programmer Folosit pentru selectarea unui programator hardware. Folosit
mai ales atunci cnd se instaleaz un bootloader pe
microcontroler.
Burn Bootloader Permite instalarea unui bootloader pe un microcontroler.

36


Figura 4.1 Exemplu de program realizat n Arduino IDE (sketch) [41]

Mediul de dezvoltare Arduino IDE utilizeaz conceptul de dosar pentru schie
(sketchbook): un loc standard n care utilizatorul poate s-i salveze programele
create de el. Schiele din dosarul de schie pot fi deschise din cadrul meniului
File-> Sketchbook. Prima dat cnd se ruleaz aplicaia Arduino, se va crea n
mod automat un director care s se comporte ca dosar pentru schie. Locaia
acestuia poate fi schimbat din cadrul meniului Preferences. ncepnd cu
versiunea 1.0 a mediului de dezvoltare Arduino IDE, fiierele vor fi salvate cu
extensia .ino. Versiunile anterioare ale aplicaiei salvau fiierele cu extensia .pde.



37

nainte s se ncarce o schi n memoria microcontrolerului, este nevoie s
selectm elementele corspunztoare din meniurile Tools -> Board i Tools ->
Serial Port. Pentru sistemul de operare Windows, portul serial prin care se face
interconectarea dintre calcultator i platforma Arduino Uno poate fi unul dintre
porturile COM4, COM5, COM6 etc. Pentru a afla care variant este cea corect,
putem cuta dispozitivul conectat serial din seciunea Porturi din Windows Device
Manager. Odat ce s-a selectat portul corect i versiunea platformei de
dezvoltare Arduino corespunztoare (Arduino Uno, n cazul nostru), pur i simplu
se acioneaz butonul Upload din bara de unelte, pentru a ncrca
microcontrolerul cu programul dorit.
Versiunile actuale de platforme de dezvoltare Arduino se reseteaz automat
odat ce s-a scris n memorie un nou program Arduino. Versiunile mai vechi de
platforme Arduino nu dispuneau de funcia auto-reset, fiind necesar acionarea
manual a butonului de reset, ori de cte ori se dorea rescrierea memoriei
microcontrolerului cu un nou program. La majoritatea plcilor Arduino LED-urile
Rx i Tx semnalizeaz n momentul cnd ncrcm o schi n memoria
microcontrolerului. Mediul de dezvoltare Arduino va afia un mesaj de confirmare
cnd programul s-a ncrcat cu succes sau va afia o eroare n cazul n care
ncrcarea a euat.
n momentul n care se ncarc o schi n memoria microcontrolerului, se
folosete bootloader-ul Arduino, un mic program care a fost ncrcat a priori n
memoria microcontrolerului. Bootloader-ul permite utilizatorului s ncarce cod
fr necesitatea folosirii altor tipuri de suport hardware, dect platforma Arduino
i calculatorul. LED-ul de la pinul 13 va semnaliza n momentul pornirii
bootloader-ului.
Monitorul magistralei seriale (Serial Monitor) este folosit pentru afiarea
datelor trimise ctre platforma de dezvoltare Arduino prin intermediul magistralei
seriale. Rata de transfer a datelor (baud rate) declarat n cadrul programului
(sketch), trebuie s fie aceeai i n monitorul serial. Amintim faptul c atunci
cnd se folosesc sistemele de operare Mac sau Linux, platforma Arduino se va
reseta de fiecare dat cnd se acceseaz monitorul serial [40].


38

4.1.3 Bibliotecile utilizate de ctre Arduino IDE
Bibliotecile pre-existente furnizeaz o funcionalitate mbuntit programelor
realizate n mediul de dezvoltare Arduino, mai ales atunci cnd se lucreaz cu
dispozitive complexe sau cnd se dorete manipularea unor fluxuri de date mari.
Pentru a introduce una sau mai multe biblioteci n cadrul unei schie, se selecteaz
meniul Sketch -> Import Library sau pur i simplu se folosete sintaxa #include
<bibliotec.h>, ca n oricare alt mediu de programare. Trebuie reinut faptul c
ncrcarea bibliotecilor n cadrul unui proiect (schi) va crete considerabil
cantitatea de memorie care va fi ocupat de ctre program. Introducerea unui numr
prea mare de biblioteci n cadrul unui proiect, ar putea duce la depirea dimensiunii
maxime de 32 Kb a unei schie, aprnd astfel imposibilitatea ncrcrii acesteia n
memoria microcontrolerului. Dac se dorete eliminarea unei biblioteci din cadrul
unei schie, din considerente de economisire a spaiului de memorie ocupat, se va
terge pur i simplu sintagma #include... aferent respectivei biblioteci [40].
Mediul de dezvoltare Arduino IDE are inclus n cadrul acestuia o list de
biblioteci ce pot fi folosite n cadrul schielor. Totui, dac se dorete operarea cu
biblioteci care nu sunt incluse n cadrul Arduino IDE, acestea se pot descrca de pe
internet i alturate bibliotecilor preexistente. ncepnd cu versiunea 1.0.5 a Arduino
IDE, se pot importa biblioteci dintr-un fiier arhivat .zip, acestea putnd fi folosite ntr-
o schi deschis. Cteva exemple de biblioteci predefinite soft-ului Arduino sunt:
- Ethernet bibliotec folosit pentru conectarea la internet folosind o platform
de extensie pentru Arduino (Ethernet Shield);
- Firmata bibliotec folosit pentru comunicarea cu aplicaii de pe calculator,
folosind un protocol standar de comunicaie serial;
- LiquidCrystal folosit pentru punerea n funciune a afioarelor LCD;
- SD folosit pentru scrierea i citirea datelor pe carduri MicroSD;
- Servo bibliotec folosit pentru controlul servomotoarelor;
- SPI folosit pentru realizarea comunicaiei dintre dispozitive folosind
interfaa serial SPI;
- Stepper folosit pentru controlul motoarelor pas cu pas;
- Wire folosit pentru realizarea comunicaiei I2C, pentru transmisia sau
recepionarea datelor de la sau ctre o reea de senzori [6], [40].

39

4.1.4 Aplicaia Arduino IDE realizat n cadrul proiectului
Pentru buna funcionare a sistemului automat de meninere a poziiei corecte de
studiu conceput de noi, s-a programat microcontrolerul ATmega 328 folosind mediul
de dezvoltare Arduino IDE, schia ncrcat n memoria microcontrolerului fiind
prezentat n Anexa 3.
Ca i orice schi (sketch) realizat n mediul de dezvoltare Arduino IDE,
programul realizat de ctre noi cuprinde trei pri:
- partea de iniializare, n care se iniializeaz toate variabilele, clasele i
bibliotecile. Tot aici este prezent funcia void setup(), indispensabil oricrei
schie realizate n mediul de dezvoltare Arduino IDE i n cadrul creia se
descrie starea iniial platformei de dezvoltare;
- partea de execuie a programului, reprezentnd o bucl infinit dat de funcia
void loop();
- partea de definire a funciilor utilizate n cadrul schiei.
Aplicaia conceput de noi are la baz biblioteca ADXL 345, folosit pentru
realizarea conexiunii dintre platforma Arduino i senzorul de acceleraie ADXL 345.
De asemenea, n cadrul schiei noastre s-au inclus alte dou biblioteci, anume
biblioteca SPI (depre care am vorbit deja n cadrul acestui capitol), respectiv
biblioteca MeetAndroid. Biblioteca MeetAndroid reprezint o aplicaie open-source
realizat de ctre entuziati i este folosit pentru facilitarea comunicaiei bluetooth
dintre o platform de dezvoltare Arduino i un smartphone. Biblioteca MeetAndroid
este realizat de ctre dezvoltatorii aplicaiei Java Amarino, aplicaie de care ne-am
folosit i pe care am adaptat-o pentru a fi folosit de ctre smartphone-ul nostru. [32]
n continuare se va ncerca explicarea codului surs folosit de ctre noi pentru
programarea microcontrolerului ATmega 328 al platformei de dezvoltare Arduino
Uno:
- Adugarea bibliotecii SPI are rolul de a facilita comunicaia prin intermediul
interfeei seriale SPI dintre accelerometru i Arduino. De asemenea,
biblioteca MeetAndroid faciliteaz comunicaia dintre platforma de dezvoltare
i smartphone;


40

- Se creeaz o variabil numit CS pentru a stoca numrul pinului Chip Select
(pinul digital 10, n cazul nostru);
- Se creeaz variabile pentru civa dintre regitrii ADXL345. Aceste variabile
vor stoca adresa fiecruia dintre aceti regitri, variabilele urmnd a fi folosite
apoi pentru a extrage date de la accelerometru;
- Se vor crea apoi variabile care stocheaz informaiile care au fost extrase de
la accelerometru;
- La sfritul seciunii de iniializare se seteaz modul n care va funciona
accelerometru i anume n modul msurare;
- Partea de execuie propriu zis a programului (bucla infinit) realizeaz
majoritatea operaiilor necesare punerii n funciune a accelerometrului i a
furnizrii de date ctre platforma Arduino. O prim operaie realizat n cadrul
buclei infinite este aceea de citire a valorilor a 6 regitri folosindu-se funcia
readRegister;
- Funcia readRegister este folosit pentru citirea valorilor celor 3 axe, x, y i z,
valori stocate apoi n buffer-ul denumit values, creat n seciunea de
iniializare a acestei schie;
- Atunci cnd citim valori de la accelerometru, acestea sunt returnate n octei.
Cum accelerometrul furnizeaz date privind acceleraia folosind 10 bii, iar
cum un octet dispune de doar 8 bii, pentru obinerea valorii corecte a
acceleraiei va fi nevoie s concatenm doi octei. Valorile x, y i z sunt
determinate prin concatenarea octeilor din buffer-ul values;
- Valorile acceleraiilor pe cele trei axe sunt trimise ctre terminalul serial;
- Se verific dac valoarea acceleraiei pe axa z este mai mare dect 20
(valoare determinat experimental). Dac este ndeplinit condiia, se va porni
mini-difuzorul folosind semnale PWM prin intermediul funciei tone();
- Dac valoarea lui z scade sub 20 (avnd posibilitatea de a deveni negativ),
difuzorul nu va mai emite sonor;
- Se trimite ctre smartphone valoarea acceleraiei pe axa z prin intermediul
modulului bluetooth i a funciei meetAndroid.send();
- ntreg procesul se reia dupa o ntrziere dat de 500 ms, realizat prin
intermediul funciei delay().


41

4.2. Descrierea apl icaiei pentru smartphone

Aplicaia pentru smartphone folosit de noi are la baz software-ul open-source
Amarino 2.0, folosit pentru facilitarea comunicaiei dintre un smartphone i o
platform de dezvoltare Arduino prevzut cu modul bluetooth. Aplicaia se folosete
de funcii i clase prezente n cadrul software-ului Amarino, dat fiind faptul c acesta
este de tipul freeware [43].
n continuare se va descrie aplicaia smartphone readaptat de ctre noi pornind
de la versiunea iniial Amarino 2.0.

- Aplicaia client, care ruleaz pe Android, este scris n Java, folosind
framework-ul ADT (Android Development Tools). Aceasta conine dou clase
principale, care sunt numite SenzorSpate i GraphView;
- Clasa principal a aplicaiei este SenzorSpate, care extinde clasa Activity a
framework-ului ADT. Aceast clas creeaz activitatea principal a aplicaiei,
afind toate elementele grafice necesare i instaniind clasa GraphView, ce
creaz graficul aplicaiei n funcie de datele primite. n interiorul clasei avem
definite o serie de proprieti private care pot fi accesate doar de metodele
acestei clase. Una din proprietile principale a acestei clase este proprietatea
privat numit mGraph, care este un obiect al clasei GraphView. O alt
proprietate important a clasei este o instan a clasei ArduinoReceiver.
Acest obiect la rndul lui ne furnizeaz o serie de proprieti i metode utile n
comunicaia dintre aplicaia Java i Arduino;
- Atunci cnd activitatea SenzorSpate este creat, se apeleaz metoda
onCreate care primete ca parametru un obiect al clasei Bundle. Aceast
metod seteaz partea vizual a aplicaiei apelnd metoda setContentView
ce primete ca parametru id-ul planului (layout) descris n fiierul main.xml. n
acest plan avem descrise toate elementele vizuale ale aplicaiei;
- n aceast clas avem o proprietate privat numit mValueTV, proprietate ce
este o instan a clasei TextView i reprezint un text care informeaz
utilizatorul dac st cu spatele drept sau nclinat, n funcie de valorile primite
de la Arduino [33].

42

- n metoda onCreate se instaniaz variabila mGraph, care este o instan a
clasei GraphView. La instaniere se trimite ca i parametru id-ul elementului
grafic din planul principal al aplicaiei, care este R.id.graph. Tot n metoda
onCreate se instaniaz i obiectul mValueTV folosind un constructor ce
primete ca i parametru id-ul elementului TextView din fiierul main.xml;
- n metoda onCreate, care se apeleaz automat la crearea activitii
SenzorSpate se instaniaz un obiect al clasei LiniarLayout, ce reprezint
planul principal al aplicaiei. Constructorul folosit la instanierea acestui obiect
primete ca parametru id-ul planului declarat n fiierul main.xml al aplicaiei.
Id-ul planului este R.id.main_layout. Dup instanierea acestui obiect, se
apeleaz o metod din clasa din care face parte acest obiect i anume
setBackgroundColor care primete ca parametru culoarea de fond setat
pentru aplicaie. Fondul (background) pe care dorim s-l setm este alb i
este reprezentat printr-o variabil static a clasei Color (Color.White);
- Metoda onStart se apeleaza atunci cnd aplicaia pornete i realizeaz
conexiunea cu aplicaia Amarino, care este folosit pentru a trimite date n
aplicaia noastr. Pentru a realiza conexiunea cu aplicaia Amarino, n metoda
onStart sunt apelate dou metode: registerReceiver i Amarino.connect;
- Metoda onStop se apeleaz atunci cnd aplicaia este nchis. Ea realizeaz
deconectarea dintre aplicaia Amarino i aplicaia noastr folosind metodele
Amarino.disconnect i unregisterReceiver;
- O alt clas a aplicaiei este clasa ArduinoReceiver care extinde clasa
BroadcastReceiver i este folosit pentru a lucra cu evenimentele primite din
Amarino (evenimente reprezentnd datele furnizate de platforma Arduino).
Aceast clas dispune de metoda onReceive care este apelat atunci cnd
primim un eveniment din Amarino. n interiorul acestei metode avem declarate
o serie de constante, una din ele fiind o constant de tip ir de caractere
(string) care se numete adress i este iniializat cu adresa dispozitivului de
unde sunt trimise datele;
- n metoda onReceive se face o verificare dac datele primite de la Amarino
sunt de tipul ir de caractere, iar dac aceast condiie este ndeplinit se
convertete irul primit ntr-o dat de tip ntreg. Dup ce conversia a fost
realizat se verific dac valoarea primit este mai mare dect 20 pentru a
afia textul ,,NCLINAT n elementul de tip TextView rezervat pentru acest

43

text, sau petru a afia textul ,,DREPT dac valoarea primit este mai mic
dect 20. Atunci cnd este afiat textul NCLINAT folosim metoda
setTextColor pentru a seta culoarea roie a textului folosind parametrul
Color.Red, iar atunci cnd afim textul DREPT folosim metoda
setTextColor cu parametru Color.Green pentru a afia textul verde;
- Dup ce am afiat textul corespunztor valorii primite, apelm metoda
addDataPoint a clasei GraphView din obiectul mGraph, trimind ctre acest
obiect valoarea primit de la Amarino. Aceast metod este folosit pentru a
crea graficul corespunztor datelor primite;
- n fiierul GraphView.java se gsete clasa GraphView care extinde clasa
View. Clasa GraphView este folosit pentru trasarea graficului aplicaiei n
funcie de valorile primite de la aplicaia Amarino;
- Pentru desenarea graficului se folosete un obiect de tip hart de bii
(bitmap), care este reprezentat prin variabila privat mBitmap, folosit pentru
delimitarea spaiului de desenare al graficului. Clasa GraphView conine 2
constructori: unul conine doar un singur parametru de tip Context, iar al
doilea conine un parametru de tip Context i un parametru al clasei
AttributeSet;
- Metoda init() a clasei GraphView iniializeaz spaiul de desenare al graficului,
atribuind o culoare de fundal pentru grafic cu ajutorul metodei statice a clasei
Color (Color.argb()), ce primete ca i parametru codul RGB al culorii de
fundal;
- Metoda addDataPoint ce primete ca i parametru o variabil de tip float
reprezentnd valoarea primit de la aplicaia Amarino, traseaz graficul
aplicaiei noastre. Se folosete metoda setColor a clasei Paint pentru a seta
culoarea de desenare a graficului i metoda drawLine pentru a desena linia
graficului, metod ce aparine clasei Canvas. Metoda drawLine deseneaz un
segment de linie la coordonatele x i y specificate. Aceast metod primete
4 parametri: poziia x de start, poziia y de start, poziia x de stop i poziia y
de stop, precum i un obiect de tip Paint pentru a specifica proprietile de
desenare [43].



44

4.3. Descrierea proiectului realizat n Altium Desi gner

Mediul de dezvoltare Altium Designer reprezint o aplicaie software destinat
proiectrii de circuite electronice, implementrii circuitelor FPGA ct i a simulrii
comportamentului diverselor circuite electronice. Partea mediului de dezvoltare
Altium de care ne-am folosit n cadrul acestui proiect este dat de funcia de
proiectare de circuite electronice, funcie folosit de noi pentru proiectarea schemei
electronice a circuitului nostru (prezent n Anexa 1) i a cablajului imprimat realizat
ulterior practic (prezent n Anexa 2). Versiunea mediului de dezvoltare Altium folosit
de ctre noi pentru proiectarea schemei electronice i a cablajului imprimat este
Altium Designer v.14.3.11 [44].

Figura 4.2 Interfaa utilizator a mediului de dezvoltare Altium Designer
v.14.3.11

Am ales mediul de dezvoltare Altium Designer i nu alt software pentru
proiectarea schemei electronice i a cablajului imprimat datorit familiarizrii din
timpul facultii cu acest mediu de dezvoltare, ct i datorit funciilor speciale
disponibile n cadrul acestuia, funcii ajuttoare n delimitarea corect a traseelor
cablajului imprimat.


45

n cele ce urmeaz vom descrie procesul de creare a proiectului folosind
software-ul Altium, proiect coninnd schema electronic a circuitulu, cablajul
imprimat, ct i descrierea fiecrei componente electronice i amprentele
(dimensiunea, configuraia pinilor) acestora.
- Se creeaz un nou proiect denumit SENZOR_SPATE.Prg.PCB n care vom
aduga apoi toate celelalte fiiere necesare realizrii schemei electronice a
circuitului, ct i a cablajului imprimat;

- Urmeaz crearea unui fiier de tipul schematic care se anexeaz proiectului.
n acest fiier se va realiza schema electronic a circuitului nostru. Fiierul
schematic va avea aceeai denumire ca i proiectul n care este inclus,
anume SENZOR_SPATE.SchDoc, cu excepia extensiei;

- Se creeaz un fiier SENZOR_SPATE.SchLib de tipul schematic library,
fiier n care vom descrie componentele electronice care vor fi folosite i care
nu sunt disponibile deja n cadrul mediului de dezvoltare Altium. Aadar, s-au
creat aici bibliotecile pentru 3 componente folosite de noi, platforma Arduino
Uno, modulul bluetooth HC-06 i senzorul de acceleraie ADXL345. Mini-
difuzorul i rezistorul au fost preluate din cadrul bibliotecilor preexistente;

- Se ncepe realizarea schemei electronice a circuitului prin adugarea
componentelor descrise n cadrul fiierului bibliotec .SchLib n nteriorul
fiierului .SchDoc. Dup aceasta, se realizeaz interconectarea
componentelor folosind fire de legtur (wires). Se adaug sursele de
tensiune de 5V, respectiv 3.3V, se conecteaz pinii de mas i nu n ultimul
rnd, se adaug n circuit mini-difuzorul;

- Odat realizat schema electronic a circuitului, se poate trece la proiectarea
cablajului imprimat, ce urmeaz apoi s fie imprimat pe hrtie fotografic;

- Se creeaz un nou fiier SENZOR_SPATE.PcbLib n care vom descrie
amprenta fiecrei componente introduse de noi, respectiv amprenta
platformei de dezvoltare Arduino Uno, a modulului bluetooth HC-06 i a
accelerometrului ADXL 345 [44].

46


- Este foarte important o introducere corect a componentelor, a distanelor
dintre pini, etc. Pentru msurarea ct mai precis a distanelor, ne-am folosit
de un ubler electronic. Amprenta mini-difuzorului i a rezistorului au fost
preluate din cadrul bibliotecilor existente deja n mediul de dezvoltare Altium;

- Se creeaz fiierul SENZOR_SPATE.PcbDoc, n care va avea loc descrierea
complet a cablajului imprimat. Se vor trasa traseele imprimate i se vor
interconecta componentele, innd cont de regulile de proiectare a cablajelor
imprimate (limea minim a traseelor, spaiul minim dintre trasee, etc.) [45]
- Se salveaz trei imagini pentru a fi imprimate, sub forma unor documente
.pdf: stratul inferior al cablajului (bottom layer), stratul superior al cablajului
(top layer) i stratul coninnd text (top overlay) [44].

















47

5. CONCLUZII

5.1. Contribuia personal

Lucrarea cu titlul Sistem automat de asigurare a poziiei corecte de studiu
este o versiune nou fa de sistemele deja existente pe pia pentru asigurarea
unei poziii corecte a spatelui utilizatorului n timpul lucrului la birou sau n timpul
studiului. Lucrarea s-a concretizat ntr-un sistem alctuit dintr-un dispozitivul
electronic de monitorizare a poziiei spatelui utilizatorului i un smartphone.
Sistemul de asigurare a poziiei corecte de studiu este compus dintr-o
platform de dezvoltare interconectat cu un senzor de acceleraie pentru
msurarea gradului de nclinare al spatelui, un modul bluetooth pentru
transmiterea datelor ctre smartphone i un mini-difuzor folosit pentru avertizarea
utilizatorului, atunci cnd gradul de nclinare al spatelui depete o anumit
valoare prescris. Fiind alimentat prin intermediul unei baterii, iar transmisia
datelor ctre smartphone realizndu-se wireless prin intermediul microundelor, se
poate observa c sistemul realizat de noi este foarte flexibil, fiind uor de integrat
n viaa de zi cu zi.
Avantajul major al sistemului nostru fa de alte produse asemntoare este
preul de cost redus ns se mai pot aminti i alte avantaje precum ar fi precizia
ridicat a dispozitivului, dat fiind faptul c pentru colectarea datelor privitoare la
poziia spatelui utilizatorului se folosete un traductor de acceleraie digital de
nalt performan. Un alt avantaj al dispozitivului nostru se consituie in rata
sczut a erorilor n transmiterea datelor ctre smartphone, folosindu-se un
modul bluetooth modern, alturi de o aplicaie smartphone bazat pe un software
open-source bine optimizat.






48

5.2. Rezultate experimentale

n cadrul simulrii condiiilor de funcionare ale sistemului conceput de noi s-au
analizat diverse aspecte care trebuie luate n calcul atunci cnd vine vorba despre
integrarea sistemului n stilul de via al utilizatorului. Am ales ca sistemul automat
de asigurare a poziiei corecte a spatelui s vizeze doar lucrul la birou. Pornind de la
premiza folosirii dispozitivului exclusiv la birou, odat fixat pe spatele utilizatorului,
acesta nu ar necesita un sistem de prindere foarte riguros i de aceea am apelat la
fixarea dispozitivului prin intermediul unei simple curele textile. Folosirea unei curele
prezint i avantajul flexibilitii i confortului n timpul n care dispozitivul
monitorizeaz poziia spatelui utilizatorului. Totui, menionm ca sistemul de
prindere al dispozitivului electronic ar putea fi modificat, n concordan cu nevoile
utilizatorului.
Aspectul final al dispozitivului de asigurare a poziiei corecte de studiu, cu i fr
suportul de prindere, este prezentat n continuare:

Figura 5.1 Dispozitivul de asigurare a poziiei corecte de studiu cu suport de
prindere

49



Figura 5.2 Dispozitivul de asigurare a poziiei corecte de studiu fr sistem
de prindere

Smartphone-ul folosit care parte integrant a sistemului ruleaz folosind
sistemul de operare Android 4.1.2, aplicaia SenzorSpate folosit de ctre noi fiind
optimizat pentru respectiva versiune a sistemului de operare Android. n continuare
se pot observa cateva secvene din cadrul aplicaiei folosite pentru monitorizarea
poziiei spatelui n timpul lucrului la calculator, afiarea unui mesaj privind poziia
spatelui utilizatorului i realizarea unui grafic care s evidenieze variaia acesteia pe
un anumit interval de timp.



50



Figura 5.3 Interfaa aplicaiei SenzorSpate n cazurile: spate drept; spate
nclinat; revenire n poziie spate drept


5.3. Posibiliti de dezvoltare ulterioar

Sistemul automat de asigurare a unei poziii corecte de studiu conceput de noi
poate fi folosit n cadrul altor aplicaii sau poate deservi ca o baz de cunoatere
pentru realizarea sistemelor de monitorizare a copiilor, a persoanelor bolnave sau a
persoanelor n vrst. Sistemul poate fi optimizat prin utilizarea altor mijloace
wireless de transmitere la distan a datelor, ct i stocarea acestora pe servere,
pentru a putea fi accesate ulterior. Mai mult dect att, dispozitivul electronic de
asigurare a poziiei corecte a spatelui poate fi micorat ca dimensiune, prin utilizarea
componentelor electronice de tipul SMD n locul celor THT folosite de noi sau a unor
componente similare, ns de dimensiuni mai reduse, realizate prin tehnologii
superioare.



51

6. BIBLIOGRAFIE
[1] Nicolae Brlea, Fizica Senzorilor, Editura Albastr, 2014
[2] Petru Ion Todos, Carmen Golovanov, Senzori i traductoare, Editura Tehnic
Chiinu, 1998
[3] Nicolae Dumitru Alexandru, Adrian Graur, Domotic o incursiune n casa
viitorului, Editura Mediamira, Cluj-Napoca, 2006
[4] Michael Margolis, Arduino Cookbook, OReilly Media, martie 2011
[5] J onathan Oxer, Hugh Blemings, Practical Arduino: Cool Projects for Open Source
Hardware, ISBN 978-1-4302-2477-8, decembrie 2009
[6] F.S. Barrett, Arduino Microcontroller Processing for Everyone, Laramie,
Wyoming, USA, 2013
[7] J . Valentino, A. Reghu, Introduction to Sensors, Taylor and Francis Group, New
York, USA, 2011
[8] J .S. Wilson, Sensor Technology Handbook, Oxford, UK, 2004
[9] Frank H. Netter, Atlas of Human Anatomy, Elsevier, 2014
[10] K. M. Goel, Robert Carachi, Hutchisons Atlas of Pediatric Physical Diagnosis,
J aypee Medical Publishing, 2014
[11] http://www.lumobodytech.com/lumoback/
[12] http://lumo.wpengine.netdna-cdn.com/wp-content/themes/Lumo-
Child/images/fold_c.jpg
[13] https://www.kickstarter.com/projects/lumoback/lumoback-the-smart-posture-
sensor
[14] https://s3.amazonaws.com/ksr/assets/000/041/135/9bf07d06b5b9dc15524ceec9
5 2a4711f_large.jpg?1340410703
[15] http://www.amazon.com
[16] http://www.gizmag.com/upright-sensor-vibrate-posture/32180/

52

[17] http://images.gizmag.com/inline/upright_posture_sensor-9.png
[18] http://www.ebay.com/
[19] http://www.analog.com/static/imported-files/data_sheets/ADXL345.pdf
[20] http://makezineblog.files.wordpress.com/2014/03/hc_hc-05-user-instructions
[21] http://arduino.cc/en/uploads/Main/ArduinoUnoFront450px.jpg
[22] http://arduino.cc/en/Main/arduinoBoardUno
[23] https://learn.adafruit.com/downloads/pdf/adxl345-digital-accelerometer.pdf
[24] http://www.analog.com/static/imported-files/data_sheets/ADXL345.pdf
[25] http://www.ventor.co.in/images/ADXL345%20Module.jpg
[26] https://sparkfun.com/tutorial/ADXL/ADXL_Hookup.png
[27] https://www.sparkfun.com/tutorials/240
[28] http://makezineblog.files.wordpress.com/2014/03/hc_hc-05-user-instructions-
bluetooth.pdf
[29] https://www.charlylabs.cl/wp-content/uploads/2013/11/hc06.jpg
[30] http://www.plastibots.com/wordpress/wp-content/uploads/2013/12/hc-06.jpg
[31] http://www.tiny-labs.com/projects/electronics-projects/-part-hc-06-bluetooth-to-
serial-adapter
[32] http://hacktronics.co.in/images/arduino_bluetooth_serial.jpg
[33] http://www.emartee.com/product/41915/HC%2006%20Serial%20Port%20Blueto
oth%20Module
[34] http://www.tme.eu/hu/Document/d47867e4b50e046e197aeceb76001f2b/ld-
bzeg-0905.pdf
[35] http://www.tme.eu/en/details/ld-bzen-1212/electromagnetic-sounders-wo-
generator/loudity/

53

[36] http://www.marelectronics.gr/photos/eshopItems/thumbs/ld-bzen-1212.jpg
[37] http://ecx.images-amazon.com/images/I/31ZLkAP5n0L._SX300_.jpg
[38] http://www.robotplatform.com/howto/pcb%20etching/pcb_etching_1.html
[39] http://en.wikipedia.org/wiki/Integrated_development_environment
[40] http://arduino.cc/en/guide/Environment
[41] http://arduino.cc/en/Tutorial/ReadAnalogVoltage
[42] https://www.sparkfun.com/tutorials/240
[43] http://www.amarino-toolkit.net/
[44] https://www.cmc.ca/en/WhatWeOffer/Products/CMC-00200-02241.aspx
[45] http://www.electronica-azi.ro/echipamente-smt/pcb














54

7. ANEXE

7.1. Schema electronic a circuitului


55

7.2. Cabl ajul imprimat


56

7.3. Apli caia realizat n mediul de dezvoltare Arduino IDE

7.3.1 Partea de iniializare a aplicaiei


57

7.3.2 Partea de execuie a aplicaiei








58

7.3.3 Definirea fuciilor folosite n cadrul aplicaiei




59

7.1. Partea aplicaiei pentru smartphone folosit pentru preluarea datelor de
la Arduino

S-ar putea să vă placă și