Monitorizarea Pacientilor la Distanta

~ CUPRINS ~

Capitolul 1: ~Introducere~

Monitorizarea pacientilor la distanta

Utilitatea monitorizarii la distanta

Telemedicina

Telemonitorizarea

Obiectivele lucrarii

Structura lucrarii

Capitolul 2: ~Analiza stadiului actual national si international~

Istoria Telemedicinei

Sisteme de Telemonitorizare

2.2.1 Nivel international

2.2.2 Nivel national

2.3. Telemedicina in Romania

Capitolul 3: ~ Propunere privind monitorizarea funcțiilor vitale ale unui pacient~

3.1 Generalități despre platforma senzorului E-Health

3.2. Caracteristici ale platformei senzorului E-Health

3.3. Platforma senzorului E-Health

3.4. E-Health montat pe Arduino Uno

3.5. E-Health montat pe Respberry Pi

3.6. Senzor puls si oxigen in sange(SpO2

3.7. Electrocardiograma ECG

3.8. Debit de aer, respiratie

3.9. Temperatura corpului

3.10. Tensiunea arteriala

3.11. Pozitia pacientului si caderi

3.12. Raspuns galvanic al pielii (GSR

3.13. Senzor glucometru

3.14. Electromiograma (EMG

3.15. Trimiterea datelor

3.15.1. WiFi

3.15.2. Bluetooth

3.15.3. Zigbee/ 802.15.4

3.15.4. GPRS

3.15.5. 3G

3.15.6. Camera foto de diagnostic

Capitolul 4:~ Modelul experimental privind monitorizarea unor funcții vitale ale unui pacient~

4.1. Elemente Hardware necesare realizarii sistemului

4.1.1. Senzor de puls

4.1.2. Placa Arduino Uno

4.1.3. Paca Arduino GSM

4.2. Schema bloc a sistemului

4.3. Abordarea sistemică

4.4. Schema logica a procesului

Concluzii

Bibliohrafie

~ Capitolul 1 ~

Introducere

1.1 Monitorizarea pacienților la distanță

O parte a medicinei se ocupă de monitorizarea pacienilor.

Monitorizarea are ca scop detectarea cât mai precoce a neregulilor funcționale care apar și afectează viața pacientului supraveghiat pentru a se putea lua măsuri eficiente la timp.

Monitorizarea este posibilă datorită exprimării activității organismului uman prin fenomene cu character electric,magnetic si mecanic.Aceste semnale sunt rezultatul activității electrochimice a anumitor celule.Se pot obține informații clinice utile despre funcții particulare ale organismului prin masurarea selectivă a semnalelor dorite însă fără a afecta organismal.[11]

Activitatea electrică este culeasă cu ajutorul electrozilor→amplificată→convertită analog-numerică și achiziționată de un calculator:

Electrocardiograma –ECG;

Electroencefalograma –EEG;

Electromiografie –EMG;

Activitatea neelectrică este convertită în activitate electrică prin intermediul traductoarelor→convertită analog-numerică apoi este achizitionată de un calculator:

Activitate respiratorie;

Temperatura;

Pulsul;

Monitorizarea :

Realizează analiza continuă a funcțiilor vitale;

Realizează urmărirea activă a efectului tratamentului administrat;

Solicită intervenția echipei medicale în cazul schimbărilor semnificative a funcțiilor vitale;

Este absolut necesară în sălile de operație;

Presupune necesitatea unor nivele de alarmare și de prealarmare;

Este de preferat să se asigure memorarea istoriei evoluției parametrilor;

În contextul actual al serviciilor medicale ,starea de sănătate a populației este o problemă destul de importantă, care necesită o atenție deosebit de importantă atât la nivel național cât și la nivel european, mondial.Starea de sănătate a indivizilor este influențată la un nivel foarte mare de:

calitatea serviciilor medicale;

rapiditatea intervențiilor;

numărul cât mai mare de pacienți monitorizați simultan fără spitalizare;[18]

1.2 Utilitatea monitorizării la distanță

Monitorizarea la distanță s-a dovedit a avea o utilitate extrem de mare astfel:

Scad costurile medicale pentru spitalizare;

Micșorarea numărului de zile de spitalizare;

Urmărirea efectului tratamentului administrat;

Aflarea informațiilor de alarmă în timp real;

Informarea simultană a pacientului și a echipei de medici,furnizori de servicii medicale;

Informarea personalului medical numai atunci când este nevoie,în cazul alarmelor;

Reducerea erorilor medicale prin posibilitatea doctorului de a cere o părere unui alt medic cu privire la diagnosticarea și tratamentul unui pacient;

Șansă mai mare de supraviețuire a pacienților aflați în situații de urgență în zone în care nu există medici specialiști prin acces la consultații de specialitate;

Reducerea cheltuielilor pentru transportarea pacienților de la un spital la altul;

Astfel crește nevoia de îngrijire la domiciliu.Deoarece sistemul medical se confruntă cu o criză a resurselor publice și cu o lipsă importantă de personal calificat,asistenți medicali,medici de specialitate.Sistemul sanitar cât și furnizorii de servicii medicale sunt obligați să ofere servicii de calitate sporită care să aducă beneficii clinice,în condițiile în care fondurile alocate de Casa de Asigurări de Sănătate CAS sunt reduse , așadar costurile pentru un pacient sunt mici.[1]

1.3 Telemedicina

Telemedicina reprezintă furnizarea serviciilor medicale, care se bazează pe utilizarea tehnologiei informației și a telecomunicațiilor, atunci când medicul și pacientul se află în locații diferite. Telemedicina presupune transmiterea în siguranță a datelor și informațiilor medicale,în diferite forme: text, sunet, imagine sau alte formate necesare pentru prevenirea, diagnosticarea, tratarea și urmărirea pacienților.[13]

Telemedicina poate fi împărțită în trei categorii principale: store-and-forward, remote monitoring șiservicii interactive.

Telemedicina store-and-forward implică achiziția datelor medicale ,cum ar fi imagini medicale , biosemnale și apoi transmiterea lor la un medic sau centru medical într-un timp convenabil pentru evaluarea offline . Aceasta nu necesită prezența ambelor părți, în același timp și loc. Procesul de store-and-forward necesită medicului să se bazeze pe un raport cu istoricul boli și pe informații audio / video în loc de un examen fizic. 

Remote monitoring(monitorizarea de la distanță) cunoscută sub numele de self-monitoring/testing, permite personalului medical să monitorizeze un pacient la distantă, folosind diverse dispozitive tehnologice. Această metodă este ,în primul rând ,folosită pentru gestionarea bolilor cronice sau condițiilor specifice, cum ar fi boli de inimă, diabet zaharat sau astm. Aceste servicii pot oferi rezultate comparabile de sănătate în locul întâlnirilor cu pacientul în persoană , pot furniza o satisfacție mai mare pacienților și poate fi rentabilă.

Serviciile interactive ale telemedicinei oferă interacțiuni în timp real între pacient și medic,care includ convorbiri telefonice, comunicare online si vizite la domiciliu.Multe activități, cum ar fi revizuirea istoricului medical, examinari fizice, evaluări psihiatrice și evaluări oftalmologie pot fi efectuate la fel ca și cele efectuate în consultațiile obijnuite la medic “față-în-față”. În plus, serviciile interactive, oferite de telemedicină pot fi mai puțin costisitoare decât vizite în persoană la medic.[13]

Printre alte posibile servicii se numără punctele de apel/centrele de informare online pentru pacienți sau consultațiile la distanță, respectiv videoconferințe între medici.

În strânsă legătură cu telemedicina este termenul “telehealth”care este folosit de multe ori pentru a cuprinde o zonă mai largă a asistenței medicale la distanță, care uneori nu implică servicii clinice.Videoconferința, transmiterea de imagini,E-Health, inclusiv module destinate pacientului, monitorizarea la distanță a funcțiilor vitale, educația medicală continuă și centrele de apel sunt toate considerate parte a telemedicinei si telehealth.

1.4. Telemonitorizarea

Telemonitorizarea este un serviciu de telemedicină ce presupune monitorizarea de la distanță a funcțiilor vitale ale unui pacient prin intermediul unor dispozitive și tehnici corespunzătoare.

Monitorizarea clasică presupune culegerea de la pacient a unor semnale biomedicale sau parametri fiziologici, într-un interval de timp de ordinul zilelor, la sfârșitul perioadei de monitorizare se face descărcarea și analiza acestora pe un sistem de calcul (off-line). Sistemele de telemonitorizare prelevează, stochează și transmit la distanță (prin intermediul unei rețele de comunicații) semnalele biomedicale sau parametrii fiziologici la un interval de timp mult mai scurt se realizează automat analiza acestora (on-line), și se pot transmite alarme către un centru de telemonitorizare, în cazul în care valorile parametrilor monitorizați depășesc anumite limite.

Parametri fiziologici pot fi prelevați fie în mod automat, prin intermediul dispozitivelor personale de monitorizare, fie pe baza colaborării active a pacienților (de exemplu, prin utilizarea unui formular on-line pentru completarea zilnică a valorilor presiunii arteriale sau glicemiei). Aceste dispozitive sunt de regulă portabile și utilizate de obicei în monitorizarea parametrilor fiziologici vitali de tipul: presiune arterială, frecvență cardiacă, frecvență respiratorie, saturație de oxigen din sânge etc. După ce au fost prelucrate și transmise cadrelor medicale, datele pot fi utilizate pentru optimizarea procedurilor de monitorizare și tratament ale pacienților.[18]

1.5 Obiectivele lucrării

Pacienții trebuie tratați cât mai aproape de casă la cel mai bun grad de îngrijire;

Expertiza medicală trebuie să fie disponibilă în mod egal, indifferent de zona unde trăiește pacientul;

Pacienții trebuie să primească informații și servicii de calitate;

Trebuie să se asigure o mai mare disponibilitate a informațiilor despre pacient pentru a se lua o decizie medicală cât mai calitativă;

Trebuie să se evite repetarea examenelor de laborator și analizelor medicale, acest lucru implică mult timp;

Prin reducerea muncii administrative de rutină, ca reîntroducerea informațiilor existente deja în format electronic atunci când pacientul este mutat la un alt spital,serviciile de sanatate pot să își îmbunătățească eficiența și productivitatea;

Schimbul de informație trebuie să țină cont de aspectele de confidențialitatea și securitatea datelor pacienților;

Informațiile medicale trebuie să fie mai ușor accesibile;

Personalul medical trebuie să fie într-o pregătire continuă;

1.6 Structura lucrării

Lucrarea este structurată în 4 capitole astfel:

În capitolul 1 numit ~Introducere~ sunt expuse noțiuni generale despre medicină ca știința,despre o ramură foarte importantă a medicine și anume Montorizarea pacienților la distanța,noțiuni despre telemedicină și categoriile acesteia cât și despre telemonitorizare,sunt expuse obiectivele care tind să fie atinse în această branșă.

În capitolul 2 numit ~Analiza studiului actual pe plan național și internațional~ sunt prezentate soluții tehnice de sisteme integrate de telemonitorizare pe plan național și internațional precum și o analiză a studiului actual în domeniul telemonitorizării.

În capitolul 3 numit ~ Propunere privind monitorizarea funcțiilor vitale ale unui pacient ~sunt prezentați senzorii ce pot fi utilizați pe această platformă,caracteristicile și schema electrică a senzorului E-Health,plăcile ce se pot monta la acesată platformă Arduino și RaspberryPi, prezentarea fiecărui senzor(caracteristici, modul de conectare la placă,librării, afișaj,aplicații mobile)precum și modul de transmitere a datelor prin prezentarea diverselor module de comunicații.

În capitolul 4 numit ~ Modelul experimental privind monitorizarea unor funcții vitale ale unui pacient~ sunt expuse echipamentele hardware necesare realizării sistemului,Senzorul de puls, placa de dezvoltare GSM și placa Arduino Uno,modul conexiunilor dinre ele.Abordarea sistemica, identificarea marimilor de intrare și de ieșire precum și schemele bloc și logiă a sistemului.

Concluzii

Bibliografie

~ Capitolul 2 ~

Analiza stadiului actual național si internațional

2.1 Istoria telemedicinei

 Istoria telemedicinei începe în antichitate, prin încercările multiple în timp, rudimentare ale oamenilor de a realiza un limbaj de comunicare între localități atunci când apareau probleme interneitorizare,sunt expuse obiectivele care tind să fie atinse în această branșă.

În capitolul 2 numit ~Analiza studiului actual pe plan național și internațional~ sunt prezentate soluții tehnice de sisteme integrate de telemonitorizare pe plan național și internațional precum și o analiză a studiului actual în domeniul telemonitorizării.

În capitolul 3 numit ~ Propunere privind monitorizarea funcțiilor vitale ale unui pacient ~sunt prezentați senzorii ce pot fi utilizați pe această platformă,caracteristicile și schema electrică a senzorului E-Health,plăcile ce se pot monta la acesată platformă Arduino și RaspberryPi, prezentarea fiecărui senzor(caracteristici, modul de conectare la placă,librării, afișaj,aplicații mobile)precum și modul de transmitere a datelor prin prezentarea diverselor module de comunicații.

În capitolul 4 numit ~ Modelul experimental privind monitorizarea unor funcții vitale ale unui pacient~ sunt expuse echipamentele hardware necesare realizării sistemului,Senzorul de puls, placa de dezvoltare GSM și placa Arduino Uno,modul conexiunilor dinre ele.Abordarea sistemica, identificarea marimilor de intrare și de ieșire precum și schemele bloc și logiă a sistemului.

Concluzii

Bibliografie

~ Capitolul 2 ~

Analiza stadiului actual național si internațional

2.1 Istoria telemedicinei

 Istoria telemedicinei începe în antichitate, prin încercările multiple în timp, rudimentare ale oamenilor de a realiza un limbaj de comunicare între localități atunci când apareau probleme interne sau externe și apoi, prin încercările medicilor sau preoților de a realiza o conexiune cu pacienții aflați la o mare distanță. Se poate spune că de-a lungul istoriei medicinei a existat o preocupare continuă  pentru solutionarea comunicării între cei care au nevoie de îngrijire medicală și cei care furnizează serviciile de îngrijire, cu precadere în cazurile în care furnizorii și pacienții nu se situau in același loc, în același timp.

Începanad cu tehnicile de comunicare la distanță ale grecilor antici care foloseau pentru avertizarea pericolelor semnale de fum, apoi după descoperirea telegrafului și a radioului evoluția telemedicinei a devenit mai rapidă, ajungându-se la folosirea tehnicilor avansate de comunicare electronică, digitală, prin intermediul procesării computerizate a datelor in epoca modernă.
Telemedicina modernă a început în anul 1905 cu experimentele medicului olandez inventator al electrocardiografului, Willem Einthoven, care a reușit să transmită la mari distanțe traseele electrocardiogramelor înregistrate, prin intermediul telefoniei fixe care era singurul mijloc de comunicație disponibil în acea perioadă. Pentru a testa noul său dispozitiv, Einthoven a fost practic forțat să descopere o modalitate de a transmite datele de la spital direct în laboratorul său deoarece, conform legislației vremii, nu avea voie să aducă pacienții la un laborator aflat în afara spitalului. Astfel, primele aplicații ale telemedicinei au fost în domeniul cardiologiei, nu al radiologiei, așa cum s-a crezut multă vreme.[13]

Experimentele și cercetările lui  Einthoven de transmitere a unor date medicale la distanță au fost urmate de consultațiile medicale realizate prin radio în anii 1920, 1930, 1940 între medicii din spitale din Norvegia, Italia și Franța și pacienții de la bordul navelor aflate pe mare și pe insule îndepărtate. Transmiterea de imagini radiografice a început în anii 1950 în Statele Unite ale Americii și a fost urmată la scurt timp de experimente similare în Canada.
Primul val de programe de telemedicină au fost inițiate în Statele Unite la sfârșitul anilor 1950 și a durat aproape două decenii, după care cercetările au fost oprite din cauza lipsei de finațare, urmând  o pauză de aproape un deceniu.

Noul val de programe de telemedicină a fost mult mai amplu decât predecesorul și a reunit o serie de inițiative de stat sau locale, derulate pe teritoriul Statelor Unite și cel al Canadei.
In domeniul telecardiologie se înscrie și reușita unui grup de medici din Gwalior, India de a  detecta aritmii pe baza electrocardiogramelor codate prin ultrasunete și transmise telefonic, încă din1975.
Începând din anii 1990, după o evoluție continuă, cu suișuri dar și coborâșuri, telemedicina  a ajuns în perioada sa de maturitate și a fost recunoscută și acceptată de către întreaga lume medicală. În etapa actuală de dezvoltare, telemedicina  este sprijinită de metode avansate de telecomunicație și comunicare electronică și de dispozitive high-tech din ce în ce mai performante. Prin intermediul internetului, a noilor tehnologii și  a infrastructurii de telecomunicații mobile, principalul atribut al telemedicinei este “omniprezența”. Serviciile medicale pot fi furnizate oricând, din orice locație, oferind pacienților un timp de calitate și reducând semnificativ costurile administrative.
Astăzi, evaluarea beneficiilor aduse de telemedicină  se poate face din trei perspective: cea a furnizorilor de servicii medicale, cea a clienților beneficiari sau a pacienților și cea a societatății în general.
In Statele Unite ale Americii sunt înregistrate în prezent peste 100 de Centre specializate în servicii de telemedicină și numeroase organizații care urmăresc activitatea acestor adevărați piloni ai sistemului medical american. Statisticile efectuate de către Asociația Americană de Telemedicină și de Centrul de e-Sanatate și Telemedicina din California, instituții care au pus baza legislației și a reglementarilor specifice domeniului  telemedicinei, demonstrează că cei 20 de ani de practicare a telemedicinei au adus reale și semnificative îmbunătățiri, atât din punct de vedere al rapidității, siguranței și calității actului medical, cât și din punct de vedere financiar, ca un beneficiu secundar.Am putea spune că  Statele Unite ale Americii dispun de o infrastructură amplă de telecomunicații și că nivelul avansat de civilizație a permis formarea acestei rețele telemedicale în cadrul sistemului sanitar american, dar am distorsiona realitatea, întrucât astfel de centre sunt peste tot în lume, inclusiv în locuri la care nu ne-am fi așteptat precum Nepal, Mexic, Pakistan, India, Chile, Columbia și Venezuela. Aceste state, deși nu sunt cunoscute ca lideri mondiali, au înteles utilitatea acestei forțe medicale noi și recuperează handicapul unei infrastructuri deficitare, investind mult în dispecerate de telemedicină modern echipate și în programe de dezvoltare a tele-rețelelor. În Ecuador, de exemplu, a fost creat cel mai mare call-center de telemedicină din lume, cu 1200 de angajați, din care 100 medici, restul fiind asistente medicale și operatori de date.

2.2 Sisteme de telemonitorizare

2.2.1 Nivel internațional

La nivel internațional, telemonitorizarea reprezintă o metodă viabilă, a cărui eficacitate a fost probată de numeroase studii din care unele încă mai sunt în desfășurare. În prezent există numeroase sisteme de telemonitorizare, cu diferite complexități. Astfel de sisteme sunt implementate cu precădere în țările avansate economic și tehnologic deoarece acestea dispun de potențialul economic și tehnologic necesar și, poate mai important, au nevoie de asemenea sisteme având un procent din populație din ce în ce mai mare în situația de a necesita astfel de îngrijiri.[2]

Sistemul EPI-MEDICS (Enhanced Personal, Intelligent and Mobile System for Early Detection and Interpretation of Cardiological Syndromes), realizat în colaborare de cercetatori din Franța, Italia și Suedia între anii 2001 – 2004, a avut ca scop dezvoltarea unui dispozitiv pentru telemonitorizare a semnalului ECG numit PEM (Personal ECG Monitor) pentru detecția diferitelor afecțiuni cardiologice (de tipul aritmiilor cardiace).

Dispozitivul PEM achiziționează 3 canale ECG timp de 10 secunde, reconstruiește cele 12 derivații standard ale ECG folosind un algoritm bazat pe rețele neuronale artificiale și memorează valorile numerice ale semnalului ECG împreuna cu datele personale ale pacientului pe un card personal (de tip SmartCard) în dispozitivul PEM.

Semnalul ECG este apoi prelucrat și funcție de rezultate se activează (sau nu) alarmele. Dacă alarma are nivel ridicat de importanță ea este transmisă automat către cel mai apropiat centru de urgență, în caz contrar aceasta fiind transmisă către un server web. Este anunțat medicul printr-un SMS și un email, trimise automat de server.

Datele și alarmele de la pacient sunt transmise spre serverele de telemonitorizare/centrele de urgență prin intermediul Bluetooth (către telefonul mobil) și de acolo mai departe prin GSM/GPRS.

Cel mai cunoscut sistem de telemonitorizare, CodeBlue este un sistem bazat pe rețele de senzori wireless, cu capabilitate de comunicare radio. Senzorii permit transmisia de date pe distanțe care pot ajunge la 100m și pot transmite aceste informații diferitelor dispozitive: PDA-uri, laptop-uri, terminalelor ambulanțelor etc. Acești senzori pot fi programați să proceseze semnele vitale, de exemplu să alarmeze atunci când parametrii vitali nu sunt în limitele de normalitate.

În cadrul proiectului au fost realizate o serie de dispozitive pentru prelevarea parametrilor pacientului cum ar fi: saturația oxigenului din sânge, semnalului ECG pe două canale, EMG etc. Aceste dispozitive sunt realizate cu microprocesoare din familiile Atmel (Atmega128L) sau Texas Instruments (seria MSP430) și circuite de radiofrecvență de tipul Chipcon (CC2420), au o memorie internă de dimensiuni reduse (4 – 10Kb) și sunt capabile să transmită datele cu maximum 80Kbit/s.

În cadrul proiectului AMON (Advanced Care and Alert Portable Telemedical MONitor) realizat în Israel între anii 2001 – 2002 s-a pus la punct o brățară (wrist-mounted monitoring device) cu biosenzori pentru monitorizarea parametrilor vitali de tipul ritmului cardiac, semnalului ECG pe două canale, presiunii arteriale, saturației oxigenului din sânge, temperaturii corpului, cu posibilitatea transmiterii datelor prin GSM/GPRS către centrul de telemedicine.

Proiectul MobiHealth, dezvoltat în Germania, în cadrul programului FP5 între anii 2002 – 2003, a avut ca scop dezvoltarea unui sistem de telemonitorizare bazat pe rețele de senzori (BAN – Body Area Network) atașați pacientului care achiziționează și transmit date continuu către un PDA. Senzorii ce formează rețeaua achiziționează un canal ECG sau saturația oxigenului din sânge, transmit datele PDA-ului folosind protocolul wireless Bluetooth, și de la acesta mai departe către centrul de telemonitorizare prin GPRS/UMTS.[4]

2.2.2 Nivel national

La nivel național telemonitorizarea reprezintă o tehnologie de interes medical pentru toate centrele din România capabile să ofere suportul tehnic necesar.

Un proiect național, CardioNET (Sistem Integrat pentru Supraveghere Continuă în Rețea Inteligentă e-Health a Pacienților cu Afecțiuni Cardiologice) este centrat pe telemonitorizarea pacienților cu afecțiuni cardiace (cardiopatie ischemică, tulburări de ritm), dorind să realizeze o optimizare a schimbului de informații între pacient, medic de familie, policlinică, spital, casa de asigurări de sănătate și o cunoaștere exactă a antecedentelor medicale, a tratamentelor și a evoluției acestor patologii.

Arhitectura sistemului CardioNET este una de tip distribuit, compusă din mai multe servere de baze de date, terminale de acces și echipamente medicale mobile interconectate prin Internet. Între serverele de baze de date exista un protocol de comunicație pentru schimbul de informații administrative (nume, vârsta, CNP, adresa, etc.) și medicale (tratamente anterioare) referitoare la pacienți. Datele despre un pacient sunt replicate pe mai multe servere, mărind astfel fiabilitatea sistemului.[19]

Structura multinivel a sistemului CardioNET este implementată pe patru nivele:

infrastructura de comunicație (Internet și Intranet),

serverele de baze de date,

procedurile de prelucrare, interogare și acces securizat la date, interfețele de achiziție de date,

generare de documente medicale și de acces interactiv la informații medicale.

Interfețele de achiziție a datelor de la pacient sunt de două tipuri:

interfețe pentru operator uman

interfețe pentru dispozitive de analiză.

În primul caz, operatorul (pacient, asistentă sau medic), introduce date medicale despre pacient folosind formulare (pagini web) predefinite.

În cel de al doilea caz, datele sun preluate direct de la dispozitive prin intermediul conexiunilor seriale (RS232/USB) sau wireless (802.11/Bluetooth).

Transmiterea datelor poate fi activată fie la o solicitare expresă a operatorului fie în mod automat atunci când echipamentul detectează o anumită situație critică.

Proiectul TELEASIS (Sistem complex, pe suport NGN pentru teleasistență la domiciliu a persoanelor în vârstă) vizează atât aspectul medical al telemonitorizării cât și cel social, având drept scop:

obținerea unor servicii personalizate pentru îngrijirea vârstnicului,

reducerea cheltuielilor spitalicești ,

o creștere a preponderenței îngrijirii la domiciliu.

Componenta hardware a sistemului constă din realizarea unui modul individualizat de teleasistență, ca interfață pentru dispozitive medicale sau senzori de mediu utilizați pentru telemonitorizare, interfață cu suportul de comunicații, Internet, rețele fixe sau mobile, interfață pentru livrarea informației către beneficiar pe suport PC sau PDA sau TV.

Sistemul MEDCARE este un sistem de monitorizare a activității cardiace, ce permite achiziția și transmiterea prin Internet a semnalelor ECG (12 derivații) și analiza acestora în timp real. Semnale bioelectrice de la inimă sunt achiziționate, comprimate, împachetate și transmise către un server situat la centrul de telemonitorizare.

Serverul asigură memorarea informațiilor despre pacient în baza de date MySQL, precum și stocarea semnalelor electrocardiografice; de asemenea, retransmite semnalele recepționate on-line de la unitățile de achiziție sau pe cele anterior memorate.

Aplicația client ce rulează pe calculatorul medicului specialist ,afișează într-o formulă grafică semnalele ECG primite de la server. De asemenea, aplicația conține instrumente de măsurare a amplitudinilor și duratelor ce permit medicului să efectueze analiza morfologică a semnalelor ECG. Sistemul a fost realizat de firma Romsoft SRL din Iași și realizat în 2002, prin finanțare în PC5 al U.E.

Sistemul TELMES reprezintă o platformă multimedia pentru teleservicii medicale complexe. S-a urmărit dezvoltarea unui sistem securizat, destinat implementării teleserviciilor de consultație medicală și telemonitorizare.

Proiectul a fost finalizat cu un model pilot pentru o rețea de centre regionale, la care sunt conectate telecentre locale, având ca suport o platformă multimedia, care permite implementarea de teleservicii medicale complexe, în scopul creșterii posibilităților de acordare a asistenței medicale pentru o categorie largă de pacienți, mai ales a celor din zone rurale sau izolate. [9]

În concluzie, din analiza sistemelor de telemonitorizare prezentate, se pot trage următoarele concluzii:

• majoritatea sistemelor monitorizează parametrii vitali de tipul: ritm cardiac, saturație de oxigen din sânge și presiune arterială, puține își propun monitorizarea ritmului respirator sau a temperaturii corpului;

• unele din sistemele de telemonitorizare folosesc pentru prelevarea parametrilor fiziologici o rețea de senzori și traductori, altele folosesc doar un singur dispozitiv;

• unele din sistemele de telemonitorizare prezentate folosesc doar pentru alarmare, altele au intergrați algoritmi evoluați de procesare a semnalelor în vederea clasificării acestora;

• majoritatea sistemelor prezentate folosesc pentru transmisia parametrilor monitorizați de la dispozitivele de prelevare la centrul de telemonitorizare Internet-ul (prin Ethernet, WiFi sau GSM/GPRS);

• nici unul din sistemele prezentate nu își propune elaborarea unui diagnostic pentru pacientul monitorizat.

2.3 Telemedicina in România

În prezent, sistemul de telemedicină este aplicat atât în asistența de urgență pre-spital, toate ambulanțele de tip B fiind dotate cu aparatura ce poate transmite informații la distanță, spre un centru de coordonare, cât și în colaborarea inter-spitalicească, departamentele de primiri urgențe fiind conectate între ele sau, mai ales, cu centrele de referință care pot să dea sfaturi sau să ia decizii împreună asupra transferului pacientului.

Sistemul de telemedicină pre-spital a fost implementat la început, în 2003, în județul Mures, printr-un proiect pilot.În prezent , acesta s-a dezvoltat la nivel național, astfel încât în prezent exista peste 1200 de ambulanțe dotate cu sistem de telemedicină, din care 100 au și sistem video să transmită de la locul intervenției.în ceea ce privește interconectarea la nivelul spitalelor, acest sistem a demarat în 2008-2009, printr-un proiect pilot al Bancii Mondiale, implementat tot în județul Mureș, prin care au fost conectate 40 de unități de primiri urgențe.[13]

Compania Petrom a investit peste 450.0000 de Euro in extinderea actualei rețele de telemedicină de urgență cu centrul la Târgu Mureș prin conectarea a înca 16 puncte medicale la Spitalul Clinic de Urgență Floreasca din București. Toate spitalele incluse în program vor beneficia de asistență medicală de urgență și de specialitate în timp real. Cele 17 unități medicale sunt interconectate cu reteaua de telemedicină de urgență inaugurată în 2008, extinzând astfel rețeaua naționala la 56 de spitale, respectiv 19 județe. Peste 9,5 milioane de romani au acum acces la servicii medicale de urgență prin intermediul platformei “Acces la Viață”.

~ Capitolul 3~

Propunere privind monitorizarea funcțiilor vitale ale unui pacient

3.1 Generalități despre platforma senzorului E-Health

Permite utilizatorilor Arduino și Raspberry Pi să efectueze aplicații biometrice și medicale, în cazul în care este nevoie de monitorizare, pe corp se utilizează 10 senzori diferiți:

puls,

de oxigen în sânge (SpO2),

fluxul de aer (respirație),

temperatura corpului,

electrocardiogramă (ECG),

glucometru,

răspunsul galvanic al pielii (GSR – transpirație),

tensiunii arteriale (tensiometru),

poziția pacientului (accelerometru) și senzorul de mușchi / eletromyography (EMG).

Aceste informații pot fi folosite pentru a monitoriza în timp real starea unui pacient sau pentru a obține date sensibile, pentru a fi analizate ulterior pentru diagnosticare medicală. Informațiile biometrice pot fi trimise fără fir folosind oricare dintre cele 6 opțiuni disponibile de conectivitate: Wi-Fi, 3G, GPRS, Bluetooth, 802.15.4 și ZigBee în funcție de aplicație.

În cazul în care este nevoie de diagnostic imagine în timp real ,un aparat de fotografiat poate fi atașat la modulul 3G, cu scopul de a trimite fotografii și clipuri video ale pacientului la un centru de diagnosticare medicală.

Platforma senzor E-Health a fost proiectată de CookingHacks în scopul de a ajuta cercetătorii, dezvoltatorii pentru a măsura datele senzorilor biometrici pentru experimentare, distracție și de testare a scopurilor. CookingHacks oferă o alternativă ieftină și deschisă în raport cu prioritatile pacienților și de prețuri date de piața medicală. Cu toate acestea, platforma nu are certificări medicale si nu pot fi utilizata pentru monitorizarea pacienților critici care au nevoie de supraveghere medicală exactă sau cei ale căror condiții trebuie să fie măsurată cu acuratețe pentru un diagnostic profesionist ulterior.[5]

3.2 Caracteristicile platformei senzorului E-Health

Pachetul folosit este platforma senzorului E-Health de la CookingHacks. Senzorul E-Health este pe deplin compatibil cu Raspberry și versiunile USB noi și vechi Arduino, Duemilanove și Mega.

8 senzori non-invazivi + 1 senzor medical invaziv

Stocarea și utilizarea de masurători de glucoză

Monitorizarea semnalului ECG.

Monitorizarea semnalelor EMG.

Controlul fluxului de aer al pacientului.

Datele temperaturii corpului.

Măsurători galvanice de răspuns ale pielii

Detectarea poziției corpului.

Funcțiile pulsului și oxigenului;

Dispozitiv de control al tensiunii arteriale.

Mai multe sisteme de vizualizare a datelor.

Compatibil cu toate aparatele UART (Universal Asynchronous Receiver/Transmitter)

Caracteristici electrice:

Placa E-Health poate fi alimentată de la PC sau de o sursă de alimentare externă. Unele dintre porturile USB de pe computerele nu sunt capabile să dea tot curentul modulului pentru a lucra, dacă modulul are probleme atunci când lucrați cu el, puteți să utilizați o sursă de alimentare externă (12V – 2A) pe Arduino / RasberryPi.

3.3 Platforma senzorului E-HealthSchema- Anexa 10

3.4 E-Health montat peste Arduino

Arduino Uno este o placă de dezvoltare bazată pe microcontroler ATmega328 Ea are:

14 pini digitali de intrare / ieșire (din care 6 pot fi utilizate ca ieșiri PWM(Pulse Width Modulation),

6 intrări analogice,

un 16 MHz oscilator cu cristal,

conexiune USB,

un jack de putere,

un corp ICSP,

și un buton de resetare.

Specificatii:

microcontroler ATmega328

Tensiune de alimentare 5V

Tensiune de intrare (recomandat) 7-12V

Tensiune de intrare (limite), 6-20V

Digital I / O Pins 14 (din care 6 prevăd PWM de ieșire)

Pinii de intrare analogică 6

DC curent pe I / O Pin 40 mA

Curent DC 3.3V pentru Pin 50 mA

Memorie flash 32 KB din care 0,5 KB utilizate de bootloader

SRAM 2 KB

EEPROM 1 KB

Frecventa 16 MHz

Detalii

Senzor E-Health permite utilizatorilor Arduino si Raspberry Pi să efectueze aplicații biometrice și medicale, în cazul în care este nevoie de monitorizare a corpului cu ajutorul a 9 senzori diferiți. Aceste informații pot fi folosite pentru a monitoriza în timp real starea unui pacient sau pentru a obține date sensibile, pentru a fi analizate ulterior pentru un diagnostic medical. Informații biometrice pot fi trimise fără fir folosind oricare dintre cele 6 opțiunile disponibile de conectivitate: Wi-Fi, 3G, GPRS, Bluetooth, 802.15.4 și ZigBee în funcție de aplicație.

Puteți găsi kitul complet al senzorului de E-Health

Senzor de pulse și de oxigen din sânge (SpO2)

Senzor flux de aer (respirație)

Senzor de temperatură a corpului

Senzor Electrocardiograma (ECG)

Senzor Glucometer

Senzor de răspuns galvanic al pielii (GSR – transpirație)

Senzor de presiune arterială (tensiometru)

Senzor de poziție a pacientului (Accelerometru)

Electromiografia senzor (EMG)

3.5.E-Health montat peste Raspberry Pi

În scopul de a conecta senzorul E-Health pentru Raspberry Pi este nevoie de o placă adaptoare.

Raspberry Pi a Arduino plăci de legătură

Ideea din spatele plăcilor de legatură Raspberry Pi și Arduino ,este de a permite utilizatorului sa folosească orice plăci și module concepute pentru Arduino la RaspberryPi. Aceastea includ, de asemenea, posibilitatea de a conecta senzori digitali și analogici, folosind aceeași pini de iesire ai lui Arduino, dar cu puterea și capacitățile de la Raspberry Pi .

În scopul de a face complet compatibil este creată biblioteca arduPi care permite folosirea de Raspberry cu același cod folosit în Arduino. Pentru a face acest lucru, am implementat funcții de conversie, astfel încât să puteți controla în același mod ca și în Arduino toate interfețele I / O: I2C, SPI, UART, analogice, digitale, în Raspberry Pi.

Să rezumăm ceea ce putem face folosind această placă, împreună cu biblioteca arduPi:

Putem conecta orice modul Arduino wireless în Raspberry. Câteva exemple: XBee 802.15.4/XBee ZigBee, RFID, NFC, Bluetooth, Bluetooth Pro, WiFi, GPRS, 3G.

Putem conecta orice senzor (analogic 0-5V, digital) Conectati, de asemenea, senzori complecși prin I2C(Inter Integrated Circuits) și UART (Universal Asynchronous Receiver/Transmitter).

Putem conecta orice placă specifică Arduino, cum ar fi: Radiation sensor shield, CanBus, Relay shield

Putem conecta orice modul electronic sau de acționare, care funcționează pe I2C(Inter Integrated Circuits), SPI(Serial Peripheral Interface), UART

Biblioteci

Platforma senzorului E-Health are biblioteca asemănătoare cu o bibliotecă C + + care vă permite să citiți cu ușurință toți senzorii și trimite informații, utilizând oricare dintre interfețele radio disponibile. Această bibliotecă oferă un sistem open source simplu de utilizat.

În scopul de a asigura același cod pentru a fi compatibil pe ambele platforme (Arduino și Raspberry Pi), vom folosi bibliotecile ArduPi care permit dezvoltatorilor să utilizeze același cod.

3.6. Puls și oxigen în sânge (SpO2)

SpO2 caracteristici senzor

Pulsoximetria o metodă neinvazivă de a indica saturația de oxigen arterial a hemoglobinei. Saturația de oxigen este definită ca măsurarea cantității de oxigen dizolvat în sânge, bazat pe detectarea hemoglobinei și deoxyhemoglobinei. Două lungimi de undă de lumină diferite sunt utilizate pentru a măsura diferența reală în spectrele de absorbție a HbO2 și Hb. Fluxul sanguin este afectat de concentrația de HbO2 și Hb, precum și coeficienții de absorbție sunt măsurati cu ajutorul a două lungimi de undă 660 nm (spectre de rosu deschis) și 940 nm (spectrul luminii infraroșii).

Hemoglobina dezoxigenată (Hb), are o absorbție mai mare la 660 nm și a hemoglobinei oxigenate (HbO2) are o absorbție mai mare la 940 nm. Apoi, un foto-detector percepe lumina de la LED-uri pentru a calcula saturația oxigenului arterial. Un senzor de puls oximetru este util în orice decor unde oxigenarea unui pacient este instabilă, inclusiv terapie intensivă, de exploatare, de recuperare, de urgență și setările de salon de spital, piloți din avion nepresurizat, pentru evaluarea de oxigenare a oricărui pacient, iar determinarea eficienței sau nevoii de oxigen suplimentar. Limitele normale acceptabile pentru pacienți sunt 95 – 99 %, cei cu o problemă au valori între 88 – 94 %, valori de 100 % pot indica intoxicație cu monoxid de carbon. Senzorul trebuie să fie conectat la Arduino sau Raspberry Pi, și nu folosiți acumulatori interni sau externi.

Conectarea senzorului

Conectați modulul în platforma de senzor E-Health.Senzorul are un singur mod de conectare pentru a preveni erorile și de a face legătura mai ușor.

Introduceți degetul în senzor și apăsați butonul.După câteva secunde, veți obține valorile pe ecranul senzorului.

Funcțiile bibliotecii- ANEXA 1

3.7.Electrocardiograma (ECG)

Caracteristici senzor ECG

Electrocardiograma (ECG sau EKG) este un instrument de diagnosticare, care este de obicei folosit pentru a evalua funcțiile electrice și musculare. Senzorul Electrocardiograma (ECG), a ajuns sa fie unul dintre testele medicale, cele mai frecvent utilizate în medicina modernă. Utilitatea sa în diagnosticare descoperă o multitudine de patologii cardiace, de la ischemie miocardică și infarct la palpitatii ,a fost de neprețuit pentru medici de zeci de ani.

Precizia ECG depinde de starea celui testat. O problemă de inimă poate să nu apară întotdeauna pe ECG. Unele boli de inimă nu produc nicio modificare specifică în ECG. Conductoarele ECG sunt atașate la corp în timp ce pacientul se află întins pe spate pe un pat sau masă.

Ce măsoara sau ce se poate detecta pe ECG (EKG)?

Orientarea inimii (cum este plasată) în cavitatea toracică.

Dovada că a crescut grosimea (hipertrofie) a muschiului inimii.

Dovezi de afecțiuni ale diferitelor părți ale mușchiului inimii.

Dovada de afecțiune acută a fluxului de sange prin mușchiul inimii.

Modele de activitate electrică anormală care poate predispune pacientul tulburări de ritm cardiac anormale.

Ritmul inimii.

Reprezentarea schematică a ECG normal

Conectarea senzorului

Conectați cele trei cablurile (pozitive, negative și neutre), în placa E-health.

Conectați cablul ECG la electrozii.

Scoateți plasticul de protecți.Se pun electrozii așa cum se arată mai jos.

Funcțiile bibliotecii:- ANEXA 2

3.8. Debit de aer, respirație

Caracteristici senzor Debit de aer

Ratele respiratorii anormale și modificările ritmului respirator sunt indicatori largi de instabilitate fiziologică majori și în multe cazuri, frecvența respiratorie este una dintre cei mai vechi indicatori ai acestei instabilități. Prin urmare, este foarte important de a monitoriza frecvența respiratorie ca indicator de stare a pacientului. Senzorul fluxului de aer poate oferi o avertizare timpurie de hipoxemie și apnee.

Senzorul fluxului de aer nazal / gura este un dispozitiv folosit pentru a masura rata de respirație într-un pacient care are nevoie de ajutor respirator sau de o persoană. Acest dispozitiv constă dintr-un fir flexibil care se potrivește în spatele urechilor, și un set de doi dinti, care sunt plasați în nări. Respirația se măsoară prin acești dinți. Proiectată special canula permite senzorului să fie plasat în poziția optimă pentru a sesiza cu precizie schimbările debitului de aer termic oral / nazal, precum și temperatura aerului nazal. Confortabil reglabil și ușor de instalat.

Se pune senzorul cu poziționarea dintelui în calea fluxului de aer. Un om obișnuit adult are o rată respiratorie de 15-30 respirații pe minut.

Conectarea senzorului

Senzorul AirFlow E-Health are două conexiuni (pozitive și negative)

Conectați firul roșu cu borna pozitivă (marcată ca "+" pe placă) și firul negru la born negativă(marcată ca "-" la bord).

După conectarea cablurilor, strângeți șuruburile.

Amplasați senzorul așa cum se arată în imaginea de mai jos.

Funcțiile bibliotecii-ANEXA 3

3.9. Temperatura corpului

Caracteristici senzor de temperatură

Temperatura corpului depinde de locul de pe corp la care se face măsurătoarea, și momentul zilei și nivelul de activitate a persoanei. Diferite părți ale corpului au diferite temperaturi.

Temperatura general acceptată corpului de baza medie este de 37,0 ° C (98.6 ° F). La adulții sănătosi, temperatura corpului fluctueaza de aproximativ 0,5 ° C (0,9 ° F), pe tot parcursul zilei, cu temperaturi mai scăzute dimineața și temperaturi mai ridicate, în după-amiaza târziu și seară, în functie de nevoi și activități ale organismului aceasta se schimbă.

Este de mare importanță medicală masurarea temperaturii corpului. Motivul este că un număr de boli sunt însoțite de modificări caracteristice ale temperaturii corpului. De asemenea, parcursul anumitor boli pot fi monitorizate prin măsurarea temperaturii corpului, iar eficiența unui tratament inițiat poate fi evaluată de către medic.

Calibrarea senzorului

Precizia senzorului temperaturii corpului este suficientă în majoritatea aplicațiilor. Dar vă puteți îmbunătăți această precizie printr-un proces de calibrare.

Atunci când se utilizează senzorul de temperatură, tu esti, de fapt, o tensiune de măsurat. Dacă puteți evita erorile în măsurătorile de tensiune mai precis în reprezintarea relației dintre tensiune și temperatură , puteți obține citiri de temperatură mai bune.

Calibrarea este un proces de măsurare a valorilor reale de tensiune și rezistență. În fișierul eHealth.cpp putem găsi funcția getTemperature. Valorile [Rc, Ra, Rb, RefTension] sunt definite imprecis în mod implicit.

Dacă măsurați aceste valori cu un multimetru și modificați biblioteca veți obține o mai mare precizie.

Localizați multimetrul la terminalele rezistenței și se măsoară valoarea acesteia. În acest caz, ne-ar modifica valoarea rezistenței (Ra = 4640 / Rb = 819) …

Facem același proces între 3V (cablu roșu) și GND (cablul negru), dar cu multimetrul în măsurarea tensiunii. În acest caz, nu se schimbă valoarea.

Conectarea senzorului

Pentru prelevarea de măsuri de temperatură, conectați senzorul în jack cu ajutorul adaptorului.

Contactul dintre partea metalică și pielea ta se face folosind o bucată de bandă adezivă pentru a ține senzorul atașat pe piele.

Funcțiile bibliotecii-ANEXA 4

3.10. Tensiunea arterială

Caracteristici senzor de tensiune arterială

Tensiunea arterială este presiunea sângelui în artere cum este pompat în corp de inimă. Când inima bate, se contractă și împinge sangele prin artere la restul corpului. Această forță creează presiune asupra arterelor. Tensiunea arterială este înregistrată ca două numere a tensiunii arteriale sistolice (când inima bate) peste presiunea diastolică (când inima se relaxează)

Monitorizarea tensiunii arteriale la domiciliu este important pentru mulți oameni, mai ales dacă au hipertensiune arterială. Tensiunea arterială nu rămâne la fel tot timpul. Se schimbă pentru a satisface nevoile corpului tau. Aceasta este afectată de diverși factori, inclusiv poziția corpului, respirație sau starea emoțională, exercitii fizice si somn. Cel mai bine este de a măsura tensiunea arterială atunci când ești relaxat și așezat sau culcat.

Clasificare a tensiunii arteriale pentru adulti ( peste 18 ani)

Tensiunii arteriale crescute (hipertensiune arterială), poate duce la probleme grave, cum ar fi infarct miocardic, accident vascular cerebral sau boli de rinichi. Tensiunea arterială, de obicei, nu are nici un simptom, deci trebuie să aveți tensiunea arterială verificată în mod regulat.

CARACTERISTICI SPECIALE:

Măsurarea automată a tensiunii arteriale sistolice, diastolice și puls cu oră și dată

Ecran LCD mare, cu iluminare din spate cu LED-uri

TOUCH PAD KEY

80 de rezultate de măsurare cu oră și data stocate în dispozitiv

CARACTERISTICI CHEIE:

Metoda de măsurare: sistem oscilometric

Tip ecran: LCD Digital 97mm [L] x 87mm [W]

Interval de masurare: Presiune 0-300 mmHg

Puls 30 ~ 200 p / min

Precizie de măsurare: Presiune ≤ ± 3 mmHg

Puls ≤ 5%

Mediul de operare: Temperatura de 10-40 ℃

Umiditate relativă ≤ 80%

Sursa de alimentare: 4 x baterii AA

Dimensiuni: 150mm [L] x 110mm [W] x 65mm [H]

Greutate: 370 g Despre

Dimensiune manșetă: 520mm [L] x 135mm [W]

Gama de manșetă: 220mm [L] – 320mm [W]

Senzorul trebuie să fie utilizat cu o sursă de alimentare AC / DC (inclus cu senzorul) compatibil cu E-Health.Noul senzor de presiune arterială (Sphygmomanometer) este compatibil cu versiunea de E-health Senzor Shield 1, folosind un cablu adaptor.

Conectarea acestui senzor în alte versiuni de E-Health este foarte simplă.

Acest senzor se execută numai cu actualizările bibliotecii E-Health.

Conectarea senzorului

Înainte de a începe să utilizați tensiometru avem nevoie de o măsuratoare cel puțin în memoria senzorului de presiune arterială. După care putem obține toate informațiile conținute în dispozitiv.

Așezați tensiometru pe braț (zona biceps), așa cum se arată în imaginea de mai jos. Alimentați dispozitivul.

Porniți apasând butonul ON de pe manșeta tensiometru .Senzorul va începe să facă o măsurătoare. După câteva secunde, rezultatul este afișat pe ecranul tensiometrului.

Senzorul de presiune arterială are nevoie de câteva momente pentru a calcula citirea valorilor. Acesta va stoca valorile în memorie. În scopul de a extrage datele de la tensiometru la Arduino sau Raspberry Pi, conectați cablul asa cum arată în imagine.

Functiile bibliotecii-ANEXA 5

3.11 Poziția pacientului și căderi

Caracteristici senzor de poziție

Senzorul de poziție a pacientului (Accelerometru) monitorizează cinci poziții diferite ale pacienților(în picioare / așezat, culcat pe spate, predispus, la stânga și la dreapta.) În multe cazuri, este necesar de a monitoriza pozițiile corpului și mișcările făcute din cauza relațiilor lor cu anumite boli (de exemplu, apneea de somn și de sindromul picioarelor nelinistite). Analizând mișcări în timpul somnului, de asemenea, ajută la determinarea calității somnului și modele neregulate de dormit. Senzorul de poziție a corpului ar putea ajuta, de asemenea, pentru a detecta leșinul sau cădere a persoanelor în vârstă sau a persoanelor cu handicap.

E-Health senzorul de poziție folosește un accelerometru pe trei axe pentru a obține poziția pacientului.

caracteristici:

1.95 V la 3,6 V tensiune de alimentare

1,6 V la 3,6 V tensiune de interfață

2g ± / ± 4 g / ± 8g dinamic selectabil la scară completă

Acest accelerometru este dotat cu funcții integrate cu opțiuni de programare utilizator flexibile, configurabil cu doi pini de întrerupere.

Poziții ale corpului

Conectarea senzorului

Senzorul de poziție are un singur corp și are un mod simplu de conexiune. Conectați cablul panglică cu senzorul de poziție a corpului și placa E-Health cum arată în imaginea de mai jos.

Așezați banda în jurul pieptului și conectorul plasat jos.

Functiile bibliotecii ANEXA 6

3.12 Răspuns galvanic al pielii (GSR)

Caracteristici senzor GSR

Conductanța pielii, de asemenea, cunoscută sub numele de rezistența electrică a pielii (GSR) este o metodă de măsurare a conductanței electrice a pielii, care variază în funcție de nivelul de umiditate. Acest lucru este de interes, deoarece glandele sudoripare sunt controlate de sistemul nervos, deci momentele de emoție puternică, modifică rezistența electrică a pielii.

Conductanța pielii este utilizată ca o indicație de excitare psihologică sau fiziologică, raspunsul galvanic al pielii (GSR – transpirație) măsoară conductivitatea electrică între 2 puncte, și este în esență un tip de ohmmetru.

Metoda de răspuns a pielii, conductivitatea pielii este măsurată la degetele de la mână. Principiul sau teoria din spatele funcționării senzorului de răspuns galvanic este de a măsura rezistența electrică a pielii, pe baza sudorii produse de organism. Când transpirația are un nivelul ridicat, rezistența electrică a pielii scade.

O piele uscătă înregistrează o rezistență mult mai mare. Senzorul de răspuns conductanță al pielii măsoară reflexul galvanic al corpului la stimuli psihologici. Emoții, cum ar fi excitare, stres, șoc, poat duce la fluctuația de conductivitate a pielii.

Măsurarea conductanței pielii este o componentă a dispozitivelor poligraf și este folosit în cercetarea științifică de excitare emoțională sau fiziologică.

Conectarea senzorului

Conectați fire de contact la senzorul GSR. Contactele nu sunt polarizate.

Senzorul galvanic al pielii are două contacte și funcționează ca un ohmmetru măsurarand rezistența materialelor. Puneți degetele în contactele metalice și strângeți ariciul așa cum se arată în imaginea de mai jos.

Functiile bibliotecii:-ANEXA 7

3.13 Senzor glucometru

Caracteristici

Glucometru este un dispozitiv medical pentru determinarea concentrației aproximativă de glucoză în sânge. O mică picătură de sânge, obținut prin înțepături ale pielii cu un ac, este plasat pe un test de unică folosință care citește și utilizează datele pentru a calcula nivelul de glucoză din sânge.Contorul afișează apoi nivelul în mg / dl sau mmol / l.

În ciuda intervalelor foarte variabile între mese sau consumul ocazional al meselor, cu o sarcină importantă de carbohidrați, nivelul de glucoza din sangele uman tinde să rămână în limite normale. Cu toate acestea, la scurt timp dupa masa, nivelul de glucoză din sânge poate crește, în non-diabetici, temporar până la 7,8 mmol / l (140 mg / dl) sau un pic mai mult.

Configurare glucometru

Pentru configurarea timp /dată, deschideți compartimentul de la baterie și apăsați butonul negru. Este simplu de a seta parametrii glucometrului noastru. Ai să vezi un buton mic în apropierea bateriei. Puteți seta ora și mg / dl de ea. Când glucometru este oprit, apăsați o dată scurt pe butonul din spate pentru al deschide, apoi puteți vedea pe ecran data și ora /an/ lună, apăsați scurt butonul de pe față ,acesta este pentru a crește datele (o apăsare lungă va crește rapid datele) apasand scurt butonul de pe spate se comuta anul si luna / data sau timp sau unități de glucoză. Pentru a salva setările,apăsați scurt butonul din spate de mai multe ori până când vedeți mare OFF pe ecran.Pentru a schimba unitățile de glucoză, când veți vedea pe ecran timpul, pur și simplu apăsati scurt de mai multe ori pana vezi doar mmol / l si se aprinde intermitent, apoi apăsați butonul mare timp de aproximativ 3 secunde, veți vedea mmol / l devine la mg / dl. Apoi apăsați butonul mic din spate de două ori scurt pentru a-l salva. Puteți vedea OFF mare pe ecran, atunci nu faceti nimic doar să așteptați un auto off. Apoi ați terminat setările de mg / dl. Setarea altor parametri este similară.

Conectarea senzorului

Înainte de a începe să utilizați glucometrul aveți nevoie de o măsură, cel puțin în memoria glucometrului. După care putem obține toate informațiile conținute în glucometru (data, valoarea glucozei).Porniți glucometrul și puneți un test când aparatul este gata. Uitațivă la indicatorul pentru plasarea de sânge pe bendă.

Curățați varful degetului de fiecare dată cu alcool înainte de înțepare cu un ac steril.Înțeapați vârful degetului si obțineți o picătură de sânge. Tipul de picătură de sânge este determinată de tipul de bandă pe care îl utilizați.Se pune picătură de sânge pe partea laterală a benzii.

Glucometrul va aștepta câteva momente pentru a calcula citirea de zahăr din sânge.

Glucometrul va stoca valoarea din memorie. În scopul de a extrage datele din glucometru la Arduino sau Raspberry Pi, conectați cablul cum arată în imagine.

Funcții de bibliotecă –ANEXA 8

3.14 .Electromiograma (EMG)

EMG caracteristici senzor

O electromiogramă (EMG) măsoară activitatea electrică a mușchilor în repaus și în timpul contracției. Electromiografie (EMG) este o tehnică de evaluare și înregistrare a activității electrice produsă de mușchii scheletici. EMG se realizează cu ajutorul unui instrument numit un Electromiograf. Un electromiograf detectează potențialul electric generat de celulele musculare atunci când aceste celule sunt activate electric sau neurologic.

Semnalele pot fi analizate pentru a detecta anomalii medicale, nivelul de activare, pentru recrutare sau de a analiza biomecanica de mișcare umană sau animală. Semnalele EMG sunt folosite în multe aplicații clinice și biomedicale. EMG este folosit ca un instrument de diagnosticare pentru a identifica boli neuromusculare, evaluarea durerii de spate, kinetoterapie, si tulburari de control locomotor

Semnalele EMG sunt, de asemenea, utilizat ca un semnal de comandă pentru dispozitive de protezare, cum ar fi mână protetică, brațele și membrele inferioare. Acest senzor va masura activitatea electrică a unui mușchi, în funcție cantitatea de activitate în muschii selectati.

Acest senzor vine cu tot ce ai nevoie pentru a începe activitatea musculara de detectare cu Arduino sau Raspberry Pi.

Conectarea senzorului

Conectați cele trei cabluri (MID, END și GND), pe placa E-Health.

Conectați cablul EMG la electrozi.

Scoateți plasticul de protective.

Acest senzor folosește electrozi de unică folosință.

Acești electrozi de unică folosință de calitate trebuie să fie utilizați pentru a măsura EEG, ECG și EMG. Ei trebuie să fie folosiți o singură dată și sunt foarte la îndemână. Ei adera foarte bine la piele și sunt curați pentru a fi utilizați. H124SG are o parte unică, patentat de pre-gel adeziv cu gel non-iritant, dezvoltat special pentru a preveni reacțiile alergice. Acesti electrozi din latex sunt multiplii și, prin urmare, potriviți pentru fiecare tip de piele. Se pune electrozii așa cum se arată mai jos.

Funcții de bibliotecă –ANEXA 9

3.15 Trimiterea datelor

Telemedicina este utilizarea telecomunicațiilor și tehnologiilor informaționale, în scopul de a oferi asistenta medicala clinica de la distanță. Acesta ajută la eliminarea barierelor de distanță și pot îmbunătăți accesul la servicii medicale care de multe ori nu sunt în mod constant disponibile in comunitatile rurale îndepărtate.De asemenea, este utilizat pentru a salva vieți în situații de îngrijire critice și de urgență. Deși au existat precursori îndepărtați de telemedicină, acesta este, în esență, un produs al telecomunicațiilor și tehnologiilor informaționale din secolul XX. Aceste tehnologii permit comunicarea dintre pacient și personalul medical cu atât confort și fidelitate, precum și transmiterea de date medicale, imagistice și informatice de sănătate de la un site la altul.

Platforma de E-Health senzor permite să împărtășiți datele medicale pentru a pune diagnosticul în timp real. Mai multe module de comunicații pot trimite date pe mai multe protocoale de transmisie.

3.15.1 Wifi

Modulul WiFi Roving RN-171. Acest modul se potrivește în priza XBee pe placile noastre de comunicare și vă permite să conectați placa Arduino / RasberryPi la o rețea WiFi.

3.15.2 Bluetooth

Module Bluetooth pentru Arduino /Rasberry Pi sunt capabile de a fi conectate la placa XBee și a obține un serial de comunicare între computer și o placa Arduino / RasberryPi prin protocolul Bluetooth. Acesta trimite date către dispozitivul specificat.

3.15.3 Zigbee / 802.15.4

Placa Arduino Adaptor XBee permite conectarea la placa Arduino / RasberryPi de comunicare wireless, folosind Zigbee.

3.15.4 GPRS

GPRS Module Quadband pentru Arduino / RasberryPi (SIM900) oferă conexiune GPRS pentru placa Arduino / RasberryPi. Puteți trimite datele prin SMS sau de a face apeluri de la Arduino la dispozitive mobile. sau la un alt Arduino / RasberryPi conectat la acest modul.

3.15.5. 3G

Noua placă 3G pentru Arduino / Raspberry permite conectivitate la WCDMA de mare viteză și rețelele de telefonie mobilă HSPA, în scopul de a face posibilă crearea de următorului nivel de proiecte de interactivitate la nivel mondial în interiorul noului "internet al obiectelor" epoca.

Dacă doriți să utilizați modulul 3G cu platforma E-Health trebuie să conectați un fir de la PIN-ul digital 2 pe 3G, la un pin digital disponibil în Arduino de puterea plăcii E-Health, cu un fir între Arduino și placa la 3.3V.

3.15.6 Camera de diagnostic Foto

Acest modul permite să conectați un aparat de fotografiat pentru înregistrarea video și fotografii. Camera 3G pentru placă.

Introduceți aparatul de fotografiat cu contactele metalice cu care se prevede în sus.

~ Capitolul 4 ~

Modelul experimental privind monitorizarea unor funcții vitale ale unui pacient

4.1.Elemente Hardware necesare realizarii sistemului:

Senzor de puls

Placa de dezvoltare Arduino Uno

Placa GSM

Senzor de puls

Senzorul de puls este un dispozitiv de măsurat ritmul cardiac bine proiectat pentru Arduino.Senzorul se montează pe vârful degetului sau pe lobul urechii și se conectează direct la Arduino cu unele cabluri de legătură.

Kitul senzorului de puls include:

Cabluri de 24 inch codate după culori.

Un clips pentru ureche,perfect dimensionat pe senzor.

Doua buline de arici negru,sunt pe o parte cu arici și sunt de asemenea perfect dimensionate pe senzor.

O curea de arici pentru a prinde senzorul de puls pe vârful degetului.

Patru sticker-uri transparente, acestea sunt folosite pe partea din fața a senzorului de puls pentru al proteja de degetele uleioase și lobul urechii transpirate

Partea din față a senzorului este partea cu sigla inimii.Aceasta este partea care vine în contact cu pielea.Pe partea din față veți vedea un LED și un senzor de lumină sub acesta.LED-ul oferă lumină pe deget sau lobul urechii, dar se poate conecta și pe alte zone ale corpului și senzorul preia lumina care ricoșează.[10]

Partea din spate a senzorului este partea unde sunt montate restul pieselor,tocmai pentru a nu împiedica percepția luminii de către senzorul de pe față.

Cablul de conectare este de 24 inch ,un cablu panglică plat codat după culori cu trei pini de conectare.

Cablul roșu =3V..5V;

Cablul negru= GND;

Cablul mov=semnal A0;

Senzorul de puls poate fi conectat la Arduino sau conectat la o altă placă de dezvoltare..Înainte de a începe funcționarea avem nevoie să protejăm circuitele expuse astfel încât să putem obține un semnal bun al bătăilor inimii. Va trebuii să izolam placa de degetele uleioase și transpirate.Senzorul de puls are așa cum am spus o parte de circuit expusă și dacă atingem punctele de lipire putem scurtcircuita placa sau să întroduceți semnale perturbatoare.Vom folosii un strat subțire de vinil pentru a sigila această parte a senzorului.

Partea din spate a senzorului are contacte chiar mai expuse decât cele din față așadar va trebuii să ne asigurăm că pe acea zonă nu va ajunge nimic umed care să atingă conductoarele. Pe acea zonă se poate pune o bulină de arici care să țină hainele departe de senzor , acestă metodă este însă una temporară astfel încat să putem începe să utilizăm senzorul.

O altă metodă mult mai bună este să izolăm zona expusă cu un lipici fierbinte special care poate fi îndepărtat cu ușurință și refolosit dacă doriți să schimbați locul unde ați lipit senzorul de puls, astfel încât sudoarea de pe vârful degetului și lobul urechii nu intră în contact cu piesele și nu se va produce zgomote în semnal sau chiar un scurtcircuit.

Este recomandat să nu se conecteze senzorul de puls la corpul individului în timp ce computerul sau Arduino este alimentat de la linia curent alternative,este recomandat să se folosească o linie de curent continuu.

Conectati senzorul de puls la Arduino sau un dispozitiv compatibil cu Arduino astefel:

+5V cablul rosu, la masa GND cablul negru si la pinul Analog IN 0 calbul mov.

Apoi încărcați codul specific aplicației.

ANEXA 11

După ce am încărcat programul, pinul 13 va trebuii să clipească în același timp cu bătăile inimii atunci când senzorul este conectat pe vârful degetului sau lobul urechii.

Dacă senzorul este prea strâns pe deget sângele prin vârful degetului nu va mai circula și nu vom mai avea niciun semnal.

Dacă nu il strângi suficient vor interveni zgomote și lumină ambientală.O bună presiune a senzorului pe locul respectiv va da un semnal curat .

Schema electrica a senzorului de puls:

Componente și funcționare:

pe pinul 4 avem o tensiune proporțională cu lumina care ajunge la U1

o componentă continuă dată de valoarea de repaus a mușchiului

o componentă dată de mișcările suprafeței date de forța de pompare a sângelui în zona în care există circuit sanguin sub dermă/mușchi.

componenta continuă este filtrată de C2.

Rezistența R2 face conversia curent→tensiune

→ V(R2)=I(out) * R2

C1 are rol de integrator pentru componenta alternativă.

Schema prezintă și un Amplificator Operational din familia Microchip Technology MCP6001-x-OT în configurație de Amplificator inversor , cu factorul de amplificare în tensiune,funcționează cu un gain mare de valoare Av = – R6/R5 – configurare de amplificator inversor.

→amplificarea este foarte mare

grupul R3, R4 fixeaza o componentă continuă pe Vin+ pentru o funcționare cu alimentare simetrică acționează ca o tensiune de masă cu valoarea +V/2.

-Vin+ este plasat printr-un dispozitiv rezistiv la jumătatea tensiunii de alimentare 5V/2=2,5V;

amplificarea foarte mare duce la urmatorul comportament – în repaus Vout este +V/2 (repetor de pe Vin+), când apar componentele alternative de la valori foarte mici operationalul se duce în +V la semnale mici negative și în GND la semnale mici pozitive – ptractic succesiuni de semnale dreptunghiulare cu componenta continua +V/2 si amplitudinea vârf la vârf de +V.

Amplificatorul Operational trebuie să funcționeze cu alimentare simetrică și astfel tensiunea de ieșire din repaus este jumătate din tensiunea de alimentare, adică 2,5V .

în absența semnalului

D2 are rol de protecție la alimentarea inversă de la sursa de alimentare.

frecvența semnalului dreptunghiular este egală cu cea a pulsului (ritmului sinuzal cardiac) atunci când senzorul este conectat pe derma pulsatorie.

APDS-9008

Descriere:

APDS-9008 este un senzor foto de lumină de cost scăzut cu o ieșire analogică realizat în tehnologia SMD. Acesta constă într-un senzor foto special adaptat care oferă un timp de răspuns excelent și este perceput de ochiul uman.APDS-9008 este ideal pentru aplicațiile în care se controlează lumina de afișare a ecranului.Aparatele mobile, cum ar fi telefoanele mobile și PAD-urile care consumă un current mare pentru afișare beneficiază în proiectare de un asemenea senzor foto pentru a reduce semnificativ consumul de energie.

Caracteristici:

Timp de răspuns excelent;

Suprafață de montare:

Înălțime 0.55mm;

Lățime 1.60mm;

Adâncime 1.50mm;

Variații sensibile scăzute în diferite surse de lumină;

Temperatură de operare:-40..85 ˚C;

Alimentare Vcc 1.6..5.5V;

Ieșire liniară în gamă largă de iluminat;

Tensiune de saturație mare la ieșire;

Circuit de măsurare și forme de undă

Zona circuitului ce cuprinde:R2=12k,C1,C2,C3=4.7uF,C4=2.2uF si R3=100k,reprezintă partea de condiționare a semnalului, adică conduce semnalul variabil de la ieșire într-un semnal care să fie compatibil cu intrările Arduino,pentru ca acesta să poată fi interpretat și să fie util.

-Condensatoarele C2,C3 au rolul de cuplare cc,sunt un filtru trece sus FTS. Răspunsul în frecvență al unui filtru trece sus (FTS) ideal este

Răspunsul la impuls al acestui sistem este:

Acest sistem nu este cauzal și deci nici realizabil. De aceea filtrele trece

sus ideale pot fi doar aproximate în practică.

-Condensatorul C1,rezistența R2 si Condensatorul C2 formeaza un filtru trece banda FTB.

Filtrarea trece bandă (FTB) ideală a semnalelor în timp continuu se realizează cu

un sistem cu răspunsul în frecvență de tipul

Se remarcă prezența a două frecvențe de tăiere, una inferioară și una superioară. Expresia răspunsului la impuls al filtrului trece bandă ideal este:

-Condensatoarele C1,C2,C3 formează un filtru trece bandă în “T”.

Descriere MCP6001 :

Acesta este un un Amplificator Operational special proiectat pentru aplicații de uz general.Această familie este caracterizată de lățimea benzii de caștig (GBWP-Gain Bandwidth Product) de 1 MHz și o marjă de fază de 90˚.Aceasta menține ,de asemenea,45˚ marjă de fază cu o încărcare a capacității de 500pF.Operează la o singură tensiune de alimentare scăzută de 1.8V, la un curent de repaus de 100mA.În plus,MCP6001 suportă intrările rale-to-rale cu o tensiune comună la intrare în gama Vdd +300mV la Vss -300mV.Aceste Amplificatoare Operationale sunt proiectate în tehnologia CMOS.Familia MCP6001 este disponibilă în sectorul industrial cu interval extins de temperatură , cu o sursă de alimentare în gama 1.8V..6.0V.

Caracteristici:

Lățimea benzii de câștig :1MHz;

Rail-to-rail intrare/ieșire;

Tensiunea de alimentare între 1,8V..6.0V;

Curent de repaus IQ=100mA;

Marjă de fază 90˚;

Intervale de temperatură:

Industrial:-40˚C până la 85˚C;

Extins :-40˚C până la 125˚C;

Disponibil în SOT-23-5 (variant folosita in schema);

Specificații electrice în curent continuu:

4.1.2. Placa ARDUINO UNO

Arduino UNO  este o platformă de procesare open-source, bazata pe software si hardware flexibil si simplu de folosit.

Constă într-o platformă de mici dimensiuni (6.8 cm / 5.3 cm – în cea mai des întâlnită variantă) construită în jurul unui procesor de semnal și este capabilă de a prelua date din mediul înconjurător printr-o serie de senzori și de a efectua acțiuni asupra mediului prin intermediul luminilor, motoarelor, servomotoare, și alte tipuri de dispozitive mecanice.

Procesorul este capabil să ruleze cod scris într-un limbaj de programare care este foarte similar cu limbajul C++.[12]

Prezentare generală

Arduino Uno este o placă bazată pe microcontroler ATmega328. Ea are 14 pini digitali de intrare / ieșire (din care 6 pot fi utilizate ca ieșiri PWM), 6 intrări analogice, un rezonator ceramic de 16 MHz, o conexiune USB, o mufă de alimentare și un buton de resetare. Acesta conține tot ce este necesar pentru a sprijini microcontrolerul; pur și simplu îl conectați la un calculator printr-un cablu USB sau de alimentare cu un adaptor AC-DC sau baterie pentru a începe.

Uno diferă de la toate placile precedente la care nu se folosesc driver cip FTDI USB serial. În schimb, este dotat cu Atmega16U2 , programat ca un convertor USB serial.

Placa Arduino Uno Revizia 3 are următoarele caracteristici noi:

pinout: adaugă pinii SDA(de date) și SCL(de ceas), care sunt aproape de pinul AREF(AnalogReference) și alți doi pini noi plasați aproape de pinul RESET, IOREF care permit plăcilor să se adapteze la tensiunea furnizată de la bord. În viitor, plăcile vor fi compatibile atât cu plăcile care utilizează AVR(Avon Valley Railway), care operează cu 5V și cu Arduino Due care funcționează cu 3.3V. Al doilea este un pin care nu este conectat ,dar este rezervat pentru scopuri viitoare.

Circuit de RESET mai puternic.

Atmega 16U2 înlocuit cu 8U2.

"Uno" înseamnă unul în limba italiană.Uno este cel mai recent dintr-o serie de placi Arduino USB.

Specificatii :

Microcontroler:                                        ATmega328

Tensiune de lucru:                                  5V

Tensiune de intrare (recomandat):      7-12V

Tensiune de intrare (limita):                 6-20V

Pini digitali:                                             14 (6 PWM output)

Pini analogici:                                        6

Intensitate de ieșire:                            40 mA

Intensitate de ieșire pe 3.3V:               50 mA

Flash Memory:                                       32 KB (ATmega328)  0.5 KB pentru bootloader

SRAM:                                                    2 KB (ATmega328)

EEPROM:                                               1 KB (ATmega328)

Clock Speed:                                       16 MHz

Schema

Arduino-UNO-rev3 ANEXA 12

Putere

Arduino Uno poate fi alimentat prin conexiunea USB sau cu o sursă de alimentare externă. Externe (non-USB) de putere poate veni fie de la un adaptor AC-DC sau baterie. Adaptorul poate fi conectat prin introducerea mufei pozitive 2.1mm în mufa de alimentare a plăcii. Conductorul de la o baterie poate fi introdus în GND .

Placa poate funcționa la o sursă externă de alimentare de 6 si 20 de V.Dacă este furnizat cu mai puțin de 7V, însă PIN-5V poate furniza mai puțin de 5 V și placa poate fi instabilă. Dacă utilizați mai mult de 12V, regulatorul de tensiune se poate supraîncălzi și poate deteriora placa. Intervalul recomandat este de 7-12V. [7]

Pinii de alimentare sunt după cum urmează:

VIN.Tensiunea de intrare la placă Arduino atunci când se utilizează o sursă de alimentare externă (spre deosebire de 5V prin conexiunea USB sau alte surse de energie stabilită)..

Pin 5V.Regulator de tensiune utilizat pentru alimentarea microcontrolerului si a altor component de pe placa de dezvoltare.

3.3V. O sursă de 3.3 V generată de catre regulatorul de tensiune de pe placă.Absoarbe un curent maxim de 50 mA.

GND. Pini de masă.

IOREF. Acest pin de pe placa Arduino oferă tensiune de referință cu care funcționează microcontrolerul.O placă configurată corect poate citi tensiunea de pe pinul IOREF și selectează sursa de alimentare corespunzătoare.

Memorie

ATmega328 are 32 KB. Ea are, de asemenea, 2 KB de SRAM (Static Random Access Memory) și 1 KB de EEPROM (Electrically Erasable Programmable Read-Only Memory)

Intrarile și Ieșirile

Fiecare dintre cei 14 pini digitali de pe Uno pot fi utilizați ca intrare sau ca ieșire, folosind funcțiile  pinMode(), digitalWrite(),digitalRead() . Ele funcționează la 5V. Fiecare pin poate oferii sau primii un curent maxim de 40 mA și are un rezistor de 20-50 kOhms. În plus, unii pini au funcții specificate:

Serial: 0 (RX) și 1 (TX). Folosit pentru a primi (RX) și transmite (TX) date seriale TTL. Acești pini sunt conectați la pinii corespunzători din ATmega8U2 USB-serial TTL cip.

Întreruperi externe:. Pinii 2 și 3 pot fi configurați pentru a declanșa o întrerupere la o valoare scăzută, la o creștere sau care se încadrează, sau o schimbare în valoare. Utilizand funcția attachInterrupt()

PWM (Pulse-width modulation): Pinii 3, 5, 6, 9, 10, și 11 Furnizarea 8 biți PWM la ieșire cu funcția analogWrite() 

SPI (Serial Peripheral Interface ): 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Acești pini sprijină comunicarea SPI folosind biblioteca SPI.

LED-uri:. 13 Există un LED conectat la pinul digital 13 .Atunci când pin-ul este de mare valoare, LED-ul este ON, atunci când pin-ul are o valoare scăzută, este oprit. Uno are 6 intrări analogice, etichetate A0 prin A5, fiecare dintre acestea oferă 10 biți de rezoluție .

TWI( Two Wire Interface) A4 sau pin SDA(linie de date) și pin-ul A5 sau SCL(linie de ceas).

Există o serie de alți pini pe placă:

AREF. Tensiune de referință pentru intrări analogice. Folosit cu funcția analogReference()

RESET. Folosit pentru a reseta microcontrolerul.

Comunicare

Arduino Uno are o serie de facilități pentru a comunica cu un computer, un alt Arduino, sau alte microcontrolere.ATmega328 oferă UART TTL (5V) de comunicație serială, care este disponibil pe pinii digitali 0 (RX) și 1 (TX). Un microcontroler ATmega16U2 pe canalele plăcii comunică serial prin USB și apare ca un port COM virtual pentru software-ul de pe computer. Software-ul Arduino include un monitor de serie care permite date de tip text simplu pentru a fi trimise la și de la placa Arduino.

LED-urile RX și TX de pe placa vor clipi atunci când datele sunt transmise prin intermediul cipului USB serial și conexiunea USB la calculator .

Reset

Arduino Uno este proiectat într-un mod care îi permite să fie resetat de software care se execută pe un computer conectat. Una dintre liniile de control al fluxului de hardware (DTR) ale ATmega8U2/16U2 este conectat la linia de resetare a ATmega328 printr-un condensator de 100 nF. Când această linie este setată, linia de resetare scade suficient de mult timp pentru a reseta cipul. Software-ul Arduino utilizează această capacitate pentru a vă permite să încărcați codul prin simpla apăsare a butonului de încărcare în mediul Arduino.

Uno conține o urmă care poate fi tăiat pentru a dezactiva auto-resetare. Plăcuțele de pe fiecare parte a urmelor poate fi lipite împreună pentru a re-activa aceasta. Este etichetat "RESET-EN". ,Avem, de asemenea, posibilitatea de a dezactiva auto-resetarea prin conectarea unui rezistor de 110 ohm de la 5V la linia de resetare.

USB protecție la supracurent Arduino Uno are o serie de siguranțe resetabil care protejează porturile USB ale computerului la suprasarcină. Deși cele mai multe calculatoare asigura protecția internă a acestora, siguranța oferă un strat suplimentar de protecție.

4.1.3. Placa Arduino GSM

Generalități

Placa Arduino GSM se conectează la Internet prin intermediul rețelei fără fir GPRS(General Packet Radio Service) care este un serviciu de pachete pentru comunicații mobile de date. Doar conectați acest modul la placa Arduino, introduceti o cartelă SIM de la un operator de servicii mobile și urmați câteva instrucțiuni simple pentru a începe.De asemenea, puteți efectua / primi apeluri vocale (veți avea nevoie de un difuzor extern și de microfon) si trimite / primi mesaje SMS. [8]

Pentru a putea utiliza placa Arduino GSM se tine cont de:

Necesitatea unei plăci Arduino .

Tensiune de lucru 5V.

Legăturile cu Arduino Uno pe pinii 2, 3 (​​Serial Software) și 7 (resetare).

Descriere

Placa Arduino GSM va permite conectarea la internet, efectuează / primește apeluri vocale și trimite / primește mesaje SMS. Placa folosește un modem M10 radio . Modemul transferă date de la un port serial la rețeaua GSM. Acesta execută operațiuni printr-o serie de comenzi .

Biblioteca GSM are un număr mare de metode de comunicare cu placa. Aceasta folosește pinii digitali 2 și 3 pentru comunicarea serială software cu M10. Pinul 2 este conectat la TX PIN M10 și pinul 3 la pinul acestuia RX. PWRKEY pinul modemului este conectat la Arduino prin pinul 7.

M10 este un modem radio care funcționează la frecvențe GSM850MHz, GSM900MHz, DCS1800MHz și PCS1900MHz. Aceasta susține TCP / UDP (Transmission Control Protocol / User Datagram Protocol) și protocoale HTTP printr-o conexiune GPRS. GPRS descarca date și le transfera cu o viteză maximă de 85.6 kbps. Pentru interfața cu rețeaua mobilă, placa are nevoie de o cartelă SIM de la un operator de rețea.

Alimentare

Se recomandă ca placa să fie alimentat cu o sursă de alimentare externă, ​​care poate oferi între 700mA și 1000mA. Pornirea unui Arduino și o placă GSM de la o conexiune USB nu este recomandată, deoarece USB nu poate furniza curentul necesar pentru modem atunci când este utilizat.

Indicatori de pe placă:

GSM conține LED-uri de stare:

On : spune ca placa este alimentată.

Status: se aprinde atunci când modemul este alimentat și se transferă date la / de la rețeaua GSM / GPRS.

Net: clipește atunci când modemul comunică cu rețeaua radio.

Există două butoane mici pe placă . Butonul "Reset" este legat de resetarea pinilor Arduino. Atunci când este apăsat, acesta va reporni schița. Butonul "Power" este conectat la modemul M10 și va alimenta modemul.

Biblioteca GSM

Biblioteca face abstracție de comunicarea la nivel scăzut între modem și cartela SIM. Ea se bazează pe biblioteca Serial Software pentru comunicarea între Moden și Arduino. De obicei, fiecare comandă individuală face parte dintr-o serie mai mare de comenzi care sunt necesare pentru a executa o anumită funcție. Biblioteca poate primi, de asemenea, informații și ți le poate returna atunci când este necesar.

Structura bibliotecii

Ca biblioteca să permită mai multe tipuri de funcționalitate, există un număr de clase diferite.

Clasa GSM are grijă de comenzi la modem radio. Aceasta se ocupă de aspectele de conectivitate ale plăcii și înregistrează sistemul în infrastructura GSM.

De gestionare a apelurilor de voce, gestionat de clasa GSMVoiceCall.

Trimite / primește mesaje SMS, gestionate de clasa GSM_SMS.

GPRSClass este pentru conectarea la Internet.

GSMClient include implementări pentru un client, similare pentru bibliotecile Ethernet și WiFi.

GSMServer include implementări pentru un server, similare pentru bibliotecile Ethernet și WiFi.

Un număr de clase de utilitate, cum ar fi GSMScanner și GSMModem

Trimite SMS

Această schiță trimite un mesaj SMS de la un Arduino cu o placă GSM conectată. Folosind monitorul, în care veți introduce numărul cu care să se conecteze și mesajul text care va fi trimis.

Hardware necesar :

Placa Arduino.

Arduino + placa Telefonica GSM / GPRS.

cartelă SIM.

Imaginea de sus a placii GSM Arduino

În primul rând, se importă biblioteca GSM. #include <GSM.h>

Cartelele SIM pot avea un cod PIN care permite funcționarea lor. Definiți codul PIN pentru cartela SIM. În cazul în care SIM-ul nu are nici un cod PIN, puteți să-l lăsați necompletat:

#define PINNUMBER ""

Inițializati clasele pe care ai de gând să le utilizezi. In acest caz avem nevoie atât de GSM și clasa GSM_SMS.

GSM gsmAccess; 
GSM_SMS sms;

În configurare, realizati o conexiune seriala la computer. După deschiderea conexiunii, trimite un mesaj care spune ca applicația a început.

void setup(){
  Serial.begin(9600); 
  Serial.println("SMS Messages Sender");

Creați o variabilă locala pentru a urmări starea conexiunii. boolean notConnected = true;

Conectarea la rețea se face prin apel gsmAccess.begin()Este nevoie de PINul cartelei SIM ca un argument. Prin plasarea aceasteia într-o buclă while(), puteți verifica continuu starea conexiunii. În cazul în care modemul se conectează gsmAccess()va întoarce GSM_READY. Utilizați acest lucru ca pe un steag pentru a seta variabila notConnected în  true sau false. Odată conectat, restul de configurare va rula.

while(notConnected)
  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = false;
    else
    {
      Serial.println("Not connected");
      delay(1000);
    }
  }

Serial.println("GSM initialized.");
}

Creaza o funcție numită readSerialde tip int. Veți folosi aceasta pentru a repeta prin intrarea serial de la monitor, stocarea numărul pe care doriți să trimiteți un SMS și mesajul care va fi trimis. Ar trebui să accepte un char ca un argument.

int readSerial(char result[])
{

Creati o variabilă pentru a numara elementele din memoria tampon serial și începe o buclă while care se va executa continuu.

int i = 0;
  while(1)
  {

Atâta timp cât există informații pe portul serial disponibil, citiți datele într-o variabilă numită inChar.

while (Serial.available() > 0)
    {
      char inChar = Serial.read();

Dacă caracterul citit este o linie nouă se termină gama ,șterge memoria tampon serial și iese din funcție.

if (inChar == '\n')
      {
        result[i] = '\0';
        Serial.flush();
        return 0;
      }

Dacă caracterul de intrare este un caracter ASCII, altul decât o linie nouă sau transportul retur, adaugă la gama existentă și creșterea indexul. Inchide bucla while si funcția.

if(inChar!='\r')
      {
        result[i] = inChar;
        i++;
      }

În bucla loop, creați o gamă Char numită remoteNumber care să dețină numărul la care doriți să trimiteți un SMS.. Apelați funcția readSerial pe care tocmai ați creat-o, și treceți remoteNumber ca argument. Când readSerial se execută, se va popula remoteNumber cu numărul la care doriți să trimiteți mesajul.

Serial.print("Enter a mobile number: ");
  char remoteNumber[20];
  readSerial(remoteNumber);
  Serial.println(remoteNumber);

Creați un nou tablou char numit txtMsg. Acesta va avea conținutul SMS-ului.

Serial.print("Now, enter SMS content: ");
  char txtMsg[200];
  readSerial(txtMsg);

Apelează sms.beginSMS()dați remoteNumber  pentru a începe trimiterea mesajului sms.print()pentru a trimite mesajul, și sms.endSMS() pentru a finaliza procesul.

Serial.println("SENDING");
  Serial.println();
  Serial.println("Message:");
  Serial.println(txtMsg);

  sms.beginSMS(remoteNumber);
  sms.print(txtMsg);
  sms.endSMS(); 
  Serial.println("\nCOMPLETE!\n");
}

}

Odată ce codul este încărcat, deschideți monitorul. Asigurați-vă că monitorul de serie este setat pentru a trimite doar un caracter linie nouă la întoarcere. Când vi se solicită să introduceți numărul pe care doriți să apelați, introduceți cifrele și apăsați întoarcerea. Veți fi rugat să introduceți mesajul dvs.. După ce ați scris apasati din nou pentru a-l trimite.

ANEXA 13

4.2.Schema bloc a sistemului:

Placa Arduino Uno este perfect compatibilă din punct de vedere hardware cu placa GSM , cele doua sunt conectate astfel:

Senzorul de puls se va conecta la placa Arduino printr-un cablu panglică codat după culori:

Cablul roșu =3V..5V;

Cablul negru= GND;

Cablul mov=semnal A0 ;

Senzorul de puls este un senzor optic ,fotodetector, preia lumina reflectată de la LED-ul plasat în mijlocul său ,în funcție de percepția deformărilor pielii la bătăile inimii.

Așadar intrările vor fi valorile pulsului, iar ieșirea va fi SMS-ul care va fi trimis către clinică.

#include <GSM.h>

#define PINNUMBER ""

GSM gsmAccess;

GSM_SMS sms;

// Variabile

unsigned long time; // Pastreaza timpul curent pentru calcularea nr de batai

unsigned long lastTime; // Folosit pentru a calcula timpul intre batai

int Sensor; // Pastreaza citirile analogice curente ale senzorului

int beats[10]; // Timpul intre batai cu scopul de a calcula nr de batai pe minut

int beatCounter = 0; // Folosit pentru a pastra pozitia in multimea batailor

int QuantifiedSelf; // Folosit pentru a pastra valoarea batailor inimii (BPM)

// PIN

int PulseSensor = 5; // Senzorul de puls conectat la pinul analog 5

void setup()

{

// initializam comunicarea seriala

Serial.begin(9600);

{

Serial.begin(9600); // setam baud rate

lastTime = millis(); // initializam variabila lastTime

}

Serial.println("SMS Messages Sender");

// statutul conexiunii

boolean notConnected = true;

// Start GSM shield

// Verificam daca cartela SIM are pin(nu va avea!)

while(notConnected)

{

if(gsmAccess.begin(PINNUMBER)==GSM_READY)

notConnected = false;

else

{

Serial.println("Not connected");

delay(1000);

}

}

Serial.println("GSM initialized");

}

void loop()

{

Serial.print("Enter a mobile number: ");

char remoteNumber[20]; // numarul de telefon la care sa trimitem sms

readSerial(remoteNumber);

Serial.println(remoteNumber);

// sms text

Serial.print("SMS content:" BPM);

// Aceasta functie va intoarce o valoare pentru bataile inimii(BPM)

int getBPM(){

int dummy;

int mean;

boolean done = false;

// o rutina simpla ce va aranja valorile in vectorul de batai de la cel mai mic la cel mai mare

while(done != true){

done = true;

for (int j=0; j<9; j++){ // o interschimbare simpla ce va sorta numerele de la cel mai mic la cel mai mare

if (beats[j] > beats[j + 1]){ // sortarea numerelor se va face aici

dummy = beats[j + 1];

beats [j+1] = beats[j] ;

beats[j] = dummy;

done = false;

}

}

char txtMsg[200];

readSerial(txtMsg);

Serial.println("Message");

Serial.println();

Serial.println("Sent:");

Serial.println(txtMsg);

// trimitem mesajul

sms.beginSMS(remoteNumber);

sms.print(txtMsg);

sms.endSMS();

Serial.println("\nCOMPLETE!\n");

}

/*

Citim intrarea seriala

*/

int readSerial(char result[])

{

int i = 0;

while(1)

{

while (Serial.available() > 0)

{

char inChar = Serial.read();

if (inChar == '\n')

{

result[i] = '\0';

Serial.flush();

return 0;

}

if(inChar!='\r')

{

result[i] = inChar;

i++;

}

}

}

4.3 Abordare sistemică:

Sistemul are scopul de a monitoriza un set de mărimi de intrare, puls, nivelul de oxigen în sânge (SpO2),fluxul de aer (respirație),temperatura corpului,răspunsul galvanic al pielii (GSR – transpirație),tensiunii arteriale (tensiometru),poziția pacientului (accelerometru) și senzorul de mușchi / eletromyography (EMG), iar la depașirea unor anumite praguri, care sunt parametrii constant, de referință, sistemul va avea ca ieșire un SMS.

Aceste proguri sunt stabilite în funcție de profilul fiecărui pacient în parte, în funcție de vârstă, sex, activitate fizică,condiții psihice. Dacă pulsul unui pacient de o anumită vârstă este unul destul de ridicat și pragurile sunt setate pentru acestă persoană, însă senzorul de puls este montat unei alte persoane de o altă vârstă, sex ,acesta va trimite alarme. Deci pragurile trebuiesc stabilite individual.

Alarma-SMS=f(un set de mărimi de intrare,A,B,C,D…. ce corespund pulsului, nivelului de oxigen în sânge (SpO2),fluxului de aer (respirație),temperaturii corpului,răspunsului galvanic al pielii (GSR – transpirație),tensiunii arteriale (tensiometru),poziției pacientului și un set de praguri,P1,P2,P3,P4….stabilite pentru fiecare pacient în parte).

Astfel trimiterea unei alarme este în funcție de valoarea marimilor de intrare și de pragurile care se impun.

4.4. Schema logică a procesului:

Cu ajutorul senzorului de puls preluăm valoarea acestuia de la pacient.Acesta este reținut de starea S0.Dacă valoarea acestuia este în limite normale,atunci sistemul monitorizează în continuare valorile acestuia , dacă valoarea acestuia este alarmantă,atunci va trimite SMS către clinică.

Interpretarea SMS-ului din starea S1 se face astfel,dacă acesta conține informații grave, atunci medicul va intervenii telephonic pentru a oferii sfaturi utile până la sosirea echipei de medici sau încearcă să îmbunatațească starea pacientului liniștindul, acesta simțindu-se în siguranță atunci când este în legătură cu un medic.

Dacă SMS-ul conține informații foarte grave se intervine direct în cel mai scurt timp posibil prin deplasarea de urgență a medicilor în locul unde pacientul se află. După rezolvarea problemei , procesul se reia.

Stabilirea lmitelor de variație a pulsului

Pentru adulțiii care au peste 18 ani, un ritm cardiac de repaus este între 60 și 100 de bătăi pe minut, acest lucru depinzând de condiția fizică a persoanei în cauză. Pentru copiii cu vârste cuprinse între 6 și 15 ani, ritmul cardiac de repaus este între 70 și 100 de bătăi pe minut.

Sportivii și cei care au o condiție fizică excelentă pot avea un ritm cardiac de 40 de bătăi pe minut.

Ritmul cardiac depinde și de sexul pacientului, la o femeie ritmul cardiac poate fi mai mic decat în cazul unui bărbat, dar nu este un lucru general valabil.

Cele mai comune calcule pentru ritmul cardiac maxim sunt:

220-vârsta.

Exemplu: Pentru o persoană de 50 de ani => 220-50=170

206.9-(0,67 * vârsta).

Exemplu: Pentru o persoană de 50 de ani => 0.67×50= 33.5 și 206.9-33.5=173.4

Cea de-a doua variantă este mai sigură, dar prima este mai ușoară și mai ușor de reținut.

În funcție de vârstă care ar putea fi ritmul cardiac țintă (60-85%) si ritmul cardiac maxim.

la vârsta de 5 de ani – ritmul cardiac țintă 129 – 182 – ritmul cardiac maxim 215

la vârsta de 10 de ani – ritmul cardiac țintă 126 – 178 – ritmul cardiac maxim 210

la vârsta de 15 de ani – ritmul cardiac țintă 123 – 174 – ritmul cardiac maxim 205

la vârsta de 20 de ani – ritmul cardiac țintă 120 – 170 – ritmul cardiac maxim 200

la vârsta de 25 de ani – ritmul cardiac țintă 117 – 166 – ritmul cardiac maxim 195

la vârsta de 30 de ani – ritmul cardiac țintă 114 – 162 – ritmul cardiac maxim 190

la vârsta de 35 de ani – ritmul cardiac țintă 111 – 157 – ritmul cardiac maxim 185

la vârsta de 40 de ani – ritmul cardiac țintă 108 – 153 – ritmul cardiac maxim 180

la vârsta de 45 de ani – ritmul cardiac țintă 105 – 149 – ritmul cardiac maxim 175

la vârsta de 50 de ani – ritmul cardiac țintă 102 – 145 – ritmul cardiac maxim 170

la vârsta de 55 de ani – ritmul cardiac țintă 99 – 140 – ritmul cardiac maxim 165

la vârsta de 60 de ani – ritmul cardiac țintă 96 – 136 – ritmul cardiac maxim 160

la vârsta de 65 de ani – ritmul cardiac țintă 93 – 132 – ritmul cardiac maxim 155

la vârsta de 70 de ani – ritmul cardiac țintă 90 – 123 – ritmul cardiac maxim 150.

Concluzii

În urma realizarii acestui proiect de monitorizare a funcțiilor vitale ale unui pacient se pot trage următoarele concluzii:

Are drept scop îmbunătățirea sănătății pacienților prin oferirea serviciilor de cea mai buna calitate de către sistemul medical;

Majoritatea sistemelor monitorizează parametrii vitali de tipul: ritm cardiac, saturație de oxigen din sânge și presiune arterială, puține își propun monitorizarea ritmului respirator sau a temperaturii corpului;

În cazul acestei lucrari sistemul de telemonitorizare prezentat este folosesit doar pentru alarmare, alte sisteme au intergrați algoritmi evoluați de procesare a semnalelor în vederea clasificării acestora;

Pentru transmisia parametrilor monitorizați de la dispozitivele de prelevare la centrul de telemonitorizare am ales mediul GSM, dar alte sisteme folosesc Internet-ul (prin Ethernet, WiFi );

Sistemul prezentat nu își propune elaborarea unui diagnostic pentru pacientul monitorizat;

Monitorizarea pacientilor are drept scop micșorarea numarului de zile de spitalizare astfel scad costurile medicale pentru un pacient;

Cu ajutorul acestui sistem se poate avea în vedere urmarirea efectului unui tratament administrat pacientului;

O beneficiu foarte mare este dat de aflarea informațiilor în timp real și informarea simultană a pacientului și a echipei de medici sau furnizori de servicii medicale, numai in cazul alarmelor;

Prin folosirea acestui sistem se reduc erorile medicale prin posibilitatea doctorului de a cere o părere unui alt medic cu privire la diagnosticarea și tratamentul unui pacient;

Șansă mai mare de supraviețuire a pacienților aflați în situații de urgență în zone în care nu există medici specialiști prin acces la consultații de specialitate;

Un alt beneficiu ,financiar ,este reducerea cheltuielilor pentru transportarea pacienților de la un spital la altul;

Bibliografie

***http://en.wikipedia.org/wiki/Remote_patient_monitoring

***http://en.wikipedia.org/wiki/Telehealth

***http://ro.wikipedia.org/wiki/Bioinginerie_medical%C4%83

***http://en.wikipedia.org/wiki/Medical_equipment

***http://www.cooking-hacks.com/documentation/tutorials/ehealth-biometric-sensor-platform-arduino-raspberry-pi-medical

***http://moodle.umft.ro/login/index.php

***http://arduino.cc/en/Main/ArduinoBoardUno

***http://arduino.cc/en/Main/ArduinoGSMShield

***http://www.sfatulmedicului.ro/Educatie-pentru-sanatate/pulsul-si-bataile-normale-ale-inimii_11323

***http://pulsesensor.myshopify.com/pages/pulse-sensor-amped-arduino-v1dot1

***http://ro.wikipedia.org/wiki/Medicin%C4%83

***http://www.robofun.ro/arduino

*** http://moodle.umft.ro/mod/wiki/view.php?pageid=243

Cristian Bucur ,(curs) Electronică medicală ,Editura Universității Petrol-Gaze din Ploiești

Mihai Hotinceanu,Principiile fizice ale senzorilor și traductoarelor,editia a 2-a ,revizuită și adăugată,Editura Universitătii Petrol-Gaze din Ploiești, 2010

Cristian Bucur,Circuite electronice în comutație,Editura Universității Petrol-Gaze din

Ploiesti,2010

Cristian Rotariu, Teză de doctorat MONITORIZAREA DE LA DISTANȚĂ A PARAMETRILOR VITALI FOLOSIND SISTEME ÎNGLOBATE, Universitatea tehnică “GHEORGHE ASACHI” Iași,2010

Elena Poenaru, Telemedicina și implicațiile ei în sistemul medical actual, Universitatea de medicină și farmacie “CAROL DAVILA” București,2012

Călin Simu, Teză de doctorat CONTRIBUȚII LA TEHNICILE DE PRELUCRARE A SEMNALULUI ELECTROCARDIOGRAFIC, Universitatea "POLITEHNICA" Timișoara,2010

ANEXE

Funcțiile bibliotecii

Puls si oxigen în sânge-ANEXA 1

inițializarea

Acest senzor utilizează întreruperi și este necesar să se includă o bibliotecă specială atunci când aveți de gând să-l folositi.

#include < PinChangeInt.h >

După trebuie să atașați la întreruperi codul dvs. pentru a obține date de la senzor. Senzorul va întrerupe procesul de a actualiza datele stocate în variabile private.

PCintPort::attachInterrupt(6, readPulsioximeter, RISING);

PIN-ul digital 6 din Arduino este PIN în care senzorul trimite întreruperea și funcția readpulsioximeter va fi executata.

void readPulsioximeter(){

cont ++;

if (cont == 50) { // Ia doar de 50 de măsuri pentru a reduce latenta eHealth.readPulsioximeter();

cont = 0;

}

Înainte de a începe utilizarea senzorului SP02, trebuie inițializat. Utilizați următoarea funcția în configurare pentru a configura o serie de parametri de bază și pentru a începe comunicarea între Arduino / RaspberryPi și senzorul.

Citirea senzorului

Pentru a citi valoarea curentă a senzorului, folosiți următoarea funcție.

eHealth.readPulsioximeter();

Această funcție va stoca valorile senzorului in variabile particulare.

baze de date

Pentru a vizualiza datele pe care le pot obține valorile senzorului stocate în variabila private folosind următoarele funcții.

{

int SPO2 = eHealth.getOxygenSaturation()

int BPM = eHealth.getBPM()

}

Arduino

Încărcați codul următor pentru a vedea date pe monitor

* eHealth sensor platform for Arduino and Raspberry from Cooking-hacks.

*

* Description: "The e-Health Sensor Shield allows Arduino and Raspberry Pi

* users to perform biometric and medical applications by using 9 different

* sensors: Pulse and Oxygen in Blood Sensor (SPO2), Airflow Sensor (Breathing),

* Body Temperature, Electrocardiogram Sensor (ECG), Glucometer, Galvanic Skin

* Response Sensor (GSR – Sweating), Blood Pressure (Sphygmomanometer) and

* Patient Position (Accelerometer)."

*

* In this example we read the values of the pulsioximeter sensor

* and we show this values in the serial monitor

*

* Copyright (C) 2012 Libelium Comunicaciones Distribuidas S.L.

* http://www.libelium.com

*

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

*

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

*

* You should have received a copy of the GNU General Public License

* along with this program. If not, see <http://www.gnu.org/licenses/>.

*

* Version 2.0

* Author: Ahmad Saad & Luis Martin

#include <PinChangeInt.h>

#include <eHealth.h>

int cont = 0;

void setup() {

Serial.begin(115200);

eHealth.initPulsioximeter();

// Atașați instrucțiunile de utilizare a pulsioximetro.

PCintPort::attachInterrupt(6, readPulsioximeter, RISING);

}

void loop() {

Serial.print("PRbpm : ");

Serial.print(eHealth.getBPM());

Serial.print(" %SPo2 : ");

Serial.print(eHealth.getOxygenSaturation());

Serial.print("\n");

Serial.println("=============================");

delay(500);

}

// Includeți întotdeauna acest cod atunci când utilizați senzorul pulsioximeter

//=========================================================================

void readPulsioximeter(){

cont ++;

if (cont == 50) { // Ia doar 50 de măsuri pentru a reduce latenta

eHealth.readPulsioximeter();

cont = 0;

}

}

Încărcați codul de Arduino .Aici este interfața cu utilizatorul.

Electrocardiograma (ECG)-ANEXA 2

Acest ECG returnează o valoare analogica în volți (0-5) pentru a reprezenta forma de undă ECG.

float ECGvolt = eHealth.getECG();

Arduino

Încărcați codul următor pentru a vedea date pe monitor:

* eHealth sensor platform for Arduino and Raspberry from Cooking-hacks.

*

* Description: "The e-Health Sensor Shield allows Arduino and Raspberry Pi

* users to perform biometric and medical applications by using 9 different

* sensors: Pulse and Oxygen in Blood Sensor (SPO2), Airflow Sensor (Breathing),

* Body Temperature, Electrocardiogram Sensor (ECG), Glucometer, Galvanic Skin

* Response Sensor (GSR – Sweating), Blood Pressure (Sphygmomanometer) and

* Patient Position (Accelerometer)."

* In this example we read the values in volts of ECG sensor and show

* these values in the serial monitor.

* Copyright (C) 2012 Libelium Comunicaciones Distribuidas S.L.

* http://www.libelium.com

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

*

* You should have received a copy of the GNU General Public License

* along with this program. If not, see <http://www.gnu.org/licenses/>.

*

* Version 2.0

* Author: Luis Martin & Ahmad Saad

*/

#include <eHealth.h>

// Rutina de instalare se execută o dată când apăsați resetare:

void setup() {

Serial.begin(115200);

}

// Rutina bucla trece peste si peste din nou pentru totdeauna

void loop() {

float ECG = eHealth.getECG();

Serial.print("ECG value : ");

Serial.print(ECG, 2);

Serial.print(" V");

Serial.println("");

delay(1); // așteptați pentru o milisecundă

Senzorul debit de aer, respiratie-ANEXA 3

Senzorul de debit de aer este conectat la Arduino / RasberryPi pe o intrare analog și returnează valoari intre 0-1024. Cu următoarele funcții puteți obține această valoare în mod direct și puteti obtine o formă de undă pe monitor.

int airFlow = eHealth.getAirFlow();

eHealth.airFlowWave(air);

Arduino

Încărcați codul următor pentru a vedea date pe monitor:

* eHealth sensor platform for Arduino and Raspberry from Cooking-hacks.

*

* Description: "The e-Health Sensor Shield allows Arduino and Raspberry Pi

* users to perform biometric and medical applications by using 9 different

* sensors: Pulse and Oxygen in Blood Sensor (SPO2), Airflow Sensor (Breathing),

* Body Temperature, Electrocardiogram Sensor (ECG), Glucometer, Galvanic Skin

* Response Sensor (GSR – Sweating), Blood Pressure (Sphygmomanometer) and

* Patient Position (Accelerometer)."

*

* In this example we read the value of the air flow sensor

* and print the air Flow wave form in the serial monitor.

*

* Copyright (C) 2012 Libelium Comunicaciones Distribuidas S.L.

* http://www.libelium.com

*

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

*

* You should have received a copy of the GNU General Public License

* along with this program. If not, see <http://www.gnu.org/licenses/>.

*

* Version 2.0

* Author: Luis Martin & Ahmad Saad

*/

#include <eHealth.h>

// Rutina de instalare se execută o dată când apăsați resetare:

void setup() {

Serial.begin(115200);

}

// rutina bucla trece peste si peste din nou pentru totdeauna:

void loop() {

int air = eHealth.getAirFlow();

eHealth.airFlowWave(air);

}

Încărcați codul și urmăriți pe monitor.Aici este interfața cu utilizatorul:

Temperatura corpului-ANEXA 4

Temperatura corporală poate fi luată de către o funcție simpla. Această funcție returnează un rezultat cu ultima valoare de temperatură măsurată de către Arduino / RasberryPi.

float temperature = eHealth.getTemperature();

Arduino

Încărcați codul următor pentru a vedea date pe monitor:

* eHealth sensor platform for Arduino and Raspberry from Cooking-hacks.

* Description: "The e-Health Sensor Shield allows Arduino and Raspberry Pi

* users to perform biometric and medical applications by using 9 different

* sensors: Pulse and Oxygen in Blood Sensor (SPO2), Airflow Sensor (Breathing),

* Body Temperature, Electrocardiogram Sensor (ECG), Glucometer, Galvanic Skin

* Response Sensor (GSR – Sweating), Blood Pressure (Sphygmomanometer) and

* Patient Position (Accelerometer)."

*

* In this example we use the temperature sensor to measure the

* corporal temperature of the body.

*

* Copyright (C) 2012 Libelium Comunicaciones Distribuidas S.L.

* http://www.libelium.com

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

* You should have received a copy of the GNU General Public License

* along with this program. If not, see <http://www.gnu.org/licenses/>.

* Version 2.0

* Author: Luis Martin & Ahmad Saa

#include <eHealth.h>

// rutina de instalare se execută o dată când apăsați resetare:

void setup() {

Serial.begin(115200);

}

// rutina bucla trece peste si peste din nou pentru totdeauna:

void loop() {

float temperature = eHealth.getTemperature();

Serial.print("Temperature (ºC): ");

Serial.print(temperature, 2);

Serial.println("");

delay(1000); // așteptați pentru o secundă

}

Încărcați codul și urmăriți pe monitor. Aici este interfața cu utilizatorul:

Tensiunea arterial-ANEXA 5

Pentru a măsura în mod corect, este important să se mențină brațul și manșeta în poziția corectă. Nu face mișcări bruște caci măsurarea nu va fi de încredere.

Unii parametri trebuie să fie inițializati pentru a începe să utilizați senzorul de presiune arterială (tensiometru). Funcția următoare initializeaza unele variabile și citește datele tensiometrului.

{

eHealth.readBloodPressureSensor();

Serial.begin(115200);

}

Cantitatea de citire a datelor este accesibila cu o altă funcție publică.

{ uint8_t numberOfData = eHealth.getBloodPressureLength();

Serial.print(F("Number of measures : "));

Serial.println(numberOfData, DEC);

delay(100);

}

Următoarele funcții returneaza valorile tensiunii arteriale sistolice și diastolice măsurate de tensiometru și stocate în variabilele private ale clasei E-Health.

int systolic = eHealth.getSystolicPressure(1);

int diastolic =eHealth.getDiastolicPressure(1);

Arduino

Încărcați codul următor pentru a vedea date pe monitor:

* eHealth sensor platform for Arduino and Raspberry from Cooking-hacks.

*

* Description: "The e-Health Sensor Shield allows Arduino and Raspberry Pi

* users to perform biometric and medical applications by using 9 different

* sensors: Pulse and Oxygen in Blood Sensor (SPO2), Airflow Sensor (Breathing),

* Body Temperature, Electrocardiogram Sensor (ECG), Glucometer, Galvanic Skin

* Response Sensor (GSR – Sweating), Blood Pressure (Sphygmomanometer) and

* Patient Position (Accelerometer)."

* In this example we are going to get data stored in the blood pressure sensor

* memory and show the result in the serial monitor.

*

* Copyright (C) 2012 Libelium Comunicaciones Distribuidas S.L.

* http://www.libelium.com

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

* You should have received a copy of the GNU General Public License

* along with this program. If not, see <http://www.gnu.org/licenses/> .

* Version 2.0

* Author: Ahmad Saad & Luis Martin

*/

#include <eHealth.h>

void setup()

{

eHealth.readBloodPressureSensor();

Serial.begin(115200);

delay(100);

}

void loop() {

uint8_t numberOfData = eHealth.getBloodPressureLength();

Serial.print(F("Number of measures : "));

Serial.println(numberOfData, DEC);

delay(100);

for (int i = 0; i<numberOfData; i++) {

// Protocolul trimite date în această ordine

Serial.println(F("=========================================="));

Serial.print(F("Measure number "));

Serial.println(i + 1);

Serial.print(F("Date -> "));

Serial.print(eHealth.bloodPressureDataVector[i].day);

Serial.print(F(" of "));

Serial.print(eHealth.numberToMonth(eHealth.bloodPressureDataVector[i].month));

Serial.print(F(" of "));

Serial.print(2000 + eHealth.bloodPressureDataVector[i].year);

Serial.print(F(" at "));

if (eHealth.bloodPressureDataVector[i].hour < 10) {

Serial.print(0); // Numai pentru cel mai bun reprezentare.

}

Serial.print(eHealth.bloodPressureDataVector[i].hour);

Serial.print(F(":"));

if (eHealth.bloodPressureDataVector[i].minutes < 10) {

Serial.print(0);// Numai pentru cel mai bun reprezentare.

}

Serial.println(eHealth.bloodPressureDataVector[i].minutes);

Serial.print(F("Systolic value : "));

Serial.print(30+eHealth.bloodPressureDataVector[i].systolic);

Serial.println(F(" mmHg"));

Serial.print(F("Diastolic value : "));

Serial.print(eHealth.bloodPressureDataVector[i].diastolic);

Serial.println(F(" mmHg"));

Serial.print(F("Pulse value : "));

Serial.print(eHealth.bloodPressureDataVector[i].pulse);

Serial.println(F(" bpm"));

}

delay(20000);

}

Încărcați codul și urmăriți pe monitor. Aici este interfața cu utilizatorul:

Poziția pacientului și căderi-ANEXA 6

Inițializarea senzorul

Înainte de a începe să utilizați senzorul, avem de initializat unii parametri. Utilizați funcția urmatoare pentru a configura senzorul.

{

eHealth.initPositionSensor();

}

Următoarele funcții returnează o valoare care reprezintă poziția corpului stocate în variabilele private ale clasei de E-Health.

{

uint8_t position = eHealth.getBodyPosition();

}

Poziția pacientului

1 == poziția culcat pe spate.

2 == stânga decubit lateral.

3 == decubit lateral Rigth.

4 == pozitia culcat.

5 == stand sau sta poziție.

baze de date

Pentru reprezentarea datelor într-un mod ușor pe monitor, bibliotecă E-Health Arduino / RasberryPi, include o funcție de imprimare.

Serial.print("Current position : ");

uint8_t position = eHealth.getBodyPosition();

eHealth.printPosition(position); }

Arduino

Încărcați codul următor pentru a vedea date pe monitor:

* eHealth sensor platform for Arduino and Raspberry from Cooking-hacks.

* Description: "The e-Health Sensor Shield allows Arduino and Raspberry Pi

* users to perform biometric and medical applications by using 9 different

* sensors: Pulse and Oxygen in Blood Sensor (SPO2), Airflow Sensor (Breathing),

* Body Temperature, Electrocardiogram Sensor (ECG), Glucometer, Galvanic Skin

* Response Sensor (GSR – Sweating), Blood Pressure (Sphygmomanometer) and

* Patient Position (Accelerometer)."

* In this example with the body position sensor we measure

* the current body position of the patient and show it in the serial

* monitor.

* Copyright (C) 2012 Libelium Comunicaciones Distribuidas S.L.

* http://www.libelium.com

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

* You should have received a copy of the GNU General Public License

* along with this program. If not, see <http://www.gnu.org/licenses/> .

*

* Version 0.1

* Author: Ahmad Saad & Luis Martin

*/

#include <eHealth.h>

void setup() {

Serial.begin(115200);

eHealth.initPositionSensor();

}

void loop() {

Serial.print("Current position : ");

uint8_t position = eHealth.getBodyPosition();

eHealth.printPosition(position);

Serial.print("\n");

delay(1000); // așteptați pentru o secundă.

}

Încărcați codul și urmăriți pe monitor. Aici este interfața cu utilizatorul:

Răspuns galvanic al pielii (GSR)-ANEXA 7

Cu aceste funcții simple, putem citi valoarea senzorului. Biblioteca returnează valoarea rezistenței pielii și conductanța pielii.

{

float conductance = eHealth.getSkinConductance();

float resistance = eHealth.getSkinResistance();

float conductanceVol = eHealth.getSkinConductanceVoltage();

}

Arduino

Încărcați codul următor pentru a vedea date pe monitor:

* eHealth sensor platform for Arduino and Raspberry from Cooking-hacks.

*

* Description: "The e-Health Sensor Shield allows Arduino and Raspberry Pi

* users to perform biometric and medical applications by using 9 different

* sensors: Pulse and Oxygen in Blood Sensor (SPO2), Airflow Sensor (Breathing),

* Body Temperature, Electrocardiogram Sensor (ECG), Glucometer, Galvanic Skin

* Response Sensor (GSR – Sweating), Blood Pressure (Sphygmomanometer) and

* Patient Position (Accelerometer)."

*

* In this example we use the skin sensor to measure some

* parameters like the skin resistance and coductance.

*

* Copyright (C) 2012 Libelium Comunicaciones Distribuidas S.L.

* http://www.libelium.com

*

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

*

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

*

* You should have received a copy of the GNU General Public License

* along with this program. If not, see <http://www.gnu.org/licenses/> .

*

* Version 2.0

* Author: Luis Martin & Ahmad Saad

*/

#include <eHealth.h>

// rutina de instalare se execută o dată când apăsați resetare:

void setup() {

Serial.begin(115200);

}

// rutina bucla trece peste si peste din nou pentru totdeauna:

void loop() {

float conductance = eHealth.getSkinConductance();

float resistance = eHealth.getSkinResistance();

float conductanceVol = eHealth.getSkinConductanceVoltage();

Serial.print("Conductance : ");

Serial.print(conductance, 2);

Serial.println("");

Serial.print("Resistance : ");

Serial.print(resistance, 2);

Serial.println("");

Serial.print("Conductance Voltage : ");

Serial.print(conductanceVol, 4);

Serial.println("");

Serial.print("\n");

// așteptați pentru o secundă

delay(1000);

}

Încărcați codul de Arduino și urmăriți monitorul. Aici este interfața cu utilizatorul:

8.Senzor glucometru-ANEXA 8

Cu o funcție simpla, putem citi toate măsuratorile stocate în glucometer și să le arătăm. Funcția trebuie utilizat înainte intilizarea monitorului.

{

eHealth.readGlucometer();

Serial.begin(115200);

}

Arduino

Încărcați codul următor pentru a vedea date pe monitor :

* eHealth sensor platform for Arduino and Raspberry from Cooking-hacks.

* Description: "The e-Health Sensor Shield allows Arduino and Raspberry Pi

* users to perform biometric and medical applications by using 9 different

* sensors: Pulse and Oxygen in Blood Sensor (SPO2), Airflow Sensor (Breathing),

* Body Temperature, Electrocardiogram Sensor (ECG), Glucometer, Galvanic Skin

* Response Sensor (GSR – Sweating), Blood Pressure (Sphygmomanometer) and

* Patient Position (Accelerometer)."

* In this example we are going to get data stored in the glucometer

* memory and show the result in the serial monitor.

* Copyright (C) 2012 Libelium Comunicaciones Distribuidas S.L.

* http://www.libelium.com

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

* You should have received a copy of the GNU General Public License

* along with this program. If not, see <http://www.gnu.org/licenses/> .

* Version 2.0

* Author: Ahmad Saad & Luis Martin

*/

#include <eHealth.h>

void setup() {

eHealth.readGlucometer();

Serial.begin(115200);

delay(100);

}

void loop() {

uint8_t numberOfData = eHealth.getGlucometerLength();

Serial.print(F("Number of measures : "));

Serial.println(numberOfData, DEC);

delay(100);

for (int i = 0; i<numberOfData; i++) {

/ / Protocolul trimite date în această ordine

Serial.println(F("=========================================="));

Serial.print(F("Measure number "));

Serial.println(i + 1);

Serial.print(F("Date -> "));

Serial.print(eHealth.glucoseDataVector[i].day);

Serial.print(F(" of "));

Serial.print(eHealth.numberToMonth(eHealth.glucoseDataVector[i].month));

Serial.print(F(" of "));

Serial.print(2000 + eHealth.glucoseDataVector[i].year);

Serial.print(F(" at "));

if (eHealth.glucoseDataVector[i].hour < 10) {

Serial.print(0); // Numai pentru cel mai bun reprezentare.

}

Serial.print(eHealth.glucoseDataVector[i].hour);

Serial.print(F(":"));

if (eHealth.glucoseDataVector[i].minutes < 10) {

Serial.print(0);// Numai pentru cel mai bun reprezentare.

}

Serial.print(eHealth.glucoseDataVector[i].minutes);

if (eHealth.glucoseDataVector[i].meridian == 0xBB)

Serial.println(F(" pm"));

else if (eHealth.glucoseDataVector[i].meridian == 0xAA)

Serial.println(F(" am"));

Serial.print(F("Glucose value : "));

Serial.print(eHealth.glucoseDataVector[i].glucose);

Serial.println(F(" mg/dL"));

}

delay(20000);

Încărcați codul de Arduino și urmăriți monitorul. Aici este interfața cu utilizatorul:

9.Electromiograma (EMG)-ANEXA 9

Acest EMG returnează o valoare analogica în volți pentru a reprezenta forma de undă EMG. float EMG = eHealth.getEMG();

Arduino

Încărcați codul următor pentru a vedea datele pe monitor:.

* eHealth sensor platform for Arduino and Raspberry from Cooking-hacks.

* Description: "The e-Health Sensor Shield allows Arduino and Raspberry Pi

* users to perform biometric and medical applications by using 9 different

* sensors: Pulse and Oxygen in Blood Sensor (SPO2), Airflow Sensor (Breathing),

* Body Temperature, Electrocardiogram Sensor (ECG), Glucometer, Galvanic Skin

* Response Sensor (GSR – Sweating), Blood Pressure (Sphygmomanometer) and

* Patient Position (Accelerometer)."

* In this example we read the values in volts of EMG sensor and show

* these values in the serial monitor.

* Copyright (C) 2012 Libelium Comunicaciones Distribuidas S.L.

* http://www.libelium.com

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

* You should have received a copy of the GNU General Public License

* along with this program. If not, see <http://www.gnu.org/licenses/>.

* Version 2.0

* Author: Luis Martin & Ahmad Saad

#include <eHealth.h>

// Rutina de instalare se execută o dată când apăsați resetare:

void setup() {

Serial.begin(115200);

}

// Rutina bucla trece peste si peste din nou pentru totdeauna:

void loop() {

int EMG = eHealth.getEMG();

Serial.print("EMG value : ");

Serial.print(EMG);

Serial.println("");

delay(100); // așteptați pentru o milisecundă

}

Încărcați codul de Arduino și urmăriți monitorul. Aici este interfața cu utilizatorul:

ANEXA 10

ANEXA 11

/*

This program reads data from the Pulse Sensor.

Serial output is designed to mate with Processing sketch "P_PulseSensor_xx" series

Serial Protocol initiates datastring with coded ascii character, ends each message with carriage return

We named the variable that holds the heart rate (BPM) after the group Quantified Self.

They backed our Kickstarter campaing at the $600 level and having a variable named after them is one of their rewards.

Go Count Yourself!!! http://quantifiedself.com/

by Joel Murphy & Yury Gitman in Brooklyn, Summer 2011.

*/

// VARIABLES

unsigned long time; // Hotărăște timp curent pentru calculul ratei de puls

unsigned long lastTime; // Utilizate pentru calcularea timpului între batai

int Sensor; // Hotărăște curent senzor analog de citire

int beats[10]; // Matrice pentru a colecta timpul între bătăi pentru calcularea BPM

int beatCounter = 0; / / Folosit să dețină poziția în matrice a bătăii

int QuantifiedSelf; // Utilizat pentru a păstra valoarea ritmului cardiac (BPM)

int Fade = 0; // Variabila se estompeze va stabili PWM

boolean falling = false; // utilizate pentru a urmări de direcție undă

// PINS

int PulseSensor = 5; // cablu mov al Senzorului de puls conectat la PIN-ul analogic 5

void setup()

{

Serial.begin(115200); / / Începe blocul de serie hardware-ul si setati rata de transfer

lastTime = millis(); / / inițializarea ultimaei variabile de timp

}

void loop (timeBeat){

time = millis(); / / Ia act de ora curentă

beats[beatCounter] = time – lastTime; / / Înregistrare milisecunde de la ultima pulsul în bătăi matrice

lastTime = time; / / fi la curent!

beatCounter ++; / / Muta pointerul la următoarea poziție în matrice

if (beatCounter == 10){ / / Dacă ne-am luat 10 de citiri, e timpul pentru a obține ritmul cardiac

QuantifiedSelf = getBPM(); / / obti ritmul cardiac

Serial.print("q"); / / Trimite ritmul cardiac

Serial.println(QuantifiedSelf); / / 'Q' = ritmul cardiac

beatCounter = 0;

}

}// END OF timeBeat FUNCTION

/ / Aceasta functie va returna o valoare a ritmului cardiac (bătăi pe minut)

int getBPM(){

int dummy; / / utilizată în sortării

int mean; / / utilizată în medie

boolean done = false; // curatarea sortarii

// aceasta rutina sorteaza valorile din matrice de la cel mai mic la cel mai mare

while(done != true){

done = true;

for (int j=0; j<9; j++){

if (beats[j] > beats[j + 1]){ / / aici Sorteaza numere

dummy = beats[j + 1];

beats [j+1] = beats[j] ;

beats[j] = dummy;

done = false;

}

}

}

// acest lucru pentru bucla selectează valorile de timp mai mari pentru a evita măsurătorilor frecvenței cardiace incorecte

for(int k=1; k<9; k++){ / / Exclude cea mai mică și cea mai mare

mean += beats[k]; / / Se adaugă ori bate împreună mean /=8; / / Medie

mean = 60000/mean; // împărți 60 secunde la mediu

/ / întoarcere bataile pe minut

}// END OF getBPM function

ANEXA 12

ANEXA 13

/*
SMS sender
 This sketch, for the Arduino GSM shield,sends an SMS message 
 that you send it through the serial monitor. To make it work, 
 open the serial monitor, and when you see the READY message, 
 type a message to send. Make sure the serial monitor is set
 to send a newline when you press return.

 Circuit:
 * GSM shield 

 created 25 Feb 2012
 by Tom Igoe

 This example is in the public domain.
 */

// libraries
#include <GSM.h>

#define PINNUMBER ""

// initialize the library instance
GSM gsmAccess; / / Include un parametru "adevărat" pentru debug-ului
GSM_SMS sms;

void setup()
{/ / Inițializa comunicațiile seriale
  Serial.begin(9600);

  Serial.println("SMS Messages Sender");

  / / Starea conexiunii
  boolean notConnected = true;

  / / Scut Start GSM

   / / În cazul în care cartela SIM are PIN, se trece ca un parametru a începe () în ghilimele  while(notConnected)
  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = false;
    else
    {
      Serial.println("Not connected");
      delay(1000);
    }
  }

  Serial.println("GSM initialized");
}

void loop()
{

  Serial.print("Enter a mobile number: ");
  char remoteNumber[20];  / / Numărul de telefon pentru a trimite sms-uri
  readSerial(remoteNumber);
  Serial.println(remoteNumber);

  // sms text
  Serial.print("Now, enter SMS content: ");
  char txtMsg[200];
  readSerial(txtMsg);
  Serial.println("SENDING");
  Serial.println();
  Serial.println("Message:");
  Serial.println(txtMsg);

/ / Trimite mesajul
  sms.beginSMS(remoteNumber);
  sms.print(txtMsg);
  sms.endSMS(); 
  Serial.println("\nCOMPLETE!\n");
}

/*
  Read input serial
 */
int readSerial(char result[])
{
  int i = 0;
  while(1)
  {
    while (Serial.available() > 0)
    {
      char inChar = Serial.read();
      if (inChar == '\n')
      {
        result[i] = '\0';
        Serial.flush();
        return 0;
      }
      if(inChar!='\r')
      {
        result[i] = inChar;
        i++;

}

Bibliografie

***http://en.wikipedia.org/wiki/Remote_patient_monitoring

***http://en.wikipedia.org/wiki/Telehealth

***http://ro.wikipedia.org/wiki/Bioinginerie_medical%C4%83

***http://en.wikipedia.org/wiki/Medical_equipment

***http://www.cooking-hacks.com/documentation/tutorials/ehealth-biometric-sensor-platform-arduino-raspberry-pi-medical

***http://moodle.umft.ro/login/index.php

***http://arduino.cc/en/Main/ArduinoBoardUno

***http://arduino.cc/en/Main/ArduinoGSMShield

***http://www.sfatulmedicului.ro/Educatie-pentru-sanatate/pulsul-si-bataile-normale-ale-inimii_11323

***http://pulsesensor.myshopify.com/pages/pulse-sensor-amped-arduino-v1dot1

***http://ro.wikipedia.org/wiki/Medicin%C4%83

***http://www.robofun.ro/arduino

*** http://moodle.umft.ro/mod/wiki/view.php?pageid=243

Cristian Bucur ,(curs) Electronică medicală ,Editura Universității Petrol-Gaze din Ploiești

Mihai Hotinceanu,Principiile fizice ale senzorilor și traductoarelor,editia a 2-a ,revizuită și adăugată,Editura Universitătii Petrol-Gaze din Ploiești, 2010

Cristian Bucur,Circuite electronice în comutație,Editura Universității Petrol-Gaze din

Ploiesti,2010

Cristian Rotariu, Teză de doctorat MONITORIZAREA DE LA DISTANȚĂ A PARAMETRILOR VITALI FOLOSIND SISTEME ÎNGLOBATE, Universitatea tehnică “GHEORGHE ASACHI” Iași,2010

Elena Poenaru, Telemedicina și implicațiile ei în sistemul medical actual, Universitatea de medicină și farmacie “CAROL DAVILA” București,2012

Călin Simu, Teză de doctorat CONTRIBUȚII LA TEHNICILE DE PRELUCRARE A SEMNALULUI ELECTROCARDIOGRAFIC, Universitatea "POLITEHNICA" Timișoara,2010

ANEXE

Funcțiile bibliotecii

Puls si oxigen în sânge-ANEXA 1

inițializarea

Acest senzor utilizează întreruperi și este necesar să se includă o bibliotecă specială atunci când aveți de gând să-l folositi.

#include < PinChangeInt.h >

După trebuie să atașați la întreruperi codul dvs. pentru a obține date de la senzor. Senzorul va întrerupe procesul de a actualiza datele stocate în variabile private.

PCintPort::attachInterrupt(6, readPulsioximeter, RISING);

PIN-ul digital 6 din Arduino este PIN în care senzorul trimite întreruperea și funcția readpulsioximeter va fi executata.

void readPulsioximeter(){

cont ++;

if (cont == 50) { // Ia doar de 50 de măsuri pentru a reduce latenta eHealth.readPulsioximeter();

cont = 0;

}

Înainte de a începe utilizarea senzorului SP02, trebuie inițializat. Utilizați următoarea funcția în configurare pentru a configura o serie de parametri de bază și pentru a începe comunicarea între Arduino / RaspberryPi și senzorul.

Citirea senzorului

Pentru a citi valoarea curentă a senzorului, folosiți următoarea funcție.

eHealth.readPulsioximeter();

Această funcție va stoca valorile senzorului in variabile particulare.

baze de date

Pentru a vizualiza datele pe care le pot obține valorile senzorului stocate în variabila private folosind următoarele funcții.

{

int SPO2 = eHealth.getOxygenSaturation()

int BPM = eHealth.getBPM()

}

Arduino

Încărcați codul următor pentru a vedea date pe monitor

* eHealth sensor platform for Arduino and Raspberry from Cooking-hacks.

*

* Description: "The e-Health Sensor Shield allows Arduino and Raspberry Pi

* users to perform biometric and medical applications by using 9 different

* sensors: Pulse and Oxygen in Blood Sensor (SPO2), Airflow Sensor (Breathing),

* Body Temperature, Electrocardiogram Sensor (ECG), Glucometer, Galvanic Skin

* Response Sensor (GSR – Sweating), Blood Pressure (Sphygmomanometer) and

* Patient Position (Accelerometer)."

*

* In this example we read the values of the pulsioximeter sensor

* and we show this values in the serial monitor

*

* Copyright (C) 2012 Libelium Comunicaciones Distribuidas S.L.

* http://www.libelium.com

*

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

*

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

*

* You should have received a copy of the GNU General Public License

* along with this program. If not, see <http://www.gnu.org/licenses/>.

*

* Version 2.0

* Author: Ahmad Saad & Luis Martin

#include <PinChangeInt.h>

#include <eHealth.h>

int cont = 0;

void setup() {

Serial.begin(115200);

eHealth.initPulsioximeter();

// Atașați instrucțiunile de utilizare a pulsioximetro.

PCintPort::attachInterrupt(6, readPulsioximeter, RISING);

}

void loop() {

Serial.print("PRbpm : ");

Serial.print(eHealth.getBPM());

Serial.print(" %SPo2 : ");

Serial.print(eHealth.getOxygenSaturation());

Serial.print("\n");

Serial.println("=============================");

delay(500);

}

// Includeți întotdeauna acest cod atunci când utilizați senzorul pulsioximeter

//=========================================================================

void readPulsioximeter(){

cont ++;

if (cont == 50) { // Ia doar 50 de măsuri pentru a reduce latenta

eHealth.readPulsioximeter();

cont = 0;

}

}

Încărcați codul de Arduino .Aici este interfața cu utilizatorul.

Electrocardiograma (ECG)-ANEXA 2

Acest ECG returnează o valoare analogica în volți (0-5) pentru a reprezenta forma de undă ECG.

float ECGvolt = eHealth.getECG();

Arduino

Încărcați codul următor pentru a vedea date pe monitor:

* eHealth sensor platform for Arduino and Raspberry from Cooking-hacks.

*

* Description: "The e-Health Sensor Shield allows Arduino and Raspberry Pi

* users to perform biometric and medical applications by using 9 different

* sensors: Pulse and Oxygen in Blood Sensor (SPO2), Airflow Sensor (Breathing),

* Body Temperature, Electrocardiogram Sensor (ECG), Glucometer, Galvanic Skin

* Response Sensor (GSR – Sweating), Blood Pressure (Sphygmomanometer) and

* Patient Position (Accelerometer)."

* In this example we read the values in volts of ECG sensor and show

* these values in the serial monitor.

* Copyright (C) 2012 Libelium Comunicaciones Distribuidas S.L.

* http://www.libelium.com

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

*

* You should have received a copy of the GNU General Public License

* along with this program. If not, see <http://www.gnu.org/licenses/>.

*

* Version 2.0

* Author: Luis Martin & Ahmad Saad

*/

#include <eHealth.h>

// Rutina de instalare se execută o dată când apăsați resetare:

void setup() {

Serial.begin(115200);

}

// Rutina bucla trece peste si peste din nou pentru totdeauna

void loop() {

float ECG = eHealth.getECG();

Serial.print("ECG value : ");

Serial.print(ECG, 2);

Serial.print(" V");

Serial.println("");

delay(1); // așteptați pentru o milisecundă

Senzorul debit de aer, respiratie-ANEXA 3

Senzorul de debit de aer este conectat la Arduino / RasberryPi pe o intrare analog și returnează valoari intre 0-1024. Cu următoarele funcții puteți obține această valoare în mod direct și puteti obtine o formă de undă pe monitor.

int airFlow = eHealth.getAirFlow();

eHealth.airFlowWave(air);

Arduino

Încărcați codul următor pentru a vedea date pe monitor:

* eHealth sensor platform for Arduino and Raspberry from Cooking-hacks.

*

* Description: "The e-Health Sensor Shield allows Arduino and Raspberry Pi

* users to perform biometric and medical applications by using 9 different

* sensors: Pulse and Oxygen in Blood Sensor (SPO2), Airflow Sensor (Breathing),

* Body Temperature, Electrocardiogram Sensor (ECG), Glucometer, Galvanic Skin

* Response Sensor (GSR – Sweating), Blood Pressure (Sphygmomanometer) and

* Patient Position (Accelerometer)."

*

* In this example we read the value of the air flow sensor

* and print the air Flow wave form in the serial monitor.

*

* Copyright (C) 2012 Libelium Comunicaciones Distribuidas S.L.

* http://www.libelium.com

*

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

*

* You should have received a copy of the GNU General Public License

* along with this program. If not, see <http://www.gnu.org/licenses/>.

*

* Version 2.0

* Author: Luis Martin & Ahmad Saad

*/

#include <eHealth.h>

// Rutina de instalare se execută o dată când apăsați resetare:

void setup() {

Serial.begin(115200);

}

// rutina bucla trece peste si peste din nou pentru totdeauna:

void loop() {

int air = eHealth.getAirFlow();

eHealth.airFlowWave(air);

}

Încărcați codul și urmăriți pe monitor.Aici este interfața cu utilizatorul:

Temperatura corpului-ANEXA 4

Temperatura corporală poate fi luată de către o funcție simpla. Această funcție returnează un rezultat cu ultima valoare de temperatură măsurată de către Arduino / RasberryPi.

float temperature = eHealth.getTemperature();

Arduino

Încărcați codul următor pentru a vedea date pe monitor:

* eHealth sensor platform for Arduino and Raspberry from Cooking-hacks.

* Description: "The e-Health Sensor Shield allows Arduino and Raspberry Pi

* users to perform biometric and medical applications by using 9 different

* sensors: Pulse and Oxygen in Blood Sensor (SPO2), Airflow Sensor (Breathing),

* Body Temperature, Electrocardiogram Sensor (ECG), Glucometer, Galvanic Skin

* Response Sensor (GSR – Sweating), Blood Pressure (Sphygmomanometer) and

* Patient Position (Accelerometer)."

*

* In this example we use the temperature sensor to measure the

* corporal temperature of the body.

*

* Copyright (C) 2012 Libelium Comunicaciones Distribuidas S.L.

* http://www.libelium.com

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

* You should have received a copy of the GNU General Public License

* along with this program. If not, see <http://www.gnu.org/licenses/>.

* Version 2.0

* Author: Luis Martin & Ahmad Saa

#include <eHealth.h>

// rutina de instalare se execută o dată când apăsați resetare:

void setup() {

Serial.begin(115200);

}

// rutina bucla trece peste si peste din nou pentru totdeauna:

void loop() {

float temperature = eHealth.getTemperature();

Serial.print("Temperature (ºC): ");

Serial.print(temperature, 2);

Serial.println("");

delay(1000); // așteptați pentru o secundă

}

Încărcați codul și urmăriți pe monitor. Aici este interfața cu utilizatorul:

Tensiunea arterial-ANEXA 5

Pentru a măsura în mod corect, este important să se mențină brațul și manșeta în poziția corectă. Nu face mișcări bruște caci măsurarea nu va fi de încredere.

Unii parametri trebuie să fie inițializati pentru a începe să utilizați senzorul de presiune arterială (tensiometru). Funcția următoare initializeaza unele variabile și citește datele tensiometrului.

{

eHealth.readBloodPressureSensor();

Serial.begin(115200);

}

Cantitatea de citire a datelor este accesibila cu o altă funcție publică.

{ uint8_t numberOfData = eHealth.getBloodPressureLength();

Serial.print(F("Number of measures : "));

Serial.println(numberOfData, DEC);

delay(100);

}

Următoarele funcții returneaza valorile tensiunii arteriale sistolice și diastolice măsurate de tensiometru și stocate în variabilele private ale clasei E-Health.

int systolic = eHealth.getSystolicPressure(1);

int diastolic =eHealth.getDiastolicPressure(1);

Arduino

Încărcați codul următor pentru a vedea date pe monitor:

* eHealth sensor platform for Arduino and Raspberry from Cooking-hacks.

*

* Description: "The e-Health Sensor Shield allows Arduino and Raspberry Pi

* users to perform biometric and medical applications by using 9 different

* sensors: Pulse and Oxygen in Blood Sensor (SPO2), Airflow Sensor (Breathing),

* Body Temperature, Electrocardiogram Sensor (ECG), Glucometer, Galvanic Skin

* Response Sensor (GSR – Sweating), Blood Pressure (Sphygmomanometer) and

* Patient Position (Accelerometer)."

* In this example we are going to get data stored in the blood pressure sensor

* memory and show the result in the serial monitor.

*

* Copyright (C) 2012 Libelium Comunicaciones Distribuidas S.L.

* http://www.libelium.com

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

* You should have received a copy of the GNU General Public License

* along with this program. If not, see <http://www.gnu.org/licenses/> .

* Version 2.0

* Author: Ahmad Saad & Luis Martin

*/

#include <eHealth.h>

void setup()

{

eHealth.readBloodPressureSensor();

Serial.begin(115200);

delay(100);

}

void loop() {

uint8_t numberOfData = eHealth.getBloodPressureLength();

Serial.print(F("Number of measures : "));

Serial.println(numberOfData, DEC);

delay(100);

for (int i = 0; i<numberOfData; i++) {

// Protocolul trimite date în această ordine

Serial.println(F("=========================================="));

Serial.print(F("Measure number "));

Serial.println(i + 1);

Serial.print(F("Date -> "));

Serial.print(eHealth.bloodPressureDataVector[i].day);

Serial.print(F(" of "));

Serial.print(eHealth.numberToMonth(eHealth.bloodPressureDataVector[i].month));

Serial.print(F(" of "));

Serial.print(2000 + eHealth.bloodPressureDataVector[i].year);

Serial.print(F(" at "));

if (eHealth.bloodPressureDataVector[i].hour < 10) {

Serial.print(0); // Numai pentru cel mai bun reprezentare.

}

Serial.print(eHealth.bloodPressureDataVector[i].hour);

Serial.print(F(":"));

if (eHealth.bloodPressureDataVector[i].minutes < 10) {

Serial.print(0);// Numai pentru cel mai bun reprezentare.

}

Serial.println(eHealth.bloodPressureDataVector[i].minutes);

Serial.print(F("Systolic value : "));

Serial.print(30+eHealth.bloodPressureDataVector[i].systolic);

Serial.println(F(" mmHg"));

Serial.print(F("Diastolic value : "));

Serial.print(eHealth.bloodPressureDataVector[i].diastolic);

Serial.println(F(" mmHg"));

Serial.print(F("Pulse value : "));

Serial.print(eHealth.bloodPressureDataVector[i].pulse);

Serial.println(F(" bpm"));

}

delay(20000);

}

Încărcați codul și urmăriți pe monitor. Aici este interfața cu utilizatorul:

Poziția pacientului și căderi-ANEXA 6

Inițializarea senzorul

Înainte de a începe să utilizați senzorul, avem de initializat unii parametri. Utilizați funcția urmatoare pentru a configura senzorul.

{

eHealth.initPositionSensor();

}

Următoarele funcții returnează o valoare care reprezintă poziția corpului stocate în variabilele private ale clasei de E-Health.

{

uint8_t position = eHealth.getBodyPosition();

}

Poziția pacientului

1 == poziția culcat pe spate.

2 == stânga decubit lateral.

3 == decubit lateral Rigth.

4 == pozitia culcat.

5 == stand sau sta poziție.

baze de date

Pentru reprezentarea datelor într-un mod ușor pe monitor, bibliotecă E-Health Arduino / RasberryPi, include o funcție de imprimare.

Serial.print("Current position : ");

uint8_t position = eHealth.getBodyPosition();

eHealth.printPosition(position); }

Arduino

Încărcați codul următor pentru a vedea date pe monitor:

* eHealth sensor platform for Arduino and Raspberry from Cooking-hacks.

* Description: "The e-Health Sensor Shield allows Arduino and Raspberry Pi

* users to perform biometric and medical applications by using 9 different

* sensors: Pulse and Oxygen in Blood Sensor (SPO2), Airflow Sensor (Breathing),

* Body Temperature, Electrocardiogram Sensor (ECG), Glucometer, Galvanic Skin

* Response Sensor (GSR – Sweating), Blood Pressure (Sphygmomanometer) and

* Patient Position (Accelerometer)."

* In this example with the body position sensor we measure

* the current body position of the patient and show it in the serial

* monitor.

* Copyright (C) 2012 Libelium Comunicaciones Distribuidas S.L.

* http://www.libelium.com

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

* You should have received a copy of the GNU General Public License

* along with this program. If not, see <http://www.gnu.org/licenses/> .

*

* Version 0.1

* Author: Ahmad Saad & Luis Martin

*/

#include <eHealth.h>

void setup() {

Serial.begin(115200);

eHealth.initPositionSensor();

}

void loop() {

Serial.print("Current position : ");

uint8_t position = eHealth.getBodyPosition();

eHealth.printPosition(position);

Serial.print("\n");

delay(1000); // așteptați pentru o secundă.

}

Încărcați codul și urmăriți pe monitor. Aici este interfața cu utilizatorul:

Răspuns galvanic al pielii (GSR)-ANEXA 7

Cu aceste funcții simple, putem citi valoarea senzorului. Biblioteca returnează valoarea rezistenței pielii și conductanța pielii.

{

float conductance = eHealth.getSkinConductance();

float resistance = eHealth.getSkinResistance();

float conductanceVol = eHealth.getSkinConductanceVoltage();

}

Arduino

Încărcați codul următor pentru a vedea date pe monitor:

* eHealth sensor platform for Arduino and Raspberry from Cooking-hacks.

*

* Description: "The e-Health Sensor Shield allows Arduino and Raspberry Pi

* users to perform biometric and medical applications by using 9 different

* sensors: Pulse and Oxygen in Blood Sensor (SPO2), Airflow Sensor (Breathing),

* Body Temperature, Electrocardiogram Sensor (ECG), Glucometer, Galvanic Skin

* Response Sensor (GSR – Sweating), Blood Pressure (Sphygmomanometer) and

* Patient Position (Accelerometer)."

*

* In this example we use the skin sensor to measure some

* parameters like the skin resistance and coductance.

*

* Copyright (C) 2012 Libelium Comunicaciones Distribuidas S.L.

* http://www.libelium.com

*

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

*

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

*

* You should have received a copy of the GNU General Public License

* along with this program. If not, see <http://www.gnu.org/licenses/> .

*

* Version 2.0

* Author: Luis Martin & Ahmad Saad

*/

#include <eHealth.h>

// rutina de instalare se execută o dată când apăsați resetare:

void setup() {

Serial.begin(115200);

}

// rutina bucla trece peste si peste din nou pentru totdeauna:

void loop() {

float conductance = eHealth.getSkinConductance();

float resistance = eHealth.getSkinResistance();

float conductanceVol = eHealth.getSkinConductanceVoltage();

Serial.print("Conductance : ");

Serial.print(conductance, 2);

Serial.println("");

Serial.print("Resistance : ");

Serial.print(resistance, 2);

Serial.println("");

Serial.print("Conductance Voltage : ");

Serial.print(conductanceVol, 4);

Serial.println("");

Serial.print("\n");

// așteptați pentru o secundă

delay(1000);

}

Încărcați codul de Arduino și urmăriți monitorul. Aici este interfața cu utilizatorul:

8.Senzor glucometru-ANEXA 8

Cu o funcție simpla, putem citi toate măsuratorile stocate în glucometer și să le arătăm. Funcția trebuie utilizat înainte intilizarea monitorului.

{

eHealth.readGlucometer();

Serial.begin(115200);

}

Arduino

Încărcați codul următor pentru a vedea date pe monitor :

* eHealth sensor platform for Arduino and Raspberry from Cooking-hacks.

* Description: "The e-Health Sensor Shield allows Arduino and Raspberry Pi

* users to perform biometric and medical applications by using 9 different

* sensors: Pulse and Oxygen in Blood Sensor (SPO2), Airflow Sensor (Breathing),

* Body Temperature, Electrocardiogram Sensor (ECG), Glucometer, Galvanic Skin

* Response Sensor (GSR – Sweating), Blood Pressure (Sphygmomanometer) and

* Patient Position (Accelerometer)."

* In this example we are going to get data stored in the glucometer

* memory and show the result in the serial monitor.

* Copyright (C) 2012 Libelium Comunicaciones Distribuidas S.L.

* http://www.libelium.com

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

* You should have received a copy of the GNU General Public License

* along with this program. If not, see <http://www.gnu.org/licenses/> .

* Version 2.0

* Author: Ahmad Saad & Luis Martin

*/

#include <eHealth.h>

void setup() {

eHealth.readGlucometer();

Serial.begin(115200);

delay(100);

}

void loop() {

uint8_t numberOfData = eHealth.getGlucometerLength();

Serial.print(F("Number of measures : "));

Serial.println(numberOfData, DEC);

delay(100);

for (int i = 0; i<numberOfData; i++) {

/ / Protocolul trimite date în această ordine

Serial.println(F("=========================================="));

Serial.print(F("Measure number "));

Serial.println(i + 1);

Serial.print(F("Date -> "));

Serial.print(eHealth.glucoseDataVector[i].day);

Serial.print(F(" of "));

Serial.print(eHealth.numberToMonth(eHealth.glucoseDataVector[i].month));

Serial.print(F(" of "));

Serial.print(2000 + eHealth.glucoseDataVector[i].year);

Serial.print(F(" at "));

if (eHealth.glucoseDataVector[i].hour < 10) {

Serial.print(0); // Numai pentru cel mai bun reprezentare.

}

Serial.print(eHealth.glucoseDataVector[i].hour);

Serial.print(F(":"));

if (eHealth.glucoseDataVector[i].minutes < 10) {

Serial.print(0);// Numai pentru cel mai bun reprezentare.

}

Serial.print(eHealth.glucoseDataVector[i].minutes);

if (eHealth.glucoseDataVector[i].meridian == 0xBB)

Serial.println(F(" pm"));

else if (eHealth.glucoseDataVector[i].meridian == 0xAA)

Serial.println(F(" am"));

Serial.print(F("Glucose value : "));

Serial.print(eHealth.glucoseDataVector[i].glucose);

Serial.println(F(" mg/dL"));

}

delay(20000);

Încărcați codul de Arduino și urmăriți monitorul. Aici este interfața cu utilizatorul:

9.Electromiograma (EMG)-ANEXA 9

Acest EMG returnează o valoare analogica în volți pentru a reprezenta forma de undă EMG. float EMG = eHealth.getEMG();

Arduino

Încărcați codul următor pentru a vedea datele pe monitor:.

* eHealth sensor platform for Arduino and Raspberry from Cooking-hacks.

* Description: "The e-Health Sensor Shield allows Arduino and Raspberry Pi

* users to perform biometric and medical applications by using 9 different

* sensors: Pulse and Oxygen in Blood Sensor (SPO2), Airflow Sensor (Breathing),

* Body Temperature, Electrocardiogram Sensor (ECG), Glucometer, Galvanic Skin

* Response Sensor (GSR – Sweating), Blood Pressure (Sphygmomanometer) and

* Patient Position (Accelerometer)."

* In this example we read the values in volts of EMG sensor and show

* these values in the serial monitor.

* Copyright (C) 2012 Libelium Comunicaciones Distribuidas S.L.

* http://www.libelium.com

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

* You should have received a copy of the GNU General Public License

* along with this program. If not, see <http://www.gnu.org/licenses/>.

* Version 2.0

* Author: Luis Martin & Ahmad Saad

#include <eHealth.h>

// Rutina de instalare se execută o dată când apăsați resetare:

void setup() {

Serial.begin(115200);

}

// Rutina bucla trece peste si peste din nou pentru totdeauna:

void loop() {

int EMG = eHealth.getEMG();

Serial.print("EMG value : ");

Serial.print(EMG);

Serial.println("");

delay(100); // așteptați pentru o milisecundă

}

Încărcați codul de Arduino și urmăriți monitorul. Aici este interfața cu utilizatorul:

ANEXA 10

ANEXA 11

/*

This program reads data from the Pulse Sensor.

Serial output is designed to mate with Processing sketch "P_PulseSensor_xx" series

Serial Protocol initiates datastring with coded ascii character, ends each message with carriage return

We named the variable that holds the heart rate (BPM) after the group Quantified Self.

They backed our Kickstarter campaing at the $600 level and having a variable named after them is one of their rewards.

Go Count Yourself!!! http://quantifiedself.com/

by Joel Murphy & Yury Gitman in Brooklyn, Summer 2011.

*/

// VARIABLES

unsigned long time; // Hotărăște timp curent pentru calculul ratei de puls

unsigned long lastTime; // Utilizate pentru calcularea timpului între batai

int Sensor; // Hotărăște curent senzor analog de citire

int beats[10]; // Matrice pentru a colecta timpul între bătăi pentru calcularea BPM

int beatCounter = 0; / / Folosit să dețină poziția în matrice a bătăii

int QuantifiedSelf; // Utilizat pentru a păstra valoarea ritmului cardiac (BPM)

int Fade = 0; // Variabila se estompeze va stabili PWM

boolean falling = false; // utilizate pentru a urmări de direcție undă

// PINS

int PulseSensor = 5; // cablu mov al Senzorului de puls conectat la PIN-ul analogic 5

void setup()

{

Serial.begin(115200); / / Începe blocul de serie hardware-ul si setati rata de transfer

lastTime = millis(); / / inițializarea ultimaei variabile de timp

}

void loop (timeBeat){

time = millis(); / / Ia act de ora curentă

beats[beatCounter] = time – lastTime; / / Înregistrare milisecunde de la ultima pulsul în bătăi matrice

lastTime = time; / / fi la curent!

beatCounter ++; / / Muta pointerul la următoarea poziție în matrice

if (beatCounter == 10){ / / Dacă ne-am luat 10 de citiri, e timpul pentru a obține ritmul cardiac

QuantifiedSelf = getBPM(); / / obti ritmul cardiac

Serial.print("q"); / / Trimite ritmul cardiac

Serial.println(QuantifiedSelf); / / 'Q' = ritmul cardiac

beatCounter = 0;

}

}// END OF timeBeat FUNCTION

/ / Aceasta functie va returna o valoare a ritmului cardiac (bătăi pe minut)

int getBPM(){

int dummy; / / utilizată în sortării

int mean; / / utilizată în medie

boolean done = false; // curatarea sortarii

// aceasta rutina sorteaza valorile din matrice de la cel mai mic la cel mai mare

while(done != true){

done = true;

for (int j=0; j<9; j++){

if (beats[j] > beats[j + 1]){ / / aici Sorteaza numere

dummy = beats[j + 1];

beats [j+1] = beats[j] ;

beats[j] = dummy;

done = false;

}

}

}

// acest lucru pentru bucla selectează valorile de timp mai mari pentru a evita măsurătorilor frecvenței cardiace incorecte

for(int k=1; k<9; k++){ / / Exclude cea mai mică și cea mai mare

mean += beats[k]; / / Se adaugă ori bate împreună mean /=8; / / Medie

mean = 60000/mean; // împărți 60 secunde la mediu

/ / întoarcere bataile pe minut

}// END OF getBPM function

ANEXA 12

ANEXA 13

/*
SMS sender
 This sketch, for the Arduino GSM shield,sends an SMS message 
 that you send it through the serial monitor. To make it work, 
 open the serial monitor, and when you see the READY message, 
 type a message to send. Make sure the serial monitor is set
 to send a newline when you press return.

 Circuit:
 * GSM shield 

 created 25 Feb 2012
 by Tom Igoe

 This example is in the public domain.
 */

// libraries
#include <GSM.h>

#define PINNUMBER ""

// initialize the library instance
GSM gsmAccess; / / Include un parametru "adevărat" pentru debug-ului
GSM_SMS sms;

void setup()
{/ / Inițializa comunicațiile seriale
  Serial.begin(9600);

  Serial.println("SMS Messages Sender");

  / / Starea conexiunii
  boolean notConnected = true;

  / / Scut Start GSM

   / / În cazul în care cartela SIM are PIN, se trece ca un parametru a începe () în ghilimele  while(notConnected)
  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = false;
    else
    {
      Serial.println("Not connected");
      delay(1000);
    }
  }

  Serial.println("GSM initialized");
}

void loop()
{

  Serial.print("Enter a mobile number: ");
  char remoteNumber[20];  / / Numărul de telefon pentru a trimite sms-uri
  readSerial(remoteNumber);
  Serial.println(remoteNumber);

  // sms text
  Serial.print("Now, enter SMS content: ");
  char txtMsg[200];
  readSerial(txtMsg);
  Serial.println("SENDING");
  Serial.println();
  Serial.println("Message:");
  Serial.println(txtMsg);

/ / Trimite mesajul
  sms.beginSMS(remoteNumber);
  sms.print(txtMsg);
  sms.endSMS(); 
  Serial.println("\nCOMPLETE!\n");
}

/*
  Read input serial
 */
int readSerial(char result[])
{
  int i = 0;
  while(1)
  {
    while (Serial.available() > 0)
    {
      char inChar = Serial.read();
      if (inChar == '\n')
      {
        result[i] = '\0';
        Serial.flush();
        return 0;
      }
      if(inChar!='\r')
      {
        result[i] = inChar;
        i++;

}

Similar Posts