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
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/