Specializarea: Inginerie Software [310954]

UNIVERSITATEA DE VEST DIN TIMIȘOARA

FACULTATEA DE MATEMATICĂ ȘI INFORMATICĂ

Specializarea: Inginerie Software

Hand Motion Multifunctional Bracelet

Coordonator științific Absolvent: [anonimizat]

2018

Abstract

Gesture recognition represents the next way to communicate with computerised systems. That type of interface represents a [anonimizat] a communication interface more natural for who it uses it. Nowadays, almost every device that surround us contains electronics in it. The communication with those it is done using their own communication interface. In that way, a device can be seen like a whole thing by a user but it must take into consideration that it has an interface that it uses as a channel for communication.

[anonimizat], but also in gaming industry. That method of interaction with an electronic device has attracted a big attention in last years but not only because of it is interesting applications that can be developed but also because of it is abilities to offer to you a way to interact with a machine using a natural way. In that way it is created a natural communication between human and machines. The most important scope to create a recognition system based on hand recognition is to create a [anonimizat], computer. [anonimizat]. [anonimizat].

Even the gestures are different from a [anonimizat], them represents a normal way of communication. [anonimizat], [anonimizat]. [anonimizat], the gestures become a way to have a dialogue with a [anonimizat], [anonimizat], [anonimizat].

[anonimizat], [anonimizat] a human way of communication, a simplified one to be more precisely. Compared with old ways to communicate with a computer, [anonimizat]., the gesture interpretation is categorized into a [anonimizat]. Such a [anonimizat] a user can interact with it using gestures is described in that paper. [anonimizat], not only a personal computer.

[anonimizat], [anonimizat]. [anonimizat] is internal behaviour. In that paper are made references about the device from both software point of view, and from hardware point of view. One of the mechanism that helped very much to finalise the application is the logging mechanism which is available in both of the components.

Abstract

Recunoașterea de gesturi reprezintă o nouă metodă de a comunica cu sistemele computerizate. Acest tip de interfață este o provocare căreia i se acordă un mare interes în ultimii ani deoarece oferă o interfață de comunicare mai naturală pentru cine o folosește. În zilele noastre, aproape orice ne înconjoară conține componente electronice: de la expresorul de cafea, până la calculatorul personal. Comunicarea cu acestea se face folosind interfața de comunicare proprie a dispozitivului. Astfel, un dispozitiv poate fi văzut de către un utilizator ca un tot unitar, dar trebuie avut în considerare că acesta are o interfață prin care comunică și cu cât această interfață este mai atractivă, cu atât mai mult utilizatorul va fi interesat în a-l folosi.

Recunoașterea de gesturi umane poate aduce beneficii în mai multe domenii incluzând interacțiunea om-calculator, industria de supraveghere, cât și cea de jocuri video. Această metodă de interacțiune cu un sistem electronic a captat o atenție sporită în ultimii ani din cauza aplicațiilor interesante pe care le poate aduce, dar și datorită abilității de a interacționa cu mașina în mod eficient și natural, creând astfel o comunicație om-calculator naturală. Principalul scop al creării unui sistem de recunoaștere al gesturilor mâinii este de a crea o interacțiune naturală între om și calculator, sau mai bine zis mașină. Comunicarea la nivelul unui dialog între doi interlocutori are loc atât verbal, cât și nonverbal. Limbajul trupului face ca o comunicare între două sau mai multe persoane să fie mai completă, oferind mai multe informații de o importanță mare între indivizi. Astfel, noi oamenii suntem obisnuiți să comunicăm prin gesturi, chiar dacă uneori nu realizăm acest lucru.

Deși gesturile diferă de la o cultură la alta, cât și de contextul în care sunt folosite, ele reprezintă un mijloc de comunicare normal. Una dintre barierele existente în această arie o reprezintă modalitatea prin care interacționăm cu cantitatea mare de date. Prin intermediul comunicației non-verbale, pe care o realizăm spre exemplu, prin mișcarea mâinii, gesturile devin un mijloc de a purta un dialog cu un sistem de calcul, unde mai rămâne doar preluarea datelor de către sistem, analiza acestor date, identificarea gesturilor și, după caz, chiar răspunsul sistemului.

Odată cu dezvoltarea tehnologiei calculatoarelor, interacțiunea dintre om-mașină se dezvoltă continuu și sustenabil către o comunicație umană și simplificată, printre care gesturile mâinii fac parte din această categorie de comunicație umană. În comparație cu metodele de interacțiune prin contact, cum ar fi mouse-ul, tastatura etc., interpretarea gesturilor se încadrează într-o categorie de comunicare mai naturală, elegantă și mai ușoară pentru un utilizator.

Un astfel de dispozitiv, prin intermediul căruia un utilizator poate comunica cu un sistem este descris în lucrarea dată. Utilizatorul poate să selecteze funcționalitatea brățării, care poate fi folosită pentru a comunica cu mai multe sisteme electronice, nu numai cu un calculator personal.

Dispozitivul are în componența lui două componente fizice, respectiv brățara care preia mișcările executate și asupra cărora face analiza gesturilor și dongle-ul care vine conectat la sistemul electronic care se așteaptă să primească datele de intrare. În această lucrare se vor face referiri atât la dezvoltarea dispozitivului din punct de vedere software cât și dezvoltarea din punct de vedere hardware. Un factor care a ajutat foarte mult la finalizarea aplicației este mecanismul de logging al device-ului. Acesta va fi prezentat în secțiunea dedicată pentru a înțelege beneficiile sale.

CUPRINS

INTRODUCERE………………………………………………………………………………………………………… 5

CAPITOLUL 1. Realizări asemănătoare………………………………………………………………………… 9

1.1 Recunoașterea de gesturi folosing Kinect……………………………………………………….. 10

1.2 Scaun cu rotile controlat cu mișcarea capului………………………………………………….. 11

1.3 Recunoașterea gesturilor folosind o cameră web……………………………………………… 12

1.4 Recunoașterea gesturilor folosind mănuși……………………………………………………….. 13

CAPITOLUL 2. Protocoale de comunicație……………………………………………………………………. 15

2.1 I2C…………………………………………………………………………………………………………….. 16

2.2 Protocolul HID……………………………………………………………………………………………. 18

2.3 Modul de comanda AT…………………………………………………………………………………. 18

2.4 Tehnologia bluetooth serială………………………………………………………………………….. 19

CAPITOLUL 3. Securitatea transmiterii datelor wireless………………………………………………….. 21

3.1 Criptarea datelor: Simetrică și Asimetrică……………………………………………………….. 22

3.1.1 Criptarea simetrică…………………………………………………………………………… 23

3.1.2 Criptarea asimetrică…………………………………………………………………………. 23

3.2 Securitatea bluetooth…………………………………………………………………………………….. 24

CAPITOLUL 4. HandMotion Multifunctional Bracelet…………………………………………………….. 26

4.1 Componente hardware…………………………………………………………………………………… 27

4.1.1 Microcontrollere…………………………………………………………………. 28

4.1.1.1 Arduino Leonardo………………………………………………………………. 29

4.1.1.2 Arduino Pro Micro……………………………………………………………… 29

4.1.2 Sistemul de operare al unui microcontroller………………………………………… 30

4.1.3 Bluetooth HC-05……………………………………………………………………………… 31

4.1.4 Modulul accelerometru și giroscop MPU6050…………………………………….. 32

4.1.5 Servomotoare………………………………………………………………………………….. 33

4.1.6 Automodele…………………………………………………………………………………….. 33

4.2 Componente software……………………………………………………………………………………. 34

4.2.1 Emițătorul………………………………………………………………………………………. 38

4.2.2 Receptorul………………………………………………………………………………………. 39

4.2.3 Mecanismul de logare intern …………………………………………………………….. 40

CONCLUZII………………………………………………………………………………………………………………… 41

BIBLIOGRAFIE…………………………………………………………………………………………………………… 44

Introducere

Ideea pentru un astfel de dispozitiv a venit observând tendința oamenilor de a folosi cât mai mult dispozitivele portabile în viața de zi cu zi. Cu cât este mai naturală interacțiunea cu un dispozitiv, cu atât acesta va fi mai folosit și agreat de către utilizatorii săi. Dacă luăm ca exemplu un telefon mobil din zilele noastre, comunicarea se face cu ajutorul ecranului tactil. Acest ecran oferă posibilitatea introducerii de date cât și de afișare a lor, iar pentru introducerea datelor se folosește degetul. Mutarea obiectelor dintr-un loc în altul, scrierea de mesaje, efectuarea fotografiilor, au devenit niște gesturi naturale pentru oameni. Față de predecesoarele lor, telefoanele cu ecran tactil sunt mult mai eficiente în a fi folosite față de cele cu butoane, deoarece poți scrie mai repede, au un ecran mai mare și sunt mai intuitive.

Recunoșterea și interpretarea gesturilor reprezintă metoda viitorului de a comunica cu un sistem sau alte dispozitive. Dacă luăm ca exemplu smartphone-ul, după cum se spune și în [1] utilizarea lui este foarte intuitivă, cum ar fi mutarea aplicațiilor cu ajutorul unui deget sau folosirea maximizării și minimizării imaginilor prin apropierea-distanțarea a două degete. De asemenea și comunicarea cu alte dispozitive poate deveni mai naturală. Pentru cercetările din acest domeniu se foloseau la început camere video, care transmiteau imaginile pentru a fi analizate pe un sistem de calcul. Aceste sisteme sunt foarte greoaie în execuție, iar unele caracteristici, cum ar fi culoarea pielii, din cauza luminii, pot face distingerea de gesturi dificilă, după cum se afirmă în [2]. Pentru a avea rezultate optime, autorul spune că un sistem de urmărire al gesturilor trebuie să îndeplinească niște cerințe cheie precum: performanțe înalte, caracteristici în timp real, latență joasă. Cele mai multe exemple din literatură nu fac față în urmărirea de gesturi care sunt complexe și executate rapid. În lucrarea [2] se prezintă un sistem care ajunge la o rată de frame-uri de 25 pe secundă, prin intermediul cărora, gesturile complexe pot fi interpretate. Tot în această lucrare se fac referiri la algoritmi de optimizare, cu ajutorul cărora se pot interpreta gesturi mai rapide și mai complexe.

Lucrarea [3] expune faptul că tehnologia se dezvoltă foarte rapid, iar o nouă necesitate a apărut și anume necesitatea de a îmbunătăți interfețele om-mașină, deoarece, ceea ce s-a folosit până acum, reprezintă interfețe vechi care nu mai sunt așa mulțumitoare. Autorul afirmă că gesturile făcute prin intermediul mâinii sunt mai naturale și chiar mai sigure pentru a comunica cu un calculator.

Alte lucrări [4] fac referire la mănuși care trebuie purtate pentru a recunoaște gesturi. Acestea au foarte mulți senzori și pot fi foarte eficiente, însă pot să creeze disconfort în a fi purtate.

Dispozitivul propus în lucrarea de față este o brățară care să se poarte pe una din mâini, iar prin intermediul ei se vor prelua datele din mediu, care vor fi interpretate ca gesturi. În interiorul dipozitivului va avea loc analiza de gesturi într-o bază locală a lor, mapată în memoria non-volatilă, care nu se schimbă decât dacă sunt disponibile noi gesturi cu o actualizare ulterioară. Inițial s-a dorit crearea unei brățări care să fie purtată pe mână și să înlocuiască un mouse de calculator. Ideea a rămas, dispozitivul poate fi folosit în acest fel, dar s-au mai adăugat și funcționalități noi. Prin selectarea modului printr-o configurație de push-button-uri, dispozitivul mai poate fi folosit ca stație de emisie recepție pentru radiomodele, cum ar fi: automodele, navomodele, aeromodele, mai exact orice dispozitiv care folosește ca mijloc de direcție motoare servo, iar pentru deplasare ESC (control electronic de viteză).

În componența device-ului mai este receptorul, care este conectat la brățară printr-o serială bluetooth securizată. Gesturile sunt trimise de către emițător la receptor, plus un număr de parametri, cum ar fi x și y pentru mutarea mouse-ului. ID-ul gestului va fi interpretat de receptor și va da comenzile necesare către sistemul de care este atașat.

Interacțiunea om-calculator, care mai este denumită și interacțiunea om-mașină se referă la relația dintre om și calculator sau mai precis mașină [5], deoarece mașina este nesemnificativă fără factorul uman. Există două caracteristici principale care trebuie luate în considerare atunci când se dorește proiectarea unui sistem de acest gen: funcționalitatea și utilizabilitatea. Funcționalitatea unui sistem se referă la setul de funcții sau servicii pe care le oferă sistemul către utilizator, în timp ce utilizabilitatea sistemului se referă la nivelul și scopul la care poate opera și funcționa sistemul pentru a îndeplini cerințele utilizatorului la eficiența cerută. Sistemul care reușește să aducă un echilibru între aceste concepte este considerat performant și puternic.

Gesturile folosite pentru comunicația dintre om si mașină pot fi echivalate cu gesturile care sunt folosite de oameni pentru a comunica prin limbajul semnelor. Gesturile pot fi statice, gesturi care necesită o complexitate de calcul mai mică sau dinamice, care sunt mai complexe, necesită o putere de calcul mai mare, dar sunt mai potrivite pentru un sistem bazat pe execuție în timp real. Pe parcursul timpului, mai multe metode au fost propuse pentru a aduna informațiile necesare pentru un sistem de recunoaștere. Unele metode folosesc dispozitive adiționale cu ar fi mănuși sau markeri de culoare. Alte metode se bazează pe apariția mâinii și folosesc culoarea mâinii pentru a segmenta mâna și a extrage gesturile [6].

O interacțiune bazată pe interpretarea gesturilor poate ajuta la diversificarea modalităților de comunicare între om și dispozitive electronice sau chiar între oameni, oferind mijloace de comunicare naturale și intuitive. Acest lucru implică preluarea datelor de la diverși senzori, procesarea acestor date și clasificarea gesturilor. Acest domeniu a devenit o arie de explorare foarte importantă din pricina importanței în domeniul inteligenței artificiale, deoarece își găsește aplicații în problematici cu legături asupra limbajului semnelor, ale recuperării medicale, realitate virtuală.

În cercetările de actualitate este explicată importanța sistemelor de recunoaștere de gesturi în viața de zi cu zi, în special în următoarele domenii: interacțiuniea om-mașină, controlul roboților, jocuri video, sisteme de supraveghere [7]. Prin acest lucru se dovedește faptul că recunoașterea de gesturi avansează și este implementată în arii tot mai numeroase.

Tendința sistemelor de interfațare om-mașină este de a înlocui dispozitivele fizice, mecanice cu dispozitive care pot interpreta gesturile naturale. Prin implementarea unui sistem de interpretare a gesturilor, dispozitivele clasice vor deveni dispensabile. Aceste interfețe își găsesc locul în mai multe domenii, nu numai în domeniul utilizatorului de zi cu zi, care folosește o astfel de interfață pentru a juca un joc video, cum ar fi medicină, tehnici de identificare, industrie (manipularea unor obiecte grele prin intermediul roboților, dar care execută comenzile în aceeași manieră în care utilizatorul le face în fața detectorului).

Care este scopul interpretării de gesturi și ce aduce nou această metodă de comunicare? Gesturile mâinilor și al brațelor ajută la interpretarea, recunoașterea limbajului semnelor, iar în urma analizei, se pot transmite comenzi și manevra obiecte. După cum am amintit și anterior, gesturile sunt de două feluri: dinamice și statice. Cele dinamice implică mișcarea, iar complexitatea de analiză a lor este mai mare, iar cele statice nu implică mișcare, fapt care conduce la o analiză de o complexitate mai mică. De asemenea mai există și gesturi ale întregului corp, care implică mișcarea corpului. Aceste tipuri de gesturi sunt mult mai dificil de urmărit, deoarece necesită o complexitate sporită în a le analiza. Provocările care sunt întâlnite în această arie de dezvoltare sunt: viteza la care trebuie să fie adaptat algoritmul/aplicația astfel încât să ruleze în timp real. În analiza de imagini putem spune că, pentru a rula în timp real, o aplicație trebuie sa aibă măcar viteza de 25 de frame-uri pe secundă, lucru care înseamnă că o dată la 40 milisecunde are loc rata de reîmprospătare. Acest termen, să ruleze în timp real, se referă la capacitatea sistemului nu numai de a oferi rezultate logice corecte, dar să le ofere la timpul care trebuie. Astfel, caracteristica dominantă a unui sistem în timp real este timpul. Pentru a atinge exigențele unui astfel de sistem, prelucrările trebuie realizate în limitele de timp maxim alocate. Aceste limitări de prelucrări se numesc contrângeri temporale.

În funcție de contrângerile legate de timp, sistemele pot fi de două tipuri: sisteme critice și necritice. Sistemele critice sunt acele sisteme care, dacă nu îndeplinesc una dintre constrângeri, se evaluază a fi o eroare gravă. Sistemele necritice au posibilitatea neîndeplinirii anumitor constrângeri temporale, neinterpretând o abatere ca o eroare gravă. Bineînțeles, pentru un astfel de sistem, un mecanism de înregistrare a abaterilor este necesar pentru a urmări abaterile întâlnite și pentru a le evalua.

Un sistem de recunoaștere trebuie să fie de asemenea exact, adică să ofere acuratețe, cum ar fi la schimbările de mediu, lumină. Spre exemplu, fundalul poate interfera cu culoarea pielii în cazul unui algoritm care se bazează pe camere și procesare de imagine.

Sistemele integrate, care folosesc microcontrollere, reprezintă sisteme de calcul care lucrează în timp real. Aplicația care rulează în interiorul unui microcontroller este diferită de o aplicație windows din punct de vedere al rulării și prelucrării datelor. Un microcontroller, pentru a funcționa, are un sistem de operare. Cel mai simplu sistem de operare este bucla while (1), care se repetă la infinit. Din momentul în care este alimentat, un microprocesor, execută niște rutine specifice arhitecturii sale, după care sare la prima linie de cod. La început, trebuie apelate rutinele de inițializare, prin intermediul cărora nimic nu este lăsat la voia întamplării, variabilele sunt setate, pentru a nu avea valori reziduale. După ce s-a executat rutina de inițializare, se trece la bucla ciclică sau la task-urile ciclice, dacă este cazul. Acea buclă ciclică poate fi numită task de execuție, deoarece, după rularea ei, se repetă la nesfârșit, până la tăierea alimentării. Trebuie avut în vedere plusurile care sunt aduse de microcontrollere atunci când ne gândim la un sistem în timp real. Acestea dispun de niște capabilități speciale și anume de întreruperi care pot apărea oricând în timpul execuției, oriunde ești în cod. Desigur, se pot izola secțiuni de cod pentru a nu întrerupe acea rutină dacă este importantă. Luăm ca exemplu un ansamblu de airbag și un microprocesor care se ocupă de declanșarea acestuia. Dacă în momentul în care microprocesorul a detectat un accident este întrerupt de un eveniment de tip întrerupere, el deja făcând operațiile de a declanșa airbag-ul, declanșarea nu va mai avea loc la momentul necesar și va apărea o întârziere în sistem. Întreruperea poate fi de două tipuri: software și hardware. Ca exemplu pentru întreruperea de tipul software putem da timer-ul, o funcționalitate a unui microcontroller de a cronometra. O întrerupere de tip hardware poate fi o tastă apăsată. Principala caracteristică a întreruperilor este că se întâmplă instantaneu. De aceea sistemele care folosesc microcontrollere sunt mai benefice pentru a fi folosite în dezvoltarea de aplicații în timp real. De avut în considerare că după ce o întrerupere este declanșată, rutina ei este apelată. Când spunem rutină, ne referim la funcția care va trata acea întrerupere. Trebuie ținut cont că o rutină de întrerupere trebuie să fei scurtă, pentru a nu sta foarte mult timp în interiorul ei, deoarece programul a fost oprit de la execuția lui normală și s-a abătut pentru a trata evenimentul sosit.

Din moment ce tehnologia calculatoarelor evoluează continuu, dezvoltarea este în continuă creștere din punct de vedere al umanizării interfețelor om-mașină, iar simplitatea recunoașterii gesturilor reprezintă un bun pas inițial de plecare.

Lucrarea este structurată astfel: prima parte, cea curentă în care se explică aspecte despre recunoașterea de gesturi la modul general, a doua parte în care sunt prezentate realizări asemănătoare cu ceea ce se propune a fi realizat în lucrarea de față. În această secțiune a lucrării sunt exemplificate câteva lucrări ale unor autori care au făcut cercetare asupra interpretării gesturilor folosind senzorul Kinect, camera web, diverse mănuși, cât și o abordare de nivel mai jos, mai aproape de hardware, prin folosirea unui accelerometru. În următoarea secțiune, cea cu numărul trei, sunt explicate protocoalele de comunicație care au fost folosite pentru transmiterea de date în partea aplicată a lucrării, dar, de asemenea, aceste protocoale pot fi interpretare ca fiind utilitare și pentru celelalte lucrări. Într-o altă secțiune m-am referit la securitatea transmisiei de date, deoarece este important ca datele care sunt transmise de la un emițător la un receptor să nu fie alterate și să prezinte siguranța datelor valide, cele care sunt necesare, nefiind alterate prin diverse mijloace. În continuare urmează partea lucrării aplicate, unde există două mari categorii, și anume hardware și software. În secțiunea de componente hardware au fost enumerate componentele folosite pentru realizarea sistemului de detecție de gesturi, iar în partea de software este expus algoritmul, implementarea și funcționalitatea sistemului. În secțiunea hardware se enumeră toate componentele hardware folosite, precum plăcuțele de dezvoltare, modulul de bluetooth, accelerometrul și giroscopul, servomotoarele. Tot aici se explică ce este acela un automodel, în scopul de a face legătura lor cu brățara multifuncțională. De asemenea se explică ce este un microcontroller și se enumeră cele folosite în lucrarea de față. Secțiunea care face referire la componentele software ale sistemului de detecție este împărțită în strânsă legătură cu ansamblul hardware al sistemului, respectiv cu emițătorul și receptorul. Tot aici se află și descrierea sistemului intern de logare, creat în scopul de urmărire al outputului pe parcursul dezvoltării.

În final au rezultat concluziile la care am ajuns în urma cercetării efectuate asupra modalităților de interpretare a gesturilor, respectiv asupra tehnicilor folosite de către autorii referințelor făcute.

1. Realizări asemănătoare

Există mai multe tipuri de abordări când ne referim la domeniul de recunoaștere a gesturilor, iar principalele tipuri care se conturează sunt următoarele: utilizarea modelului matematic de rețele neuronale. Prin intermediul acestei abordări se dorește simularea sistemului neuronal al unui om. Rețelele neuronale acceptă ca intrare trăsături și oferă ca date de ieșire deciziile.

În ultimii ani, dezvoltarea de sisteme foarte avansate s-a răspândit în viața noastră de zi cu zi în mai multe arii, cum ar fi asistare socială, roboți de supraveghere, roboți capabili să țină tururi. Drept consecință, dezvoltarea de noi interfețe a primit o atenție sporită pentru a fi capabile să ofere metode noi și confortabile de comunicare cu roboți de la distanță, dar și pentru a încuraja persoanele fără pregătire să interacționeze cu aceștia. Până acum cele mai folosite interfețe de comunicare între om și roboți sunt tastaturile, mouse-urile, joystick-urile, până la dispozitive de comunicare mai complexe cum ar fi senzori de mișcare, senzori electromagnetici, mânuși sau sisteme exoschelete. Recent, ultimul trend în materie de comunicare se dorește dezvoltarea interfețelor în mod diferit și anume interfețe fără contact, mai naturale și mai mult îndreptate către mediul uman. Această modă este în continuă creștere datorită componentelor ieftine, cum ar fi senzorii în profunzime.

În urma studiului efectuat asupra domeniului dat, putem deduce următoarea clasificare asupra tehnicilor de prelucrare de gesturi: fără contact și cu contact. Tehnicile fără contact se bazează pe prelucrarea de imagini cu ajutorul camerelor video, stereo, adâncime, în timp ce tehnicile bazate pe contact operează pe date preluate de către dispozitivul hardware specific, cum ar fi o mânușă, brățară etc. Deși în ultimii ani, când se făceau referiri la recunoașterea de gesturi, se identifica în mod principal utilizarea de mănuși.

Mănușile reprezintă o tehnologie prin intermediul căreia mișcarea este captată. Acestea conțin mai mulți senzori, printre care și un detector de mișcare, fie el magnetic, fie inerțial, care mapează poziția degetelor. Acestea sunt folosite în special pentru a realiza manipulări în aplicații din mediu virtual, aplicații care țin mai mult de lumea virtuală. Aceste dispozitive nu au rolul de a face operații pe baza informațiilor care le colectează, ci trimit mai departe către un calculator care este pe post de server. Acest sistem se aseamănă foarte mult cu unul pe bază de agenți. Mănușa, care poate fi reprezentată ca agent, este specializată pe adunarea datelor și oferirea acestora către alt agent, server-ul. Ca principale avantaje, aceste dispozitive sunt independente de factori naturali cum ar fi lumina. Principalul dezavantaj îl reprezintă prețul relativ ridicat de producere. Totuși, un astfel de dispozitiv este destul de dificil de folosit din cauza inconvenientului de a le purta, deoarece sunt deranjante în alte activități.

Camerele de adâncime se ocupă cu calculul distanței dintre ele și obiectele din încăpere. Principiul de funcționare al acestor dispozitive este prin măsurarea distanței care este parcursă de la senzor la obiect.

În domeniul de specialitate există deja biblioteci care pot fi folosite pentru prelucrarea de gesturi: NumPy, SciPy2015, SimpleCV, Pandas.

1.1 Recunoașterea de gesturi folosing Kinect

Recunoașterea de gesturi este esențială pentru comunicarea dintre om și mașină. În lucrarea [8] este propusă o metodă de recunoaștere a gesturilor umane folosind o cameră Kinect de profunzime. Această interfață reprezintă un dispozitiv de recunoaștere de mișcare care este folosit pe diverse console, calculatoare. Ea ajută utilizatorul să interecționeze/controleze jocurile și aplicațiile. Este un dispozitiv periferic, de intrare. Senzorul Kinect oferă o imagine color, cât și o imagine de profunzime generată prin intermediul senzorului optic integrat. Camera vede subiectul și generează o imagine în profunzime a subiectului. Tot această cameră este folosită și pentru înlăturarea fundalului, etapă urmată de generarea profilului de profunzime a subiectului. Diferența dintre frame-uri oferă profilul de mișcări al subiectului și este folosit pentru a recunoaște gesturi. Acestea permit folosirea eficientă a unei astfel de camere pentru a recunoaște multiple gesturi.

Această cameră 3D permite dezoltarea unei interfețe naturale dintre om și sisteme electronice, deoarece poate recunoaște gesturile în timp real.

Gesturile reprezintă un mijloc de comunicare important în viața noastră de zi cu zi. Deseori comunicăm prin mișcarea corpului, cum ar fi prin mișcarea mâinilor, capului, nu numai prin vorbire. Așadar, pentru o interacțiune de succes între om și mașină trebuie luate aceste gesturi în considerare. Foarte multă muncă a fost deja raportată pentru recunoașterea de gesturi și activități. Multe dintre studiile actuale sunt bazate pe folosirea de camere RGB. Prin intermediul lor, s-a dorit deseori urmărirea anumitor părți din corp cum ar fi capul, mâinile. În [10] este prezentată o abordare folosind Kinect pentru a recunoaște unele din cele mai comune gesturi. Acest dispozitiv interpretează o scenă 3D folosind o lumină infraroșu proiectată. Acest scanner 3D mai este denumit și codarea luminii și se ocupă cu reconstruirea de imagini 3D. Dispozitivul este de forma unui dreptunghi orizontal conectat cu un suport sub el, suport care este mobil și este creat pentru a fi pozițional sub sau deasupra unui monitor. De asemenea, are în componeța sa și o cameră RGB.

Senzorul de profunzime are în componența sa un laser infraroșu proiectat în combinație cu un senzor CMOS monocrom care captează date video format 3D în ambiente cu orice condiții de lumină. Pachetul de date video monocrom este de tip VGA cu 2048 de nivele de sensibilitate.

Primul lucru care a trebuit făcut în studiul lucrării a fost să izoleze omul, care va face gesturile, de fundal. Acest lucru a fost făcut prin substragerea de fundal din imaginea de profunzime. Următorul lucru necesar a fost aflarea poziției mâinii.

Sistemul a fost antrenat folosind multiple clase SVM pentru a recunoaște opt gesturi. Astfel, o matrice a fost generată pentru întregul set de date de antrenare. Fiecare frame al video-ului a fost reprezentat de către o linie din matrice.

În urma documentării asupra interfețelor de comunicație prin intermediul senzorului Kinect create de către alții, am putut vedea beneficiile și eficiența care o aduce și de ce este o interfață așa de folosită în atât de multe sisteme. În următoarea figură sunt transpuse rezultatele sistemului prezentat mai sus:

Figura 1.1.1 Rezultate obținute asupra gesturilor folosind senzorul Kinect

1.2 Scaun cu rotile controlat cu mișcarea capului

Scaunul cu rotile este un dispozitiv folosit de către persoanele cu dizabilități motorii, care prezintă un deficit în a se deplasa dintr-un loc în altul. Scopul lucrării din care s-a făcut studiul de caz este de a prezenta un astfel de dispozitiv care este controlat de mișcările capului care să poată fi folosit de aceste persoane. Acest scaun este un dispozitiv electric care poate fi controlat de mișcările capului pacienților și care nu implică nici un efort fizic din partea lor, deoarece funcționează pe bază de motoare electrice. El folosește un accelerometru pentru a detecta mișcarea capului de înainte și înapoi, mișcări care vor fi analizate și mapate pentru a mișca dispozitivul. În lucrare se explică cum în zilele noastre multe persoane au nevoie de un scaun asemănător pentru a le ușura mobilitatea, așadar, pentru ei, reprezintă un imens beneficiu, deoarece, folosind scaunul, se pot deplasa dintr-un loc în altul fără efort. Folosind un scaun clasic, este necesară prezența unei alte persoane care să îi ajute.

Acest dispozitiv este mai eficient în comparație cu scaunele electrice convenționale cu joystick, deoarece ele necesită mișcarea mâinii, deci, nu sunt potrivite pentru oamenii paralizați. Dar, dispozitivul prezentat în lucrare este potrivit pentru oamenii care nu se pot mișca, plus, acest scaun este cu mult mai ieftin.

Ca senzor pentru detectarea mișcării s-a folosit accelerometrul MPU6050. În configurația electronică, accelerometrul este conectat la un suport pentru ureche, care folosește ca unitate de procesare un Arduino Nano. Ca modalitate de transmisie a datelor se folosesc frecvențele radio de 433Hz. Toate cele enumerate mai sus fac parte din componența transmițătorului. Pe partea receptorului, sunt în componență următoarele: modulul radio și controller-ul de motoare. Pentru acest proiect, accelerometrul este atașat de suportul de ureche și va detecta mișcările capului. El funcționează pe axele X și Y, deci, în momentul în care capul este mișcat înainte sau înapoi, stânga sau dreapta, axele accelerometrului se vor schimba față de punctele de referință. Apoi, datele sunt trimise la plăcuța Arduino, sunt analizate și le trimite către receptor prin radio frecvențe. Pe cealaltă

parte, a receptorului, datele sunt recepționate și date mai departe către un Arduino Uno. Prin intermediul unei punți H-Bridge sunt comandate motoarele electrice, pentru a mișca scaunul în direcția în care este necesar, conform comenzilor înregistrate.

Așadar, conceptul principal care stă în spatele acestei lucrări este folosirea accelerometrului pentru a interpreta gesturile. Deși accelerometrul dat are 3 axe pentru accelerație, 3 axe pentru giroscop, pentru implementarea dispozitivului final a fost nevoie de doar două axe de accelerație. Logica adevarată stă de fapt în componenta receptoare deoarece ea conține funcțiile motorii.

Tehnologiile bazate pe interpretarea de gesturi sunt foarte abordabile în zilele noastre și sunt implementate în foarte multe dispozitive pe care le folosim foarte des, cum ar fi televizoarele, consolele video etc.

În continuare voi enumera componentele folosite de către autor în realizarea acestui dispozitiv inteligent care poate ușura viața persoanelor cu disabilități și le poate oferi o nouă șansă la mobilitate:

Figura 1.2.1 Componentele hardware ale scaunului inteligent

1.3 Recunoașterea gesturilor folosind o cameră web

În lucrarea [9] este prezentat un sistem care crează modele ale corpului uman folosind o simplă cameră RGB. Există tehnici anterioare care folosesc camerele de acest fel, însă în lucrarea dată se prezintă o îmbunătățire, deoarece reușește să creeze o imagine 3D în mod automat și incremental, bazându-se pe mișcările umane.

Modelarea corpului uman are o arie largă de cercetare și este folosită în jocuri pe calculator, animații, lume virtuală și reprezintă un subiect de mare interes pentru comunități de cercetare. Cercetătorii au dezvoltat un număr mare de abordări folosind imagini în profunzime, scannere 3D, cât și imagini din mai multe perspective. Aceste abordări au condus la un progres rapid și eficient in producția de modele 3D ale corpului uman.

Utilizarea de senzori de profunzime, cum ar fi Kinect, a făcut posibilă reconstrucția de modele 3D folosind camere RGB.

Gesturile reprezintă o modalitate esențială de a comunica în viața oamenilor. Sistemele interactive de prezentare folosesc tehnici de interacțiune om-calculator pentru a oferi o interfață prietenoasă, cum ar fi schimbarea paginilor dintr-o prezentare, sus-jos. Pusă în comparație cu mouse-ul și tastatura tradițională, experiența prezentării este semnificativ mai plăcută. Recunoașterea de gesturi ale mâinii are arii largi de utilizare. În ultimii ani, sistemele capabile să interpreteze gesturi au devenit mai numeroase, iar cel mai des întâlnite în mediu public sunt la televizoare, jocuri video. Această metodă lasă oamenii să controleze produse într-un mod foarte natural, intuitiv.

În viitor, în special dispozitivele de consum, vor avea tot mai multe funcții de recunoaștere a gesturilor și tot mai complexe. În lucrarea [10] s-a creat un sistem de recunoaștere a gesturilor folosind o cameră web, care este bazat pe conceptul de procesare de imagine. Se spune că în ultimii ani a apărut foarte multă cercetare bazată pe folosirea de senzori Kinect și camere HD, dar acestea din urmă sunt mult mai costisitoare decât o cameră web. Lucrarea se bazează pe reducerea costului și îmbunătățirea robusteții unui sistem care folosește camere web.

Marea majoritate a sistemelor de recunoștere a gesturilor conțin trei etape majore. Prima etapă este detecția obiectului. Scopul acestei etape este de a detecta mâna din imaginile statice sau cele dinamice (video). Principalele probleme pe care le întâmpină abordarea bazată pe camerele video sunt: luminozitatea scăzută sau prea puternică, zgomotul de imagine, rezoluția mică și contrastul. Cu cât este mai bun mediul în care are loc detecția și cu cât este mai performantă camera folosită, cu atât rezultatele vor fi mai bune. A doua etapă a detecției de gesturi este recunoașterea obiectului. Mâna care este detectată va fi folosită de sistem pentru a recunoaște gesturile. În această etapă, cel mai dificil obstacol este diferențierea gesturilor între ele.

1.4 Recunoașterea gesturilor folosind mănuși

Pentru a accesa orice tip de informații, utilizatorii trebuie să efectueze comenzi repetitive folosind tatatura sau mouse-ul, lucru care conduce la pierdere de timp și acțiune care generează un inconvenient. Așadar, recunoașterea de mișcări ale mâinii a primit o deosebită atenție în a înlocui aceste gesturi, în ultimii ani. În lucrarea [10] sunt colectate și studiate mijloace de recunoștere a gesturilor care le efectuează omul folosind mâna, cum ar fi folosirea de mănuși colorate, cât și folosirea mănușilor care prezintă senzori la nivelul lor pentru a aduna informații. Aici sunt prezentate avantajele și dezavantajele fiecărei abordări în parte.

Recunoașterea de gesturi statice necesită învățare, dar utilizează mai puțină putere de calcul din partea sistemului pentru a fi efectuată. În schimb, recunoașterea de gesturi dinamice este mai complexă, mai consumatoare de resurse, dar mult mai eficientă.

Mănușile colorate mai sunt cunoscute și ca mănuși marcate. Pentru recunoașterea mâinii, urmărirea și localizarea ei sau a palmei, degetelor, utilizatorii trebuie să poarte acest tip de mănușă. În timpul recunoașterii s-au setat niște valori limită ale culorilor pentru a fi recunoscute gesturile mai ușor. Cu cât sunt folosite mai puține culori, cu atât acest tip de sistem va oferi rezultate mai mulțumitoare.

Figura 1.4.1 Mănuși colorate

Principalele avantaje ale acestui sistem sunt prețul foarte scăzut pentru aceste mănuși, plus faptul că nu au senzori sau alte componente electronice încorporate în ele. Aceasta reprezintă o formă foarte stabilă care poate fi folosită în acest domeniu. Unul din dezavanaje îl reprezintă faptul că utilizatorul trebuie să le poarte de fiecare dată când se dorește utilizarea sistemului.

Mănușile care utilizează senzori trebuie să fie de asemenea purtate pentru a putea funcționa sistemul. Ele reprezintă un ansamblu întreg de senzori care captează poziția și mișcarea mâinii. Acest tip de dispozitiv poate oferi cu ușurință coordonatele exacte, orientarea. Ele sunt foarte scumpe datorită senzorilor care sunt necesari pentru a realiza operațiile dorite cu ele.

Figura 1.4.2 Mănușă cu senzori

Recunoașterea gesturilor folosind tehnologiile de mai sus include diferite etape. Aceste etape sunt: pre-procesarea, detecția obiectului, segmentarea, clasificarea și recunoașterea gestului în sine.

Datele de intrare sunt preluate cu ajutorul camerei în cazul mănușilor colorate, iar în cazul celor cu senzori de către senzori în sine. De aici mai departe, etapele de mai sus, sunt urmate.

Ca și aplicabilitate, aceste interpretări pot fi folosite în mai multe domenii cum ar fi: controlul roboților, al televizorului, calculatorului, tabletei, jocurilor. De asemenea mai pot fi folosite și în limbajul semnelor, industria medicală, educație. Astfel, dezvoltarea unui interacțiuni eficiente dintre om și mașinării reprezintă o provocare, dar și o îmbunătățire a vieții de zi cu zi a oamenilor.

2. Protocoale de comunicație

În domeniul calculatoarelor, al dezvoltării de software, hardware, un protocol de comunicație reprezintă un set de reguli, cât și norme care trebuie respectate atât de emițător, componenta care trimite un mesaj, cât și de receptor, componenta care recepționează acel mesaj. Acest lucru permite ca într-un sistem, două sau mai multe entități să comunice între ele într-un anumit mediu. Aceste reguli sunt create și îmbunătățite permanent de către organizații și comitete din domeniul în care se aplică.

Utilizarea unui anumit protocol se face pe baza cerințelor care trebuiesc îndeplinite, dar se ia în calcul și costurilor care le implică. Comunicația implică schimbul de informații de la un sistem la altul folsind un mediu fizic. Un protocol reprezintă un set de reguli. Astfel, folosind cele două definiții, obținem că un set de reguli care permit două dispozitive electronice care să permită schimbul de date de la unul la altul. Un microcontroller are două modalități de comunicare: interne și externe. Comunicarea internă se manifestă pe bus-urile microprocesorului, pentru a asigura comunicarea componentelor interne ale lui. Comunicațiile de tipul extern se utilizează pentru a conecta microcontroller-ul cu dispozitive care îi pot extinde capabilitățile.

Electronica embedded face referire la conectarea internă, într-un singur sistem al mai multor circuite (cum ar fi procesoare sau diverse tipuri de circuite integrate) cu scopul final de a concluziona un sistem complet dedicat, care să încapsuleze proprietățile subsistemelor. Deși există multe modalități de a comunica între componente, se poate face o clasificare a acestora în comunicații seriale și comunicații paralele. O altă clasificare a protocoalelor de comunicare este: comunicație sincronă și comunicație asicronă. Astfel, dispozitivele cu circuite integrate din electronică folosesc aceste protocoale de comunicație să comunice între ele, care ajută la conectarea diverșilor senzori, perifericelor de intrare sau/și ieșire sau chiar comunicația între mai multe microcontrollere integrate în același sistem.

Există foarte multe protocoale de comunicație folosite la nivelul dispozitivelor care au în componența lor un microcontroller. Unele dintre aceste protocoale sunt mai folosite și altele nu, în funcție de necesitatea sistemului din care fac parte. În momentul proiectării unui sistem, se ia în vedere necesitățile fizice ale viitorului sistem și în funcție de aceste caracteristici se vor alege protocoalele. În funcție de ce s-a ales, urmează căutarea unui microcontroller care să asigure compatibilitățile, împreună cu componentele periferice, cum ar fi memoriile EEPROM, FLASH, RTC (Real time clock), senzori. Din experiența mea, am întâlnit până acum periferice ca cele enumerate mai sus care sunt conectate folosind SPI sau I2C.

Spre exemplu, un protocol foarte des folosit în domeniul microcontroller-elor și automotiv este LIN, care este bazat pe UART. Acesta este folosit pentru comunicațiile de cost redus. Este folosit pentru a asigura comunicația dintre senzori inteligenți, actuatori și microprocesoare. Este o modalitate de comunicare bazată pe UART și este folosit atunci când viteza nu reprezintă o caracteristică principală dorită. Funcționează pe baza unui singur dispozitiv de tip master și până la cincisprezece de noduri de tipul sclav. Aceste protocoale de comunicații au dus la îmbunătățirea sistemelor care dispuneau de protocoale seriale, cu multe fire.

În această aplicație am ales să folosesc protcolul I2C din cauza simplității la care operează. În cazul în care ar fi fost mai multe auxiliare conectate la sistem, ar fi fost indicat să aleg SPI, din cauza performanțelor mai bune de care dispune.

2.1 I2C

Protocolul I2C a fost oferit de către Philips Semiconductors pentru a oferi posibilitatea comunicării între dispozitive de viteză mare cu dispozitive de viteză mică peste o linie de date serială fară pierderi de date. I2C vine de la Inter-Integrated Circuit. Acest protocol de date oferă comunicație între circuite integrate de la diverși producători. Unele dintre ariile care folosesc în mod frecvent această modalitate de comunicare este industria microcontrollerelor, LCD-urile, dispozitivele de memorie, calculatoarele, telefoanele etc. Bus-ul I2C foloseste două linii bidirecționale, una pentru ceasul serial (SCL) și cealaltă pentru datele seriale (SDA). Fiecare dispozitiv conectat la magistrală are o adresă unică, folosită pentru a fi identificat când are loc comunicarea între dispozitive [11].

Acest protocol de comunicație este un protocol sincron, care permite dispozitivului master să inițializeze comunicația cu un dispozitiv slave, iar apoi datele sunt schimbate între cele două dispozitive. Magistrala este compusă fizic din două fire, cum am amintit și mai sus, SDA și SCL, unde SDA este bidirecțională, iar SCL unidirecțională, deoarece dispozitivul master oferă dispozitivului slave ceasul la care sa funcționeze trasmisia. SDA vine de la “Serial DAta line”, iar SCL de la “Serial CLock line”. Astfel, orice date trimise de la master la slave sau invers, sunt trimise pe linia de date, iar ceasul este generat de către dispozitivul master îi o controlează cand datele sunt trimise sau citite.

Conținutul datelor trimise este reprezentat de 8 biți de informație. Ceasul este aliniat cu datele pentru a forma date de 1 sau 0. Valorile care se află pe linia de date sunt considerate valide în momentul în care linia de ceas este ridicată. Atunci când linia de ceas este jos, liniei de date îi este permis să schimbe valoarea din 0 în 1 și invers. În felul acesta sincronizarea este atinsă. Când se comunică folosind I2C, cei opt biți de date pot reprezenta un cod de control, o adresă sau date propriu-zise. Trebuie adusă în discuție și condiția de ACK sau acknowledge. Un dispozitiv poate da “ACK” la un transfer de byte (8 biți) coborând linia SDA jos pe durata celui de-al nouălea puls de ceas. Astfel, un transfer de 9 biți poate fi descris în felul următor: opt biți sunt rezervați pentru date, iar al nouălea bit, este folosit de către componenta receptoare. Dacă componenta receptoare coboară acest ultim bit, înseamnă că recunoaște mesajul, altfel dacă lasă linia de date la nivelul de sus, rezultă condiția de NACK.

Dispozitivele de pe magistrala I2C sunt fie master, fie slave. Un slave nu poate iniția un transfer, numai un dispozitiv cu rolul de master poate face acest lucru. De obicei, pot fi legați mai multe dispozitive de tipul slave la magistrală, însă, de obicei există numai un singur device de tipul master. În figura 2.1.1 sunt prezentate secvențele de Start și Stop. În figura 2.1.2 este prezentat momentul în care poate avea modificarea valorilor datelor care sunt trimise, iar în figura 2.1.3 secvența de acknowledge folosită în această modalitate de comunicație.

Datele trebuie să fie într-o stare stabilă pe durata pulsurilor ceasului. Ele se pot modifica numai pe durata pauzelor dintre pulsuri, conform figurei 2.1.2. Acest protocol este folosit pentru conectarea microcontroller-ului cu dispozitive auxiliare care pot extinde funcționalitățile acestuia, cum ar fi un ceas, o memorie externă sau, cum este folosit în lucrarea de față, un senzor. Reprezintă o modalitate sigură și stabilă de transmisie a datelor.

Figura 2.1.1 Secvențele de start și stop

Figura 2.1.2 Modificarea datelor

Figura 2.1.3 Modificarea datelor.

Utilizarea tehnicii de recunoaştere a transferului este obligatorie pentru asigurarea unui transfer corect. Impulsul de tact corespunzător fiecărui octet, denumit impuls de recunoaştere, este generat de coordonator. Transmiţătorul eliberează linia SDA pe durata impulsului de recunoaştere. Receptorul trebuie să aducă linia SDA la nivel coborât şi să o menţină aşa pe toată durata impulsului de recunoaştere, ceea ce garantează efectuarea corectă a transferului octetului respectiv. În general, un receptor adresat trebuie să recunoască fiecare octet transmis. Există şi excepţii, care nu fac însă obiectul acestei lucrări.

Unul din avantajele acestui protocol este vechimea acestuia de când se află pe piață, devenind un standard în întreaga lume. Acest standard este adoptat de către industria automobilelor, rețelelor etc. De asemenea este foarte folosit și în telefoanele mobile. Un alt avantaj îl reprezintă faptul că are nevoie de doar două fire.

2.2 Protocolul HID

Definiția acestui protocol a început din dorința de a crea o clasă de dispozitive care să folosească interfața USB. Scopul, la momentul acela, a fost definirea unui înlocuitor pentru PS/2, folosind USB, lucru care ar permite crearea unui driver generic pentru tastaturi, mouse-uri și diverse alte controllere. Dispozitivele respective trebuiau să fie conforme cu protocoalele folosite pentru mouse sau tastatură, protocoale folosite până în acel moment. Toate inovațiile fizice aveau nevoie de supraîncărcare de date folosind protocolul de actualitate la acel moment sau de crearea unui nonstandard care necesita driverele proprii.

În ziua de azi, protocolul HID include: ecrane alfanumerice, cititoare de coduri de bare, butoane de volum pe boxe sau căști, ecrane auxiliare, senzori. HID a început ca un protocol peste interfața USB, dar el a fost imaginat de la început ca o magistrală de diagnoză. Inițial a fost creat pentru latențe joase, lărgime de bandă mică, dar în acest moment este flexibil, iar rata de transfer este decisă de către nivelul de transport. Specificațiile pentru această modalitate de conectare a dispozitivelor periferice la un sistem de calcul au apărut la sfârșitul anilor 1990. În urma dezvoltării pe parcursul anilor, HID este un protocol standard peste mai multe modalități de transport, iar ca exemplu, pentru Windows 8 suportă: USB, Bluetooth, Bluetooth LE și I2C [12].

Acesta este creat pe baza unor concepte fundamentalele: un descriptor de raport și mai multe rapoarte. Rapoartele sunt de fapt pachetele de date care sunt schimbate între dispozitiv și clientul software. Descriptorul de raport descrie formatul și scopul fiecărui pachet de date.

2.3 Modul de comanda AT

Acest mod de comandă al modemurilor, bluetooth, GPS, GNSS etc., spre exemplu, reprezintă o interfață de setare a lor. Când un astfel de modem este setat în modul de comandă, orice carater trimis către ele este interpretat ca o comandă care să fie executată. O comandă este prefixată cu caracterele “AT”, care vine de la cuvântul “Atenție”. Un modem, după ce primește această comandă, poate trimite un răspuns către expeditor cu rezultatul ei, respectiv dacă a fost aplicată cu succes sau nu s-a reușit.

Modul de comandă prezentat în această subsecțiune a fost folosit pentru a configura modulele bluetooth care sunt folosite în partea aplicată a lucrării, module care sunt necesare în comunicarea dintre receptor și emițător. Modulul bluetooth de pe emițător a fost setat în modul master, iar modulul din componenta receptoare a fost setat în modul slave. Pentru a accesa acest mod de comandă pe unitâțile HC-05 este necesară flash-uirea unei plăci arduino cu un program creat în acest scop, care să permită accesarea modulului. Pe langă acest lucru, modulul trebuie să fie conectat într-o configurație specială la placa de dezvoltare, pentru a-l putea configura. Acest pas a presupus un timp de studiu și experimentare, în urma căruia s-a reușit configurarea cu succes.

Acest mod de comandă oferă posibilitatea configurării modemurilor într-o manieră mai accesibilă. Fiecare model, fie că este bluetooth, GPS trebuie să fie însoțit de un manual, în care sunt precizate comenzile care le suportă.

2.4 Tehnologia bluetooth serială.

În trecut, singura modalitate de a conecta două calculatoare între ele în scopul de a partaja informații/resurse era conectarea lor prin cabluri. Când apare o rețea mai mare de noduri, acest lucru poate deveni un adevarat inconvenient, deoarece lucrurile o pot lua razna. Tehnologia bluetooth oferă o soluție reală pentru a rezolva această problemă, într-un mediu fără fire.

Tehnologia bluetooth reprezintă o tehnologie fără fir, care este o comunicație pe distanțe scurte, cu scopul de a înlocui cablurile folosite la conectarea dispozitivelor mobile sau fixe, în timp ce poate menține un grad ridicat de securitate. Punctele forte ale acestei tehnologii sunt: robustețea, consumul mic și prețul scăzut. Ideea din spate a fost născută în anul 1994, când o echipă de cercetători de la Ericsson Mobile Communication au inițiat un studiu de fezabilitate pe o conexiune de transmisii de date fără fir, care să consume puțin, să fie universală și de scurtă distanță, pentru a folosi înlocuirii cablurilor. De-a lungul anilor li s-au alăturat mai mulți membri pentru a atinge

scopul, membri din diverse arii de dezvoltare cum ar fi: telecomunicații, calculatoare, automotive, muzică, automare industrială, industria rețelelor, etc.

Aceast mediu de comunicație poate fi folosit pentru a conecta aproape orice dispozitive. În momentul în care dispozitivele se conectează pentru prima dată, există un device master care inițiază conexiunea și unul sau mai multe device-uri slave. Conexiunea comunică prin unde radio care se află la o frecvență de aproximativ 2.4 gogahertzi . În momentul în care două dispozitive se întâlnesc, are loc o comunicație între ele, în care stabilesc dacă trebuie să îsi trimită informații.

Această tehnologie dispune de o viteză de transfer destul de mare, aceasta fiind de maxim

723 kbps. Această viteză este suficientă pentru marea majoritate a transferurilor aflate pe diverse dispozitive, dar dezvoltatorii speră sa îmbunătățească aceste performanțe cu versiunile viitoare de cel puțin două, trei ori.

Pentru a trece mai departe trebuie explicată și diferența dintre bluetooth și Wi-Fi. Acestea două sunt tehnologii complementare. Wi-Fi reprezintă o tehnologie care a fost creată în scopul de a extinde rețelele de internet, înlocuid astfel rețeaua de cabluri, iar bluetooth a fost conceput pentru a înlocui firele dintr-un spațiu cu raza de aproximativ 10 metri, oferind concomitent conexiuni capabile de a transporta date, voce și audio. Cea dinurmă este folosită în mod special pe dispozitivele care funcționează pe baze de acumulatori, din pricina consumului redus de energie.

Dintre cele enumerate mai sus, deducem faptul că tehnologia bluetooth este benefică pentru

dispozitivele mobile, deoarece consumă puțină energie, iar durata de funcționare la un ciclu de încărcare este foarte importantă. Bineînțeles, nu poate acoperi toate nevoile de transmisii de date, cum ar fi dimensiunea lor sau distanța de operare, dar, pentru interconectarea între dispozitive cum ar fi un telefon și o cască, este un protocol excelent. Dacă se doresc performanțe mai mari, se va folosi tehnologia Wi-Fi. De asemenea, dacă se dorește atingerea de distanțe mai mari se va folosi Wi-Fi sau undele radio, care pot ajunge și până la câțiva km cu antenele corespunzătoare.

Din cauza necesității unui protocol de comunicație fără fir, s-a adoptat bluetooth-ul pentru a fi folosit în lucrarea de față. Nu se dorește demonstrarea distanței la care se poate ajunge, ci funcționarea sistemului, de a comunica fără a folosi fire, prin pachete de date, trimise de la emițător la receptor. Această modalitate de comunicare a fost una dintre cele mai accesibile, din punct de vedere al costului, cât și al implementării software. Un alt atuu pentru care a fost aleasă această metodă de comunicare fără fir, este consumul redus de energie electrică, care reprezintă un punct forte pentru sistemul de față, deoarece nu se dorește un consum mare de energie pentru componenta emițătoare, deoarece, aceasta funcționează pe o baterie de dimensiuni reduse, pentur a asigura portabilitatea. Astfel, am putut asigura atât portabilitatea sistemului propus, dar și eficiența, adică durata de operare mai mare cu un ciclu de baterie.

3. Securitatea transmiterii datelor wireless

Atât securitatea datelor, cât și comunicația fără fir vor rămâne un subiect interesant de dezbătut pentru mulți ani de acum încolo. Ele reprezintă necesitatea de a folosi o metodă de comunicație flexibilă în lumea calculatoarelor fără a pune în pericol conținutul transmis. Securitatea, în lumea cibernetică, reprezintă abilitatea unui sistem de a procesa, proteja și distribui informații. Securitatea datelor există cu mult timp înainte de a apărea tehnologiile fără fir, datorită nevoii de a transmite informații în siguranță și pe alte căi. Prima și cea mai cunoscută mașină (Enigma) a fost folosită în al doilea război mondial pentru a cripta mesajele. Din timpurile acelea până acum, multe soluții pentru amenințările care țin de securitate au fost introduse și adoptate, dintre care, unele din ele au fost abandonate, iar altele au fost îmbunătățite. În cercul comunicațiilor fără fir amenințările nu au fost știute de către mediul public până când prețurile la echipamentele de acest gen nu au început să coboare, prin anii 2000.

Orice securitate a unui sistem trebuie să ofere o colecție de funcții care să asigure siguranța și secretul sistemului [13]. Aceste funcții pot fi denumite și tratate ca scopurile unui sistem de securitate. Cele mai importante scopuri ale unui sistem de acest gen pot fi următoarele: autenticitatea, ceea ce promulgă verificarea identității entității care trimite, cât și a entității care recepționează. Acest pas trebuie să aibe loc înainte de a se trimite datele. Confidențialitatea reprezintă pasul care este considerat de cei mai mulți oameni a fi cel mai important, deoarece se referă la abilitatea de a interpreta datele numai persoanele autentificate în a face acest lucru și nimeni altcineva. Integritatea datelor trimise printr-ul mediu de transmisie este de asemenea foarte importantă deoarece, asigurând această proprietate se asigură ca datele sunt protejate de orice formă de modificare pe parcursul transmisiei. O altă proprietate importantă este non-repudierea, care asigură ca nici entitatea care trimite mesajul și nici cea care îl primește nu pot nega că au trimis un anumit mesaj. În final, trebuie adusă în discuție si încrederea serviciului și disponibilitaea. Din moment ce sistemele securizate sunt atacate de către intruși, aceste sisteme pot fi afectate din punct e vedere al disponibilității.

Sistemele informatice sunt amenințate atât din interior cât și din exterior. Pot fi persoane bine intenționate care fac diferite erori de operare sau persoane rău intenționate, care sacrifică timp și bani pentru penetrarea sistemelor informatice. Dintre factorii tehnici care permit fisuri de securitate pot fi anumite erori ale software-ului de prelucrare sau de comunicare sau anumite defecte ale echipamentelor de calcul sau de comunicație. De asemenea, lipsa unei pregătiri adecvate a administratorului, operatorilor și utilizatorilor de sisteme amplifică probabilitatea unor breșe de securitate. Folosirea abuzivă a unor sisteme (piraterie informatică) reprezintă, de asemenea, unul din factorii de risc major privind securitatea sistemelor informatice[11].

Criptografia computațională este tot mai folosită pentru contracararea problemelor de securitate informatică. Utilizată multă vreme doar pentru asigurarea confidențialității comunicațiilor militare și diplomatice, criptografia a cunoscut în ultimii 20 de ani progrese spectaculoase, datorate aplicațiilor sale în securitatea datelor la calculatoare și rețele. Astfel, securitatea în spațiul cibernetic sau în lumea virtuală este ceea ce a condus la conceptul de securitate cibernetică.

Prin algoritm criptografic înțelegem o mulțime de transformări uniinversabile prin care mulțimea mesajelor (textelor) clare dintr-o limbă se transformă în mulțimea M a criptogramelor. Cheia de cifrare constituie o convenție particulară, materializată, printr-un cuvânt, frază, număr,șir numeric etc. și care dirijează (reglementează) operația de cifrare.

Un protocol criptografic este un set de reguli, între doi sau mai mulți parteneri, prin care are loc o operație de autentificare și/sau transfer de cheie sau mesaje. Un sistem criptografic este compus din trei elemente: algoritm de cifrare, sistem de generare al cheilor și protocol de distribuție al cheilor de cifrare. Supracifrarea constă dintr-o mulțime de transformări aplicate asupra criptogramelor și are rolul să întărească rezistența criptogramelor (deci a sistemului criptografic) față de atacul criptanaliștilor terțelor părți.

Descifrarea este operația inversă cifrării și ea constă în aplicarea sistemului de cifrare cunoscut (în prezența cheii corecte) asupra criptogramelor pentru aflarea mesajului clar. Decriptarea este operația prin care, numai pe baza analizei criptogramelor realizate cu un sistem de cifru necunoscut, se pune în evidență mesajul clar care a fost criptografiat și se determină caracteristicile sistemului criptografic folosit pentru cifrare.

3.1 Criptarea datelor: Simetrică și Asimetrică

Pentru a trimite date în mod securizat între două noduri, sistemul care trimite trebuie să cripteze datele, termen care mai poate fi exprimat și prin amestecarea informațiilor în așa fel încât să nu poată fi citite fără cunoașterea cheii folosite ca criptare. Acest lucru poate fi făcut prin mai multe nivele de securitate pentru a oferi un grad mai mare de siguranță. Cu cât este mai greu de deslușit mesajul criptat, cu atât este sistemul mai sigur. În figura următoare este exemplificată secvența de criptare și decriptare folosind cheia privată, unde textul curat este criptat folosind această cheie, trimis pe un canal de comunicație pentru a fi decriptat de către receptor pentru a putea înțelege datele ce i-au fost adresate. Procedurile de criptare a datelor sunt împărțite în două mari categorii și depind de tipul cheilor de securitate de a cripta și decripta mesajele. Aceste doua mari categorii sunt: Criptare simetrică și criptarea asimetrică.

Necesitatea de a cripta datele a existat de foarte mult timp. Prin acest fel se oferă securitate datelor care dorim să fie confidențiale, ele putând fi interpretate doar de către cine cunoaște modalitatea de decriptare. Criptarea, la nivelul cel mai de bază se face folosind un algoritm și o cheie de criptare. Algoritmul ales va fi o funcție matematică care va fi pur și simplu folosită în procesul de criptare al mesajului curat. Odată obținut mesajul criptat, acesta poate fi trimis către destinatarul dorit pe un canal care se dorește. Odată ajuns la destinație, cel care a primit mesajul, folosind cheia de criptare și funcția matematică va putea interpreta mesajul. Puterea criptării ține de puterea algoritmului, dar și de puterea cheii de criptare. În urma procesului de criptare, textul curat devine indescifrabil, sau cel puțin asta se dorește.

Figura 3.1.1 Procesul de criptare-decriptare a unui text

3.1.1 Criptarea simetrică

Acest tip de criptare se bazează pe faptul ca emițătorul și receptorul cad de acord asupra unei chei de securitate, care este folosită de către ambii. Ei vor folosi această cheie secretă pentru a cripta și decripta mesajele pe care și le vor trimite. Figura 4.1 arată procesul criptografic care se bazează pe chei private. Putem explica în cuvinte ce se întâmplă în figura referențiată: Componentele A și B cad de comun acord ca for folosi ca metodă de criptare cheia publică. Apoi, participanții la discuție trebuie să se înțeleagă asupra cheii de criptare pe care să o folosească amândoi. Până acum, ceea ce s-a explicat în cuvinte, reprezintă configurația sistemului de criptare, care după ce se finalizează, nodul emițător poate începe să trimită mesaje criptate, iar nodul receptor le va primi și le va decripta pentru a se folosi de ele.

Principala îngrijorare legată de criptare simetrică ține de modalitatea de a distribui între emițător și receptor cheia privată. Dacă, din cauza unui motiv oarecare, cheia devine cunoscută de către altcineva, întreg sistemul cade. Deci, managementul cheii unui astfel de sistem este adevărata problemă, mai ales când o astfel de cheie este folosită pentru fiecare conexiune între mai multe noduri, deoarece sunt necesare foarte multe chei, mai exact: n(n-1)/2.

Figura 4.1.1 Criptarea simetrică

3.1.2 Criptarea asimetrică

Acest tip de criptare este celălalt tip de securizare unde sunt folosite chei. Pentru a fi mai succint, poate fi spus următorul lucru: ceea ce criptează cheia 1, poate decripta numai cheia 2 și viceversa. Această modalitate de criptare mai este cunoscută și sub numele de criptare cu cheie publică, deoarece, utilizatorii tind să folosească doua chei: cheia publică, care este cunoascută de către toată lumea, și cheia privată, care este cunoscută de către numai de către participanții doriți la discuția criptată. Astfel, un sistem bazat pe criptarea cu cheie publică funcționează în felul următor: Nodul a

criptează mesajul folosind cheia publică și formula matematică, iar apoi trimite textul cifrat mai departe pe canalul de comunicație. Odată sosit mesajul la receptor, adică nodul B, acesta folosește cheia sa privată să decripteze conținutul.

Figura 4.1.2 Criptarea asimetrică

În funcție de sistemul pe care se dorește implementată o funcționalitate de criptare, se poate alege una din cele două metode prezentate. Din cauza resurselor reduse de la nivelul unui microcontroller, am adoptat folosirea unui sistem bazat pe criptarea cu cheia privată, deoarece nu se doresc calcule de durată mare pentru a cripta și decripta un pachet de date trimis între componentele sistemului.

Un sistem de criptare oferă securitatea necesară în dispozitivul în care este folosit. Sistemul de criptare trebuie ales cu atenție, în funcție de capabilițățile de care dispune dispozitivul. O modalitate de criptare care consumă resurse nu este indicată în a fi folosită pe un dispozitiv care duce lipsă de așa ceva, deoarece va ocupa prea mult din puterea de calcul a acestuia, efectuând de fecae data operații complexe care nu își au locul într-un astfel de sistem.

3.2 Securitatea bluetooth

Protocolul de comunicație bluetooth oferă o comunicație între dispozitive pe rază scurtă și înlătură necesitatea de cabluri. Potrivit Bluetooth Special Interest Group (2006), această tehnologie fără fir este cea mai larg răspândită, versatilă și sigură dintre toate tehnologiile de acest tip. Securitatea jucat un rol major în invenția tehnologiei bluetooth. Bluetooth SIG a depus un efort foarte mare în a face tehnologia aceasta una sigură și au experți în acest domeniu care oferă informații critice legate de securitate. În general, securitatea este divizată în trei modele: nesecurizată, securitate la nivel de serviciu, securitate la nivel de legătură. În modul nesecurizat, un dispozitiv care folosește tehnoogia BT nu inițiază nici o măsură de securitate.

Procedurile pentru securizare sunt următoarele: autorizarea, autentificarea și opțional, criptarea. Autentificarea implică dovedirea identității dispozitivului. Autorizarea este procesul de a oferi accesul la rețea, iar criptarea este translatarea datelor în cod secret. Cu tot cu metodele de protecție enumerate mai sus, tehnologia aceasta a dovedit că prezintă unele riscuri legate de securitate.

În concluzie tehnologia bluetooth fără fir este în continuă creștere în popularitate din cauza avantajului de a schimba informații intre dispozitivele mobile. Utilizarea acetuia implică de asemenea și anumite riscuri asociate. Avatajele care le aduce sunt abilitatea de a putea face față simultan la transmisia de date dar și de voce, lucru care mulțumește utilizatorii și le oferă posibilitatea de a se bucura de diverse gadget-uri cum ar fi căști fără fir, transmisii de date etc.

Utilizatorii acestei metode de comunicație ar trebui să se familiarizeze cu riscurile care le implică această tehnologie, în mod special înainte de a aduce un dispozitiv care are această caracteristică la locul de muncă. Se recomandă în a folosi ca metodă simplă de securitate setarea unei parole la nivelul dispozitivului care dispune de această tehnologie. Prin utilizarea unei astfel de metode de protecție, se poate asigura siguranța dispozitivului, măcar în fața utilizatorilor de rând, în fața spam-urilor, etc , deoarece dispozitivul nu va oferi credențiale încercărilor neautorizate de conectare. Este cea mai simplă metodă de a-ți proteja dispozitivul în fața accesului nepermis.

Termenul de bluejacking reprezintă procesul de trimitere de mesaje nesolicitate sau cărți de vizită la dispozitivele compatibile cu mediul de comunicare. Acest lucru nu implică alterarea datelor de pe dispozitive, dar sunt informații nesolicitate. Dispozitivele care sunt setate în modul invizibil nu sunt afectate de un astfel de atac. Pentru a funcționa un astfel de atac, dispozitivele trebuie să fie într-o rază de 10 metri unul de altul. Această tehnică este folosită în scop promoțional. Deși nu este un lucru care afectează dispozitivele, mesajele care sunt primite devin enervante de către utilizator, iar în unele cazuri pot face dispozitivul vizat inoperabil.

Termenul de bluesnarfing este o metodă de a sparge un telefon mobil cu rețeaua pornită, de a-i copia conținutul, cum ar fi lista de contacte, calendarul sau altceva deținut pe dispozitiv. Setând telefonul pe modul invizibil este destul de dificil de a-l căuta și ataca.

Următoarea imagine a fost preluată din sursa [15].

Figura 3.2.1 Comunicația securizată și nesecurizată Bluetooth

HandMotion Multifunctional Bracelet

Dispozitivul realizat se presupune a fi o brățară multifuncțională, care în configurația actuală este capabilă să interacționeze cu un utilizator pentru a prelua datele de intrare de la acesta, iar ca date de ieșire poate oferi date prin două modalități, în funcție de setările fizice inițiale.

Dacă ne referim la obiectul transmițător, care are în componența sa accelerometru, modul bluetooth și Arduino Leonardo, avem o singură modalitate de funcționare, care poate fi descrisă astfel: conectarea la dispozitivul receptor, citirea datelor de la accelerometru și giroscop, transformarea datelor de la giroscop prin calcule specifice ținând cont de formulele matematice și de valorile accelerațiilor în unghiuri, pe axele X, Y și Z, maparea acestor unghiuri obținute și trimiterea lor prin bluetooth către receptor. Din funct de vedere al capabilității sistemului de a fi mouse sau un receptor de automodele, emițătorul nu are nici un impact, deoarece nici o configurație fizică nu trebuie efectuată la nivelul lui.

Dacă dorim funcționalitatea de mouse a dispozitivului receptor, pin-ul A0 trebuie să fie legat la 5V, pentru ca în momentul rulării, la citirea acelui semnal analog să avem o valoare stabilă, mai mare de 1000. Dacă se dorește funcționalitatea de receptor de modelism, acel pin A0 trebuie legat la GND, iar în momentul rulării programului pe microprocesor, acel semnal analog va fi măsurat și va avea valoarea 0. În funcție de această configurație, driverele necesare for fi instalate, iar pinii vor fi setați corespunzător. Nu pot fi funcționale ambele moduri concomitent deoarece vor apărea conflicte. O citire a pinului analog va avea loc la inițializarea sistemului pentru a inițializa diverși pini și pentru a inițializa comunicații ori serială USB pentru comunicarea cu un sistem PC prin protocolul HID, ori instalarea driver-elor pentru servouri. După ce s-a trecut de partea de inițializare, pinul care are rolul de a seta funcționalitatea receptorului este citit ciclic, pentru a vedea ce trebuie transmis. Bineintelesc că un flag poate fi setat de la prima citire a pinului, pentru a memora modul de funcționare a dispozitivului. Acest lucru poate fi văzut ca o îmbunătățire a sistemului, deoarece este mult mai rapid să citim o variabilă decât să citim un semnal de la un pin anume, lucru care implică apelarea unei funcții care ocupă astfel resurse, atât din punct de vedere al stivei, deoarece trebuie încărcat pe stivă contextul de apel, adresa de return, variabilele locale ale funcției, cât și cât și din punct de vedere al execuției, deoarece la fiecare apel ciclic, unde câteva microsecunde vor fi ocupate de acest apel permanent.

După cum aduceam la cunoștiință în partea introductivă a acestei lucrări, dispozitivul dat poate avea rolul de mouse, care poate fi folosit în prezentări care implică schimbarea diapozitivelor. Bineînțeles că există foarte multe variante în acest moment care pot fi folosite de către un utilizator, însă varianta actuală reprezintă o variantă elegantă care implică recunoașterea unui gest efectual cu ajutorul mâinii, în urma căruia, un slide se poate schimba. Cealaltă funcționalitate este utilizarea dispozitivului pentru a controla un automodel, navomodel sau aeromodel. În lucrarea de față este prezentată controlarea unui automodel pe benzină, care presupune controlul a două servomotoare. Cele doua servomotoare sunt controlate de doua dintre axele giroscopului, și anume Y și Z, deoarece axa X este folosită pentru recunoșterea click-urilor, funcționalitate care este omisă când este folosită configurația de receptor RC.

4.1 Componente hardware

În această secțiune a lucrării vor fi prezentate componentele fizice folosite pentru a realiza partea aplicată. În figura următoare sunt prezentate componentele hardware folosite pentru a întemeia componentele emițător-receptor:

Figura 4.1.1 Componentele fizice ale emițătorului și receptorului

Din figura 4.1.1 se poate deduce următorul comportament: modulul emițător preia datele de la MPU6050, efectuează oprațiile necesare, le trimite către HC-05, care se ocupă cu transmisia lor către modulul HC-05 ale receptorului, iar modulul receptor preia datele primite care se află în așteptare și efectuează operațiile de ieșire finale.

În această parte a lucrării vor fi detaliate componentele fizice care au fost folosite pentru implementarea sistemului electronic final. De asemenea se va explica și ce este acela un microcontroller și cum funcționează acesta. Adică, va fi explicat ce este un sistem de operare pentru un sistem electronic integrat. Se vor face referiri la microprocesoarele care au fost folosite în aplicația de față, la modulele bluetooth, modulul accelerometru și giroscop, servomotoarele care vor fi controlate prin configurația fizică, scurtă prezentare a termenului de automodele.

Tot în aceast capitol, dar la partea unde facem referire la bluetooth vom explica și configurarea modulelor bluetooth. Acestea au trebuit configurate pentru a se putea împerechea și pentru a putea transmite și recepționa date prin intermediul lor. Configurația lor a fost realizată folosind modul AT, mod care a fost explicat în subsecțiunea 2.3 Modul de comandă AT. Fără această etapă, comunicația între modulele aplicației nu ar fi fost mosibilă, deoarece prin intermediul ei, modului emițător a fost setat ca master, iar modulul receptor ca slave.

4.1.1 Microcontrollere

Pentru a fi cât mai completă și explicativă lucrarea, am adăugat și această subsecțiune. Rolul unui microprocesor într-un sistem electronic integrat este asemănător cu rolul creierului în organismul unui om. Acesta controlează funcțiile oferite de sistem,funcții care le poate realiza.

Un microcontroller conține principalele elemente ale unui mini sistem computerizat pe un singur cip. Acesta conține memoria, interfețele de intrare și ieșire și unitatea CPU pe același suport fizic. Acestea sunt de dimensiuni reduse, pentur a putea fi folosite în sisteme integrate mici, fapt care afectează într-o anumită măsura din punct de vedere al performanței și flexibilității.

Un microprocesor este deseori creat pentru a consuma puțin din punct de vedere electric și pentru a fi folosit în aplicații care consumă resurse puține. Principalele avantaje care le prezintă un asemenea procesor sunt prețul scăzut, datorat componentelor care sunt integrate în același cip, dimensiunile mici în care se prezintă, consumul mic de curent, și paftul ca are integrate toatecomponentele necesare pentru a rula un program pe ele, în scopul de a crea o aplicație. Dezavantajele principale sunt următoarele: flexibilitatea mai scăzută datorată integrării anumitor componente ale unui sistem computațional, cum ar fi memoria volatilă și memoria nonvolatilă, limitările performanțelor, care sunt datorate dimensiunilor reduse, dar și faptul ca microcontroller-ele sunt de obicei specifice aplicațiilor, lucru care face ca alegerea să fie limitată uneori.

În ultimul deceniu, au apărut microcontrollere foarte puternice, cum sunt cele de la Infineon. Această firmă producătoare de microprocesoare au lansat către dezvoltare de software dispozitive care sunt pe 32 de biți, și care au până la șase nuclee. De asemena caracteristicile high-end nu se termină aici. Au integrate gateway-uri de CAN, LIN, ETHERNET, fiind gata de folosire, fără nici cea mai mică problemă. Această clasă de microcontrollere este una dintre cele care se folosesc în industriile care au nevoie de fiabilitate, putere de calcul și încredere, fiind una dintre cele mai puternice de pe piață la ora actuală.

Procesoarele integrate pot fi găsite în dispozitivele portabile, cum ar fi ceasurile digitale, camerele digitale, unitățile GPS, etc. Pot fi găsite de asemenea în sisteme mari precum sistemele de semaforizare a traficului, cele de control al centralelor nucleare sau al fabricilor industriale robotizate. De asemena și dispozitivele din domeniul telecomunicațiilor folosesc acest tip de procesor, de la echipamentele de rețea, până la telefoanele mobile. Ele mai pot fi găsite și în dispozitivele electronice de consum, dedicate publicului larg. Unele din aceste dispozitive sunt următoarele: console de jocuri, imprimante, espressoare de cafea, mașini, cuptoare cu microunde.

În ziua de azi, marea majoritate a dispozitivelor care ne înconjoară reprezintă un sistem integrat, care au în componența lor acest mic creier cu ajutorul căruia îndeplinește task-urile pentru care a fost creat, fiind cât mai aproape de o rulare în timp real.

Lucrarea de față dispune de două astfel de dispozitive, capabile de a centraliza datele de intrare și de a oferi “date” de ieșire, către utilizator, în ambele moduri de funcționare. Din punct de vedere al performanțelor, microcontroller-ele folosite pentru emițător și receptor sunt identice. Singura diferență dintre ele o reprezintă placa integrată pe care sunt integrate, una din ele fiind de dimensiuni mari, emițătorul, cu un număr mai mare de intrări/ieșiri, pentru crearea unor aplicații mai complexe, din pricina capabilităților de preluare și afișare al datelor, iar cealaltă placă pe care este integrată capabilitatea de receptor, este de dimensiuni reduse. Această placă are avantajele portabilității, din cauza dimensiunilor, deoarece este de până la 4 ori mai mică decât cea a emițătorului. Deși este mai mică și mai portabilă, s-a ales folosirea plăcii de dezvoltare de dimensiuni mai mari ca fiind folosită drept receptor din considerente tehnice. S-a dorit ca informația transmisă să fie cât mai stabilă la nivel fizic, astfel circuitele să nu fie așa îngramâdite. Lucru care oferă o stabilitate la perturbații de ordin electric.

4.1.1.1 Arduino Leonardo

Acest microcontroller este unul open source, care poate fi programat cu ușurință, folosind interfața USB a calculatorului și cea atașată la plăcuța de dezvoltare în care este integrat microprocesorul. Poate fi reprogramat, șters, fără efort, în orice moment. Bineînțeles, poate fi programat folosind un dispozitiv creat special în acest scop, care are interfața ISCP, însă este un pas opțional. Inițial și încă valabil, aceste microcontrollere au fost create pentru a oferi o metodă ieftină și ușoară de a crea dispozitive electronice către persoanele pasionate de acest domeniu, studenților și profesorilor.

Avantajele sunt numeroase, cum ar fi întreaga comunicate, creșterea continuă, prețul scăzut, mediul de dezvoltare.

Leonardo este o plăcuță care folosește un microcontroller ATmega, mai exact ATmega32u4, care are viteza ceasului intern de 16MHz. Acest microcontroller este unul de consum redus, de tip CMOS, pe 8 biți, bazat pe arhitectura RISC. Procesoarele care folosesc acest tip de arhitectură sunt bazate pe set redus de instrucțiuni [14], lucru care prezintă avantaje în domeniul microcontroller-elor deoarece raportul dintre performanțe și preț este unul foarte bun.

4.1.1.2 Arduino Pro Micro

Receptorul aplicației folosește ca placă de dezvoltare un Arduino Leonardo de dimensiuni mai mici din punct de vedere fizic. Dacă privim din perspectiva caracteristicilor, cum ar fi memoria, viteza ceasului intern, lungimea cuvântului sunt la fel, deoarece la bază stă același microprocesor. De aceea, și performanțele legate de timpi de execuție, stivă, etc sunt aceleași. La fel ca un Leonardo de dimensiuni mari, Pro Micro are același microcontroller, respectiv ATmega32u4. Caracteristicile sale sunt prezentate în subsecțiunea de mai sus.

Pentru dezvoltarea software-ului, preprocesarea lui, compilarea, link-uirea codului obiect rezultat în formatul care va fi scris pe microcontroller se folosește mediul de dezvoltare Arduino IDE. Acesta poate fi descărcat de pe site-ul cu același nume, în mod gratuit. În sețiunile următoare vor fi detaliate alte proprietăți ale acestor microprocesoare, beneficii care le aduc, cât și probleme întâlnite pe parcursul dezvoltării.

Din punct de vedere al performanțelor oferite de cele două plăci de dezvoltare, nu există diferențe decât la nivel fizic și anume la dimensiunile celor două plăcuțe. Prima, placă Leonardo este de dimensiuni mai mari, iar cea curentă, Pro Micro de dimensiuni mult mai mici. Ambele plăci folosesc același microcontroller, și anume Atmega32u4, și dispun de aceeași memorie RAM și ROM. Cu maparea corepunzătoare a pinilor, aplicația poate suporta interschimbarea software-ului de pe o plăcuță pe alta fără un effort prea mare sau incompatibilitare din punct de vedere al sincronizării în timpul rulării sistemului.

4.1.2 Sistemul de operare al unui microcontroller

Aplicațiile în care sunt folosite microcontroller-ele sunt aplicații care necesită rulate în timp real. Aceste sistemele trebuie să îndeplinească condiții stricte și să se ocupe de aspecte diverse legate de rularea cu succes a codului. Un sistem de operare în timp real reprezintă un sistem de operare creat pentru aplicațiile care au nevoie să se execute aproape instantaneu și să știe starea sistemului imediat ce un eveniment apare. El permite ca datele să fie procesare foarte rapid iar rezultatele dintr-o întrerupere să poată fi folosite de către un alt proces care se întâmplă concomitent. Prezintă abilitatea de a răspunde imediat într-un mod predictibil la evenimentele externe. Cu ajutorul unui sistem de operare sistemul poate rula într-un mod predictibil, și se poate ocupa de întreaga aplicație.

O altă modalitate de a simula un sistem de operare este utilizarea mașinii cu stări. Acesastă mașină de strări are la pornirea aplicației starea de inițializare, iar in momentul terminării acestei secvențe, de inițializare a sistemului, etapă în care se setează modul de funcționare al pinilor, se inițializează variabilele și se mai apelează rutinele necesare pentru inițalizare, se poate trece în următoarea stare definită, care poate fi, spre exemplu, executare. Acestă mașină de stări poate fi implementată cu ușurină folosind un switch și o enumerație, în care sunt enumerate stările sistemului.

Un task din interiorul unui sistem de operare funcționează la o anumită recurență și cu o anumită prioritate. Prioritatea este folosită pentru a ști ordinea de execuție a task-urilor, în cazul în care acestea se intersectează. Task-urile cu cea mai mare rată de execuție sunt indicate să fie declarate și cu cea mai mare prioritate. Un task reprezintă o unitate de execuție, iar în unele sisteme de operare un task este sinonim cu un proces, iar în altele cu un fir de execuție.

Modalitatea folosită în lucrarea de față este asemănătoare cu un state-machine descris mai sus. la pornirea aplicației este chemată rutina de instalare, în care au loc inițializările, setările de variabile, setările de pini. Odată terminată această secvență, trecem mai departe cu execuția programului într-o buclă while (1), care în limbajul programării integrate reprezintă un task ciclic, care merge la infinit. Odata terminată secvența de cod din buclă, ea se execută încă odata și incă odată, până la oprire alimentării microcontroller-ului.

În interiorul task-ului ciclic din emițător are loc preluarea datelor de la accelerometru, împachetarea acestora și trimiterea prin bluetooth către receptor. La rândul lui, receptorul, în task-ul lui ciclic verifică dacă primește date prin intermediul bluetooth-ului, iar dacă primește, în interiorul task-ului execută mai departe interpretarea datelor, și își indeplinește funcționalitatea de mouse sau receptor, conform datelor primite. În cazul în care nu sunt mesaje disponibile de la emițător, receptorul nu face nimic în afara verificării existenței unei transmisii.

Abordarea folosită și explicată mai sus reprezintă cel mai simplu sistem de operare existent care poate fi folosit pe un microcontroller. Acesta asigură funcționarea corectă a dispozitivelor.

În concluzie, un sistem de operare are rolul de a coordona funcționalitățile sistemului rezultat în urma dezvoltării. Un OS oferă un control mai bun asupra funcționalităților, un timing bun în momentul execuției codului și un comportament predictibil de-a lungul rulării.

4.1.2 Bluetooth HC-05

Bluetooth este un standard fără fir de schimb al datelor pe distanțe scurte (folosind unde de distanță scurte de tip UHF în banda ISM de la 2.4 până la 2.485 GHz) folosit de către dispozitivele fixe și mobile. Raza de acțiune este de aproximativ 10 metri.

Modulul HC-05 este bazat pe cipul Cambridge Silicon Radio BC417 2.4 GHz. Acesta este un cip complex care folosește o memorie externă de 8 megabiți de tipul memoriei flash. Aceste module, care au un preț scăzut funcționează cu foarte multe tipuri de microcontrollere. Principalele sale avantaje sunt următoarele: este un modul foarte capabil care poate fi configurat ca dispozitiv master sau slave, spre deosebire de modulul HC-06, care este un dispozitiv doar de tipul slave. Aceste dispozitive de dimensiuni foarte mici funcționează pe alimentare de 3.3V și au ieșirile și intrările tot pe 3.3V. Ele nu au pini și de obicei sunt sudate pe plăci mai mare, pentru a oferi o modalitate de conectare mai ușoară.

Modulul are două modalități de funcționare: modul comandă și modul de date. În modul de comandă se folosesc comenzile care au fost explicate într-un capitol anterior, comenzile AT, pentru a fi configurat conform necesitâților. În modul de date, dispozitivul este folosit pentru a trimite și primi date de la alt modul bluetooth.

Modulul acesta are 6 pini pentru interacționarea cu un microcontroller. Pinul KEY are rolul de a forța modulul bluetooth în a trece în modul de comandă dacă este la nivelul ridicat, adică dacă are aplicat voltaj de 3.3V pe el. VCC reprezintă alimentarea modulului cu 5V. GND reprezintă împâmandarea comună care trebuie sa fie legată la microcontroller-ul la care va fi conectat sistemul BT. TX și RX reprezintă liniile de date de trimitere, respectiv recepționare, iar STATE reprezintă pinul care indică daca modulul este conectat sau nu.

După cum am amintit anterior, modulul are două modalități de funcționare: modul de comandă și modul de date. Modul implicit este cel de date, care vine în configurația standard în felul următor: rata de transfer de 9600 biți pe secundă, parola 1234, iar numele HC-05.

Figura 4.1.2.1 Modulul HC-05

4.1.3 Modulul accelerometru și giroscop MPU6050

Cipul din titlu conține un accelerometru MEMS, cât și un giroscop MEMS, ambele integrate în aceeași componentă fizică. Este un dispozitiv foarte exact, care conține un convertor fizic de la 16 biți analog la digital. Trebuie avut în vedere faptul că acest cip nu este deloc scump, având în vedere ca el conține atât accelerometru cât și giroscop.uie îndepliniți câțiva pași simpli: modul de sleep trebuie dezactivat, iar apoi regiștri corespunzători pot fi citiți. Acest cip poate controla el însuși un alt dispozitiv prin protcolul de comunicație I2C.

Senzorul are în construcția sa un procesor de mișcare digitală. Această componentă poate fi programată și este capabilă să efectueze calcule complexe cu valorile senzorilor. El poate face calculele direct în interiorul cipului, lucru care duce la reducerea de efort din partea controller-ului la care este legat, cum ar fi Arduino.

Datele de la accelerometru și giroscop se citesc direct de la registri în mod brut, la fel ca la alți senzori de acest fel. O abordare mult mai sofisticată este folosirea capabilității de procesare digitală a imaginii care poate extrage direct valori calculate de la senzori.

În lucrarea de față, modulul prezentat în această secțiune este folosit pentru a prelua valorile brute de la cele trei axe ale accelerometrului și cele 3 axe ale giroscopului. Valorile extrase vor fi folosite pentru interpreta mișcările care le efectuează utilizatorul.

Figura 4.1.3.1 Modulul MPU6050

Cei mai importanți registrii ai modulului MPU6050 care sunt folosiți în lucrarea de față sunt următorii:

#define MPU6050_ADDR 0x68 // Adresa dispozitivului

#define MPU6050_SMPLRT_DIV 0x19 // MPU-6050 Adresa registrului

#define MPU6050_CONFIG 0x1a // Registrul de configurare

#define MPU6050_GYRO_CONFIG 0x1b // Registrul de configurare giroscop

#define MPU6050_ACCEL_CONFIG 0x1c // Registrul de configurare accelerometru

#define MPU6050_WHO_AM_I 0x75

#define MPU6050_PWR_MGMT_1 0x6b

4.1.4 Servomotoare

Un servomotor este un actuator rotativ sau liniar care permite controlul precis al poziției unghiulare sau liniare. Reprezintă un element al unui sistem care din punct de vedere funcțional implică poziții relative între componentele sale. Un astfel de motor folosește un puls de tip pwm pentru a controla mișcarea și poziția finală, astfel datele de intrare reprezintă un semnal (analog sau digital) care reprezintă poziția comandată.

Servomotoarele sunt folosite în general ca o alternativă mai avansată a motoarelor pas cu pas. Marea majoritate a servomotoarelor au în componența lor un motor cu perii, datorită simplității și costului redus al lor. Cealaltă componentă a servomotoarelor îl reprezintă electronica integrată care se ocupă cu preluarea semnalului, poziționarea servomotorului și oferirea feedback-ului.

Figura 4.1.4.1 Servomotor de mici dimensiuni

4.1.5 Automodele

Automodelele sunt mașini la scară mică, create după variante ale mașinilor reale, pentru a fi folosite în scop recreațional și uneori la nivel profesional, în competiții. În general, aceste automodele se deosebesc în două categorii: mașinuțe cu telecomendă și modele cu radiotelecomandă. Diferența dintre aceste două categorii o reprezintă puterea de care dispun aceste dispozitive, detaliile și echiparea electronică. Modelele din prima categorie sunt încadrate în clasa jucăriilor, pe când cele din a doua categorie, nu.

Automodelele cu telecomandă sunt oferite în varianta nitro, electrice și pe benzină. Variantele pe nitro mai sunt cunoscute și sub numele de automodele cu motoare termice deoarece funcționează pe baza metanolului. Performanțele oferite de aceste mașini în miniatură sunt unele deosebite, deoarece un model termic poate ajunge la până la 90 km/h, cele electrice fără perii la peste 100 km/h, iar cele cu motor în doi timpi la peste 120 km/h.

Aceste “jucării” sunt foarte complexe dacă sunt privite din punct de vedere al construcției, și foarte rezistente. Marea majoritate a lor sunt dotate cu diferențiali pe sateliți, amortizoare cu ulei, frâne pe discuri, tobă de eșapament, ambreiaj centrifugal etc.

Cele mai avansate modele sunt cele pe benzină, deoarece sunt mult mai mari și mai complexe ca și construcție. Dimensiunile acestora ajung la peste 1 metru lungime, iar realismul oferit este desăvârșit.

4.2 Componente software

Există două software-uri care trebuie compilate și urcate pe microcontroller. Fiecare fiind responsabilă cu partea ei de funcționare a sistemului. În figura de mai jos este prezentată diagrama de secvențe a sistemului, unde se pot identifica interacțiunile dintre componentele sistemului de unde înțelegem: Accelerometrul este folosit pentru a oferi datele de intrare din mediul extern către microcontroller-ul Leonardo. Acesta este conectat la placa de dezvoltare prin intermediul protocolului de comunicatie I2C. Cei mai importati regiștrii care sunt citiți de la modulul MPU6050 sunt cei de acceleratie x, y, z și cei de orientare gyro x, y, z. Odată primite aceste valori de către microcontroller, acesta transformă datele de la giroscop în unghiuri folosind un algoritm propriu dezvoltat de mine. Cu ajutorul acestor date pot fi interpretate mișcările de rotație ale mâini și sunt mapate ca gesturi de click dreapta, click stânga pentru configurația de brățară, iar pentru cofigurația de emițător radiomodel cu direcții de dreapta/stânga, față/spate. Această interpretare se realizează în timpul execuției receptorului.

În continuare voi prezenta secvențe de cod și voi explica rolul acestora.

int BRC_iCheckMode( void )

{

int valMode = 0;

valMode = analogRead(sensorPin);

Serial.println(valMode);

return valMode;

}

În secvența de cod de mai sus se măsoară valoarea pin-ului analog care are rolul de a seta funcționalitatea sistemului MultifunctionalBracelet. Această metodă este apelată la inițializarea sistemului pentru a măsura valoarea pinului și a hotărâ configurația instanței actuale de execuție.

În secvența următoare de cod este prezentată setarea valorii timer-ului intern, care este folosit pentru interpretara gesturilor de click. Această modalitate este folosită pentru a implementa intârzierea interpretării de click-uri, pentru a nu trimite către sistemul PC semnale prea rapid.

void BRC_vStartTimer(int * timerValueToStart, int timerNumber)

{

switch(timerNumber)

{

case SEC1: *timerValueToStart = SEC1;

break;

case HALFSEC: *timerValueToStart = HALFSEC;

break;

default: break;

}

}

În secvența de cod de mai jos este reprezentată utilizarea funcției BRC_iCheckMode pentru a interpreta modalitatea de funcționare a sistemului.Trebuie avut în considerare faptul că acest cod prezentat este scris într-o manieră care respectă mai multe reguli de codare, în scopul de a înlătura cât mai eficient posibilitatea erorilor, dar și în scopul reutilizării acestuia ulterioare sau a depanării.

if( BRC_iCheckMode() < 100 )

{

functionalityMode = SERVO;

}

else

{

functionalityMode = MOUSE;

}

Interpretarea modului care trebuie instalat sau rulat se face în felul următor:

if( SERVO == functionalityMode )

{

servoBehaviour();

}

else

{

mouseBehaviour();

}

Următoarea secvență de cod face parte din componența emițătorului și are rolul de a detecta mișcarea de click dreapta, de a împacheta mesajul și de a-l trimite către bluetooth.

if(angleZ > oldValueOfZ){

Serial.println("Click Stanga : ");

valueToSend_K|=0x60;

mySerial.write(valueToSend_K & 0xFF);

delay(1);

}

else{

Serial.println("Click Dreapta : ");

valueToSend_K|=0x61;

mySerial.write(valueToSend_K & 0xFF);

delay(1);

}

În figura următoare este prezentată o diagramă de secvențe care arată mai detaliat etapele prin care trece sistemul de la emițător la receptor, de la preluarea datelor, trimiterea lor, recepționarea și interpretarea acestora cu scopul de a recunoaște și interpreta gestul recunoscut.

Figura 4.2.1 Diagramă de secvențe

Figura 4.2.2 Privire statică asupra sistemului

În figura de mai sus este prezentat sistemul din punct de vedere static. În cele două diagrame sunt prezentate variabilele și metodele componentelor sistemului. Deși nu arata a fi foarte complex, acest lucru se datorează disponibilității de drivere de nivel jos care le oferă mediul de dezvoltare arduino, precum ar fi driverele de I2C, driverele pentru comunicația serială, servomotoare, cât și driverele pentru mouse.

Din sistemul de mai sus, privind componenta Receiver putem observa cele două declarații de servomotoare, care sunt folosite pentru a controla servomotoarele. De asemena se observă și variabila mySerial de tipul SoftwareSerial, cu ajutorul căreia se trimit comenzile de tip HID către sistemul PC la care este conectat dispozitivul.

Privind sistemul Emitter, iese în evidență variabila mySerial, care are rolul de a conecta dispozitivul Arduino de modulul HC-05, modul gata configurat și pregătit pentru stabilirea comunicării și efectuarea acesteia. Metoda calcRotation are rolul de a prelua datele de la accelerometru și de a le transforma din valori brute, venite de la modulul MPU6050 în valori unghiulare. Foarte multe din variabilele din acest modul sunt folosite în ajutorul obținelor unghiurilor. S-a ales acest calcul mai complex de unghiuri deoarece sistemul este mult mai stabil utilizând această metodă decât prin urmărirea la fiecare ciclu a valorilor brute, acestea fiind foarte instabile.

4.2.1 Emițătorul

Figura 4.2.1.1 Modulul emițător

Dispozitivul din figura 4.2.1.1 reprezintă componenta emițătoare a sistemului de recunoaștere și interpretare a gesturilor creat și descris în această lucrare. În figura aceasta se poate observa placa de dezolvare Arduino Leonardo, modulul bluetooth HC-05 setat în modul master și accelerometrul și giroscopul MPU6050. Această componentă a sistemului se ocupă cu preluarea datelor de la accelerometru, calcularea unghiurilor pe axele X, Y și Z, și trimiterea valorilor către receoptor. Microcontroller-ul comunică cu accelerometrul folosind protocolul de comunicație I2C. Din acest considerent, cu câteva subsecțiuni înainte, acest protocol a fost detaliat, cum ar fi istoricul său, modul de funcționare, utilizare și cum arată datele pe liniile de comunicație. Pentru a comunica cu modulul accelerometru și giroscop, în scopul de a prelua datele nefiltrate care au legătură cu accelerația și înclinația sistemului, se folosește o serială de tipul I2C. Pentru a comunica cu modulul BT HC-05, în scopul de a trimite pachetele către cealaltă componentă a sistemului se folosește o serială de tipul UART între microcontroller și modului bluetooth.

La nivelul acestei componente nu a fost nevoie de implementarea comportamentului de recepționare de mesaje, deoarece, nu este prevăzută comunicația bidirecțională, ci doar unidirecțională, dintre emițător către receptor, și nu invers. Emițătorul funcționează pe baza unui acumulator la care este conectat, moment în care pornește rularea aplicației. Oricând este posibil un update al software-ului receptor, care să permită maparea mai multor variabile în pachet. Un astfel de update se face doar conectând dispozitivul la un calculator folosind USB-ul, după care urmoază arderea noii variante pe microcontroller. Pe langă funcționalitatea de mouse sau radiocomandă, dispozitvul poate fi folosit și pentru alte aplicații, putând fi adaptat cu ușurință pentru nevoile necesare. O dezvoltare dispozitivului poate surveni pe viitor.

4.2.2 Receptorul

Receptorul este prezentat în figura 4.2.2.1, unde se pot vedea componentele fizice folosite pentru dezolvatarea și funcționarea acestuia în ansamblul acestui sistem. Aceste componente sunt: microcontroller-ul Arduino Pro Micro și modulul de comunicație bluetooth HC-05, setat în modul slave. În componnța acestei componente a sistemului se află și comunicația dintre placa de dezvoltare și modulul bluetooth, care se realizează complet asemănător cu comunicația folosită în emițător pentru a trimite date spre bluetooth, numai că de data asta funcționalitatea este de a primi date de la modulul bluetooth, date care au fost trimise de către receptor, în scopul de a fi primite, despachetate, înterpretate și efectuate operațiile necesare conform conținutului pachetului.

Pentru a putea utiliza sistemul, modulul receptor trebuie pornit prima dată, iar imediat după și modulul emițător, pentru o conectare corectă între module și o funcționare corectă. De asemenea, și această componentă funcționează pe baza conexiunii la un acumulator, moment în care execuția programului va începe.

Figura 4.2.2.1 Modulul receptor

În momentul conectării componentelor între ele, acest comportament va fi confirmat de către led-ul de la nivelul modulelor bluetooth. În momentul conectării cu succes, ledurile nu vor mai emite o lumină intermitentă la intervale scurte de timp, ci vor emite un semnal luminos la un interval de trei secunde, fapt care confirmă interconectarea dintre module. Precum este valabil la cealaltă componentă și aceasta poate fi adusă la o variantă recentă atât din punct de vedere fizic cât și software în cazul în care dezvoltarea va continua. Dispozitivele mai au pini liberi pentru noi funcționalități, iar din punct de vedere al resurselor, nu sunt folosite nici măcar jumatate din cele de care dispun.

4.2.3 Mecanismul de logare intern

Brațara are în componența sa un mecanism de logare, care este prezentat în figura următoare de mai sus, prin care afișează prin seriala usb diverse mesaje. Prin intermediul acestui mecanism a fost mai ușoară dezvoltarea programului, iar rezultatele implementării mult mai vizibile, cel puțin la început, înainte de a crea interfața de recepție, care a făcut posibilă vizualizarea rezultatelor la nivelul device-urilor controlate.

Figura 4.2.3.1 Mecanism de logare emițător

Ambele componente ale sistemului dispun de acest sistem intern de logare al mesajelor pe seriala microcontroller-elor. Pentru a beneficia de această funcționalitate, oricare din cele doua componente, trebuie conectate la un sistem de calcul, care să aibă instalat mediu de dezovoltare Arduino. Următorul pas este pornirea conexiunii de Serial Monitor și setarea ratei de transfer a datelor la 9600 KB/s. După cum am afirmat și mai sus, acest mecanism a ajutat foarte mult la dezvoltarea sistemului, nefiind vizibile inițial etapele dezvoltării, ci doar prin intermediul acestei modalități. Chiar și după realizarea sistemului, din punct de vedere funcțional, nevoia pentru monitorizarea dezvoltării software încă este necesar.

Figura 4.2.3.2 Mecanism de logare receptor

Concluzii

În urma studiilor efectuate pe baza altor lucrări care au aplicabilitate asemănătoare cu cea efectuată de mine am ajuns la concluzia că pentru a avea un sistem de recunoaștere de gesturi optim, acesta trebuie să prelucreze informația în timp real, acest lucru înseamnă să aibă recurența ciclică de minim 40 de milisecunde. Folosind un sistem bazat pe un microcontroller, această recurență poate fi îndeplinită fără probleme.

Sistemele de identificare a gesturilor create de către ceilalți autori la care s-a făcut referire au reprezentat un punct de început foarte important. În plus, pe parcursul dezvoltării, aceste sisteme studiate au ajutat la monitorizarea performanțelor sistemului realizat pentru aplicația Hand Motion Multifunctional Bracelet, deoarece au oferit limite minime și maxime pentru recurența analizei gesturilor. Toate aceste sisteme au întărit ideea de a crea sistemul multifuncțional.

În acest moment, dispozitivul prezentat în lucrarea de față poate fi folosit ca mouse sau telecomandă pentru diverse sisteme electronice. Acesta poate evolua în a fi folosit pentru a controla diverse lucruri din casa unui utilizator, cum ar fi întrerupătoarele de lumină, expresorul, televizorul. Are o infinitate de cazuri de utilizare, iar utilitatea fiecărui caz în parte depinde de cine îl folosește și în ce scop. În comparație cu alte interfețe de comunicare din lucrările studiate, această interfață este rapidă, în timp real, are foarte multe aplicații și este foarte portabilă din punct de vedere fizic.

De-a lungul studiilor de masterat am obținut aptitudini care m-au ajutat în efectuarea lucrării de disertație. Spre exemplu, pentru a realiza diagrama de secvențe și privirea statică a sistemului am folosit cunoștințele care le-am dobândit la materia Proiectarea Sistemelor Software. Datorită antrenamentului pe care l-am efectuat pentru a mă pregăti pentru această materie, am dobândit experiență în lucrul cu diagramele, fie ele statice sau dinamice. Din această cauză am ales să adaug diagramele de mai sus, pentru a putea dovedi că disciplinele studiate pe parcursul facultății m-au ajutat în dezvoltarea mea personală, dar mai ales profesională, oferindu-mi aptitudini noi.

Altă materie care ajută la dezvoltarea felului de a gândi atunci când proiectezi un sistem, este Arhitecturi Pentru Sisteme Software, materie care a fost studiată în anul doi.

O altă materie care este foarte apropiată de această lucrare o reprezintă Arhitecturi și Modele de Securitate. Prin intermediul acestui curs am dobândit noțiunile legate de domeniul securității, privirea în ansamblu a sistemului din punctul acesta de vedere. Prin simplul fapt că am dobândit aceste noțiuni, în momentul implementării aplicației am știut că voi avea nevoie de o modalitate prin care să ofer siguranța datelor trimise prin bluetooth. Sunt recunoscător ca am avut posibilitatea de a urma aceste cursuri care mi-au fost de mare ajutor în elaborarea acestei lucrări. De-a lungul studiilor de masterat a fost necesar să fac proiecte, referate, aplicații pentru diverse materii. Aceste activități au reprezentat un adevărat antrenament pentru acest moment. În acest fel mi-am dezvoltat abilitățile de a cerceta, a extrage informațiile din cercetările efectuate, a sintetiza și de a formula corect o lucrare științifică.

În anii de masterat au fost și momente mai grele, deoarece, în acest timp am fost angajat, iar timpul personal a fost mai restrâns, însă cu puțin efort am reușit să împac ambele activități. Prin intermediul locului de muncă la care activez am căpătat experiență în programare, urmând anumite reguli din domeniu, reguli care te ajută să scrii cod mai bine, mai eficient, cât și cod mai bun.

Bineînțeles, sunt foarte recunoscător doamnei coordonator Lect. Dr. Adriana Popovici pentru tot sprijinul care mi l-a oferit în elaborarea acestei lucrări, precum și pentru înțelegerea de care a dat dovadă în momentele în care nu am putut realiza task-urile la timp. Suportul oferit a reprezentat foarte mult pentru mine, iar cu acest ajutor am reușit să finalizez lucrarea de față.

Obstacolele întâlnite pe parcursul dezvoltării părții aplicate a lucrării au fost diferite de fiecare dată. Voi exprima mai departe principalele obstacole întânite, plus rezolvările acestora, în ordinea timpului care a trebuit dedicat pentru rezolvarea lor, de la cel mai mare la cel mai mic.

Cel mai important obstacol major care a fost întâlnit a apărut la scrierea unui cod care nu avea o modalitate de a opri funcționalitatea de mouse. Pe scurt, codul, de fiecare dată când era rulat, intra într-o stare în care trimitea imediat după ce era conectat la sistemul PC, pe interfața USB, mesaje folosind protocolul HID, de click dreapta. Rata de transmisie a acestor mesaje era de 1000 de click-uri(dreapta) pe secundă. Folosind un calculator cu un procesor performant, aceste click-uri erau interpretate la o rată aproape de cea cu care erau trimise, lucru care creștea temperatura procesorului sistemului la care era conectat receptorul, ducând la următoarea consecință: inutilizarea sistemului PC până când era oprit forțat, plus detașarea receptorului de la slot-ul USB. Acest lucru a condus și la imposibilitatea rescrierii microprocesorului pentru a înlătura acest comportament anormal. Pentru a rezolva problema de mai sus, a trebuit folosit un sistem PC cu performanțe mai scăzute, care nu este capabil de o rată așa ridicată de recepție a mesajelor. Cu ajutorul unui astfel de sistem s-a reușit reflash-uirea microprocesorului Atmega32u4, cu un cod dummy, care nu făcea nimic. Acest obstacol a fost unul consumator de timp, deoarece au fost încercate mai multe metode, ajungând până la încercarea eșuată de a construi un programator arduino ICSP. Daca aș fi folosit un astfel de programator, problema ar fi fost înlăturată într-un timp foarte scurt, însă, cu puțină inspirație nu a fost nevoie de investigarea mai detaliată pentru a construi unul, lucru care ar fi fost consumator de timp.

Al doilea obstacol major care a consumat un timp considerabil îl reprezintă configurarea modulelor Bluetooth HC-05 pentru a putea comunica între ele. Unul din modele trebuie configurat ca master, iar celălalt ca slave. Pentru a reuși să realizez configurația corectă, au fost necesare scrierea unui program pentru una din plăcuțele de dezvoltare care să seteze modulul bluetooth conectat în modul AT, făcându-le astfel susceptibile la comenzi de configurare. Astfel, odată creat acest program, modulele au fost setate, pe rând, unul master, iar celălalt slave. Odată setate corect, și confirmată conexiunea dintre ele, prin indicatorul led de la nivelul fizic, s-a putut trece mai departe la dezvoltarea pachetului de trimis între dispozitive. Dezvoltarea a constat în crearea unui pachet, pe un byte, care să aibă niște biți setați pentru eventuri sau valorile trimise. Totodată cu crearea transmisiei fără fir, s-a putut renunța treptat la mecanismul de logare intern, deoarece pe parcursul dezvoltării s-au putut vedea în timp real rezultatele obținute.

Al treilea cel mai important obstacol întâlnit a fost la conectarea servo-motoarelor la receptor, lucru care a dus la un consum prea mare de curent, destabilizând conexiunea bluetooth. În momentul în care servo-motoarele erau conectate la placa de dezvoltare, iar software-ul era setat pe modul de receptor automodele, acestea foloseau prea mult amperaj, lucru care a dus la pierderea conexiunii dintre modulele BT, uneori chiar la stingerea modulului de pe receptor, făcând posibilă reutilizarea acestuia numai după resetarea receptorului și a emițătorului, folosind butoanele de Reset de pe ambele plăci de dezvoltare. Acest impediment a fost depășit conectând pinii de alimentare și de GND ai servo-motoarelor la o sursă externă de curent, care oferă 5V curent continuu, lăsând astfel necesitatea conectării la microcontroller-ul receptor doar a pinilor de puls, semnale care sunt necesare pentru punerea în mișcare a servo-motoarelor.

De asemena, pe parcursul redactării lucrării am întâlnit diverse obstacole în studiul efectuat, deoarece tema aleasă nu reprezintă o temă așa de ușoară, iar studiile efectuate asupra recunoașterii de gesturi sunt regăsite în mai multe domenii. Existând mai multe abordări asupra acestei teme, iar din această cauză a fost dificilă găsirea asemănărilor între lucrările studiate și cea prezentă, diferențele, cât și efectuarea de comparații între ele.

Din punctul meu de vedere, cea mai importantă caracteristică a dispozitivului realizat o reprezintă posibilitatea utilizării multiple a dispozitivului, fapt care reprezintă un avantaj față de interfețele prezentate în celelalte lucrări, deoarece acestea sunt în mare specializate pe o anumită funcționalitate. Acest lucru nu reprezintă neapărat un dezavantaj pentru autorii sistemelor studiate, ci poate fi considerat ca un beneficiu real al utilizării microcontrollerelor în realizarea aplicațiilor în timp real, deoarece aceste sisteme se pot schimba chiar și în timpul rulării.

Posibilitatea dezvoltării sistemului actual rămâne valabilă pentru viitoare actualizări de software, atât pentru emițător, cât și pentru receptor. O actualizare a emițătorului, constă în recunoașterea mai multor gesturi, bazate posibil pe accelerometru. O actualizare pentru receptor înseamnă înțelegerea și utilizarea evenimentului primit prin conexiune fără fir de la cealaltă componentă. O îmbunătățire a pachetului transmis poate fi și ea luată în considerare, realizând dimensiunea pachetului la doi bytes, adică la șaisprezece biți/octeți. Acest lucru înseamnă maparea în pachet a mai multor evenimente, parametri etc.

Tehnologiile de detecție și recunoaștere a gesturilor sunt într-o dezvoltare continuă, iar pe parcursul anilor au devenit tot mai răspândite. În anii următori, se vor răspândi în arii mai numeroase, mai ales cele de entertainment, recreaționale și medicale. Această modalitate de interfațare ne oferă o metodă foarte intuitivă și naturală de conectare a omului cu sistemele electronice.

Bibliografie

[1] Takashi Nakamura, Computers in Human Behavior, Volume 43, 2015, p. 68-75, ISSN 0747-5632, https://www.sciencedirect.com/science/article/pii/S0747563214005652

[2] Srinath Sridhar, Tracking Hands in Action for Gesture-based Computer Input, Thesis for obtaining the title of Doctor of Engineering, Saarbrcken, October 2016

[3] Fabio Dominio, REAL-TIME HAND GESTURE RECOGNITION EXPLOITING MULTIPLE 2D AND 3D CUES, PH.D THESIS, Academic Year: 2013-2014.

[4] Silvia Giordano, Daniele Puccinelli, When sensing goes pervasive, Pervasive and Mobile Computing, Volume 17, Part B, 2015, p.175-183, ISSN 1574-1192,

https://doi.org/10.1016/j.pmcj.2014.09.008.

(http://www.sciencedirect.com/science/article/pii/S1574119214001618)

Keywords: Pervasive sensing; Wireless sensor networks; Human-centric sensing;

Smartphones; Wearables

[5] James Rehg and Takeo Kanade. Visual tracking of high DOF articulated structures: An application to human hand tracking. In Proc. ECCV, volume 801, p. 35–46, Springer Berlin/ Heidelberg, 1994.

[6] Rafiqul Zaman Khan, Noor Adnan Ibraheem, Hand gesture recognition: A literature review, International Journal of Artificial Intelligence & Applications (IJAIA), Vol. 3, No. 4, July 2012

[7] P.W. Prickett, R.I. Grosvenor, M. Alyami, Microcontroller-based Monitoring of Pneumatic Systems., IFAC Proceedings Volumes, Volume 43, Issue 18, 2010, p. 614-619, ISSN 1474-6670, ISBN 9783902661760,

https://doi.org/10.3182/20100913-3-US-2015.00008.

(http://www.sciencedirect.com/science/article/pii/S1474667015375443)

[8] K.K. Biswas, Gesture recognition using Microsoft Kinect, Conference Paper, December 2011

[9] Haiyu Zhu, Yao Yu, Yu Zhou and Sidan Du, Dynamic Human Body Modeling Using a

Single RGB Camera, Sensors 2016

[10] Viraj Shinde, Tushar Bacchav, Jitendra Pawar, Mangesh Sanap, Hand Gesture Recognition Using Web Camera, International Journal of Advanced Engineering & Innovative Technology, Volume 1, Issue 1, April-2014

[11] Radha R C, Ravuri Aneesh Kumar, Design and Implementation of I2C Communication Protocol on FPGA for EEPROM, International Journal of Scientific and Engineering Research, Volume 5, Issue 3, March 2014, ISSN 2229-5518

[12] Protocolul HID,

https://www.embedded.com/design/prototyping-and-development/4404116/HIDs-Up

[13] Abdel-Karim R. Al Tamimi, Security in Wireless Data Networks: A Survey Paper

[14] Conceptele CISC și RISC, http://tet.pub.ro/pages/Microprocesoare2/MP_CAP_16.pdf

[15] Securitate Bluetooth, https://www.simform.com/iot-bluetooth-security-vulnerabilities/

Similar Posts