Retea De Senzori Optici Cu Aplicabilitate In Imbracaminte Inteligenta.doc [306512]

UNIVERSITATEA TEHNICĂ „Gheorghe Asachi” [anonimizat]: TEHNIC

SPECIALIZAREA: [anonimizat]: [anonimizat]:

1. Introducere 4

2. Stadiul actual 5

3. Imaginea de ansamblu a proiectului 7

4. Fundamentare teoretică 8

4.1. Senzori 8

4.1.1. Generalități 8

4.1.2. Senzori optici 9

4.1.2.1. Senzori optici rezistivi 9

4.1.2.2. Senzori optici în InfraRoșu 11

4.1.2.3. Senzori optici de proximitate 12

4.1.3. Senzori de proximitate capacitivi 13

4.1.4. Amplasarea senzorilor în țesătură 15

4.2. [anonimizat] 16

4.3. Microcontrolere 17

4.4. Protocoale de comunicație 19

4.4.1. Generalități 19

4.4.2. Protocolul de comunicație SPI 20

4.4.3. Protocolul de comunicație I2C 21

5. Implementarea practică a lucrării 24

5.1. Materiale și componente folosite în implementare 24

5.1.1. Bandă electrică conductoare 24

5.1.2. Fire conductoare flexibile 24

5.2. Implementare Hardware 25

5.2.1. Schema bloc 25

5.2.2. Microcontrolerul ADuCRF101 26

5.2.3. Senzorul optic VCNL4020 27

5.2.4. Senzorul interdigital 29

5.2.5. [anonimizat]7747 31

5.2.6. Acumulator l503040 Cellevia Batteries 32

5.2.7. Modul de încărcare baterii litiu 1A TP4056 33

5.3. Implementare Software 34

5.3.1. Mediul de dezvoltare Keil 34

5.3.2. CM3WSD.exe 35

5.3.3. [anonimizat] 36

5.3.4. Terminal.exe 37

5.3.5. Mediul de dezvoltare Matlab 38

5.3.6. Modulul RF 39

5.3.7. Organigrama 40

5.4. Model experimental senzor interdigital 40

5.5. Model experimental cu senzor VCNL4020 42

5.6. Setare parametri 43

5.6.1. Determinare curent optim 44

5.6.2. Rezultate 46

6. Rezumat 48

7. Concluzii 48

8. Anexe 49

9. Bibliografie 58

Introducere

Dorința de dezvoltare și de cunoaștere a ființei umane precum și necesitatea unor metode tot mai simple și ușor accesibile de a descoperi si a trata anumite afecțiuni ale corpului uman alimentează zi de zi ascensiunea lumii tehnologiei.

Pe zi ce trece asistăm la o revoluție a tehnologiei, de la telefoane tot mai smart la o [anonimizat]. Următorul pas în dezvoltarea tehnologiei se îndreaptă către hainele inteligente care monitorizează starea de sănătate a purtătorului și permit depistarea mai rapidă și mai eficientă a diferitelor afecțiuni ce pot apărea. Totodată, [anonimizat] o altă persoană în legătură cu starea purtătorului hainei.

Monitorizarea semnelor vitale și numeroasele aplicații ale aparatelor electronice portabile au devenit în ultima vreme un subiect tot mai des întâlnit printre cercetători. [anonimizat], iar facilitarea accesului către acest tip de dispozitive un lucru tot mai vital.

[anonimizat] o [anonimizat], cât și în alte domenii.

Dezvoltarea acestei aplicații va face posibilă o serie de alte aplicații cum ar fi monitorizarea copiilor, a persoanelor cu risc mare de apariție a afecțiunilor cardiace, dar mai ales a persoanelor cu risc de boli a căror afecțiune principală este tremurul capului. Tremurăturile sunt mișcări musculare care se manifestă involuntar în anumite zone ale corpului. Cel mai frecvent, tremurul afectează membrele superioare și capul, dar nu este o regulă. Acesta poate apărea atât în repaus, cât și în mișcare, cel mai adesea atunci când persoana în cauză încearcă să execute o acțiune cu ajutorul părții afectate (de exemplu, să ridice un pahar cu apă sau să vorbească), acestea devenind mai greu sau chiar imposibil de realizat. Tremurul se poate datora unor afecțiuni grave, cronice precum Parkinson, scleroză multiplă sau tulburări cerebrale, dar poate apărea și pe termen scurt datorită anxietății sau stresului.

Prezenta lucrare urmărește depistarea acestui tremur încă din fază incipientă cu ajutorul unor senzori încastrați în gulerul hainei, o rețea de senzori optici și capacitivi a căror sensibilitate a fost calibrată cu acest scop.

Vom întâlni în cadrul lucrării atât informații despre prelevarea datelor cu ajutorul senzorilor, cât și date despre modalitățile de transmitere a acestor date de la senzori către microcontroler și mai departe de la microcontroler către un dispozitiv inteligent.

Stadiul actual

Textilele au fost parte integrantă a vieții umane de mii de ani. În vremurile mai vechi, oamenii au folosit textilele în principal pentru protecție, însă utilizarea acestora s-a mărit treptat. Încorporarea valorilor multifuncționale în astfel de materiale a devenit un domeniu important de interes în ultimii ani. Țesături, fibre de fire și multe alte materiale care au adăugat funcționalități au fost dezvoltate pentru o serie de aplicații. Textilele inteligente este un domeniu de cercetare ce reprezintă o sursă indispensabilă pentru discipline de cercetare precum chimie, informatică și inginerie proiectarea și tehnologia textilă, știința materialelor sau fizică.

Acesta este domeniu larg de studii si produse care afișează funcționalitatea materialelor obișnuite. Acestea sunt produse textile care pot interacționa cu mediul sau cu utilizatorul. Colaborarea dimtre design-ul de produse textile și electronică este importantă în fabricarea de materiale inteligente care să poată realiza o gamă largă de funcții care pot fi găsite în produse electronice atât flexibile, cât și rigide.

Textilele inteligente prezintă un nivel ridicat de inteligență și sunt clasificate în trei grupe după cum urmează:

Textile inteligente pasive care pot utiliza doar senzori pentru a simți mediul și utilizatorul;

Textile inteligente active care au incorporate o funcție de acționare și un dispozitiv de detectare și pot simți și reacționa la stimuli din mediul înconjurător;

Textile foarte inteligente capabile să perceapă, să reacționeze și, de asemenea, să-și adapteze proprietățile la condițiile de mediu.

Într-un material inteligent pasiv, existența senzorilor este importantă deoarece senzorii oferă un sistem de detectare a semnalelor. În ultimele decenii, textilele au devenit o platformă tot mai populară pentru integrarea diverșilor senzori care le oferă funcționalități active sau pasive. În această perioadă au fost create mănuși pentru a detecta poziția mâinii și recunoașterea limbajului gesturilor, pantaloni care monitorizează mișcarea părții inferioare a corpului, dar și diferite haine care ajută la înregistrarea electrocardiogramei (ECG), electromiogramei (EMG),a encefalogramei (EEG) și a ratei respiratorii.

Țesăturile inteligente se bazează în mare parte pe trei discipline, și anume proiectarea și tehnologia textilă, materialele inteligente și, nu în cele din urmă, știința și ingineria computerizată. Aceste discipline se reunesc pentru a-și aduce contribuția. Designul și tehnologia textilă contribuie cu materiale și structuri de țesături, materialele inteligente contribuie cu capacitatea lor de a răspunde diferiților stimuli, iar știința și ingineria informatică contribuie la proiectarea funcțiilor dinamice, în special în programarea microcontrolerelor.

O problemă importantă în combinarea acestor trei discipline în producerea de textile inteligente este nivelul de integrare. Tehnologiile convenționale inteligente pot fi încorporate în țesături fie parțial sau în întregime pentru a atinge un anumit nivel de funcționalitități inteligente.

Odată cu dezvoltarea domeniului textilelor inteligente s-a constatat faptul că dispozitivele microelectronice convenționale nu satisfac cerințele de confort ale utilizatorilor pentru multe dintre aplicațiile practice. Astfel, a apărut nevoia de a fi dezvoltate soluții integrate în firele și fibrele textile deoarece Soluțiile propuse implică fire conductive, fibre optice și polimeri conductivi ce pot fi folosiți ca senzori sau antene încorporate în textile pentru monitorizarea diverselor activități.

Multe din aplicațiile pe textile au aplicabilitate în domeniul medical. De exemplu, senzorii bazați pe fibrele Bragg (FBG) au fost integrați într-o pernă pentru monitorizarea vibrațiilor datorate respirației și ritmului cardiac în timpul somnului. Cu toate că acest tip de senzor este foarte precis și este capabil să monitorizeze atât ECG, cât și rata de respirație în același timp, el are un mare dezavantaj.

În același timp, au fost propuse diferite monitoare de tip “patch”, pentru măsurarea ECG pe termen lung. Însă aceste soluții necesită fie o unitate de comandă situate undeva pe cămașă, fie sonde sau electrozicare ar trebui atașați în siguranță de corpul utilizatorului ceea ce poate provoca discomfort. Anxietatea în astfel de situații este o prioritate, iar cel mai elocvent exemplu este cel al nou-născuților. S-a demonstrat că aproximativ 10% dintre nou-născuți au nevoie de îngrijire respiratorie deoarece suferă de tulburări respiratorii neonatale. Monitorizarea ratei de respirație în cazul acestora joacă un rol important în reducerea intervențiilor necesare și a metodelor clasice ca, de exemplu, monitorul cardiopulmonar la care sunt conectați nou-născuții prin electrozi. Acest lucru a motivat oamenii de știință să-și concentreze atenția asupra monitorizării neinvazive a respirației, fără utilizarea electrozilor, a sondelor sau a unităților de comandă voluminoase care crează discomfort.

Dar respirața și ritmul cardiac nu mai sunt singurii parametri fiziologici către care s-a îndreptat atenția cercetătorilor. Afecțiunile cerebrale sau motorii au atras tot mai mult atenția în ultima vreme. Boli precum Parkinson sau afecțiunile cauzate de tumori cerebrale au început să ceară o metodă inovativă de depistare pentru ca omul să afle din timp dacă suferă de ceva anume și a putea acționa cât mai rapid asupra acestui fapt.

Medicina și asistența medicală, domeniul militar și aerospațial, dar și viața sportivă sunt doar câteva dintre domeniile în care țesăturile inteligente au fost foarte implicate în ultima perioadă. Pentru a asigura o viață cât mai bună omului, dar și pentru a crește rata de viață, aceste domenii s-au dezvoltat foarte mult, ajungând să îmbine foarte bine aceste elemente.

Anumite boli, cronice sau mai puțin cronice, au determinat omul să caute soluții eficiente pentru prevenția, depistarea și tratarea acestor afecțiuni cât mai simplu și neinvaziv. Acest lucru se întâmplă și in cazul bolii Parkinson. Având în vedere cauzele declanșării acestei afecțiuni, dar și modul de manifestare a acesteia, în prezenta lucrare am încercat să găsim o metodă de depistare a ei încă din fază incipientă.

În continuare veți găsi analizate atât componentele și metodele de lucru necesare construirii unui astfel de model funcțional, cât și descrierea unui prototip realizat experimental pentru aceasta.

Imaginea de ansamblu a proiectului

În viața de zi cu zi, ceea ce purtăm nu mai este neatins de către tehnologie, iar de câțiva ani buni încoace, cercetătorii au descoperit numeroase metode de a îmbina perfect tehnologiile noi cu fibrele textile.

Îmbrăcămintea inteligentă reprezintă integrarea informațiilor electronice în fibrele textile. Aceste îmbrăcăminte sunt sensibile și pot răspunde condițiilor de mediu, dar și altor factori. Acestea pot simți schimbări atât în ​​mediul exterior, cât și în condițiile din interiorul corpului uman și poate răspunde la aceste schimbări printr-un mecanism de feedback în timp util. Caracteristica principală a îmbrăcăminții inteligente este faptul că sunt portabile,dar și ușor de monitorizat în timp real.

Colaborarea dintre designul de produse textile și electronică este importantă în fabricarea de materiale inteligente pentru ca acestea să poată realiza o gamă cât mai largă de funcții inteligente care pot fi găsite atât în produse electronice flexibile, cât și rigide.

Existența senzorilor în haine este importantă deoarece reprezintă un sistem de detectare a semnalelor, de aceea domeniul de cercetare este unul amplu. Îmbrăcămintea inteligentă are avantaje cum ar fi comoditatea, precizia și fezabilitatea. Acești senzori pot detecta electroencefalograma (EEG), electrocardiograma (ECG) și electromiograma (EMG). De asemenea, aceștia pot detecta temeperatura corpului, caracteristici de mediu sau biomedicale (salinitate, umiditate, contaminații). Câteva dintre domeniile în care acestea pot fi intens folosite sunt medicina și asistența medicală, militară, sport, dar și în industria aerospațială.

Nevoia de monitorizare continuă a parametrilor fiziologici în cazul anumitor pacienți a făcut ca interesul către crearea unor mijloace de supraveghere noi. Fiind capabile să interacționeze cu mediul în care sunt, textilele inteligente au atras tot mai mult atenția cercetătorilor care au încorporat tot mai mulți senzori în diferite țesături pentru a monitoriza diferiți parametri.

Proiectul de față prezintă o rețea de senzori optici, ajutați de un sistem de senzori capacitii încastrați în guler ce monitorizează mișcările capului purtătorului. Microcontrolerul pe care l-am ales pentru această aplicație este ADuCRF101 dezvoltat de cei de la Analog Devices. Pentru partea de achiziție de date, partea experimentală a fost realizată cu două tipuri de senzori, senzori interdigitali capacitivi realizați de noi cu bandă conductoare și senzori optici VCNL4020. Datele au fost prelevate atât cu senzorii liberi, cât și încastrați direct in țesătura hainei pentru a face achiziții cât mai aproape de mediul real și a adapta partea practică mai bine pe ceea ce avem nevoie.

Scopul acestei lucrări a fost crearea unui dispozitiv ușor de inserat în țesătură care să nu afecteze comfortul purtătorului și care să monitorizeze anumiți parametri fiziologici, dintre care amintim tremurul capului, rotirea si mișcările față-spate ale acestuia pentru depistarea eventualelor afecțiuni de mobiltate și chiar afecțiuni cronice ce reies din acești parametri

Fundamentare teoretică

Senzori

Generalități

Senzorul este un dispozitiv tehnic care reacționează prompt generând mărimi măsurabile, pentru anumite proprietăți fizice sau chimice ale mediului în care se găsește. Acesta poate măsura parametri fiziologici ca: temperatura, umiditatea, presiunea, accelerația, forța, intensitatea sonoră și alții.

Cuvântul senzor vine din latinescul “sensus” și se traduce prin simț. Acesta nu doar măsoară o marime fizică, dar și transformă și prelucrează mărimea măsurată într-un semnal ce poate fi înțeles de către un observator.

Există mai multe clasificări ale senzorilor. Una dintre ele le clasifică astfel:

Activ: consumator de energie (RADAR – măsurarea distanțelor prin emitere de radiații electromagnetice);

Pasiv: (fotorezistența cu care se poate măsura intensitatea luminii incidente).

Figura 4.1.1.1. Tipuri de senzori

Senzori optici

Utilizarea senzorilor optici a fost introdusă în ultimii ani în mai toate domeniile inginerești, dar nici medicina nu este mai prejos. Acest tip de senzori permite măsurarea parametrilor fizici și chimici și pot fi împărțiți în două mari categorii: intrinseci (fibra optică este elementul sensibil) și extrinseci (fibra optică doar transportă lumina). Cei extrinseci sunt folosiți în aplicații care măsoară temperatura, presiunea, nivelul de lichid și fluxul, sunt mai puțin sensibili, ieftini și ușori de utilizat, în schimb au probleme de conectare intrare/ieșire. Pe de altă parte, cei intrinseci, deși sunt mai scumpi și au aplicații în mișcare, accelerare, presiune acustică și vibrații, sunt mai sensibili și nu au probleme de conectare.

Utilizarea frecventă în medicină a senzorilor optici se datorează în principal proprietăților lor metrologice. Toate acestea îi fac imuni la interferențele electromagnetice, ceea ce reprezintă un atu în folosirea lor pentru monitorizarea parametrilor fiziologici pe pacienți.

Sunt diferite tipuri de senzori optici: chimici (folosiți la spectroscopii sau în cazul apelor și solului contaminat), de temperatură, de tensiune (Fiber Bragg Gratings – FBG), biomedicali (măsurare CO2, O2 si pH), senzori electromagnetici (mai puțin senzitivi la interferențele electromagnetice), de rotație, de presiune, de poziție.

În articolul “Textile inteligente medicale bazate pe tehnologia fibrelor optice: imagine de ansamblu”, publicat în revista Sensors, Carlo Massaroni, Paola Saccomandi și Emiliano Schena tratează acest subiect din perspectiva avantajelor pe care acești senzori îi au în domeniul medical.

Aceștia spun că textilele inteligente bazate pe senzori optici sunt de fapt aplicații inteligente ce pot interacționa cu mediul lor. Capacitatea acestora de a simți parametrii fizici și chimici poate fi accesată prin integrarea mai multor tipuri de senzori. De asemenea, aceștia susțin faptul că utilizarea lor este destul de avantajoasă deoarece pot fi folosiți în timpul procedurilor RMN.

Aplicațiile medicale folosesc, în general, tehnologiile FBG pentru a proiecta textile bazate pe fibre optice datorită sensibilității lor, caracteristică ce permite dezvoltarea unor configurații de măsurare a tensiunii experimentale de către senzorul FBG cu scopul de a monitoriza parametrii fiziologici. Fiind mici, portabili, compatibili cu firele și ușor de țesut în textile, senzorii FBG au devenit cel mai promițător material al elementului sensibil în formarea de îmbrăcăminte inteligentă. Această aplicație a fost utilizată în monitorizarea mișcărilor respiratorii și a ratei respirației.

Senzorii optici ce se bazează pe modulația intensității sunt folosiți pentru a monitoriza parametrii fiziologici.

Senzori optici rezistivi

Senzorii optici rezistivi sau fotorezistorii sunt dispozitive sensibile la lumină, utilizate adesea pentru a indica prezența/absența luminii sau intensitatea acesteia. În intuneric, rezistența lor este foarte ridicată, dar când senzorul este expus la lumină, rezistența scade dramatic.

Figura 4.1.2.1.1. Senzor optic rezistiv

Pe baza materialelor folosite, fotorezistorii pot fi intrinseci sau extrinseci. Cei intrinseci utilizează materiale ca siliciul sau germaniul. Fotonii care cad pe dispozitiv antrenează electronii de la bara de valență la banda de conducție, iar rezultatul acestui proces este un număr mare de electroni liberi care pot transporta curent și deci mai puțin rezistenți. Senzorii optici rezistivi extrinseci sunt fabricați din materiale puternic dopate cu impurități. Materialele dopate cu impurități creează o nouă bandă de energie deasupra benzii de valență existente, populată de electroni. Acești electroni au nevoie de mai puțină energie pentru a face trecerea la banda de conducție deoarece diferența energetică este mai mică. De aici rezultă un dispozitiv sensibil la diferite lungimi de undă de lumină.

Ambele tipuri de fotorezistori vor prezenta o scădere a rezistenței atunci când sunt iluminate. Cu cât intensitatea luminii este mai mare, cu atât este mai mare căderea de rezistență. Deci, senzorul optic rezistiv este o funcție inversă, neliniară a intensității luminoase.

Figura 4.1.2.1.2.Construcția senzorului optic rezistiv

Fotorezistorii sunt cel mai adesea folosiți ca senzor de lumină când trebuie să detecteze prezența sau absența acesteia.

Senzori optici în InfraRoșu

Senzorul infraroșu pasiv este un dispozitiv electronic care măsoară radiația infraroșie emisă de obiecte aflate în câmpul său vizual. Mișcarea este detectată atunci când un corp cu o anumită temperatură (cum ar fi omul) trece prin fața sursei infraroșu (adică un alt corp, obiect) cu o altă temperatură. Acest lucru înseamnă că senzorul detectează căldura de la trecerea unui obiect prin câmpul de acțiune al senzorului și acel obiect rupe câmpul pe care senzorul l-a determinat anterior ca fiind normal. Orice obiect, chiar și unul de aceeași temperatură ca și obiectele din jur, va activa senzorul dacă corpul se deplasează în câmpul vizual al acestuia. Toate corpurile emit energie sub formă de radiații, iar radiațiile infraroșii sunt invizibile pentru ochiul uman, dar pot fi detectate de dispozitive electronice concepute în acest sens. Acest senzor este mai ales folosit în construcția detectoarelor de mișcare.

Senzorul cu infraroșu reacționează la schimbarea temperaturii cauzată de schimbarea fluxului de radiații (în principiu radiație termică în infraroșu, lungimea de undă fiind de aproximativ 10 µm) de la oameni, animale și vehicule aflate în vecinătatea senzorului. Senzorul (de mișcare) cu infraroșu nu răspunde la diferențele termice statice, care sunt cauzate prin mijloace naturale.

În fața senzorului propriu-zis se găsește o cupolă sferică sau cilindrică de lentile mici curbe convexe albe, din material plastic noros, dar este în mod clar în infraroșu transparent. Aceste lentile multiple colectează lumină în infraroșu. Lumina în infraroșu ajunge la senzorul propriu-zis care transformă această energie infraroșie în energie electrică. Aceasta poate fi analizată de un circuit de procesare (procesor) și va diferenția alarmele false de alarmele reale.

Principiul de funcționare al acestui senzor este prezentat mai jos.

Figura 4.1.2.2.1.Principiu de funcționare senzor în infraroșu

Senzori optici de proximitate

După modul de detecție a obiectului, senzorii optici de proximitate pot fi:

Senzori fotoelectrici barieră

Senzori fotoelectrici cu retro-reflexie

Senzori cu difuzie

Figura 4.1.2.3.1. Tipuri de senzori fotoelectrici

Senzorul de tip barieră constă din două părți și anume un emițățor (de lumină) și un receptor. Cele două sunt separate, iar legătura între ele se face printr-o rază de lumină.

Figura 4.1.2.3.2. Principiu de funcționare senzor de tip barieră

Trecerea obiectului de detectat prin dreptul razei de lumină întrerupe legătura între emițător și receptor. În astfel de cazuri, senzorul fotoelectric sesizează obiectul respectiv.

Această metodă de detecție nu este influențată de culoarea, forma sau eventual luciul suprafeței obiectului, dar volumul acestuia trebuie să fie luat în considerare. Unii senzori fotoelectrici de tip barieră dispun de posibilitatea de reglare a sensibilității pentru a putea sesiza obiecte de diferite mărimi.

Spre deosebire de senzorii de tip barieră, la senzorii retro-reflexivi, emițătorul și receptorul se găsesc în aceeași carcasă, iar raza de lumină emisă ajunge în unitatea de recepție cu ajutorul unui reflector (ochi de pisică).

Ca și senzorii de tip barieră, acești senzori detectează obiectul prin întreruperea luminii de către acesta.

Figura 4.1.2.3.3. Principiu de funcționare senzor retro-reflexiv

În cazul senzorilor cu difuzie, emițătorul și receptorul sunt dispuși în aceeași carcasă, ca și la tipul cu retro-reflexie. Acest mod de detecție nu are nevoie de reflector, raza luminoasă este reflectată în unitatea de recepție de către suprafața obiectului de detectat. Ieșirea senzorului este activă atunci când raza luminoasă este reflectată de pe suprafața obiectului de detectat spre unitatea de recepție.

Figura 4.1.2.3.4. Principiu de funcționare senzor cu difuzie

Senzori de proximitate capacitivi

Funcționarea unui senzor de proximitate capacitiv se bazează pe măsurarea variației capacității electrice unui condensator dintr-un circuit rezonant RC datorită apropierii unui material oarecare.

Senzorii capacitivi se realizează din două tipuri de condensatoare: plan și cilindric, iar în analiza schemelor echivalente se presupune că rezistența de pierderi este neglijabilă față de reactanța capacitivă.

Senzorii capacitivi se pot realiza în trei moduri: cu condensatoare plane cu o armătură fixă și una mobilă, cu modificarea suprafeței de suprapunere a armăturilor și cu modificarea dielectricului.

Schema bloc a senzorului de proximitate capacitiv este prezentată în figura de mai jos:

Figura 4.1.3.1. Schema bloc senzor proximitate capacitiv

Unde: 1.Oscilator; 2. Demodulator; 3. Trigger; 4. Afișaj; 5. Circuit de ieșire; 6. Sursă de alimentare externă; 7. Sursă de alimentare internă; 8. Zona activă (condensator); 9. Ieșire.

Dacă în zona activă se introduce un obiect sau un material (metal, plastic, apă, sticlă, lemn), capacitatea circuitului rezonant se modifică. Schimbarea valorii capacității depinde de distanța la care se află materialul față de suprafața activă, de dimensiunile materialului și de constanta dielectrică a acestuia.

Sensibilitatea majorității senzorilor de proximitate capacitivi poate fi reglată prin intermediul unui potențiometru. În acest mod este posibilă suprimarea detecției unui alt mediu. De exemplu, este posibilă determinarea nivelului unei substanțe dintr-un recipient. Distanța la care comută un senzor este determinată de o foiță de metal legată la pământ.

Amplasarea senzorilor în țesătură

Senzorii pot fi încorporați în țesături textile ale căror substraturi pot fi țesute, nețesute sau tricotate. Cele mai avantajoase în folosirea senzorilor optici sunt cele nețesute deoarece oferă o suprafață mai mare datorită fibrelor de dimensiuni reduse, iar procesul de încastrare necesită un nivel scăzut de solicitări mecanice. De aceea, cazurile în care fibra poate fi ruptă sunt puține.

Senzorii propuși pentru atașarea / încorporarea în textile destinate realizării articolelor vestimentare utilizate pentru monitorizarea non-invazivă a semnalelor fiziologice sunt folosiți pentru a detecta:

Temperatura corpului – centrală și medie cutanată;

Frecvența cardiacă – incluzând rata bătăilor inimii fetale;

Tensiunea arterială;

Accelerația unghiulară și gradul de înclinare (toate integrate prin algoritmi speifici ce permit descrierea și ierarhizarea cantitativă a stării de comfort, respectiv a celor problematice/critice;

Alți parametri.

Senzorii se atașează pe produsul vestimentar în locuri specifice semnalului de monitorizat. Experimentele s-au realizat în clinici de specialitate, iar rezultatele obținute deschid noi direcții de cercetare pentru monitorizarea următoarelor semnale: temperatura medie centrală și periferică, alura ventriculară (incluziv la făt) și pulsul periferic, tensiunea arterială, accelerația liniară și poziția.

Ca impact științific, economic, social și de mediu se pot menționa următoarele aspecte folosind senzorii încorporați în haine: fundamentarea convergentă a conceptului de textil inteligent, creșterea competitivității și creativității, dezvoltarea economică durabilă a agenților economici, îmbunătățirea indicatorilor sintetici ai stării de sănătate, reducerea cu 10% a cheltuielilor de sănătate, creșterea calității vieții, a parformanțelor și a capacității de integrare socială.

Se consideră că cele mai bune poziții de amplasare a senzorilor sunt:

În jurul gâtului și a umerilor pentru accelerația unghiulară și gradul de înclinare;

În zona axilară pentru a colecta temperatura centrală a corpului (sau în zone cunoscute a avea valori termice relativ constante la măsurători repetate pentru temperatura cutanată);

În regiunea precordială senzorii pentru măsurarea frecvenței cardiace;

La nivel periombilical, la gravide, pentru a măsura bătăile inimii cordului fetal.

Figura 4.1.4.1.Poziționare senzori în țesătură

Convertoare capacitate-digital

În ultimii ani, progresele înregistrate în domeniul tehnologiei electronice au făcut posibile multe inovații și îmbunătățiri în industria asistenței medicale. Provocările pentru echipamentele de îngrijire medicală includ dezvoltarea de noi metode de diagnosticare și tratament, care să permită monitorizarea la distanță și dispozitivele de îngrijire a sănătății la domiciliu, îmbunătățirea calității și fiabilității și sporirea flexibilității și a ușurinței utilizării.

Convertorul capacitate-digital transformă capacitatea măsurată la intrare într-o mărime numerică care reprezintă o aproximare a valorii semnalului de la intrare.

Dispozitivul CDC aplică o excitație unei plăci a condensatorului și măsoară sarcina stocată în condensator. Atunci rezultatul digital este disponibil pentru gazda externă.

CDC-urile integrate sunt implementate în două moduri. Cele pe un singur canal și cu două canale funcționează cu un electrod condensator conectat la ieșirea de excitație, iar celălalt conectat la intrarea CDC. Dispozitivele cu un singur electrod, cum ar fi senzorul de temperatură, aplică excitația și citesc capacitatea la același electrod. Celălalt electrod, care este legat la pământ, poate fi un electrod real sau un deget al utilizatorului în aplicațiile cu ecran tactil.

Schema simplă a unui CDC:

Figura 4.2.1. Schemă bloc CDC

Microcontrolere

Sistemul de calcul este un echipament care transformă datele de intrare în rezultate de ieșire pe baza unui algoritm materializat într-un program. Această definiție reprezintă sensul clasic al noțiunii de calculator .

Sistemele inteligente sunt acele sisteme care pot prelucra informații incomplet definite sau aproape complet definite. Astfel de sisteme sunt sistemele fuzzy sau rețelele neuronale.

În cazul în care informațiile de prelucrat sunt complet definite atunci avem de-a face cu algoritmi secvențiali. Acest tip de algoritmi a stat la baza construcției mașinilor secvențiale (Von Newman).

Dacă operațiile elementare independente se pot executa paralel (pe mai multe unități de calcul), avem de-a face cu algoritmi paraleli.

Începând cu anii 1970 au apărut tendințe de automatizare a proceselor de producție bazate inițial pe automate numerice cablate (logică cablată) și apoi pe sisteme cu microprocesoare (logică programată). Recente sunt și sistemele bazate pe arhitecturi paralele (sisteme multiprocesor , sisteme distribuite).

Arhitectura mașinii secvențiale standard (Von Newman) este următoarea:

Figura 4.3.1. Schema bloc – arhitectura von Newman

Unitatea centrală (CPU-Central Processing Unit), transformă datele în rezultate pe baza execuției instrucțiunilor programului memorat.

Memoria este mediul principal de stocare/regăsire a datelor, rezultatelor și programelor.

Subsistemul de intrare-ieșire este destinat realizării interfeței om-mașină sau proces-mașină.

Partea fizică a unui sistem de calcul (componentele electronice) este relativ simplă, poate fi produsă în serie și este relativ ieftină. Termenul hardware se referă tocmai la această parte.

Ceea ce transformă acest echipament ieftin într-o diversitate de instrumente, controlere industriale, calculatoare speciale sau de uz general, sunt programele (utilitare sau de aplicații) și sistemele de programe (operare, exploatare), adică software care determină hardware-ul de uz general să execute ceea ce dorim.

Un alt termen frecvent utilizat este firmware, care desemnează programe speciale stocate în memorii nevolatile, al căror rol este de a asigura facilități de configurare și testare a echipamentului, precum și minima sa funcționare. Exemplu biosul de la calculatoarele personale.

Protocoale de comunicație

Generalități

Electronica embedded se bazează pe interconectarea de circuite pentru a crea un sistem. În cadrul sistemului astfel format, circuitele trebuie să poată transfera informații. De aceea este nevoie ca acestea să aibă un mod de comunicare comun care poate fi paralel sau serial. Aceste interfețe transmit biții în cadrul sistemului.

Interfața paralelă transmite mai mulți biți în același timp și are nevoie de o magistrală de date care transmit pe 8, 16 sau mai multe linii, iar ceea ce se transmite și se recepționează sunt fluxuri de 1 și 0.

Figura 4.4.1.1. Transmisie paralelă

Pe de altă parte, interfața serială transmite informația bit cu bit. De aceea, acestea pot opera doar pe o singură linie și necesită între 1 si 4 fire.

Figura 4.4.1.2. Transmisie serială

Pentru transmiterea datelor în cadrul acestui proiect vom folosi o interfață de comunicație serială ce este adesea folosită pentru a realiza comunicarea între echipamente periferice si un microcontroler. Majoritatea microcontrolerelor permit atât utilizarea interfețelor de comunicare sincrone (SCI – Serial Communication Interface sau UART), cât și a celor asincrone (SPI – Serial Peripheral Interface).

Protocolul de comunicație SPI

SPI este o interfață serială sincronă, a cărui transmisie este sincronizată după un semnal de clock furnizat de un microcontroler. Perifericul utilizează semnalul pentru achiziția fluxului de biți seriali transmiși.

Aceasta folosește 4 semnale:

MOSI – Master Out Slave In

MISO – Master In Slave Out

SCLK/SCK – Serial Clock

CS/SS – Chip Select/Slave Select

Figura 4.4.2.1. Schema de transmisie serială SPI

Transmisia datelor se face prin registrul de deplasare serială a datelor. Masterul va transfera un octet scriindu-l în registrul său de serializare. Același lucru se petrece și în cadrul Slave. Pe măsură ce transmisia are loc către Slave prin intermediul semnalului MOSI, Slave-ul va transfera octetul din registrul său de serializare către Master prin linia de semnal MISO. Dacă se vrea doar scriere, octetul recepționat poate fi neglijat de către Master.

Figura 4.4.2.2. Transmisie SPI

Modulele vor fi activate prin intermediul semnalului SS. Astfel, un Master selectează un anumit Slave prin activarea intrării sale de Chip Select. Totodată, dacă un periferic nu va fi selectat, adică nu se va activa CS pentru acesta, atunci acel periferic nu va lua parte la transmisia SPI.

Principalul avantaj al folosirii acestui tip de interfață serial sincronă este viteza mare de transmisie a datelor, însă necesitatea utilizării mai multor linii devine un dezavantaj.

Protocolul de comunicație I2C

I2C este o interfață serială cu două fire active și împământare, ieftină și eficentă. Este sincronă, bidirecțională, de viteză mică, multi-Master (aceasta înseamnă că pot fi conectate mai multe IC care pot iniția un transfer de date).

Acest tip de interfață folosește 2 semnale si anume:

Semnalul de date seriale – SDA ( Serial Data Line);

Semnalul de ceas serial – SCL(Serial Clock Line).

Împreună, aceste semnale fac posibilă transmiterea pe 8 biți a adreselor de date pe 7 biți și a biților de control – pe magistrala serială cu două fire. Tranzacția este inițiată de Master.

Masterul comandă, în mod normal, semnalul de ceas. Acesta se adresează Slave-ului. Un Slave I2C poate să șteargă Master-ul în mijlocul unei tranzacții, folosind ceea ce se numește stretching de ceas (Slave-ul păstrează SCL scăzut până când este gata să continue). Majoritatea dispozitivelor Slave I2C nu utilizează această funcție, dar fiecare Master ar trebui să o susțină.

Figura 4.4.3.1. Schema de transmisie I2C

Protocolul I2C suportă mai mulți Master, dar majoritatea modelelor de sistem includ numai unul. De asemenea, pot exista unul sau mai mulți Slave. Ambii, Master și Slave pot transmite octeți.

Fiecare dispozitiv Slave hardware compatibil cu I2C vine cu o adresă predefinită a dispozitivului, ale cărei biți inferiori pot fi configurabili la nivelul plăcii. Master-ul transmite adresa de dispozitiv a Slave-ului destinat la începutul fiecărei tranzacții. Această schemă de adresare limitează numărul de dispozitive identice care pot exista pe o magistrală I2C.

Figura 4.4.3.2. Schema bloc cu cei doi rezistori de pe fiecare linie (de ordinul KOhm)

Fiecare dispozitiv conectat la magistrala are propria adresă unică, indiferent dacă este vorba despre un microcontroler, driver LCD, memorie sau ASIC. Fiecare din aceste cipuri poate funcționa ca receptor și / sau transmițător, în funcție de funcționalitate. Evident, un driver LCD este doar un receptor, în timp ce un cip de memorie sau I / O pot fi atât transmițător cât și receptor.

Protocolul I2C specifică faptul că IC care inițiază un transfer de date pe magistrală este considerat Master Bus, care în general este un microcontroler.

În primul rând, microcontrolerul va emite o condiție START. Aceasta funcționează ca un semnal de "Warning" la toate dispozitivele conectate.

Apoi, microcontrolerul trimite adresa dispozitivului pe care dorește să îl acceseze, împreună cu o indicație dacă accesul este citit sau scris.

După primirea adresei, toate IC-urile o vor compara cu adresa proprie. Dacă nu se potrivește, ele așteaptă pur și simplu până când busul este eliberat de starea de oprire. Dacă adresa se potrivește, cu toate acestea, cipul va produce un răspuns numit semnalul acceptabil .

Odată ce microcontrolerul primește confirmarea, poate începe să transmită sau să primească date.

Când se termină totul, microcontrolerul va emite condiția STOP. Acesta este un semnal că magistrala a fost lansată și că IC-urile conectate pot aștepta ca o altă transmisie să înceapă în orice moment.

Figura 4.4.3.3. Configurarea I2C

Transmisia datelor se poate face atât de la Master către Slave, cât și de la Slave către Master.

Figura 4.4.3.4. Transmiterea datelor către Slave

Figura 4.4.3.5. Transmiterea datelor către Master

Protocolul de comunicație I2C suportă viteze de transmisie de până la 100 KHz (după standardele mai noi până la 400 KHz).

Implementarea practică a lucrării

Materiale și componente folosite în implementare

Bandă electrică conductoare

În implementarea fizică a senzorilor interdigitali capacitivi am folosit bandă electrică conductoare. Banda este realizată din cupru subțire, fiind astfel extrem de flexibilă și poate lua aproape orice formă. Se pot lipi cu ușurință pe ea diverse componente, iar banda poate transporta curent electric la fel ca un fir. Pe partea din spate are un adeziv conductiv electric, dar acesta nu poate transporta curent electric semnificativ.

Rola folosită are o grosime de 0.07 mm și o lățime de 6 mm.

Figura 5.1.1.1. Bandă electrică conductoare

Fire conductoare flexibile

Deoarece în implementarea fizică am avut nevoie să conectăm anumite componente între ele, am folosit fire flexibile conductoare subțiri de diferite culori, de tip sârmă, subtip Cu, argintat, folosite pentru conexiunile înfășurate. Firele folosite ce au o tensiune nominală de 300V, rezistă unei temperaturi de lucru între -30°C și 135°C.

Figura 5.1.2.1. Fire conductoare flexibile

Implementare Hardware

Schema bloc

Pentru implementare hardware a proiectului am folosit în fază incipientă un singur senzor pentru a testa funcționalitatea întregului circuit.

Figura 5.2.1.1. Schema bloc cu un singur senzor

După ce am finalizat testele cu un singur senzor și am fost siguri că totul este în regulă am trecut la implementarea rețelei de senzori după cum este prezentat în figura următoare:

Figura 5.2.1.2. Schema bloc pentru rețeaua de senzori

Microcontrolerul ADuCRF101

ADuCRF101 este o soluție integrată de achiziție de date, proiectată pentru aplicații fără fir, cu consum redus de energie. Acesta este echipat cu un convertor analog-digital (ADC) de 12 biți, un procesor ARM® Cortex®M3 cu putere redusă, cu transmițător RF de la 862 MHz la 928 MHz și de la 432 MHz la 464 MHz și memorie Flash®/EE.

Cele șase intrări pot fi configurate în mod unic sau diferențial. Atunci când sunt configurate în modul cu un singur capăt, ele pot fi utilizate pentru măsurători pe senzori care sunt alimentați de la regulatorul intern de scăpare (LDO). În modul flexi, orice dispozitiv periferic îl poate trezi și activa. În modul hibernare, temporizatorul intern de trezire rămâne activ, iar în modul de oprire, numai întreruperile externe pot trezi dispozitivul.

Procesorul ARM Cortex-M3 este o mașină RISC pe 32 de biți, cu performanțe maxime de până la 1,25 DMIPS. Procesorul este echipat cu un controler flexibil de memorie directă cu 14 canale ce suportă periferice de comunicații, interfață serială (SPI), UART și I2C.

Ceasul de sistem este generat de un oscilator pe cip de 16 MHz și poate fi divizat intern pentru ca procesorul să funcționeze la o frecvență mai mică. Pentru a asculta cele patru cronometre: două de uz general, unul de trezire și unul de supraveghere a sistemului, avem un oscilator intern dee 32 kHz.

Pot fi configurate o serie de periferice: UART, I2C, SPI, porturi GPIO, transmițătoare PWM și RF. Transmițătorul RF comunică în benzile de frecvență de la 862 MHz la 928 MHz și de la 432 MHz la 464 MHz

Figura 5.2.2.1. Schema bloc de funcționare a microcontrolerului ADuCRF101

Pinii microcontrolerului pot fi configurați după cum urmează:

Figura 5.2.2.2. Configurare pini ADuCRF101

Senzorul optic VCNL4020

VCNL4020 este un senzor de proximitate și ambient complet integrat, ceea ce înseamnă că emițătorul infraroșu este inclus în pachet. Acesta are o rezoluție de 16 biți și include un procesor de semnal IC. De asemenea, dispune de interfață standard de comunicare I2C și o funcție de întrerupere.

Senzorul este utilizat în numeroase aplicații. Dintre acestea amintim: senzor de proximitate pentru dispozitivele mobile, funcție de lumină ambientală integrată pentru controlul contrastului și diminuarea contrastului dispozitivelor mobile, comutator de proximitate/optic pentru dispozitive și afișaje de consum, calcul și industriale, controlul stării de lumină pentru consumatori, calculatoare și afișaje industriale.

Acest tip de senzor se montează pe suprafață, are dimensiuni de 4.90 x 2.40 x 0.83 mm și dispune de trei module integrate folosite pentru aplicațiile mai sus amintite: emițător infraroșu (IRED), senzor de lumină ambientală (ALS-PD) și senzor de proximitate (PD).

Senzorul VCNL4020 poate fi alimentat cu o tensiune între 2.5V și 3.6V pe VDD și cu o tensiune de la 2.5V până la 5V pe anod IR. Acesta comunica prin interfața I2C, iar domeniul H-level al acestei magistrale este de 1.7V până la 5V.

Figura 5.2.3.1. Schema bloc a senzorului VCNL4020

VCNL4020 este o soluție eficientă din punct de vedere al costurilor de proximitate și senzor de lumină ambientală cu interfață bus I2C. Interfața standard serială digitală este ușor de accesat prin “Proximity Signal” și “Light Intensity”, fără un calcul complex și programare de către un controler extern. În afară de ieșirea digitală este disponibil si un pin flexibil de întrerupere programabil.

Circuitul de aplicație

Figura 5.2.3.2. Circuitul de aplicație al VCNL4020

Pinul de întrerupere este o ieșire de scurgere deschisă. Rezistența de tracțiune necesară poate fi conectată la aceeași tensiune ca și controlerul de aplicație și rezistențele de tracțiune la SDA/SCL. IR_Cathode nu are nevoie de o conexiune externă, conexiunea necesară la driver este efectuată intern.

Interfața I2C

VCNL4020 conține șapte regiștri de 8 biți pentru controlul funcționării, configurarea parametrilor și tamponarea rezultatelor. Toți regiștrii sunt accesibili prin intermediul comunicării I2C. Protocolul de trimitere/ primire date este prezentat în figura

Figura 5.2.3.3. Setare regiștri ai VCNL4020

unde S = condiția de start, P = condiția de stop, A = recunoaștere.

Senzorul are o adresă de slave fixă pentru selectarea gazdei și accesarea acesteia. Adresa predefinită de 7 biți a benzii I2C este setată la 0010 011 = 13h. Bitul cel mai puțin semnificativ (LSB) definește modul de citire sau scriere. În consecință, adresa bus este setată la 0010 011x = 26h pentru scriere și 27h pentru citire.

Din punct de vedere al adresării registrelor, VCNL4020 are adrese de la 80h (registrul #0) la 90h (registrul #16). Acesta are 17 registre accesibile de 8 biți.

Senzorul interdigital

Principiul de funcționare al senzorului plan interdigital urmează regula de folosire a două condensatoare cu plăci paralele, drept armături, unde electrozii se deschid pentru a asigura accesul pe o singură față a materialului expus. Senzorul se comportă ca un condensator a cărui reactanță capacitivă devine o funcție de sistem.

Deoarece electrozii unui senzor interdigital sunt coplanari, capacitatea măsurată va da un raport semnal-zgomot ridicat. Pentru a obține un semnal putenic, modelul electrodului senzorului interdigital poate fi repetat de mai multe ori.

Figura 5.2.4.1. Liniile de câmp formate în cazul senzorilor cu plăci paralele și a senzorilor interdigitali coplanari

Termenul “interdigital” se referă la un model periodic asemănător cifrelor sau tipurilor de degete ale electrozilor paraleli utilizați în plan pentru a construi capacitatea asociată câmpurilor electrice care pătrund într-o probă de material.

Figura 5.2.4.2. Configurația unui senzor interdigital coplanar

Sursa de tensiune alternativă va fi aplicată ca o tensiune de excitație între borna pozitivă și borna negativă. Câmpul electric se formează de la un terminal pozitiv la un terminal negativ.

În implementarea fizică a proiectului am utilizat senzori cu o configurație interdigitală după cum urmează:

Figura 5.2.4.3. Senzor interdigital utilizat pentru modelul experimental

Convertorul capacitate-digital AD7747

AD7747 este un convertor capacitate-digital (CDC) de înaltă rezoluție. Capacitatea care trebuie măsurată este conectată direct la intrările dispozitivului. Arhitectura are o rezoluție (coduri lipsă pe 24 de biți), liniaritate (±0.01%) și precizie ridicate (±10 fF calibrare din fabrică).

Capacitatea de intrare a convertorului este variabilă pornind de la ±8 pF și poate ajunge până la ±17 pF (nu poate fi modificată).

AD7747 este proiectat pentru senzori capacitivi cu un singur capăt și diferențiali, cu o singură placă conectată la masă. Acesta are o interfață serială compatibilă cu I2C și poate funcționa cu o singură sursă de alimentare de 2.7 până la 5.25V și cu un curent de consum de 0.7 mA.

Convertorul AD7747 este folosit în aplicații precum: sisteme de automobile, industriale și medicale, măsurarea presiunii, detectarea poziției, a nivelului, contorizarea debitului sau a impurităților.

În figura următoare este prezentată schema bloc funcțională a convertorului:

Figura 5.2.5.1. Schema bloc funcțională a AD7747

După cum spuneam și mai sus, AD7747 comunică prin intermediul interfeței seriale I2C după modelul următor:

Figura 5.2.5.2. Transmisia serială

Linia SCL a slave-ului este intrarea serială de Clock. Aceasta se conectează la linia de Clock a master-ului și necesită rezistență de tracțiune. Interfața de date bidirecțională SDA se conectează la linia de date principală. Aceasta necesită o rezistență de tragere dacă nu este prevăzută în altă parte a sistemului.

Figura 5.2.5.3. Configurare pini AD7747

Acumulator l503040 Cellevia Batteries

În implementarea proiectului de față am utilizat ca sursă de energie acumulatori de tip Li-Po cu o tensiune nominală de 3.7V și o capacitate de 550 mAh, reîncărcabile, perfecte pentru a alimenta circuitul fără întrerupere timp de 10 ore. Acestea au dimensiunile exterioare de 5 x 30 x 40 mm și au fost introduse în țesătură împreună cu circuitul. De asemenea, două dintre caracteristicile principale ale acestor baterii sunt faptul că au protecție PCB, dar și masa brută de doar 0.01 kg, perfecta pentru purtarea acesteia împreună cu circuitul în haină.

Figura 5.2.6.1. Acumulator l503040 Cellevia Batteries

Modul de încărcare baterii litiu 1A TP4056

Acest mic modul este perfect pentru a încărca o celulă de 3.7 Ah Li-Po sau baterii 16550s care nu au propriul circuit de protecție. Folosește modulul TP4056 și protecție de baterii DW01. Când tensiunea în baterie scade sub 2.4V, protecția din cadrul modulului va opri încărcarea pentru a proteja bateria și încărcătorul. Printre specificațiile principale ale modulului de încărcare se găsesc tensiunea de alimentare de 5V, tensiunea finală de 4.2V și curentul de încărcare de 1A.

Figura 5.2.7.1. Modul de încărcare baterii

Implementare Software

Mediul de dezvoltare Keil

Mediul de dezvoltare µVision4 este un mediu de dezvoltare integrat (IDE-Integrated Development Environment) cu ajutorul căruia se poate implementa întregul ciclu de dezvoltare a unei aplicații software (sau proiect) pentru trei mari categorii de microcontrolere și susține dezvoltarea unei game largi de aplicații.

Dispozitivele pe 8 biți (clasice și extins 8051) includ un sistem de întrerupere eficient proiectat pentru performanță în timp real. Peste 1000 de variante sunt disponibile, cu periferice care includ intrări/ieșiri analogice, timere/contoare, PWM, interfețe seriale precum UART, I2C, LIN, SPI, USB, CAN și transmițător RF on-chip.

Aparatele pe 16 biți (Infineon C166, XE166, XC2000) sunt reglate pentru o performanță optimă în timp real și pentru întreruperi și oferă un set bogat de periferice pe chip strâns cuplate cu miezul microcontrolerului. Acestea includ un controler de evenimente periferice pentru colectarea de date de mare viteză, de aceea sunt cea mai bună alegere pentru aplicațiile care necesită un răspuns extrem de rapid la evenimente externe.

Dispozitivele de 32 biți (bazate pe ARM7 și ARM9) acceptă aplicații complexe, care necesită o putere de procesare mai mare. Aceste nuclee oferă o aritmetică de mare viteză de 32 de biți într-un spațiu de adresare de 4 GB. Dispozitivele ARM7 și ARM9 oferă spații separate de stivă pentru comutarea în contextul de mare viteză, permițând sisteme de operare eficiente multi-tasking.

Ciclul de dezvoltare software al unui proiect în Keil este asemănător cu orice alt proiect de dezvoltare software:

Figura 5.3.1.1. Ciclul de dezvoltare software al unui proiect în Keil

Creare proiect, selectare dispozitiv de destinație din baza de date și configurare instrument setări;

Creare fișiere sursă în C/C++ sau asamblare;

Creare aplicație cu Project Manager;

Depanare și corectare erori din fișierele sursă, verificare și optimizare aplicație;

Descărcare cod în Flash ROM sau SRAM și testare aplicație conectată.

CM3WSD.exe

După ce codul din Keil este fără erori, descărcăm fișierele spre microcontrolerul ADuCRF101 prin programul CM3WSD.exe.

Figura 5.3.2.1. Interfață CM3WSD.exe

Descărcarea programului în microcontroler se face apăsând butonul de start si de reste de pe placa de dezvoltare.

Figura 5.3.2.2. Descărcare program

Pentru rularea programului pe plăcuță se apasă butonul de RESET de pe interfață sau de pe placa de dezvoltare după ce programul a fost descărcat în microcontroler.

Modul USB – UART

Descărcarea programului în microcontroler nu s-ar putea realiza fără o interfață de conversie a datelor de tip USB, în date de port serial. Astfel am utilizat un modul de conversie USB – UART.

Un adaptor USB este un tip de convertor de protocol care este utilizat pentru conversia semnalelor de date USB de la alte standarde de comunicații. În mod obișnuit, adaptoarele USB sunt utilizate pentru a converti datele de tip USB la date standard de port serial și invers. Cel mai adesea, semnalele de date USB sunt convertite în date seriale UART de tip RS232, RS485, RS422 sau TTL. Protocolul RS423 serial mai vechi este rar folosit, deci adaptoarele USB la RS423 sunt mai puțin frecvente.

Figura 5.3.3.1. Modul USB – UART

Terminal.exe

Pentru a afișa datele culese de la senzori, în cadrul proiectului de față, am folosit programul Terminal.exe.

Figura 5.3.4.1. Interfață Terminal.exe

Mediul de dezvoltare Matlab

Matlab permite manipularea matricilor, vizualizarea funcțiilor, implementarea algoritmilor, crearea de interfețe și poate interacționa cu alte aplicații. Chiar dacă e specializat în calcul numeric, există pachete care îi permit să interacționeze cu motoarele de calcul symbolic cum ar fi Maple. Un pachet adițional, Simulink, oferă posibilitatea de a realiza simulări ale sistemelor dinamice și îmbarcate utilizând modele matematice.

Matlab poate fi folosit pe scară largă pentru rezolvarea diferitelor probleme de proiectare, inclusiv prelucrare de semnal și imagini, sisteme de comunicații, tehnică de reglare, testare și măsurare, calcule și analize financiare, precum și calcule biologice și bioinformatice.

Interfața de aplicații a Matlab-ului (API) este o bibliotecă care permite scrierea de programe în C sau Fortran și care interacționează cu Matlab-ul. Include facilități pentru apelarea rutinelor din Matlab, apelarea Matlab-ului ca mașină de calcul, scrierea și citirea fișierelor de tip .MAT.

Figura 5.3.5.1. Interfața grafică a Matlab

Modulul RF

Modulul RF funcționează pe Radio Frecvență. Intervalul de frecvență corespunzător variază între 30 kHz și 300 GHz. În acest sistem RF, datele digitale sunt reprezentate ca variații în amplitudinea undei purtătoare.

Transmisia prin RF este mai bună decât IR (infraroșu) din mai multe motive. În primul rând, semnalele transmise prin rafio-frecvență pot călători pe distanțe mai mari, ceea ce face modulul potrivit pentru aplicații pe distanțe lungi. Totodată, în timp ce IR funcționează în principal în modul linii de vedere, semnalele RF pot călători chiar și atunci când există o obstrucție între transmițător și receptor. De aceea transmisia RF este mai puternică și mai sigură decât transmisia IR. Comunicațiile RF utilizează o frecvență specifică spre deosebire de semnalele IR care sunt afectate de alte surse de emisie IR.

Acest modul RF cuprinde un transmițător RF și un receptor RF. Peretele transmițător / receptor (Tx / Rx) funcționează la o frecvență de 434 MHz.

Un transmițător RF primește date seriale și le transmite wireless prin RF cu ajutorul antenei conectate la pin4 (ANT). Transmisia are loc la o viteză de 1 Kbps – 10 Kbps. Datele transmise sunt recepționate de un receptor RF care operează la aceeași frecvență cu cea a emițătorului.

Modulul RF este folosit adesea împreună cu o pereche de codificatoare / decodificatoare. Codificatorul este utilizat pentru codarea datelor paralele pentru transmisie, în timp ce recepția este decodificată de un decodor.

Figura 5.3.6.1. Configurarea pinilor RF Transmitter și RF Receiver

Organigrama

Figura 5.3.7.1. Organigrama

Model experimental senzor interdigital

Pentru determinarea sensibilității și calibrarea senzorilor am realizat un model experimental realizat din 5 senzori interdigitali diferențiali, trei convertoare capacitate – număr, placă de dezvoltare cu microcontroler ADuCRF101 și baterie.

Figura 5.4.1. Model experimental senzori capacitivi

Aceste experimente au fost făcute cu ajutorul unui pahar umplut pe jumătate cu apă pentru a putea face teste repetitive și la distanțe diferite față de senzori. Am ales acest tip de experiment, cu paharul și nu mâna, deoarece încercând să apropii mâna de senzori de mai multe ori în același mod, am observat că mereu răspunsul este unul diferit, iar acest lucru nu ajuta deloc la a ajunge la o concluzie.

Pentru a ne da seama dacă funcționează sau nu corect, am făcut mai multe simulări cu paharul deasupra senzorilor, însă la distanțe diferite. Așa cum se vede și în figura de mai jos pentru a ridica paharul am folosit suprapunerea unui material puțin gros.

Figura 5.4.2. Experimente calibrare senzori capacitivi

Pentru a calibra senzorii am efectuat trei experimente la trei distanțe diferite de senzor. Cu ajutorul unui program ECG.m am reprezentat grafic semnalele prelevate în cadrul experimentului după cum putem vedea în figurile următoare.

Secvența de cod din Matlab care face conversia datelor hexazecimale în semnal este următoarea:

clear all

sign_X=0;

%[lead_I]=textread('cauciuc.txt', '%d');

[c0,c1,c2,c3,c4,c5]=textread('experiment.log', ' %q %q %q %q %q %q');

c0=hex2dec(c0);

c1=hex2dec(c1);

c2=hex2dec(c2);

%c0=c0+9170;

%c0=c0+1920; %eliminare offset;

s=0:1:length(s1)-1;

%plot(s, s1,'r');

plot(s,s0,s,s1,s,s2);

clear

Senzorii fiind diferențiali, avem doar 3 grupe de senzori C0 – laterali, C1 – intermediari și C2 – central. Cele mai relevante semnale culese sunt cele cu paharul poziționat la distanța minimă și la distanța maximă față de senzor.

Figura 5.4.3. Senzorul C0 la distanța d0

Figura 5.4.4. Senzorul C1 la distanța d0

Figura 5.4.5. Senzorul C2 la distanța d0

În continuare putem observa semnalele culese la distanță maximă de senzor. Atât aici, cât și la distanță minimă putem observa că odată cu eliminarea offset-ului, zgomotul este mult mai vizibil. Acest lucru se datorează faptului că semnalul este mult mărit.

Figura 5.4.6. Senzorul C0 la distanța d2

Figura 5.4.7. Senzorul C1 la distanța d2

Figura 5.4.8. Senzorul C2 la distanța d2

După calibrarea senzorilor, aceștia au fost pregătiți pentru inserarea lor în gulerul hainei, unde am repetat testele de preluare de date, de data aceasta haina fiind purtată de diferite persoane.

Totodată s-a încercat “ascunderea” rețelei de senzori capacitivi în haină, pentru a nu crea discomfort purtătorului. Aceasta s-a introdus în gulerul haine, unde nu puteau fi văzuți de către aceștia. Însă în această etapă, placa de dezvoltare cu microcontroler și bateria nu au putut fi inserate.

Figura 5.4.9. Insearea rețelei de senzori capacitivi interdigitali în haină

a) b)

Figura 5.4.10. Prelevare semnal cu haina îmbrăcată de diferite persoane; a)fată,b)băiat

Odată descărcat programul în microcontroler, acesta preia datele de la senzori și le transmite mai departe printr-un modul RF, o antenă de emisie și una de recepție, prima conectată la microcontroler-ul nostru și cea de-a doua conectată la un microcontroler ce duce la un device.

Figura 5.4.11. Antena de recepție conectată la placa de dezvoltare cu microcontroler ADuCRF101

În urma analizării rezultatelor în cele două cazuri, am constatat faptul că dimensiunile hainei și ale persoanei purtătoare contează foarte mult. Haina folosită în cadrul experimentelor are mărimea L, subiectului băiat potrivindu-i-se ca mărime, însă semnalele preluate pe subiectul fată nu sunt foarte relevante, gulerul fiind la o distanță mai mare de corp, aceasta purtând o mărime mai mică la haine.

Figura 5.4.12. Semnal cules din haină – băiat

Figura 5.4.13. Semnal cules din haină – fată

Model experimental cu senzor VCNL4020

Pentru a putea seta corect parametrii senzorului în cazul proiectului nostru am realizat un circuit experimental.

Acest circuit cuprinde o placă de dezvoltare cu microcontroler-ul ADuCRF101, un modul de transmisie USB-UART și senzorul optic.

Pentru determinarea parametrilor optimi pentru proiectul nostru, am supus circuitul experimental unor teste cu ajutorul unor cuburi și cu senzorul poziționat ntr-un punct fix, ce ne-au făcut să alegem perametrii cei mai buni în aplicația noastră.

Figura 5.5.1.Circuit experimental

Setare parametri

Știm că senzorul VCNL4020 are mai multe funcții pentru care este utilizat și anume ca senzor de proximitate sau senzor de lumină ambientală. Pentru a-l putea folosi ca senzor de proximitate, ceea ce avem noi nevoie pentru acest proiect, trebuie setați câțiva parametri.

Primul parametru ce trebuie setat atunci când utilizăm VCNL4020 ca senzor de proximitate este viteza de conversie. Pentru aplicația noastră avem nevoie de o viteză mare de conversie. Registrul #2 conține informații legate de viteza de conversie. Adresa acestui registru este 82h.

//scriere registru 2 – viteza de conversie

START_BIT(n);

SEND_SLAVE_ADD(0x13,0x00, n); //trimite adresa I2C pentru scriere

SEND_DATA(0x82,n); //trimite adresa registrului de lumina ambientala

SEND_DATA(0x07,n); //trimite valoarea registrului – 0x07 – 250 sps

STOP_BIT(n);

Potrivit tabelului de setare a ratei de conversie, și a cerințelor aplicației noastre, setăm în registrul #2 al senzorului valoarea 0x07, adică 111 – 250 măsurări/s. Această setare o facem deoarece aplicația noastră cere o rată mare de de conversie.

Figura 5.6.1. Tabel setare rata de conversie

Cel de-al doilea parametru care ne interesează este valoarea curentului necesar pentru efectuarea măsurătorilor. Acest parametru este setat de către registrul #3 aflat la adresa 83h. Valoarea curentului este ajustabilă în pași de câte 10 mA pornind de la 0 mA și ajungând până la 200 mA.

START_BIT(n);

SEND_SLAVE_ADD(0x13,0x00, n); //trimite adresa I2C pentru scriere

SEND_DATA(0x83,n); //trimite adresa registrului de intesitate a curentului

//SEND_DATA(0x14,n); //trimite valoarea registrului – 200 mA

SEND_DATA(0x0A,n); //trimite valoarea registrului – 100 mA

//SEND_DATA(0x05,n); //trimite valoarea registrului – 50 mA

STOP_BIT(n);

Figura 5.6.2. Tabel setare curent

Determinare curent optim

Pentru a determina curentul optim pentru aplicația noastră am realizat un experiment prin care să stabilim care este curentul pentru care consumul va fi minim. Știm că senzorul optic este sensibil la lumină, de aceea am ales patru culori pentru care am măsurat sensibilitatea senzorului la 3 curenți diferiți și anume 50 mA, 100 mA și 200 mA. Culorile alese sunt alb, roșu, galben și culoarea pielii.

Am expus pe rând senzorul la câte un cub cu o fațetă colorată și astfel am extras date legate de sensibilitatea senzorului la diferiți curenți.

Figura 5.6.1.1. Măsurători pe alb

Figura 5.6.1.2. Măsurători pe roșu

Figura 5.6.1.3. Măsurători pe galben

Figura 5.6.1.4. Măsurători pe culoarea pielii

Rezultate

În urma analizării rezultatelor, am observat că cel mai puțin sensibil caz este la curentul de 50 mA. Senzorul nu a intrat în saturație în niciunul din cele 4 cazuri, chiar dacă am atins cuburile de senzor. De asemenea, în cazul acestui curent, distanțele maxime de la care senzorul începea să reacționeze sunt destul de mici, acestea variind între 5 si 8 cm.

Cel mai nefavorabil caz dintre toate cele analizate este cazul cubului alb, la un curent de 50 mA. Analizând semnalul se observă că senzorul nu ajunge la saturație.

Figura 5.6.2.1. Semnal cub alb – 50 mA

În cazul celorlalți doi curenți de 100 mA, respectiv 200 mA, situațiile nu sunt foarte diferite. Cel mai favorabil caz, cel care ne determină să alegem curentul optim pentru aplicația noastră, este cel al cubului de culoarea pielii, la 100 mA. Pornind de la o distanță maximă de 10 cm, senzorul ajunge în saturație atunci cand cubul de culoarea pielii ajunge la o distanță de aproximativ 0.9 – 1 cm.

Figura 5.6.2.2. Model experimental cub culoarea pielii – 100 mA

Figura 5.6.2.3. Semnal cub culoarea pielii – 100 mA

Rezumat

Scopul proiectului de față a fost dezvoltarea unui aplicații pentru monitorizarea copiilor sau a persoanelor cu afecțiuni motorii inserată în gulerul unei haine, dar care să nu pericliteze comfortul purtătorului. Aplicația dezvoltată nu este vizibilă purtătorului sau interlocutorilor, însă aceasta se regăsește în gulerul hainei, de unde transmite semnale radio către un device, astfel monitorizându-se activitatea motrică a persoanei în cauză.

Ideea acestui proiect a apărut din dorința de a crea ceva util omului si care să aibă aplicabilitate în medicină. Hainele inteligente sunt următorul pas în dezvoltarea tehnologiei, așa că ideea unei astfel de haine a fost imediat luată în calcul.

Lucrarea de față ilustrează pașii urmați pentru a crea o rețea de senzori cu aplicabilitate în îmbrăcămintea inteligentă, care transmite semnalele preluate de senzori amplasați la nivelul gâtului către un device. Aceasta este posibilă printr-o comunicație de tip RF ce face legătura dintre microcontroler și device.

În prima parte a lucrării am prezentat fundamentarea teoretică necesară pentru această aplicație, iar în cea de-a doua parte am descris modul prin care noțiunile teoretice se aplică în practică.

Pentru început am prezentat noțiuni de bază despre senzorii optici și capacitivi, convertoare, microcontrolere, protocoalele de comunicație, după care am trecut la discuțiile teoretice despre fiecare parte a circuitului practic implementat. Astfel am discutat despre senzorii capacitivi interdigitali, senzorii optici VCNL4020 și modurile lor de funcționare, convertorul AD7747 și principiul său de funcționare, dar și despre microcontroler-ul folosit, ADuCRF101.

În partea a doua a lucrării am trecut la explicarea modului de lucru experimental, pornind de la mediile de dezvoltare folosite și până la explicarea întregului circuit realizat și a setării parametrilor necesari. Deoarece aplicația a vut nevoie ca anumiți parametri cum ar fi calibrarea senzorilor capacitivi sau curentul în cazul senzorului optic, să fie setați cât mai optim, am descris câteva experimente realizate în încercarea de a determina cei mai buni parametri.

Concluzii

De cele mai multe ori, socoteala de acasă nu se potrivește cu cea din târg. Acest lucru se aplică și în cazul electronicii. Noțiunile teoretice învățate se aplică în practic până într-un punct în care întampini anumite probleme și nu reușești să le rezolvi prin metodele clasice.

Acest lucru s-a întamplat și în cazul proiectului de față. Privind partea teoretică, pentru început părea că totul va fi ușor de transpus în practică. Pui 7 senzori, îi conectezi la un microcontroler, scrii câteva linii de cod și gata. Însă în realitate, treaba nu stă chiar așa. Și acest lucru l-am observat odată cu începerea proiectării părții practice a proiectului de față.

În practică, factori precum zgomotul extern, lumina ambientală sau chiar zgomot apărut între doi pini ai microcontroler-ului îți pot influența foarte mult rețeaua de senzori. De aceea a fost nevoie de câteva teste prin care să setăm parametrii optimi pentru fiecare tip de senzor.

Pe de altă parte, crearea unui sistem care să nu perturbe comfortul purtătorului reprezintă iarăși o problemă în crearea rețelei. Pentru asta, cea mai bună metodă găsită în cadrul acestui proiect a fost introducerea benzii cu senzori în gulerul hainei, deoarece aici găsim strat dublu de material.

Dificultăți am întâmpinat și în cazul prelevării de semnale pe diferite persoane. Pentru persoanele căror haina le era mare, semnalele erau pur și simplu niște zgomote preluate, ceea ce însemna ca semnalul preluat era irelevant. Însă pentru persoanele pentru care haina era potrivită, semnalele arătau foarte bine, astfel fiind relevante. De aici, realizat că nu se poate crea o mărime universală a hainei, ci trebuie create mărimi specificei fiecărui purtător.

În urma acestui proiect, pot declara că am dobândit anumite aptitudini tehnice care sigur îmi vor fi de folos pe mai departe și că dincolo de toate obstacolele întâlnite, am reușit să duc lucrarea într-un punct în care se pot prelua semnale, iar acestea sunt relevante în descoperirea afecțiunilor motorii.

Anexe

//AD7747

#include "include.h"

//#include "low_power_functions.c"

//#include "sampeling_functions.c"

//#include "SPI_functions.c"

//#include "wr_GPIO.c"

#include "I2C_functions.c"

//#include "functii_RF.h"

#include "variabile_RF.c"

void delay_0(unsigned int vv);

void UARTInit(int uiBaud);

char DATA_CAP_A_buff[4];

char DATA_CAP_B_buff[4];

char X_ACCEL_buff[4];

char Y_ACCEL_buff[4];

char Z_ACCEL_buff[4];

char p, n;

char ii;

unsigned int h;

char DATA_0, DATA_1, DATA_2, DATA_3;

int main (void)

{

WdtGo(T3CON_ENABLE_DIS);

//wP32_1 ();

//wP34_0();

p=0;

UARTInit(19200);

printf("start\n");

wSDA(1,1);

wSCL(1,1);

delay();

printf("1\n");

//printf("2\n");

delay();

delay();

delay();

delay();

again:

n=0;

START_BIT(n);

SEND_SLAVE_ADD(0x48,0,n);

SEND_DATA(0x07,n);

SEND_DATA(0xA0,n);

STOP_BIT(n);

START_BIT(n);

SEND_SLAVE_ADD(0x48,0,n);

SEND_DATA(0x09,n);

SEND_DATA(0x0F,n);

STOP_BIT(n);

//citeste datele de presiune

START_BIT(n);

SEND_SLAVE_ADD(0x48,0,n);

SEND_DATA(0x0A,n);

SEND_DATA(0x01,n);//0x39 – conversie continua, data rate=4,6 Hz; 0x01 – conversie continua, data rate=43,6 Hz

STOP_BIT(n);

for(h=0;h<3;h++)

{

delay_0(32000);

}

START_BIT(n);

delay();

SEND_SLAVE_ADD(0x48,0x01, n); //AD7747

//SEND_SLAVE_ADD(0x7D,0x01, 0); //ADXL345

DATA_3=RCV_DATA(n);

ACK(n);

DATA_2=RCV_DATA(n);

ACK(n);

DATA_1=RCV_DATA(n);

ACK(n);

DATA_0=RCV_DATA(n);

NACK(n);

STOP_BIT(n);

UARTInit(19200);

//printf("%02x%02x%02x%02x\n",DATA_3, DATA_2, DATA_1, DATA_0);

printf("%02x%02x\n",DATA_2, DATA_1);

goto again;

}

void delay_0(unsigned int vv)

{

//vv=15000;

do

{

vv–;

}

while (vv>0);

}

void UARTInit(int uiBaud)

{

UrtCfg(0,uiBaud,COMLCR_WLS_8BITS,COMLCR_STOP_DIS);

// Enable the UART functionality on P1.0\P1.1

pADI_GP1->GPCON &= ~(GP1CON_CON0_MSK | GP1CON_CON1_MSK );

pADI_GP1->GPCON |= (GP1CON_CON0_UART0RXD| GP1CON_CON1_UART0TXD);

}

int WdtGo(int iEnable)

{

if (iEnable == T3CON_ENABLE_DIS)

T3CON_ENABLE_BBA = 0;

else

T3CON_ENABLE_BBA = 1;

return 1;

}

void wSDA (char i, char v)//scrie pe linia SDA de indice "i", valoarea "v"

{

switch (i)

{

case 0:

{

if (v==0)

SDA0_0;

else

SDA0_1;

}

break;

case 1:

{

if (v==0)

SDA1_0;

else

SDA1_1;

}

break;

case 2:

{

if (v==0)

SDA2_0;

else

SDA2_1;

}

break;

case 3:

{

if (v==0)

SDA3_0;

else

SDA3_1;

}

break;

case 4:

{

if (v==0)

SDA4_0;

else

SDA4_1;

}

break;

case 5:

{

if (v==0)

SDA5_0;

else

SDA5_1;

}

break;

case 6:

{

if (v==0)

SDA6_0;

else

SDA6_1;

}

break;

case 7:

{

if (v==0)

SDA7_0;

else

SDA7_1;

}

break;

default:

;

}

}//end fct

void wSCL (char i, char v)//i – indexul; v- valoarea bitului

{

switch (i)

{

case 0:

{

if (v==0)

SCL0_0;

else

SCL0_1;

}

break;

case 1:

{

if (v==0)

SCL1_0;

else

SCL1_1;

}

break;

case 2:

{

if (v==0)

SCL2_0;

else

SCL2_1;

}

break;

case 3:

{

if (v==0)

SCL3_0;

else

SCL3_1;

}

break;

case 4:

{

if (v==0)

SCL4_0;

else

SCL4_1;

}

break;

case 5:

{

if (v==0)

SCL5_0;

else

SCL5_1;

}

break;

case 6:

{

if (v==0)

SCL6_0;

else

SCL6_1;

}

break;

case 7:

{

if (v==0)

SCL7_0;

else

SCL7_1;

}

break;

default:

;

}

}//end fct

void START_BIT(char i)

{

wSDA(i,1);

delay();

wSCL(i,1);

delay();

wSDA(i,0);

delay();

wSCL(i,0);

}

void STOP_BIT(char i)

{

wSDA(i,0);

delay();

wSCL(i,1);

delay();

wSDA(i,1);

delay();

}

void SEND_SLAVE_ADD(char SLAVE_ADD,unsigned char R_W, char i)

{ //open function

//int p=0x100;

char SLAVEADD;

char n;

char b;

if (R_W == 1)

SLAVEADD = ((SLAVE_ADD << 1) + 1) & 0xFF;

else

SLAVEADD = (SLAVE_ADD << 1) & 0xFF;

for(n=0;n<8;n++)

{

b=(0x80 & SLAVEADD)>>7;

//printf("%x %x\n", b, SLAVEADD);

wSDA(i,b);

delay();

wSCL(i,1);

delay();

wSCL(i,0);

delay();

SLAVEADD=SLAVEADD<<1;

};

wSDA(i,1);//relaxare SDA

delay();

wSCL(i,1);//ACK clock

delay();

wSCL(i,0);

delay();

}

void SEND_DATA (char SEND_DATA_v, char i)

{

char SENDDATA=SEND_DATA_v;

char n;

char b;

for(n=0;n<8;n++)

{

b=(0x80 & SENDDATA)>>7;

//printf("%x %x\n", b, SLAVEADD);

wSDA(i,b);

delay();

wSCL(i,1);

delay();

wSCL(i,0);

delay();

SENDDATA=SENDDATA<<1;

};

wSDA(i,1);//relaxare SDA

delay();

wSCL(i,1);//ACK clock

delay();

wSCL(i,0);

delay();

}

unsigned char RCV_DATA (char i)

{// function open

unsigned char rcv_bit;

unsigned char data_in=0;

unsigned char nn=0;

for(nn=0;nn<8;nn++)

{ //for open

data_in = data_in << 1;

delay();

wSCL(i,1);

delay();

//rcv_bit = rSDA(i);

rcv_bit = rSDA(i);

data_in = data_in + rcv_bit;

//data_in = data_in << 1;

delay();

wSCL(i,0);

}//for close

/*

rcv_bit = SDA_rd(n);

data_in = data_in + rcv_bit;

delay();

SCL_wr(1,n);

delay();

SCL_wr(0,n);

*/

// acknowledge generate

//de introdus conditionarea: if ack_bit== …

return data_in;

} //function close

void ACK(char i)

{

wSDA(i,0);//????

delay();

wSCL(i,1);

delay();

wSCL(i,0);

delay();

wSDA(i,1);

}

void NACK(char i)

{

wSDA(i,1);//????

delay();

wSCL(i,1);

delay();

wSCL(i,0);

delay();

wSDA(i,1);

}

int UrtCfg(int iChan, int iBaud, int iBits, int iFormat)

{

int i1;

i1 = (16000000/32)/iBaud;

pADI_UART->COMDIV = i1;

pADI_UART->COMFBR = 0x8800|(((((2048/32)*16000000)/i1)/iBaud)-2048);

pADI_UART->COMIEN = 0;

pADI_UART->COMLCR = (iFormat&0x7c)|(iBits&3);

return pADI_UART->COMLSR;

}

Bibliografie

Vornicu L., Senzori și traductoare, Editura Politehnium, Iași, 2006

Guay P., Gorgutsa S., LaRochelle S., Messaddeq Y., Wearable Contactless Respiration Sensor Based on Multi-Material Fibers Integrated into Textiles, Senzors Magazine

ADuCRF101 Data Sheet

VCNL4020 Data Sheet

AD7747 Data Sheet

www.ieee.org/

http://www2.keil.com/

https://www.electronics-tutorials.ws/io/io_4.html

https://en.wikipedia.org/

https://ro.wikipedia.org/

https://www.wearable.com/

https://www.robofun.ro/

https://www.researchgate.net/

http://www.csid.ro/semne-si-simptome/tremuraturi

Similar Posts