U P C

UNIVERSITAT POLITECNICA` DE CATALUNYA

Estudi de l’activitat f´ısica mitjan¸cant un .

5 d’octubre de 2015

Mem`oriadel projecte que presenta Damian´ Mart´ınez Carmona

sota la direcci´odel Dr. Eng. Jordi Bonet Dalmau

per assolir el grau en Enginyeria de Sistemes TIC. Aquesta obra est`asubjecta a una llic`enciaAttribution-NonCommercial-ShareAlike 3.0 Spain de Creative Commons. Per veure’n una c`opia,visiteu http://creativecommons. org/licenses/by-nc-sa/3.0/es o envieu una carta a Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA. Dedicat a tots els professors i companys que m’han ajudat durant aquests quatre anys.

´Index

Abstract iii

Resum v

I. Mem`oria 1

1. Introducci´o 3

2. Hist`oriade l’Smartwatch 5 2.1. Definici´o...... 5 2.2. Inicis ...... 5 2.3. Anys 70 ...... 6 2.4. Anys 80 ...... 7 2.5. Anys 90 ...... 8 2.6. Principis del s.XXI ...... 9 2.7. Actualitat ...... 10

3. Objectius 13

4. Recursos emprats 15 4.1. ...... 15 4.2. Raspberry Pi ...... 18 4.3. Android Studio ...... 19 4.4. Octave ...... 20

5. Implementaci´o 23 5.1. Esquema dels m`oduls...... 23 5.2. M`odulaccel ...... 24 5.3. M`odulcomunicacio ...... 27 5.4. M`odulservidor ...... 29

6. An`aliside les mostres 31 6.1. Transformada r`apidade Fourier (FFT) ...... 31 6.2. Resultats obtinguts ...... 33 6.2.1. An`alisidels resultats obtinguts quan l’usuari camina ...... 33 6.2.2. An`alisidels resultats obtinguts quan l’usuari corre ...... 41 6.2.3. An`alisidels resultats obtinguts durant un dia ...... 48

7. Conclusions 53

i ´Index

II. Annexes 1

A. M`odulaccel 3

B. M`odulcomunicacio 7 B.1. Classe MainActivity ...... 7 B.2. Classe HttpAsyncTask ...... 11 B.3. Classe AccelData ...... 12 B.4. Layout ...... 13

C. M`odulservidor 15

D. Programes amb Octave 17 D.1. f TF.m...... 17 D.2. grafic.m ...... 17

ii Abstract

In this project, we talk about . First, there will be a summary about the history of these devices. Then, we will build a system which will monitor activities performed by an individual wearing one of these watches. We will get the information using the smartwatch accelerometer. In this part of the project, we will describe the devices and tools used during the tests. The Pebble watch, the Raspberry Pi, Android Studio software and Octave will be mentioned. Then, we will explain how it has carried out the implementation of the modules that make up the system. These modules are responsible for receiving data measured by the accelerometer, send them to the smartphone via Bluetooth and then, send them again back to the server where this information is stored, using HTTP/POST. Finally, we will analyze using different methods the stored acceleration samples that help us to get a final conclusion about the utility and eficacy of the smartwatches sensors measuring the activity of the user.

iii

Resum

En aquest treball es parlar`asobre els rellotges intel.ligents o smartwatches. Primerament, es far`aun recorregut al llarg de la hist`oriad’aquests dispositius per, a continuaci´o,construir un sistema que permetr`amonitoritzar diferents activitats realitzades per un individu portador d’un d’aquests rellotges. La captura de la informaci´oes far`amitjan¸cant l’acceler`ometreque incorpora l’smartwatch utilitzat. En aquesta part del projecte, primer es descriuran els dis- positius i les eines de software emprats en la realitzaci´ode les proves. Apareixeran el rellotge Pebble, la Raspberry Pi, el programa Android Studio i el llenguatge Octave. Seguidament, s’- explicar`acom s’ha dut a terme la implementaci´odels m`odulsque composen el sistema. Aquests m`odulss´onels encarregats de rebre les dades mesurades per l’acceler`ometre,enviar-les cap a l’smartphone a trav´esdel Bluetooth i, posteriorment, tornar-les a enviar cap al servidor, fent servir el protocol HTTP/POST, on es guarden les dades en fitxers. Finalment, s’analitzaran les mostres de l’acceleraci´oemmagatzemades fent servir diferents m`etodes, que ajudaran a obtenir una conclusi´ofinal sobre la utilitat i l’efic`aciadels sensors dels smartwatches a l’hora de monitoritzar l’activitat d’un usuari.

v

Part I.

Mem`oria

1

1. Introducci´o

Actualment, la tecnologia forma cada cop m´espart de les nostres vides. Internet ´esel motor de la societat i de les relacions entre les persones. Es´ per aix`oque les empreses relacionades amb les tecnologies de la informaci´oi la comunicaci´o(TIC) cada vegada intenten dur un pas m´esenll`ala integraci´ode l’usuari amb el seus dispositius.

Si tot va comen¸carals anys 80 amb els ordinadors personals, i ha continuat els darrers anys amb la revoluci´oque ha suposat per a la societat l’aparici´odels smartphones, tot fa indicar que en un futur pr`oximgran part dels aven¸cosestaran enfocats en la tecnologia wearable. Aquest tipus de tecnologia es caracteritza per incorporar components electr`onicsa les peces de roba i als complements, per tal de dotar-los d’intel.lig`encia. Alguns exemples molt famosos actualment s´onles Google Glass o l’, fet que demostra que les grans companyies estan apostant fortament per aquesta nova manera d’interactuar de les persones amb la tecnologia i per extensi´ode la societat en general, com ja va succeir en el passat en el cas dels tel`efonsintel- ligents.

Es´ per aix`o,que amb aquest treball es vol aconseguir aprofundir una mica en els dispositius wearables i, en concret, en un tipus determinat com s´onels rellotges intel.ligents o smartwatc- hes. Al llarg del treball es far`aun rep`asa la hist`oriad’aquests aparells, per m´esendavant acabar centrant-se en un rellotge anomenat Pebble. A partir d’aquest smartwatch s’imple- mentar`aun sistema que permetr`acapturar les dades d’un dels m´ultiples sensors que cont´e,un acceler`ometre.Un cop obtingudes les dades, seran analitzades per tal d’extreure’n alguna con- clusi´ointeressant sobre la utilitat d’un acceler`ometresituat al canell a l’hora de monitoritzar l’activitat de les persones en diferents situacions quotidianes, com podria ser caminar, pujar i baixar escales o fer algun tipus d’esport.

3

2. Hist`oriade l’Smartwatch

Abans d’aprofundir amb detall en el projecte, es vol fer un rep`asdels dispositius i els aven¸cos m´esdestacats en la hist`oriadels smartwatches, des dels seus inicis amb els primers prototips i dissenys fins a l’actualitat on cada cop estan irrompent amb m´esfor¸caal mercat.

2.1. Definici´o

La paraula Smartwatch prov´ede l’angl`esi significa ”rellotge intel.ligent”. Tal i com succeeix en el cas dels smartphones, la paraula anglesa ´esla m´esutilitzada per referir-se a aquest tipus de dispositius, tot i que tamb´e´escom´ufer servir la traducci´oal catal`aesmentada anteriorment, ´esa dir, rellotge intel.ligent.

Es pot definir un smartwatch com un computador, dotat de pantalla i dissenyat per dur- se al canell. Els smartwatches estan inclosos dintre de la fam´ıliade dispositius anomenats wearables[15ad]. S’inclouen en aquest grup d’aparells qualsevol giny tecnol`ogicideat per ser dut com una pe¸cade roba o complement. Actualment, hi ha una gran varietat de wearables de tot tipus com ulleres, polseres, anells, samarretes. . .

Generalment, els smartwatches actuals estan dotats de diversos sensors com, per exemple, acceler`ometre,br´uixola, alt´ımetre,bar`ometre, gps. . . que els permeten recollir informaci´ode tot tipus en funci´odel prop`ositpel qual han estat creats. A m´es,acostumen a tenir algun tipus de connectivitat sense fils, ja sigui Bluetooth o wifi.

A continuaci´o,es fa un rep`asa trav´esde la hist`oriad’aquests dispositius des dels primers prototips m´esrudimentaris fins a l’actualitat, on existeix una gran varietat de models i marques.

2.2. Inicis

Molt abans de que apareguessin fins i tot els rellotges digitals, ja existien alguns invents els quals es podrien considerar com els predecessors del que m´esendavant serien els rellotges intel·ligents.

Un dels m´esdestacats va ser el Plus Four Wristlet Route Indicator[15d], un dispositiu que servia per indicar la ruta a seguir per arribar al lloc de dest´ı a partir d’un punt d’origen

5 2. Hist`oriade l’Smartwatch concret. Aquest aparell va sortir a la venta l’any 1927 (molt abans de l’aparici´ode Google Maps o de les pantalles lcd) amb un preu de £5, l’equivalent avui dia a £50.

Figura 2.1.: Plus Four Wristlet Route Indicator.

Com es pot veure a la imatge (figura 2.1) el dispositiu estava dissenyat per col.locar-se al canell i d’aquesta manera el conductor podia anar girant els botons per despla¸car-seendavant o endarrere en el mapa. Si la ruta era massa llarga i no cabia en un rotlle de paper, la soluci´o era tan senzilla com reempla¸carel rotlle per un de nou amb la resta de la ruta. Originalment, amb la compra del rellotge s’inclo¨ıen20 mapes.

2.3. Anys 70

L’any 1972 va apar`eixerel primer rellotge digital totalment electr`onic,el Pulsar Time Com- puter Calculator[15v]. Va ser fabricat per la companyia Hamilton Watch Company i entre els diferents models que es van crear tamb´ees troba el que ´esconsiderat com el primer rellotge calculadora. A l’inici de la seva comercialitzaci´o,el Time Computer tenia un preu de $2100 i estava fet d’or de 18 quirats, per la qual cosa estava considerat com un s´ımbol de luxe i ostentaci´oa l’abast de molt poques butxaques.

En el vessant tecnol`ogica,el dispositiu disposava d’un m`odulelectr`onicamb 25 integrats i estava completament transistoritzat, sense cap part movible. Tot aix`ocombinat amb la seva pantalla digital de leds (el primer rellotge digital amb pantalla led) el van convertir en un pioner del sector amb un gran impacte en els futurs models.

No cal dir que aquest aparell no va ser un `exitde ventes i que, deixant de banda el seu desmesurat preu, un altre dels seus inconvenients m´esnotables era que, en les versions amb calculadora, els botons eren massa petits i plans i aix`odificultava molt el seu ´us.Tot i aix´ı, aquest invent va ser un primer pas d’all`oque esdevindria en la seg¨uent d`ecada.

6 2.4. Anys 80

Figura 2.2.: Pulsar Time Computer Calculator.

2.4. Anys 80

Amb la revoluci´oque va suposar als anys 80 l’aparici´odels ordinadors personals, aix`otamb´eva influir fortament en la ind´ustriadels rellotges digitals, que va veure com sorgien un gran nombre de dispositius amb infinitat de funcionalitats, alguns dels quals encara s’utilitzen actualment.

Un dels primers fabricants en desenvolupar rellotges aprofitant els importants aven¸cosin- form`aticsde l’`epoca va ser Seiko. Aquesta companyia japonesa va comprar Pulsar l’any 1978 i durant la d`ecadadels 80 va crear una gran varietat de models amb caracter´ıstiquesi preus molt diversos[15ac] com, per exemple, el Seiko TV Watch que era un rellotge capa¸cde reproduir imatges de televisi´oen la seva pantalla. No obstant, els dos models m´esdestacats van ser el Pulsar NL C01 (1982), capa¸cd’emmagatzemar fins a 24 d´ıgitsd’informaci´oi la col.lecci´ode models anomenada RC Series. Els models RC podien ser connectats a un ordinador i eren compatibles amb els computadors m´espopulars de l’`epoca com podien ser l’Apple II, el Com- modore 64 o l’IBM PC. A m´esdisposaven d’una pantalla LCD de matriu de punts i mem`oria RAM de 2 KB.

Una altra de les companyies que es va dedicar a la fabricaci´ode rellotges intel.ligents, i se- gurament la m´esrecordada, va ser Casio. Durant els anys 80 i principis dels 90 va produir nombrosos models amb gran `exitarreu del m´on. Un dels m´esfamosos va ser el Casio C-80 (gr`aciesen part a que era el rellotge que duia el protagonista de la pel.l´ıcula Retorn al futur) i que disposava de cron`ometre,calendari i una calculadora amb les tecles amb relleu[15g].

7 2. Hist`oriade l’Smartwatch

Figura 2.3.: Casio C-80.

2.5. Anys 90

Durant els anys 90 van continuar sorgint aven¸costecnol`ogicsque van afavorir el progr´esen el camp dels rellotges intel.lgents. En aquest sentit, un dels moments m´esdestacats de la primera meitat dels 90 va ser l’aparici´o,l’any 1994, del fam´osrellotge Timex Datalink[15ae]. Aquest rellotge va ser el primer capa¸cde rebre informaci´od’un ordinador. Es podia sincronitzar sense fils a trav´esde la llum amb l’ordinador i transmetre la informaci´ode forma r`apidai senzilla.

El Timex Datalink va ser desenvolupat en col.laboraci´oamb Microsoft, com alternativa a les pdas que estaven tan de moda en aquella `epoca. Aquest fet, evidentment, va provocar que el sensor `opticdel rellotge nom´es fos capa¸cde sincronitzar-se amb ordinadors que funcionessin amb el sistema operatiu Windows 95 i Windows 98. A m´es, els fitxers amb les dades nom´eseren accessibles a trav´esd’una interf´ıciecreada conjuntament per Microsoft i Timex. El Datalink tamb´edisposava d’algunes aplicacions interessants (escrites en llenguatge assemblador) com podien ser jocs, recordatoris i calendari.

L’altre fet destacable de l’`epoca en l’`ambit dels smartwatches va ser la creaci´ol’any 1998 del primer rellotge basat en el sistema operatiu Linux, el Linux Wristwatch. Va ser inventat per Steve Mann[15af], considerat el pare dels wearables. Arrel d’aquest fet, dos anys m´estard la companyia IBM va desenvolupar un prototip de rellotge que tamb´efuncionava amb Linux. Aquest smartwatch disposava d’un acceler`ometre,un mecanisme de vibraci´o,Bluetooth, 8 MB de RAM i 16 MB de mem`oriaflash[15i].

8 2.6. Principis del s.XXI

Figura 2.4.: Linux Wristwatch.

2.6. Principis del s.XXI

L’any 2003 es va posar a la venta el Fossil Wrist PDA[15ag], l’smartwatch de la companyia Fossil, Inc. Aquest dispositiu funcionava amb el sistema operatiu Palm OS, un sistema operatiu orientat a les pdas, que en aquells anys previs a l’smartphone eren molt utilitzades. Entre les seves caracter´ıstiquesm´esdestacades es trobaven la capacitat de sincronitzaci´oi intercanvi de dades amb un ordinador, un port d’infrarojos, teclat virtual i pantalla t`actil.

Figura 2.5.: Fossil Wrist PDA.

Durant la primera d`ecadadel s.XXI van apar`eixermolts m´esmodels de rellotge intell.ligent cre- ats per diverses companyies, moltes d’elles dedicades a la fabricaci´ode rellotges convencionals com pot ser Tissot, Swatch o Suunto. Per`ocal dir que, per a que aix`ofos possible, va jugar un paper molt important la pres`enciade Microsoft i el seu projecte SPOT (Smart Personal Object Technology) que es va proposar com a objectiu col.laborar amb moltes d’aquestes companyies a l’hora de produir veritables smartwatches, que signifiquessin un aven¸cen la tecnologia del moment[15aa].

Aix´ıdoncs, com es pot apreciar les caracter´ıstiquesdels smartwatches cada cop s’anaven as-

9 2. Hist`oriade l’Smartwatch semblant m´esal que coneixem actualment i amb la gran revoluci´oque va suposar l’`exitdels tel`efonsintel.ligents cap a l’any 2010, tot es va accelerar encara m´es.

2.7. Actualitat

Des de l’any 2010 fins a l’any 2015 hi ha hagut una gran evoluci´oi realment s’han destinat molts recursos en el camp de la tecnologia wearable. Es pot dir que l’any 2013 i principis del 2014 va ser l’any dels smartwatches, ja que moltes de les companyies m´esimportants relacionades amb la tecnologia (especialment de tel`efonsm`obilsi port`atils,per`otamb´ed’altres) van posar a la venta el seu propis smartwatches, traslladant aix´ıla seva compet`enciatamb´e en aquest nou `ambit. Aquest fenomen va estar motivat tamb´e,en gran part, degut al nou sistema operatiu creat per Google i dissenyat espec´ıficament per dispositius wearables anomenat Android Wear[15a]. Com passa amb els smartphones, la majoria de companyies van optar per utilitzar aquest sistema operatiu basat en Android pels seus dispositius.

A continuaci´o,es fa una breu descripci´odels rellotges actuals m´es destacats:

Sony SmartWatch [15ab] L’any 2012 la companyia Sony va treure al mercat el seu primer smartwatch. Aquest dispositiu servia de complement a l’smartphone Sony Xperia i fun- cionava a partir d’una versi´omodificada d’Android espec´ıficaper aquest aparell. L’any 2013 va sortir una nova versi´od’aquest rellotge, el Sony SmartWatch 2, que millorava les prestacions del seu predecessor ja que era capa¸cde connectar-se mitjan¸cant Bluetooth amb qualsevol tel`efonamb la versi´od’Android 4.0 o superior. Finalment, el 2014 es va anunciar la tercera generaci´od’aquest dispositiu amb millores en el processador i altres caracter´ıstiquesentre les quals destaca especialment l’´usd’Android Wear com a sistema operatiu.

Figura 2.6.: SmartWatch 3 SWR50 de Sony.

Samsung Galaxy Gear [15z] El primer smartwatch de Samsung, el Galaxy Gear, va ser anun- ciat l’any 2013. Un any despr´es,la companyia havia tret a la llum fins a 6 nous models. Tot i que el model original funcionava amb Android, el seu successor anomenat Gear 2 utilitza un sistema operatiu desenvolupat per Samsung que es diu . Aquest so est`abasat en Linux i ´esutilitzat per tots els smartwatches de Samsung. Actualment,

10 2.7. Actualitat

el model m´esrecent de la companyia ´esel Gear S i t´ecom a propietats m´esdestacades una pantalla corba Superamoled i la capacitat de connectar-se a internet fent servir un m`odul3G.

Figura 2.7.: S.

Moto 360 [15j] A la confer`enciadel Google I/O de Mar¸cdel 2014 es va anunciar el so An- droid Wear. En el mateix esdeveniment per`o,tamb´ees va anunciar que un dels primers smartwatches que utilitzaria aquest sistema operatiu seria el Moto 360. La seva principal caracter´ısticadiferencial respecte als seus competidors es troba en el seu disseny. El dis- positiu t´eforma circular i el seu aspecte ´esmolt semblant als rellotges convencionals. Pel que fa a les caracter´ıstiquest`ecniquesdisposa d’una pantalla t`actilcapacitiva, bateria amb una durada d’un dia, doble micr`ofon,un sensor per detectar el pols, acceler`ometre de 9 eixos i sensor de llum. A m´es,t´econnectivitat wifi i Bluetooth.

Figura 2.8.: Moto 360 de Motorola.

Pebble [15k] Tot i que en parlarem amb m´esdetall a la secci´o4.1 cal dir que aquest smartwatch va marcar un abans i un despr´esi va rellan¸car,l’any 2012, l’inter`espels rellotges intel- ligents. Finan¸cata trav´esde la plataforma de crowfunding , es va convertir en el projecte amb m´esdonacions fins aquell moment amb 10,3 milions de d`olars.El rellotge es va posar a la venta al gener del 2013 i al desembre del 2014 es va arribar al mili´ode ventes. L’any 2014 es va comercialitzar una versi´orenovada anomenada Pebble Steel

11 2. Hist`oriade l’Smartwatch

amb millores en el seu disseny fent servir materials met`al.lics i m´esresistents i reduint-ne el gruix. Finalment, al Febrer del 2015 es va llen¸caruna nova campanya de crowfunding a Kickstarter per finan¸carla nova generaci´ode rellotges Pebble anomenats Pebble Time. Com la vegada anterior, tamb´ees va convertir en un `exiti actualment ´esel projecte de Kickstarter que m´esdiners ha aconseguit amb un total de 20,4 milions de d`olars.El nou model est`adisponible des de maig del 2015 amb un preu de e250 i la seva versi´oamb detalls met`al.lics per e300.

Figura 2.9.: Pebble Time Steel.

Apple Watch [15c] Finalment, cal esmentar un dels ´ultims smartwatches que ha sortit a la venta i un dels m´esesperats: l’Apple Watch de la companyia Apple. L’aparell va sortir a la venta al juny del 2015 i ja s’ha convertit en el dispositiu wearable m´esvenut del mercat essent capa¸cde vendre gaireb´eun mili´od’unitats el dia del seu llan¸cament. El dispositiu utilitza un sistema operatiu propi anomenat WatchOS i ´escompatible amb l’iPhone 5 o superior. Disposa de connectivitat Bluetooth i wifi i d’una gran varietat de sensors. Entre totes les seves caracter´ıstiquest`ecniquesen destaquen dues: la rodeta digital, que permet interactuar amb el rellotge sense necessitat de tocar la pantalla i la tecnologia Force Touch, que ´escapa¸cde detectar diferents nivells de pressi´oamb el dit sobre la pantalla.

Figura 2.10.: Apple Watch Sport.

12 3. Objectius

Un cop fet el rep`asa la hist`oriadels smartwatches, a continuaci´os’explicaran els objectius que es volen aconseguir al finalitzar el projecte que es vol implementar. Com ja s’ha esmentat amb anterioritat, es vol muntar un sistema per obtenir mostres de l’acceler`ometred’un smartwatch i analitzar-les per tal d’extreure’n les conclusions pertinents.

Per`otot i que s’han comentat breument les idees principals que fonamenten aquest projecte, cal citar m´esacuradament els objectius i els coneixements que es volen assolir durant la realitzaci´o del treball:

• Tenir coneixement de l’evoluci´oi els models actuals d’smartwatch que es troben al mercat, i de les seves caracter´ıstiques.

• Assolir un nivell alt de coneixement de les caracter´ıstiquesi utilitats del rellotge Peb- ble i del seu entorn espec´ıficper a desenvolupar aplicacions. Aix´ıcom utilitzar els co- neixements previs en el llenguatge C per a crear l’aplicaci´oque obtindr`ales dades de l’acceler`ometredel Pebble.

• Obtenir els coneixements b`asicsde Java que possibilitaran el fet d’implementar una aplicaci´oAndroid per a un tel`efonm`obil.

• Aprofitar els coneixements en llenguatge Python per implementar un servidor en una Raspberry Pi.

• Obtenir les dades correctament i realitzar un processat adequat de les mateixes, per tal de poder fer una valoraci´oprecisa dels resultats.

• Aprofundir en la utilitzaci´od’eines de c`alculcom Octave i de la transformada de Fourier per l’an`aliside les mostres.

• Obtenir uns resultats significatius que serveixin per extreure’n unes conclusions ´utilsper a futurs projectes relacionats amb el tema.

13

4. Recursos emprats

Per a la realitzaci´od’aquest treball s’han utilitzat diversos recursos tant de hardware com de software que han resultat claus per a la correcte finalitzaci´odel projecte. Tot i que es podrien haver triat altres opcions, a continuaci´oes detallen els diferents dispositius i eines emprats en aquest cas i els motius pels quals han estat escollits.

4.1. Pebble

Tot i que ja ha estat esmentat anteriorment a l’apartat 2.7, ara aprofundirem amb m´esdetall en les caracter´ıstiquesd’aquest dispositiu. El Pebble ´es un smartwatch desenvolupat per la companyia Pebble Technology Corporation i que ofereix un munt d’avantatges i facilitats per a la programaci´o. Tot i que hi ha una gran quantitat d’aplicacions disponibles per aquest aparell i no ´esnecessari tenir coneixements d’inform`aticaper utilitzar-lo, la caracter´ısticam´es destacada i la qual ha fet que sigui tan popular actualment ´esprecisament el fet de que est`a pensat per a que l’usuari dissenyi les seves pr`opiesaplicacions. En aquest sentit, hi ha tota una comunitat i un software creat per la pr`opiacompanyia, que incentiva el desenvolupament d’aplicacions pel rellotge Pebble i la seva publicaci´oa la xarxa per a ser compartides amb la resta de la comunitat[15l].

El llenguatge de programaci´outilitzat per a la creaci´od’aquestes aplicacions ´esel C, i a la web del Pebble hi ha disponible una llibreria per a desenvolupadors que implementa moltes de les funcions b`asiquesper a facilitar aquesta tasca. Tot i aix`o,tamb´eexisteix la possibilitat de crear aplicacions fent servir el llenguatge JavaScript, el qual ´esmolt ´utila l’hora de tractar amb dades procedents d’un servidor, per exemple, en el cas de voler crear una aplicaci´oque mostr´esla previsi´ometeorol`ogicao el tr`ansiten una zona.

Cal esmentar tamb´eque el rellotge ´escapa¸cd’interactuar amb tel`efonsm`obilsque funcionin amb sistema operatiu Android o iOS i que hi ha llibreries per facilitar la integraci´oen ambdues plataformes.

El Pebble funciona amb un sistema operatiu propi, creat per la companyia, que s’anomena PebbleOS i que est`abasat en el FreeRTOS, un sistema operatiu open source de temps real molt utilitzat en sistemes encastats.

Hi han diferents models de Pebble amb m´eso menys caracter´ıstiques,per`oen el moment de comen¸caraquest treball es va decidir que entre els dos models que hi havien disponibles en

15 4. Recursos emprats aquell instant (el Pebble Watch i el Pebble Steel), s’utilitzaria el Pebble Steel per a la realitzaci´o del mateix. La principal difer`enciaentre aquests dos models ´unicament est`aen el disseny, les dimensions i els materials emprats en la fabricaci´o.[15m][15y]

Figura 4.1.: Pebble Steel.

Les caracter´ıstiques t`ecniquesdel Pebble Steel s´onles seg¨uents:

Dimensions

• Caixa: acer inoxidable, 46mm llargada x 34mm amplada x 10,5mm gruix

• Pes: 56g (incloent la polsera de pell)

Display

• Display de tinta electr`onicaLCD amb mem`oria,de la companyia Sharp

• Resoluci´ode 144 x 168 p´ıxels

• Llum LED de fons

• Vidre Gorilla Glass resistent contra les rallades, amb revestiment anti-petjades

Processador

• SoC STM32F205RE6 amb CPU ARM Cortex-M3 a 80MHz

Sistema operatiu

16 4.1. Pebble

• PebbleOS

Mem`oria

• Mem`oriaRAM: 128kB

• Mem`oriadel sistema (micro flash ROM): 512kB

• Mem`oriaflash externa: 8 ranures (slots) d’espai per aplicacions, 100kB per cada slot per un total de 800kB d’espai accessible per l’usuari. A m´es,compta amb 8MB de mem`oriaflash addicional.

Connectivitat

• Bluetooth 4.0

Sensors

• Acceler`ometre3D

• Br´uixola

• Sensor de llum

Alimentaci´oi bateria

• Bateria d’i´oliti-pol´ımerde 3,7V i 130mAh

• 7 dies d’autonomia

• Carregador USB amb connector magn`etic

Idiomes

• Angl`es,espanyol, franc`esi alemany

• Codificaci´ode car`acters: Unicode, Basic Latin i Latin-1 Supplement

Resist`enciaa l’aigua i condicions ambientals

• Resist`enciaa 50m sota l’aigua

17 4. Recursos emprats

• Humitat relativa: 5% a 95% sense condensaci´o

• Altitud m`aximad’operaci´ode 3.000m

El motiu pel qual s’ha triat aquest dispositiu per a realitzar el projecte ´esque s’ha cregut que les seves caracter´ıstiquesi les infinites possibilitats que ofereix fan d’aquest smartwatch un aparell interessant per experimentar-hi. La possibilitat de fer servir l’acceler`ometreincl`os al rellotge, juntament amb la seva connectivitat Bluetooth 4.0, ens facilitava el fet de poder obtenir dades de l’acceler`ometrei poder-les enviar directament cap a algun altre dispositiu. A m´es,el fet de que el llenguatge de programaci´outilitzat per implementar les aplicacions sigui el llenguatge C, tamb´e´esun motiu de pes per haver escollit aquest rellotge intel.ligent i no pas un altre. Finalment, la gran quantitat de documentaci´oi la qualitat d’aquesta, juntament amb la comunitat de desenvolupadors que donen suport a aquest aparell han estat decisius a l’hora de prendre la decisi´o.

4.2. Raspberry Pi

La Raspberry Pi[15x] ´esuna placa computadora (Single Board Computer (SBC)) de baix cost desenvolupada al Regne Unit per la Fundaci´oRaspberry Pi, amb l’objectiu d’estimular l’aprenentatge de les ci`enciesde la computaci´oper part dels alumnes de les escoles d’arreu del m´on.

El dispositiu inclou un SoC (System-on-chip) Broadcom BCM2835 per a tots els models de la Raspberry Pi 1, i BCM2836 pels models de la Raspberry Pi 2. El disseny no inclou disc dur ni SSD, ja que utilitza una targeta SD o microSD (depenent del model) per a l’emmagatzemament permanent. Tampoc inclou font d’alimentaci´oni carcassa. Les seves dimensions s´onmolt redu¨ıdes,nom´es85.60mm x 56mm x 21mm i el seu pes ´esde 45g.

La fundaci´od´onasuport per a la desc`arregade les distribucions per arquitectures ARM GNU/- Linux, Raspbian (derivada de Debian), RISC OS 5, Arch Linux ARM (derivada d’Arch Linux) i Pidora (derivada de Fedora) i promou principalment l’aprenentatge del llenguatge de pro- gramaci´oPython, tot i que tamb´esuporta altres llenguatges com BASIC, C, Perl o Ruby. Actualment, la Raspberry Pi 2 tamb´e´escompatible amb una versi´ode Windows 10.

En el cas que ens ocupa, s’ha utilitzat la Raspberry Pi com a servidor per a rebre les dades del tel`efonm`obil,ja que no necessit`avem un computador amb grans prestacions sin´oun dispositiu amb un consum baix que pogu´esestar connectat durant les 24 hores del dia. A m´es,el programa amb que s’ha implementat el servidor est`afet amb llenguatge Python, la qual cosa feia encara m´esadient fer servir aquest aparell i no un altre.

D’altra banda, s’ha fet servir una Raspberry Pi 1 Model B+, perqu`eera el model del que es disposava en aquell moment per a la realitzaci´odel treball. Cal dir per`o,que es podria haver fet servir qualsevol altre model, ja que els recursos que es requereixen no limiten l’´us d’un model en concret.

18 4.3. Android Studio

Figura 4.2.: Raspberry Pi 1 Model B+.

Les caracter´ıstiques principals d’aquest dispositiu s´on:

• SoC Broadcom BCM2835 amb CPU ARM1176JZF-S a 700MHz

• 512MB de mem`oriaRAM

• 4 ports USB

• 40 pins GPIO

• Port Full HDMI

• Port Ethernet

• Port combinat d’`audiojack de 3.5mm i v´ıdeocompost

• Interf´ıcieper a c`amera(CSI)

• Interf´ıcieper a display (DSI)

• Ranura per a targeta microSD

• GPU VideoCore IV

Pel que fa al sistema operatiu, s’ha utilitzat el Raspbian, un so basat en la distribuci´ode Linux Debian i que ´esel sistema operatiu al que d´onasuport oficialment la Fundaci´oRaspberry Pi.

4.3. Android Studio

Android Studio[15b] ´esun entorn de desenvolupament integrat (IDE) per a la plataforma Android. Va ser anunciat el 16 de maig de 2013 a la confer`enciaGoogle I/O, i va reempla¸car

19 4. Recursos emprats a Eclipse com a l’IDE oficial pel desenvolupament d’aplicacions Android. La primera versi´o estable va ser publicada al desembre del 2014.

Est`abasat en el software IntelliJ IDEA de JetBrains i est`apublicat de forma gratu¨ıtaa trav´es de la Llic`enciaApache 2.0. Est`adisponible per les plataformes Microsoft Windows, Mac OS X i GNU/Linux. A m´es,cal dir que est`aprogramat en Java.

Com a caracter´ıstiquesprincipals es poden esmentar les seg¨uents:

• Renderitzaci´oen temps real

• Consola de desenvolupador: consells d’optimitzaci´o,ajuda per a la traducci´o,estad´ıstiques

• Suport per la construcci´obasada en Gradle

• Refacci´oespec´ıficad’Android i arranjaments r`apids

• Eines Lint per detectar problemes de rendiment, usabilitat, compatibilitat de versions, i altres problemes

• Plantilles per crear dissenys comuns d’Android i altres components

• Suport per programar aplicacions per Android Wear

En aquesta ocasi´o,s’ha fet servir l’entorn de desenvolupament Android Studio per implementar l’aplicaci´oen Java que rep les dades de l’acceler`ometredel Pebble i les envia cap al servidor allotjat a la Raspberry Pi. S’ha triat aquest programa perqu`el’smartphone del que es disposa utilitza el sistema operatiu Android i, per tant, s’havia de crear una aplicaci´ocompatible amb aquest tel`efonm`obil.Com que Android Studio ´esl’IDE oficial de Google per al desenvolupa- ment d’aplicacions Android i a m´esa m´es´esgratu¨ıt,s’ha triat definitivament com la millor opci´o.

4.4. Octave

GNU Octave[15e] ´esun llenguatge d’alt nivell, destinat en un primer moment als c`alculs num`erics. Proporciona una senzilla interf´ıcie de l´ınia de comandes per resoldre problemes lineals i no lineals num`ericament, i per realitzar altres experiments num`ericsusant un llenguatge que ´es,a m´es,compatible amb Matlab.

Octave t´euna gran quantitat d’eines per resoldre problemes num`ericscomuns d’`algebralineal, trobar arrels d’equacions no lineals, integrar funcions ordin`aries,manipular polinomis, i inte- grar equacions diferencials ordin`ariesi algebraiques. Es´ f`acilment extensible i personalitzable a trav´esde funcions definides per l’usuari escrites en la llengua pr`opiad’Octave, o fent servir m`odulscarregats din`amicament escrits en C++, C, Fortran o altres llenguatges.

20 4.4. Octave

GNU Octave ´estamb´esoftware lliure. Es pot distribuir i/o modificar sota els termes de la Llic`enciaP´ublicaGeneral (GPL) de GNU publicada per la Free Software Foundation.

Octave va ser escrit per John W. Eaton i molts altres. Com que es tracta de programari lliure, la comunitat ha col.laborat al llarg dels anys afegint un gran nombre de noves funcionalitats i eines a les ja existents.

Algunes caracter´ıstiquespr`opiesdel llenguatge Octave s´on:

• La seva sintaxis ´esgaireb´eid`entica a la utilitzada a MATLAB

• Es´ un llenguatge interpretat

• No permet passar arguments per refer`encia.Sempre han de ser passats per valor

• No permet punters

• Es poden generar scripts

• Suporta gran part de les funcions de la biblioteca est`andardde C

• Pot ser ampliat per oferir compatibilitat amb les crides al sistema UNIX

• El llenguatge est`apensat per treballar amb matrius, i proveeix moltes funcionalitats per treballar amb aquestes

• Suporta estructures similars als struct de C

En aquest treball s’ha fet servir l’Octave per la part d’an`aliside les dades obtingudes. S’han utilitzat diverses eines d’aquest llenguatge, que han perm`esmostrar els resultats de manera que fossin m´esf`acilsd’interpretar i extreure’n conclusions. Ha estat molt ´utilsobretot a l’hora d’aplicar la transformada de Fourier a les dades obtingudes i presentar els resultats en forma de gr`afic,de manera que es pogu´esapreciar f`acilment el resultat d’haver fet servir la transformada.

21

5. Implementaci´o

Per aconseguir l’objectiu final i poder analitzar les dades de l’acceler`ometredel rellotge fent servir les eines d’Octave, primer calia implementar tot un sistema que permet´es obtenir les dades de l’acceler`ometredel Pebble, enviar-les al tel`efonm`obilsincronitzat amb al rellotge i, finalment, que el tel`efonles torn´esa enviar cap al servidor situat a la Raspberry Pi.

Tot aix`o,s’ha aconseguit implementant un seguit de m`odulsfent servir diferents tecnologi- es i llenguatges de programaci´o,depenent del dispositiu amb el qual s’estava tractant i la funcionalitat del m`odul en q¨uesti´o.

A continuaci´o,es detallen amb rigor els diferents m`oduls,la seva relaci´oamb la resta del sistema i els motius pels quals han estat implementats d’una manera determinada.

5.1. Esquema dels m`oduls

Figura 5.1.: Esquema dels m`odulsque conformen el sistema.

Com es pot veure a la figura 5.1, el sistema que s’ha pensat inclou 3 m`oduls.La funci´oprincipal d’aquests m`oduls´esla seg¨uent: accel Obt´eles dades dels eixos XYZ de l’acceler`ometre i les envia cap a l’smartphone amb el qual est`asincronitzat en aquell moment. Implementat en llenguatge C i fent servir la llibreria Pebble. comunicacio S’encarrega de rebre les dades del Pebble, gestionar-les i transmetre-les cap al

23 5. Implementaci´o

servidor. Est`aimplementat amb Java i ´escompatible amb dispositius Android exclusi- vament. servidor Rep les dades enviades pel tel`efonm`obil,les tracta correctament i les guarda en un fitxer en format CSV[15ah]. Est`aimplementat en Python.

Un cop coneguda la funci´ode cada m`odul,cal esmentar de manera general com s’ha dut a terme la comunicaci´oentre cadascun d’ells. Tot i que s’aprofundir`aen el tema en els apartats propis de cada m`odul,es considera oport´ufer una breu introducci´oper crear una imatge entenedora del conjunt del sistema.

La comunicaci´oentre el m`odulaccel i el m`odulcomunicacio s’ha efectuat mitjan¸cant l’API de Pebble anomenada DataLogging[15n]. Aquesta API ha perm`esimplementar la transmissi´ode les dades d’un aparell a un altre de forma senzilla tant pel cant´odel rellotge Pebble com pel cant´ode l’smartphone Android. Cal dir tamb´e,que la sincronitzaci´oentre el Pebble i el tel`efon Android es fa mitjan¸cant Bluetooth 4.0 i es fa de forma autom`aticaconfigurant correctament l’aplicaci´oAndroid oficial de Pebble, disponible a la Google Play Store.[15h]

Pel que fa a la transmissi´ode les dades des del tel`efonm`obilcap al servidor situat a la Raspberry Pi, el que s’ha utilitzat ha estat el m`etode POST del protocol HTTP que ha facilitat molt la tasca de la comunicaci´oentre aquests dos dispositius. A m´estamb´es’ha hagut de configurar adequadament la Raspberry Pi per a que actu´escom a servidor.

5.2. M`odulaccel

Aquest m`odulha estat el primer de tots en ser implementat i el m´esimportant de tots. El m`odulaccel s’ha escrit en llenguatge C fent servir les funcions proporcionades per la llibreria Pebble. Per poder programar aprofitant totes les eines que proporciona Pebble, primer de tot, abans de comen¸cara programar, es necessita instal.lar el paquet oficial Pebble SDK per a Linux que es pot descarregar gratu¨ıtament de la web de Pebble per a desenvolupadors[15o]. Des de la pr`opiaweb es poden seguir els passos definits en un tutorial que explica com instal.lar correctament totes les eines necess`aries[15p].Aquestes eines, a m´esde la llibreria, inclouen per exemple un emulador per poder provar les aplicacions creades a l’ordinador sense necessitat de carregar-les al rellotge.

Un cop instal.lat el conjunt d’eines i l’entorn de treball, ´esel moment de comen¸cara escriure l’aplicaci´o.

Abans d’explicar les diferents accions que realitza el codi, ´esconvenient realitzar una petita introducci´osobre l’acceler`ometredel rellotge Pebble.

Com el seu nom indica un acceler`ometre´esun dispositiu que mesura l’acceleraci´o.El motiu d’aquesta acceleraci´opot ser la gravetat o algun tipus de moviment f´ısiccom, per exemple, girar el canell o el moviment de la m`a.L’acceler`ometredel Pebble ´escapa¸cde detectar quan

24 5.2. M`odulaccel es d´onaun cop al rellotge, realitzar mesures a una freq¨u`enciadonada (la llibreria de Pebble d´onala possiblitat de triar entre diverses freq¨u`enciesde mostreig) i transmetre les mostres en paquets, per estalviar temps de processament i CPU.

A l’API de Pebble, les dades relacionades amb l’acceler`ometrees guarden en un struct anome- nat AccelData[15q]. Els camps d’aquest struct s´onels seg¨uents: struct AccelData { int16_t x; int16_t y; int16_t z; bool did_vibrate; uint64_t timestamp; };

Com es pot veure, les dades corresponents als tres eixos x, y i z s´onenters amb signe de 16 bits. Cada valor ´esmesurat en mili-Gs. L’acceler`ometredel Pebble est`acalibrat per mesurar una acceleraci´om`aximade 4G i el rang de possibles valors per cada eix ´esde -4000 a +4000.

El servei de vibraci´odel Pebble afecta a les dades de l’acceler`ometre, per aix`oel camp did vibrate informa sobre si el motor de vibraci´oestava actiu durant la recollida de mostres o no.

Finalment, el camp timestamp guarda el temps (data i hora) en que s’ha obtingut la mostra. Per aquest projecte aquesta dada ´esmolt important ja que s’est`arealitzant una an`aliside l’acceleraci´oal llarg del temps.

Figura 5.2.: Orientaci´odels 3 eixos de l’acceler`ometre.

Un cop descrit el comportament de l’acceler`ometredel Pebble es parlar`adel codi contingut en

25 5. Implementaci´o el m`odulaccel.

En aquest cas, el m`odulaccel ha estat escrit seguint les pautes descrites als nombrosos tutorials que es poden trobar a la web de Pebble, i que expliquen de forma clara i entenedora com escriure el codi per a realitzar les diferents accions que es volen aconseguir. En concret, s’han seguit especialment les indicacions descrites en dos dels manuals. El primer d’ells feia refer`enciaa com obtenir les dades de l’acceler`ometredel rellotge i mostrar-les correctament per pantalla[15r], i el segon tractava sobre com enviar aquestes dades cap al dispositiu connectat mitjan¸cant el Bluetooth[15n].

Tot seguit es descriuen les diferents funcions implementades al m`odulaccel: data handler Es´ el handler que va gestionant les dades que es reben de l’acceler`ometre.S’en- carrega de mostrar les dades dels tres eixos correctament a la pantalla i de transmetre les dades (del tipus AccelData) al tel`efonAndroid, mitjan¸cant la funci´o data logging log. main window load S’encarrega de carregar correctament la pantalla (Window) de l’aplicaci´o amb les opcions que hem definit dins de la funci´o. main window unload Elimina el text que apareix a la pantalla. init Inicialitza tots els serveis del m`oduli crea la pantalla d’inici de l’aplicaci´o. Els serveis inicialitzats s´onel de DataLogging i el de l’acceler`ometre.Tamb´ees configura la velocitat de mostreig i el nombre de mostres en cada lectura. deinit Destrueix la pantalla i finalitza tots els serveis utilitzats al programa. main Funci´oprincipal del m`odul. La majoria d’aplicacions Pebble segueixen la mateixa es- tructura al main, ´esa dir, primer init() per inicialitzar tots els serveis del programa, despr´es app event loop() que crea el loop dins del qual el programa realitza la seva tasca, i per acabar deinit(), que serveix per cancel.lar tots els serveis i finalitzar el programa correctament.

Per acabar amb la descripci´odel m`odulaccel, destacar la utilitat del recurs emprat per a la transfer`enciade les dades cap a l’smartphone anomenat DataLogging[15s]. Les funcions del DataLogging utilitzades al m`odulhan estat les seg¨uents: data logging create Crea una nova sessi´oper a la transmissi´ode dades. T´ecom a par`ametres una etiqueta associada a la sessi´oque s’acaba de crear, el tipus de dades a transmetre, la mida i una opci´oper detectar si existeix una altra sessi´oen marxa amb la mateixa etiqueta. data logging finish Elimina una sessi´ocreada anteriorment. data logging log Afegeix noves dades a la sessi´oque s’ha passat com a par`ametre.

26 5.3. M`odulcomunicacio

Figura 5.3.: Aspecte final de l’aplicaci´oPebble.

5.3. M`odulcomunicacio

En aquest apartat es parlar`adel m`odulimplementat a l’smartphone Android. Aquest m`odul ´esl’encarregat de rebre les dades enviades pel Pebble sincronitzat mitjan¸cant Bluetooth 4.0, tractar-les i transmetre-les de nou cap al servidor Python. El m`odulcomunicacio ha estat escrit en llenguatge Java, fent servir el programa Android Studio.

Per tal de poder fer la recepci´ode les dades del Pebble correctament s’ha utilitzat el PebbleKit Android, que ´esuna llibreria de Java proporcionada per Pebble i que es pot afegir a qualsevol projecte Android en el qual es vulgui interactuar amb aquest smartwatch[15t].

L’aplicaci´ocreada ´esmolt senzilla i es basa en una ´unicapantalla creada amb una Activity, amb els m`etodes propis d’aquesta classe, per`oaprofitant tamb´eles funcionalitats que ofereix el PebbleKit per interactuar amb el rellotge. Tamb´es’ha creat la classe AccelData per tractar f`acilment amb les dades rebudes de l’acceler`ometrei la classe HttpAsyncTask que ajuda a crear la connexi´oamb el servidor en un fil d’execuci´oseparat. A continuaci´oes fa una breu descripci´ode cadascun dels m`etodes de les tres classes:

MainActivity

onCreate Inicialitza l’Activity, crea la vista i estableix el text que apareix per pantalla.

onSaveInstanceState Guarda l’estat de l’Activity abans de ser destru¨ıdaper a la seva posterior recuperaci´o.

onRestoreInstanceState Recupera l’estat pr`eviament guardat un cop es reinicia l’Acti- vity.

27 5. Implementaci´o

onResume Es´ on es realitza el proc´esde rebre les dades de l’acceler`ometrei tractar-les. Inicialitza la classe HttpAsyncTask.

onPause S’utilitza per mantenir l’estat de l’activitat quan aquesta s’executa en segon pla.

delete Esborra la cadena de car`acterson estan representades les dades de l’acceler`ometre.

POST Obre una connexi´oHTTP, crea l’objecte que s’enviar`aen format JSON i l’envia mitjan¸cant el m`etode POST.

isConnected Comprova si hi ha connexi´oa la xarxa.

HttpAsyncTask

doInBackground S’utilitza per a realitzar la connexi´oHTTP en un segon pla. Executa el m`etode POST.

onPostExecute Indica si les dades han estat enviades correctament cap al servidor.

AccelData

AccelData Serveix per donar el format adequat a les dades de l’acceler`ometre.

getXaxis Retorna el valor de l’acceleraci´oen l’eix X.

getYaxis Retorna el valor de l’acceleraci´oen l’eix Y.

getZaxis Retorna el valor de l’acceleraci´oen l’eix Z.

getTimestamp Retorna el temps en que s’ha obtingut la mostra a l’acceler`ometre.

applyTimezone Transforma el temps del timestamp adequant-lo a la zona hor`ariaesca- ient.

Tamb´e´es important destacar en aquest cas la utilitat dels objectes i m`etodes de la llibreria Java de Pebble[15u], que han facilitat molt la tasca a l’hora d’obtenir les dades:

PebbleDataLogReceiver Objecte que habilita la possibilitat de rebre les dades procedents del rellotge Pebble. receiveData M`etode on es reben les dades de l’acceler`ometreprocedents del Pebble. onFinishSession Indica quan s’han acabat d’enviar dades des del Pebble.

28 5.4. M`odulservidor registerDataLogReceiver Registre l’objecte PebbleDataLogReceiver amb Android.

Pel que fa al disseny de la pantalla, aquest ´esmolt senzill i es basa en un RelativeLayout amb un TextView, que simplement mostra el text que es defineix en crear l’Activity.

Finalment, esmentar el fet de que per a que l’aplicaci´ofuncioni correctament es necessita que el dispositiu Android estigui connectat a internet d’alguna manera, ja sigui amb wifi o 3G.

Figura 5.4.: Disseny de l’aplicaci´ocomunicacio.

5.4. M`odulservidor

El m`odulservidor ´esl’encarregat de rebre les dades enviades per l’smartphone i guardar-les en un fitxer en format CSV (Comma-Separated Values)[15ah], per a la seva posterior an`alisi. Aquest m`odulcont´eun senzill servidor escrit en Python i corre sobre una Raspberry Pi. La ra´o per la qual ha estat implementat fent servir el llenguatge Python ´esque aquest ens proporciona una manera molt senzilla de crear un servidor amb la funcionalitat que es precisa en aquest projecte. A la documentaci´ooficial de la Fundaci´oPython es troba tota la informaci´orelativa a com implementar un servidor semblant al que s’ha creat en aquest cas[15w].

Cal esmentar que les dades es guarden en fitxers i no en una base de dades perqu`es’ha cregut

29 5. Implementaci´o que d’aquesta manera es facilitaria molt m´esla tasca d’an`alisidels resultats, ja que un fitxer en format CSV es pot obrir directament, per exemple, en una fulla de c`alculde LibreOffice. Tamb´e´esm´essenzill tractar les dades amb l’Octave.

Per crear el m`odulservidor s’han aprofitat les funcionalitats de la biblioteca est`andardde Python. En concret, s’han importat els m`oduls:

SimpleHTTPServer Proporciona una forma senzilla de capturar les peticions HTTP enviades al servidor.

SocketServer S’utilitza per facilitar la creaci´odel servidor.

Dins del m`odulservidor s’ha definit la classe Servidor, que cont´eels m`etodes necessaris per gestionar les peticions del protocol HTTP, GET i POST. A m´es,tamb´es’ha escrit dins d’aquest m`odulel programa principal que inicialitza i mant´een funcionament el servidor. Els m`etodes de la classe Servidor s´on: do POST Rep les peticions POST del protocol HTTP. Tamb´es’encarrega d’extreure les dades enviades al cos de la petici´oi guardar-les en un fitxer. do GET Realitza la mateixa tasca que do POST() per`oen aquest cas pel m`etode GET.

Finalment, per acabar cal esmentar que per a que el m`odulservidor funcioni correctament a la Raspberry Pi i pugui rebre les dades en qualsevol moment, cal que el dispositiu sigui visible i adre¸cabletan des de l’interior de la xarxa local com des de l’exterior. Es´ per aix`oque en aquest projecte en particular, com que no es disposa d’una IP fixe per a la Raspberry, s’ha hagut de configurar un DNS din`amicper a poder fer refer`enciaal dispositiu on s’allotja el servidor a partir d’un nom concret i invariable i no pas d’una adre¸caIP, ja que aquesta anir`avariant en tot moment sempre que ens hi adrecem des de fora de la xarxa local.

30 6. An`aliside les mostres

Finalment, en aquest ´ultimapartat s’analitzaran les dades obtingudes sobre l’acceleraci´ode- tectada pel dispositiu Pebble. Cada mostra obtinguda cont´e4 valors, que s´onl’acceleraci´o mesurada en els 3 eixos i el timestamp, amb el temps exacte en que s’han obtingut els tres valors anteriors. Com ja s’ha esmentat anteriorment a l’apartat 4.4, per analitzar els resultats amb detall i poder extreure’n alguna conclusi´os’ha fet servir l’Octave, el qual ha estat de gran ajuda sobretot per poder representar de forma gr`aficales mostres. Amb l’Octave s’ha pogut aplicar la FFT (Fast Fourier Transform) a les mostres de forma senzilla, aconseguint visualitzar les dades de manera que aquestes tinguessin cert sentit, i no pas com una seq¨u`encia de n´umeros.

Tot seguit, es fa una breu explicaci´osobre qu`e´esla FFT i com s’ha implementat amb Octave en aquest cas. En acabat, s’exposen els diferents experiments realitzats amb l’acceler`ometrei les conclusions extretes.

6.1. Transformada r`apida de Fourier (FFT)

La transformada r`apidade Fourier (FFT, de l’angl`esFast Fourier Transform) ´esun algoritme que computa la transformada discreta de Fourier (DFT) d’una seq¨u`encia,o la seva inversa. La DFT s’utilitza en processament digital del senyal per transformar senyals discrets en el domini temporal a la seva representaci´oen el domini freq¨uencial,i viceversa. Es´ a dir, es basa en la descomposici´od’una seq¨u`encia de valors en components de diferents freq¨u`encies.

Siguin x0, . . . , xn−1 nombres complexos. La DFT es defineix com:

n−1 X − 2 jk fj = xke n j = 0, . . . , n − 1 k=0

L’avaluaci´odirecta d’aquesta f´ormula requereix O(n2) operacions aritm`etiques. Mitjan¸cant un algoritme que calculi la FFT, es pot obtenir el mateix resultat amb tan sols O(n log n) operacions. En general, aquests algorismes depenen de la factoritzaci´ode n per`o,al contrari del que freq¨uentment es creu, existeixen FFTs per a qualsevol n, incl´usamb n primer.

La idea que permet aquesta optimitzaci´o´esla descomposici´ode la transformada en altres de m´essimples que es tornen a descompondre, i aix´ıfins a arribar a transformades de 2 elements on k pot prendre valors 0 i 1. Un cop resoltes les transformades m´essimples, s’han d’agrupar

31 6. An`aliside les mostres en altres de nivell superior que s’han de resoldre de nou i aix´ısuccessivament fins a arribar al nivell m´esalt. Al final d’aquest proc´es,els resultats obtinguts han de reordenar-se.

En el cas d’Octave, l’algoritme de la FFT ja est`aimplementat a trav´esd’una de les seves llibreries[15f]. Per tal d’aplicar la DFT a les mostres, s’han utilitzat recursos de l’assignatura de Processament Digital del Senyal, Grau en Enginyeria de Sistemes TIC, EPSEM. En aquesta assignatura es tractava el tema de la DFT coma eina per a processar senyals discrets. En concret, s’ha fet servir un programa en Octave que implementa una funci´oque permet calcular la DFT fent servir la FFT i passant com a par`ametresles mostres i una freq¨u`enciade mostreig.

La funci´o´esla que es mostra a continuaci´o:

function [X,F]=f_TF(x,fs) N=length(x); X1=fft(x); X2=fftshift(X1); X=X2/N; F=[-ceil((N-1)/2):floor((N-1)/2)]*fs/N;

El programa primer calcula el nombre de mostres amb la funci´od’Octave length(), despr´es calcula la FFT del vector x fent servir fft() i realitza un canvi a la transformada amb fftshift(), que mou la freq¨u`encia0 al centre del vector. Per acabar, es divideix el resultat pel nombre de mostres i es defineix la finestra amb les freq¨u`enciesobtingudes.

Finalment, un cop s’ha implementat la funci´o f TF(), nom´escal llegir les dades del fitxer CSV i representar-les de forma correcte fent servir aquesta funci´oi plot(), que serveix per a representar els resultats en forma de gr`afica.Un exemple d’aix`o,en aquest cas, seria:

function grafic(f,Fm) data = dlmread(f,’,’); t = data(:,1) - data(1,1); ax = data(:,2);

[X,F]=f_TF(ax,Fm); figure(2),plot(F,abs(X)) xlabel("f(Hz)"); ylabel("Acceleracio"); title("TF ax")

Amb aquest programa es mostraria un gr`aficamb les freq¨u`enciesobtingudes en utilitzar la FFT sobre les mostres de l’acceleraci´oen l’eix X.

32 6.2. Resultats obtinguts

6.2. Resultats obtinguts

Un cop feta aquesta introducci´o,on s’ha aprofundit una mica en un dels punts m´esinteressants d’aquest apartat, com ´esla utilitzaci´ode la FFT, ara es passa a parlar finalment dels resultats obtinguts i de les observacions i les conclusions que es poden extreure d’aquests.

A continuaci´o,s’analitzen un seguit d’experiments que s’han realitzat per obtenir mostres de l’acceleraci´oamb el rellotge Pebble. S’ha cregut que cadascuna d’aquestes situacions resultava ´utilper obtenir alguna conclusi´orellevant sobre l’activitat d’una persona i com, aquesta, pot ser monitoritzada a partir d’un dispositiu de mesura situat al canell.

Pel que fa a les unitats en que es mesuren les acceleracions per part de l’acceler`ometredel Pebble, aquestes s´onmesurades en mili-Gs (mg)[15r]. Es´ a dir, 1000mg ´esigual a l’acceleraci´o originada per la gravetat o g. S’utilitza la notaci´oen min´usculaper diferenciar-la de la G o Constant de Gravitaci´oUniversal.

6.2.1. An`alisidels resultats obtinguts quan l’usuari camina

El primer dels experiments ha consistit en capturar les mostres de l’acceleraci´oquan l’usuari camina. En aquest cas s’han realitzat dues proves: una amb l’usuari caminant sobre una superf´ıciedura com pot ser el terra de casa, i l’altra caminant sobre una superf´ıciem´estova com ´esla gespa d’un parc. El que es pret´enobservar ´essi es poden apreciar en les dades obtingudes la difer`encia de terreny pel qual es camina.

Per aquest experiment s’han agafat mostres durant un breu per´ıode de temps, ja que nom´eses vol analitzar el moviment al caminar, per`oamb una freq¨u`enciade mostreig de 50Hz, per tal d’obtenir moltes mostres.

El gr`aficque mostra els valors obtinguts de l’acceleraci´oen els tres eixos caminant sobre una superf´ıciedura ´esel de la figura 6.1.

33 6. An`aliside les mostres

Figura 6.1.: Representaci´ode les mostres de l’acceleraci´oen els 3 eixos obtingudes caminant sobre uns superf´ıciedura.

Com es pot veure, l’acceleraci´o´esmolt diferent en cadascun dels 3 eixos. Tot i aix`o,els resultats obtinguts s´onels esperats, ja que quan es camina, els bra¸cosacostumen a realitzar un moviment sincronitzat amb el de les passes, endavant i endarrere. Si tenim en compte que el rellotge est`asituat al canell, aquest moviment es correspon amb l’eix X de l’acceler`ometrei ´es per aix`oque les mostres en aquest eix s´onles que tenen major acceleraci´o.No obstant, aquest moviment oscil.lant del bra¸cno t´elloc ´unicament en l’eix X sin´oque el bra¸ctamb´epuja i baixa quan fa aquest recorregut endavant i endarrere, depenent de la posici´o.En definitiva, podem dir que el moviment del bra¸cquan tenim el rellotge situat al canell es despla¸casobre el pla XY, agafant com a refer`enciala orientaci´odels eixos en l’acceler`ometre del Pebble. Per tant, ´esl`ogicque tamb´eaparegui una acceleraci´oen Y, per`oque aquesta sigui m´espetita que en l’eix X. Finalment, tamb´es’observen petits canvis en l’acceleraci´ode Z, per`osempre propers a 0.

Tamb´ecal comentar que cada pic del senyal (s’aprecia especialment en l’eix Y) correspon a una pas, per tant, si es conten els pics que hi han entre 0 i 8 segons s’obtenen les passes donades durant aquest interval de temps. En conseq¨u`encia,es pot calcular la freq¨u`enciaa la que camina l’individu. En aquest cas, aquesta freq¨u`encia´esde 7passes/8segons = 0, 875passes/segon, o el que ´esel mateix 0,875Hz.

En quant als valors estad´ısticss’ha obtingut:

Acceleraci´oen l’eix X

• Mitjana: 968mg

34 6.2. Resultats obtinguts

• Pot`encia:948801mg2

• Vari`ancia:11644mg2

Acceleraci´oen l’eix Y

• Mitjana: 475mg

• Pot`encia:237901mg2

• Vari`ancia:11699mg2

Acceleraci´oen l’eix Z

• Mitjana: 53mg

• Pot`encia:7641mg2

• Vari`ancia:4728mg2

M`odulde l’acceleraci´o

• Mitjana: 1086mg

• Pot`encia:1194343mg2

• Vari`ancia:14116mg2

Ara si es compara el gr`aficde la figura 6.1 amb el de la figura 6.2 que ens mostra els re- sultats obtinguts caminant sobre un terra de gespa, es pot observar com les difer`enciess´on significatives.

35 6. An`aliside les mostres

Figura 6.2.: Representaci´ode les mostres de l’acceleraci´oen els 3 eixos obtingudes caminant sobre gespa.

Com es pot veure, els valors obtinguts en l’eix X, ara tenen una major amplitud de resultats. En canvi, les mostres per l’eix Y tenen un valor una mica m´espetit, mentre que en Z passa tot el contrari, han augmentat. Totes aquestes variacions s´ondegudes al canvi en les condicions del terreny sobre el qual es caminava durant l’experiment. El terra de casa, ´esuna superf´ıcie de rajola, dura i llisa, on es pot caminar de forma estable i regular. D’altra banda, la gespa d’un parc, ´esun terreny de terra amb irregularitats, la qual cosa fa que la estabilitat del cos en caminar sigui menor i ´esper aix`oque es produeixen aquestes difer`enciesen el moviment dels bra¸cos,aparentment dif´ıcilsd’apreciar sin´os’analitzen detingudament.

La freq¨u`enciade les passes tamb´e´esde 0,875Hz en aquest experiment.

Pel que fa als resultats estad´ıstics,en aquest cas s´onels seg¨uents:

Acceleraci´oen l’eix X

• Mitjana: 1024mg

• Pot`encia:1093963mg2

• Vari`ancia:44720mg2

Acceleraci´oen l’eix Y

• Mitjana: 330mg

36 6.2. Resultats obtinguts

• Pot`encia:126009mg2

• Vari`ancia:16604mg2

Acceleraci´oen l’eix Z

• Mitjana: 107mg

• Pot`encia:16924mg2

• Vari`ancia:5338mg2

M`odulde l’acceleraci´o

• Mitjana: 1090mg

• Pot`encia:1236897mg2

• Vari`ancia:46617mg2

Per acabar, es mostren les gr`afiquesamb el resultat de calcular la FFT de les mostres per a cadascun dels eixos, en ambd´osexperiments. Aquestes gr`afiquesresultaran especialment ´utils si es relacionen amb la freq¨u`enciaa la que camina l’usuari que s’ha calculat anteriorment.

En ampliar els gr`aficsa prop dels 0Hz, es pot apreciar com, en tots els casos, apareixen components de la freq¨u`enciaa 0.875Hz aproximadament. Per`ono nom´esaix`o,sin´oque tamb´e apareixen pics a dist`anciesm´ultiplesde 0,875Hz. Aix`ono ´escasualitat, sin´oque ´esdegut a que cadascuna d’aquestes m´ultiplescomponents representa un pas.

37 6. An`aliside les mostres

Figura 6.3.: FFT en les mostres de l’acceleraci´oen l’eix X, pel cas en que el terreny ´esdur.

Figura 6.4.: FFT en les mostres de l’acceleraci´oen l’eix Y, pel cas en que el terreny ´esdur.

38 6.2. Resultats obtinguts

Figura 6.5.: FFT en les mostres de l’acceleraci´oen l’eix Z, pel cas en que el terreny ´esdur.

Figura 6.6.: FFT en les mostres de l’acceleraci´oen l’eix X, pel cas en que es camina sobre gespa.

39 6. An`aliside les mostres

Figura 6.7.: FFT en les mostres de l’acceleraci´oen l’eix Y, pel cas en que es camina sobre gespa.

Figura 6.8.: FFT en les mostres de l’acceleraci´oen l’eix Z, pel cas en que es camina sobre gespa.

40 6.2. Resultats obtinguts

6.2.2. An`alisidels resultats obtinguts quan l’usuari corre

Aquest experiment ha estat semblant al cas anterior, per`oaquesta vegada les dues situacions que es comparen no es diferencien en el tipus de terreny sobre el qual es troba l’usuari, sin´oen la velocitat dels seus moviments. Es comparar`al’acceleraci´oobtinguda en c´orrera diferents velocitats una mateixa persona.

En aquest experiment tamb´es’ha mostrejat a 50Hz i s’ha acotat la prova a un temps redu¨ıt per tal d’intentar obtenir unes mostres regulars en quant al moviment de l’usuari i la velocitat.

A la figura 6.9 es mostren els valors mesurats quan l’usuari corria a un ritme suau (trot).

Figura 6.9.: Representaci´ode les mostres de l’acceleraci´oen els 3 eixos quan l’usuari corre al trot.

Com es pot observar, en aquest cas, el gr`aficde les mostres ´esmolt diferent a l’exemple anterior. Aquesta vegada, predomina l’acceleraci´oen l’eix Y i, a m´es a m´es,els valors de totes tres components de l’acceleraci´o´esm´esgran que anteriorment quan la persona nom´es caminava. Si es pensa amb deteniment, tot aquests canvis tenen molt sentit. Primer de tot, que les acceleracions siguin m´es grans ´esmolt normal, si es t´een compte que al c´orreres produeixen moviments del cos amb molta m´esacceleraci´oque no pas caminant. D’altra banda, que l’acceleraci´om´esgran es produeixi en l’eix Y en comptes de l’eix X tamb´eera d’esperar, degut a la posici´odels bra¸cos i les mans quan es corre, ja que aquests es col.loquen doblegats als costats i mirant endavant, mentre que quan es camina s’acostumen a dur estirats cap abaix.

La freq¨u`enciade les passes al c´orrers’ha calculat que ´esd’1,3Hz.

Si es miren els valors estad´ısticscalculats es veu el seg¨uent:

41 6. An`aliside les mostres

Acceleraci´oen l’eix X

• Mitjana: 281mg

• Pot`encia:690505mg2

• Vari`ancia:611293mg2

Acceleraci´oen l’eix Y

• Mitjana: 1170mg

• Pot`encia:3080932mg2

• Vari`ancia:1711321mg2

Acceleraci´oen l’eix Z

• Mitjana: 99mg

• Pot`encia:75944mg2

• Vari`ancia:65959mg2

M`odulde l’acceleraci´o

• Mitjana: 1720mg

• Pot`encia:3847382mg2

• Vari`ancia:885914mg2

A continuaci´o,es planteja l’altra part de l’experiment, en que l’usuari corre esprintant. A la figura 6.10 es poden veure els resultats i realitzar una comparaci´ovisual amb els que s’han obtingut anteriorment.

42 6.2. Resultats obtinguts

Figura 6.10.: Representaci´ode les mostres de l’acceleraci´oen els 3 eixos quan l’usuari corre esprintant.

El primer que crida l’atenci´oen aquesta ocasi´o´esel fet de que totes tres components de l’acceleraci´ovarien molt. Tamb´e´esdestacable el fet de que les components X i Y varien pr`acticament amb la mateixa amplitud. Aquestes difer`enciestan grans s´onprovocades pel fet de que al esprintar es generen unes acceleracions molt m´esgrans que en qualsevol altre cas i, aquestes, incideixen igual en els tres eixos. Pel que fa a l’eix Z, tot i que els bra¸cosen principi quan es mouen endavant i endarrere nom´esactuen en el pla XY tal i com s’ha esmentat abans, en aquest cas, tot el cos est`arealitzant un moviment explosiu i l’estabilitat del cos no ´esla mateixa que, per exemple, caminant. Per aquest motiu, apareix una acceleraci´ogran en l’eix Z, deguda a la manca de control del moviment dels bra¸cosinflu¨ıtspels moviments bruscos de tot el cos.

La freq¨u`enciade les passes en esprintar ´esd’1,7Hz.

Els valors estad´ısticsmesurats en aquest experiment s´onels seg¨uents:

Acceleraci´oen l’eix X

• Mitjana: 1142mg

• Pot`encia:5430294mg2

• Vari`ancia:4124503mg2

Acceleraci´oen l’eix Y

• Mitjana: 1173mg

43 6. An`aliside les mostres

• Pot`encia:5325597mg2

• Vari`ancia:3949283mg2

Acceleraci´oen l’eix Z

• Mitjana: 684mg

• Pot`encia:812275mg2

• Vari`ancia:343910mg2

M`odulde l’acceleraci´o

• Mitjana: 3244mg

• Pot`encia:11568167mg2

• Vari`ancia:1042990mg2

Finalment, ara tamb´ees mostren els gr`aficsresultants d’aplicar la FFT. Com en el cas anterior, a qualsevol dels gr`aficses poden distingir les diferents components a freq¨u`enciesm´ultiplesde la freq¨u`enciaa la que corre l’individu.

Figura 6.11.: FFT en les mostres de l’acceleraci´oen l’eix X, quan s’est`acorrent al trot.

44 6.2. Resultats obtinguts

Figura 6.12.: FFT en les mostres de l’acceleraci´oen l’eix Y, quan es corre al trot.

Figura 6.13.: FFT en les mostres de l’acceleraci´oen l’eix Z, quan s’est`acorrent trotant.

45 6. An`aliside les mostres

Figura 6.14.: FFT en les mostres de l’acceleraci´oen l’eix X, quan s’esprinta.

Figura 6.15.: FFT en les mostres de l’acceleraci´oen l’eix Y, quan s’esprinta.

46 6.2. Resultats obtinguts

Figura 6.16.: FFT en les mostres de l’acceleraci´oen l’eix Z, en esprintar.

47 6. An`aliside les mostres

6.2.3. An`alisidels resultats obtinguts durant un dia

En aquest apartat, s’analitzaran les dades de forma lleugerament diferent als dos experiments anteriors. L’objectiu en aquest cas no ser`aanalitzar una activitat concreta, com pot ser c´orrero caminar, sin´oque s’estudiaran les mostres recollides al llarg d’un dia, per tal de determinar les possibles difer`enciesque es puguin apreciar en la realitzaci´ode diferents activitats. D’aquesta manera es podr`asaber si existeix la possibilitat de distingir, mitjan¸cant un simple acceler`ometre situat al canell, si, per exemple, l’usuari est`arealitzant les tasques quotidianes del dia a dia o si, per contra, est`adormint.

Les dades obtingudes s’han mostrejat a una freq¨u`enciade 2Hz, ´esa dir, dues mostres per segon, ja que en aquest cas no es necessita tanta precisi´odegut a que estem mostrejant un per´ıode de temps molt m´esgran que les anteriors vegades.

Tot seguit, a la figura 6.17 es mostra el resultat de l’experiment. Cal destacar el fet de que el gr`aficrecull gaireb´e5 hores d’activitat de l’acceler`ometre.

Figura 6.17.: Representaci´ode les mostres de l’acceleraci´oen els 3 eixos mesurades mentre realitza tasques quotidianes.

A la gr`aficaes mostra el moviment d’una persona durant aproximadament 5 hores. Durant aquest temps, s’ha fet un control de les activitats realitzades per l’usuari. Els fets transcorren durant un mat´ı. Al principi, es pot observar com les dades varien molt, aix`o´esdegut a que l’individu estava caminant per la casa, preparant l’esmorzar i menjant-se’l. Per tant, es realitzaven tasques molt diverses sense cap patr´oen els moviments del bra¸cque es pugui apreciar aparentment al gr`afic.

Despr´esde la primera mitja hora, es pot observar com les mostres mantenen uns valors estables. Aquesta franja de temps es correspon a un per´ıode aproximadament de 30 minuts en acabar d’esmorzar, en que la persona estava asseguda al sof`amirant la televisi´o.Els bra¸cosestaven

48 6.2. Resultats obtinguts quiets recolzats sobre les cames i es per aix`oque aqu´ıs´ıque es pot veure com una mateixa activitat realitzada durant un per´ıode de temps relativament llarg, es distingeix a simple vista a la gr`afica. Els valors de l’acceleraci´oen aquest temps tamb´eresulten els esperats, ja que amb el bra¸cen posici´ohoritzontal, segons els eixos definits amb anterioritat, els resultats han de ser propers a 0 en l’eix X amb tota seguretat. En el cas dels altres eixos dep`enm´esde la posici´ode les mans.

A continuaci´os’observa una variaci´oque, si es mira amb deteniment, correspon als valors obtinguts anteriorment en l’experiment de caminar, ja que durant aquest interval, efectivament, l’individu s’estava despla¸cant per la casa.

Tot seguit, s’observa un per´ıode d’unes 3 hores en que les dades s´onmolt estables. Com es pot veure, els valors s´onsimilars als obtinguts mentre s’estava assegut amb els bra¸cosrecolzats sobre les cames en posici´ohoritzontal, per`oamb m´esamplitud de variaci´o.Aquesta franja de temps es correspon amb l’estona que l’usuari va destinar durant aquell mat´ıa redactar aquest document. Per aquest motiu els resultats s´onsimilars, ja que la posici´odels bra¸cos´essemblant per`oaquesta vegada recolzant-los sobre la taula amb les mans sobre el teclat. D’altra banda, ´esf`acildeduir que l’oscil.laci´oen les mostres ´esdeguda al moviment de la m`aal polsar les tecles del teclat de l’ordinador.

Finalment, es pot distingir com l’usuari torna a caminar de nou durant un breu espai de temps.

En aquest cas, tamb´ees mostren els resultats estad´ısticsde l’experiment:

Acceleraci´oen l’eix X

• Mitjana: −367mg • Pot`encia:373053mg2 • Vari`ancia:238174mg2

Acceleraci´oen l’eix Y

• Mitjana: 375mg • Pot`encia:202968mg2 • Vari`ancia:61804mg2

Acceleraci´oen l’eix Z

• Mitjana: −491mg • Pot`encia:418990mg2 • Vari`ancia:177417mg2

M`odulde l’acceleraci´o

49 6. An`aliside les mostres

• Mitjana: 995mg • Pot`encia:995012mg2 • Vari`ancia:3673mg2

Ara es veur`ael resultat d’haver realitzat el mateix experiment, per`omentre la persona dorm. A la gr`aficade la figura 6.18 es poden observar els resultats.

Figura 6.18.: Representaci´ode les mostres de l’acceleraci´oen els 3 eixos mesurades mentre la persona dorm.

Com es pot observar al gr`aficdurant la nit les mostres obtingudes de l’acceler`ometretamb´e donen informaci´o. En aquesta situaci´o,cal tenir en compte que el cos es troba en posici´o horitzontal la qual cosa fa canviar molt els resultats, respecte al que s’havia vist amb anterio- ritat. Per exemple, fins ara s’havia vist que l’eix en que la variaci´ode l’acceleraci´oera menor, realitzant activitats en que el cos es troba en posici´ovetical,era l’eix Z. Ara, s’observa com aquest fet s’ha traslladat a l’eix X, que ´es el que menys varia al llarg de l’experiment. Aix´o evidentment ´esdegut al canvi de posici´odel cos.

Quan la persona est`aal llit, els possibles moviments m´eshabituals s´ongirar el cos cap a la dreta o l’esquerra, o simplement mirant cap amunt. Pel que fa als bra¸coss’acostumen a tenir estirats cap abaix o recollits al costat del cap, especialment quan es dorm de costat.

Sabent que quan la persona dorm de costat amb els bra¸cosplegats al costat del cap, en el que s’anomena posici´ofetal, el valor de l’acceleraci´oen l’eix X ´esnegatiu independentment del cant´ocap al que dormi (ja que el bra¸csempre queda lleugerament cap amunt degut al coix´ı) i, a m´esa m´es,que en aquesta posici´oel valor de Y variar`a´unicament quan es giri el canell, podem establir que en valor en l’eix Z ens indica si la persona s’ha girat de cant´oal llit o es mant´equieta.

50 6.2. Resultats obtinguts

En el cas de l’individu al qual corresponen les dades de la gr`afica,es pot apreciar molt clarament que durant les hores intermitges, quan el somni ´esm´esprofund, la persona dorm girat cap a l’esquerra tota l’estona (tenint en compte que porta el rellotge al canell esquerra), mentre que les hores on el somni ´esm´essuperficial s’acostuma a moure molt m´es.

Gr`aciesa aquest gr`afices pot concloure que l’acceler`ometredel rellotge tamb´eserveix per determinar caracter´ıstiquesdel somni de l’individu, com s´onla posici´oen la que dorm, les hores de somni profund, etc.

A continuaci´o,s’indiquen les dades estad´ıstiquesper l’acceleraci´oen aquesta prova:

Acceleraci´oen l’eix X

• Mitjana: −547mg

• Pot`encia:308963mg2

• Vari`ancia:9657mg2

Acceleraci´oen l’eix Y

• Mitjana: −334mg

• Pot`encia:233054mg2

• Vari`ancia:121150mg2

Acceleraci´oen l’eix Z

• Mitjana: −152mg

• Pot`encia:442670mg2

• Vari`ancia:419411mg2

M`odulde l’acceleraci´o

• Mitjana: 992mg

• Pot`encia:984689mg2

• Vari`ancia:327mg2

51

7. Conclusions

Com a valoraci´ofinal de projecte, es pot dir que el resultat ha estat satisfactori en quant als objectius assolits.

Primer de tot, ha estat molt interessant aprendre m´escoses sobre l’evoluci´odels smartwatches des dels seus inicis fins a l’actualitat, destacant per sobre de tot com, en els ´ultims 3 anys, s’ha produ¨ıtuna revoluci´oen aquest tipus de dispositius, que fa que cada cop estiguin m´espresents al mercat.

D’altra banda, en la implementaci´odel sistema que ha perm`esanalitzar les dades de l’ac- celer`ometredel rellotge Pebble, ´eson s’han pogut aplicar m´es`ampliament els coneixements adquirits durant el Grau en Enginyeria de Sistemes TIC. En aquesta part del treball s’ha plan- tejat un sistema de m`oduls,s’ha creat el codi fent servir diferents llenguatges i aparells i s’ha trobat la manera d’establir comunicaci´oentre els diferents m`oduls,en funci´ode les necessitats.

Finalment, a la part d’an`aliside les mostres obtingudes s’han aplicat els coneixements apresos a l’assignatura de Processament Digital del Senyal, per tal de tractar les mostres correctament i poder-les visualitzar de forma que servissin per extreure’n algun tipus de conclusi´o´util. Es´ per aix`o,que en aquest apartat s’ha fet servir la transformada r`apidade Fourier (FFT) i l’Octave per a l’estudi de les dades.

Pel que fa als resultats, com a conclusi´ofinal es podria dir que s’ha observat com l’´usd’un acceler`ometreper un dispositiu que es col.loca al canell, s´ı que resulta ´utilen la tasca de monitoritzar l’activitat d’una persona. Es podria pensar a priori que, degut a la localitzaci´o del sensor, aquest no seria capa¸cde mesurar dades significatives m´esenll`adels moviments relacionats amb el bra¸con es porta posat el rellotge. Per`oaix`ono ha estat aix´ı,ja que si es fa una interpretaci´oacurada de les dades obtingudes, es pot arribar a con`eixermolta informaci´o sobre l’usuari. En aquest cas, per exemple, s’ha pogut diferenciar entre caminar sobre diferents superf´ıcies,c´orrera diferents velocitats o saber quantes hores ha dormit la persona i, fins i tot, si ha dormit b´eo malament.

Tota aquesta informaci´oapresa al llarg d’aquest treball pot tenir un gran valor per a futurs projectes. Sobretot, l’estudi final de les dades pot ser molt ´utila l’hora de crear aplicacions per smartwatches o per polseres intel.ligents que vulguin monitoritzar l’activitat de les persones fent servir un acceler`ometre. Aquest tipus d’aplicacions s´onmolt utilitzades en el camp de l’esport o de l’ajuda a la gent gran i les persones discapacitades.

53

Bibliografia

[15a] Android. Wear. Set. de 2015. url: https://www.android.com/wear/. [15b] Android Developers. Android Studio. Set. de 2015. url: http://developer.android. com/tools/studio/index.html. [15c] Apple. Watch. Set. de 2015. url: http://www.apple.com/watch/. [15d] Gizmodo. Wristlet Route Indicator 1927s Answer to GPS. Set. de 2015. url: http: //gizmodo.com/388005/wristlet-route-indicator-1927s-answer-to-gps. [15e] GNU Octave. Set. de 2015. url: https://www.gnu.org/software/octave/. [15f] GNU Octave. Signal Processing. Set. de 2015. url: https://www.gnu.org/software/ octave/doc/interpreter/Signal-Processing.html. [15g] GOOD. The Smartwatch through History: Great Idea, Mediocre Product. Set. de 2015. url: http://magazine.good.is/articles/apple-smartwatch-history. [15h] Google Play. Pebble. Set. de 2015. url: https://play.google.com/store/apps/ details?id=com.getpebble.android&hl=en. [15i] International Business Times. From IBM to Microsoft - A Brief History of The Smartwatch. Set. de 2015. url: http://www.ibtimes.co.uk/smartwatch-history- apple-iwatch-samsung-galaxy-gear-503752. [15j] Motorola. Moto 360 - Android Smartwatch. Set. de 2015. url: https://www.motorola. com/us/products/moto-360. [15k] Pebble. Pebble, el reloj inteligente — Reloj inteligente para iPhone Android. Set. de 2015. url: https://www.pebble.com/. [15l] Pebble. Developer. Set. de 2015. url: http://developer.getpebble.com/. [15m] Pebble. Steel. Set. de 2015. url: https://pebble.com/pebble-steel-smartwatch- features. [15n] Pebble Developer. Data Logging on Pebble. Set. de 2015. url: http://developer. getpebble.com/guides/pebble-apps/communications/pebble-datalogging/. [15o] Pebble Developer. Pebble SDK. Set. de 2015. url: http://developer.getpebble. com/sdk/. [15p] Pebble Developer. Installing the Pebble SDK. Set. de 2015. url: http://developer. getpebble.com/sdk/install/. [15q] Pebble Developer. Accelerometer Service. Set. de 2015. url: http : / / developer . getpebble.com/docs/c/Foundation/Event_Service/AccelerometerService/. [15r] Pebble Developer. Detecting Acceleration. Set. de 2015. url: https://developer. getpebble.com/guides/pebble-apps/sensors/accelerometer.

55 Bibliografia

[15s] Pebble Developer. Data Logging. Set. de 2015. url: http://developer.getpebble. com/docs/c/Foundation/DataLogging/. [15t] Pebble Developer. Using PebbleKit Android. Set. de 2015. url: http://developer. getpebble.com/guides/mobile-apps/android/. [15u] Pebble Developer. PebbleKit Android Documentation. Set. de 2015. url: http : / / developer.getpebble.com/docs/android/com/getpebble/android/kit/. [15v] Pulsar LED Watches. The Official Time Computer Digital Wrist Watch Website. Set. de 2015. url: http://www.oldpulsars.com/. [15w] Python 2.7.10 documentation. 20.19. SimpleHTTPServer. Set. de 2015. url: https: //docs.python.org/2/library/simplehttpserver.html. [15x] Raspberry Pi. Set. de 2015. url: https://www.raspberrypi.org/. [15y] Reddit. Pebble Tech Specs. Set. de 2015. url: https://www.reddit.com/r/pebble/ wiki/tech_specs. [15z] Samsung. Samsung Wearables Smartwatches Including Gear S. Set. de 2015. url: http://www.samsung.com/uk/consumer/mobile-devices/wearables/. [15aa] Smartwatch News. 2004 Microsoft SPOT Watch Smartwatch Review. Set. de 2015. url: http://www.smartwatchnews.org/2004-microsoft-spot-watch-smartwatch/. [15ab] Sony Xperia. Smartwatch. Set. de 2015. url: http://www.sonymobile.com/us/ products/accessories/smartwatch/. [15ac] Techradar. Before Apple Watch: the timely history of the smartwatch. Set. de 2015. url: http://www.techradar.com/news/wearables/before-iwatch-the-timely- history-of-the-smartwatch-1176685. [15ad] Wikipedia. Wearable Technology. Set. de 2015. url: https://en.wikipedia.org/ wiki/Wearable_technology. [15ae] Wikipedia. Timex Datalink. Set. de 2015. url: https://en.wikipedia.org/wiki/ Timex_Datalink. [15af] Wikipedia. Steve Mann. Set. de 2015. url: https://en.wikipedia.org/wiki/Steve_ Mann. [15ag] Wikipedia. Fossil Wrist PDA. Set. de 2015. url: https://en.wikipedia.org/wiki/ Fossil_Wrist_PDA. [15ah] Wikipedia. Comma-separated values. Set. de 2015. url: https://en.wikipedia.org/ wiki/Comma-separated_values.

56 Part II.

Annexes

1

A. M`odulaccel

A continuaci´oes mostra el codi que implementa el programa accel.c utilitzat en el Pebble. /∗ ∗ a c c e l . c ∗ Mostra les dades de l’accelerometre i les envia utilitzant el Datalogging. ∗/

#include

/∗ Identificador del log ∗/ #define DATA LOG TAG ACCEL 52

/∗ Creacio dels apuntadors de la finestra i el text que apareixen al d i s p l a y ∗/ static Window ∗ s main window ; static TextLayer ∗ s o u t p u t l a y e r ;

/∗ Variable utilitzada pel dataLogging ∗/ static DataLoggingSessionRef s l o g r e f ;

/∗ Handler que gestiona les dades rebudes de l’accelerometre. ∗/ static void data handler(AccelData ∗data, uint32 t num samples ) {

/∗ Buffer static ∗/ static char s buffer[128];

/∗ Creacio de l’string que mostrarem per pantalla ∗/ s n p r i n t f ( s b u f f e r , sizeof ( s b u f f e r ) , ”X: %d\nY: %d\nZ : %d\n” , data[0].x, data[0].y, data[0].z );

/∗ Mostrem les dades ∗/ t e x t l a y e r s e t t e x t ( s o u t p u t l a y e r , s b u f f e r ) ;

/∗ Enviament de les dades a l’smartphone fent servir datalogging ∗/ DataLoggingResult result = data l o g g i n g l o g ( s l o g ref , data, 1);

3 A. M`odulaccel

i f (result != DATA LOGGING SUCCESS) { APP LOG(APP LOG LEVEL ERROR, ” Error datalogging: %d”, data[0].x) ; } }

/∗ Carrega la pantalla. ∗/ static void main window load (Window ∗window ) {

Layer ∗ window layer = window g e t r o o t layer(window) ; GRect window bounds = layer g e t bounds(window layer ) ;

/∗ Creacio i configuracio de les caracteristiques del TextLayer que es mostra a la pantalla ∗/ s o u t p u t l a y e r = t e x t l a y e r create(GRect(35, 20, window bounds . s i z e .w − 10 , window bounds. size .h)); t e x t l a y e r s e t f o n t ( s o u t p u t layer , fonts g e t s y s t e m f o n t ( FONT KEY GOTHIC 28) ) ; t e x t l a y e r s e t o v e r f l o w m o d e ( s o u t p u t l a y e r , GTextOverflowModeWordWrap) ; l a y e r a d d child(window layer , t e x t l a y e r g e t l a y e r ( s o u t p u t l a y e r ) ); }

/∗ Destrueix el TextLayer de la pantalla ∗/ static void main window unload (Window ∗window ) { t e x t l a y e r d e s t r o y ( s o u t p u t l a y e r ) ; }

/∗ Inicialitza l’aplicacio i tots els seus serveis. ∗/ static void i n i t ( ) {

/∗ Crea la finestra principal del programa ∗/ s main window = window create ( ) ;

window set window handlers ( s main window , (WindowHandlers) { . load = main window load , .unload = main window unload }); window stack push ( s main window, true);

/∗ Creacio del dataLogging ∗/ s l o g r e f = d a t a l o g g i n g create (DATA LOG TAG ACCEL, DATA LOGGING BYTE ARRAY, sizeof (AccelData), true);

/∗ Subscripcio al servei de l’accelerometre ∗/

4 int num samples = 1 ; a c c e l d a t a s e r v i c e subscribe(num samples, data handler ) ;

/∗ Triem la frequencia de mostreig ∗/ a c c e l s e r v i c e s e t s a m p l i n g r a t e (ACCEL SAMPLING 50HZ) ;

t e x t l a y e r s e t t e x t ( s o u t p u t layer , ”Carregant...”); }

/∗ Finalitza l’aplicaci i els serveis actius. ∗/ static void d e i n i t ( ) {

/∗ Destrueix la finestra principal ∗/ window destroy ( s main window ) ;

/∗ Elimina la subscripcio al servei de l’accelerometre ∗/ a c c e l d a t a s e r v i c e unsubscribe();

/∗ Finalitza el proces del dataLogging ∗/ d a t a l o g g i n g f i n i s h ( s l o g r e f ) ; }

/∗ Funcio principal. Primer inicialitza el programa i tots els s e r v e i s , ∗ despres es crida al loop que mante el programa en funcionament ∗ i finalment es finalitza el programa i tots els serveis en marxa. ∗/ int main ( void ) {

i n i t ( ) ; app event loop ( ) ; d e i n i t ( ) ; }

5

B. M`odulcomunicacio

Aqu´ıes troba el codi que s’ha escrit per crear l’aplicaci´odel m`obilAndroid.

B.1. Classe MainActivity package dmc. provapebble ; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.AsyncTask; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android. util .Log; import android.content.Context; import android.widget.TextView; import android.widget.Toast; import com.getpebble.android. kit .PebbleKit; import com.getpebble.android. kit .PebbleKit.PebbleDataLogReceiver; import org.apache.http.HttpResponse; import org.apache.http. client .HttpClient; import org.apache.http. client .methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl. client .DefaultHttpClient; import org. json .JSONObject; import java. util .TimeZone; import java. util .UUID; public class MainActivity extends ActionBarActivity {

// Es declara la UUID de l’aplicacio del rellotge per assegurar que les dades es transmeten private static final UUID WATCHAPP UUID = UUID. fromString(” fcf07334 −001d−4386−bab0−15f42a09f4a1”);

7 B. M`odulcomunicacio

// Es defineix el log que es fa servir private static final int DATA LOG TAG ACCEL = 5 2 ;

// Es defineix la zona horaria per tal de poder convertir correctament el timestamp rebut private static TimeZone tz = TimeZone.getTimeZone(”Europe/Madrid ”);

// Es crea el dataLogging private PebbleDataLogReceiver dataloggingReceiver ;

private StringBuilder resultBuilder = new StringBuilder();

// Inicialitza l’Activity, crea la vista i estableix el text que apareix per pantalla. @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R. layout . activity m a i n ) ;

TextView textView = (TextView) findViewById(R.id. text e s t a t ) ;

i f (isConnected()) { textView. setText(”En funcionament”) ; } else { textView. setText(”No hi ha c o n n e x i a internet!”); } }

// Guarda l’estat de l’Activity abans de ser destruida. @Override protected void onSaveInstanceState(Bundle outState) { super .onSaveInstanceState(outState); f i n a l TextView textView = (TextView)findViewById(R.id. t e x t e s t a t ) ; String stringBuilder = (String) textView.getText(); outState.putString(”resultBuilder”, stringBuilder); }

// Recupera l’estat previament guardat un cop es reinicia l’ A c t i v i t y . @Override protected void onRestoreInstanceState(Bundle savedInstanceState) {

8 B.1. Classe MainActivity

super .onRestoreInstanceState(savedInstanceState); f i n a l TextView textView = (TextView)findViewById(R.id. t e x t e s t a t ) ; String stringBuilder = savedInstanceState.getString(” resultBuilder”); textView.setText(stringBuilder); }

// Es reben les dades de l’accelerometre, s’utilitza la classe AccelData // per separar cadascun dels elements de la mostra i es guarden. // Tambe inicialitza la classe HttpAsyncTask en finalitzar la s e s s i o . @Override protected void onResume ( ) { super .onResume() ;

PebbleDataLogReceiver dataloggingReceiver = new PebbleDataLogReceiver (WATCHAPP UUID) {

@Override public void receiveData(Context context , UUID logUuid , Long timestamp, Long tag, byte [ ] data ) { i f (tag.intValue() == DATA LOG TAG ACCEL) { AccelData accels = new AccelData(data); accels .applyTimezone(tz);

String string = accels.getTimestamp() + ”,” + accels.getXaxis() + ”,” + accels.getYaxis() + ”,” + accels.getZaxis() + ”\n” ; delete(resultBuilder ,string); resultBuilder .append(string); } }

@Override public void onFinishSession(Context context , UUID logUuid, Long timestamp, Long tag) { super .onFinishSession(context , logUuid , timestamp, tag ) ; i f (tag.intValue() == DATA LOG TAG ACCEL) { TextView textView = (TextView) findViewById(R.id . t e x t e s t a t ) ; textView.setText(”Aplicaci Pebble tancada!”); new HttpAsyncTask() . execute(”http://damirpi.ddns .net:8000”);

9 B. M`odulcomunicacio

} } } ;

PebbleKit. registerDataLogReceiver( this , dataloggingReceiver) ; }

// Mantenir l’estat de l’activitat quan aquesta s’executa en segon p l a . @Override protected void onPause ( ) { super .onPause() ;

i f (dataloggingReceiver != null ) { unregisterReceiver(dataloggingReceiver); } }

// Esborra la cadena de caracters on estan representades les dades de l ’accelerometre public void delete(StringBuilder sb, String s) { int start = sb.indexOf(s); i f ( s t a r t < 0) return ;

sb.delete(start , start + s.length()); }

// Obre una comunicacio HTTP, crea l’objecte que s’enviara en format JSON i l’envia // mitjan ant el metode POST. public static String POST(String url , StringBuilder resultBuilder) { int inputStream ; String result = ””; try{ HttpClient httpClient = new DefaultHttpClient() ; HttpPost httpPost = new HttpPost(url);

String json=””; JSONObject jsonObject = new JSONObject() ; jsonObject.accumulate(”data”, resultBuilder.toString()); json = jsonObject.toString();

StringEntity se = new StringEntity(json);

10 B.2. Classe HttpAsyncTask

httpPost.setEntity(se); httpPost.setHeader(”Accept”, ”application/json”); httpPost . setHeader(”Content−type”, ”application/json”); HttpResponse httpResponse = httpClient.execute(httpPost) ; inputStream = httpResponse.getStatusLine() .getStatusCode ();

i f (inputStream == 200) result = ”Dades enviades!”; else r e s u l t = ”ERROR en l a t r a n s m i s s i de l e s dades ! ” ; } catch (Exception e) { Log.d(”Error”, e.getLocalizedMessage()); }

return r e s u l t ; }

// Comprova si hi ha connexio a la xarxa. public boolean isConnected() { ConnectivityManager connectivityManager = ( ConnectivityManager) getSystemService(ActionBarActivity. CONNECTIVITY SERVICE) ; NetworkInfo networkInfo = connectivityManager. getActiveNetworkInfo() ; i f (networkInfo != null && networkInfo.isConnected()) return true ; else return false ; }

B.2. Classe HttpAsyncTask public class HttpAsyncTask extends AsyncTask {

// Realitza la connexio HTTP. @Override protected String doInBackground(String ... params) { return POST(params[0] , resultBuilder); }

// Indica si les dades han estat enviades correctament. @Override protected void onPostExecute(String s) {

11 B. M`odulcomunicacio

Toast.makeText(getApplicationContext() , s, Toast. LENGTH LONG) .show() ; resultBuilder .setLength(0); TextView textView = (TextView) findViewById(R.id. t e x t e s t a t ) ; textView. setText(”En funcionament”) ; }

}

B.3. Classe AccelData package dmc. provapebble ; import java. util .ArrayList; import java. util .Arrays; import java.util.List; import java. util .TimeZone; public class AccelData { private static final String TAG = AccelData. class . getSimpleName ();

final private int x ; final private int y ; final private int z ;

private long timestamp = 0; final private boolean didVibrate;

// Donem format a les dades rebudes de l’accelerometre public AccelData ( byte [ ] data ) { x = (data[0] & 0xff) | ( data [ 1 ] << 8) ; y = (data[2] & 0xff) | ( data [ 3 ] << 8) ; z = (data[4] & 0xff) | ( data [ 5 ] << 8) ; didVibrate = data[6] != 0;

for ( int i = 0 ; i < 8 ; i++) { timestamp |= ( ( long )(data[i+7] & 0xff)) << ( i ∗ 8) ; } }

public static List fromDataArray( byte [ ] data ) { List a c c e l s = new ArrayList(); for ( int i = 0 ; i < data.length; i += 15) {

12 B.4. Layout

accels .add(new AccelData(Arrays.copyOfRange(data, i , i + 15) ) ) ; } return a c c e l s ; }

// Retorna el valor de l’acceleracio en X. public int getXaxis ( ) { return x ; }

// Retorna el valor de l’acceleracio en Y. public int getYaxis ( ) { return y ; }

// Retorna el valor de l’acceleracio en Z. public int getZaxis ( ) { return z ; }

// Retorna el timestamp. public long getTimestamp() { return timestamp ; }

// Converteix el timestamp a la zona horaria adequada. public void applyTimezone(TimeZone tz) { timestamp −= tz.getOffset(timestamp); } }

B.4. Layout

Per tal d’aconseguir obtenir l’aspecte final de l’aplicaci´os’ha escrit el seg¨uent codi a la vista.

13 B. M`odulcomunicacio

android:background=”#ff4d4d4f”>

14 C. M`odulservidor

Tot seguit es pot veure com s’ha implementat el servidor usant Python. #!/usr/bin/python # −∗− coding : utf −8 −∗− import SimpleHTTPServer import SocketServer import time

class Servidor (SimpleHTTPServer.SimpleHTTPRequestHandler) : # Rep les peticions POST def do POST(self): self .process()

# Rep les peticions GET def do GET( s e l f ) : self .process()

# Envia la resposta cap al mobil i guarda les dades en un fitxer CSV def process(self): s e l f . sen d response(200) s e l f . end headers ( ) s e l f . i n s e r t d a t a ( s e l f . r e s p o n s e b o d y ( ) )

# Retorna un string amb els valors que hi havien al cos de la p e t i c i o def r e s p o n s e body(self): return str ( eval ( s e l f . read body ( ) ) )

# Retorna el cos de la peticio def read body(self): length = int (self .headers.getheader( ’content−length ’ ) ) return self. rfile .read(length)

# Escriu les dades rebudes al fitxer CSV def i n s e r t data(self , data): dades = open( ’ m o s t r e s acceleracio.csv’,’a’) i f len ( data ) > 1 2 :

15 C. M`odulservidor

dades.write(” ======\nNOVES DADES REBUDES. ” ) dades.write(time. strftime(”%c”)) dades.write(”\n” )

for n in range (9 , len ( data ) −2) : c = data [ n ] i f c == ”\\” and data[n+1] == ’n’: dades.write(”\n” ) e l i f c == ’ n ’ and data [ n−1] == ”\\”: pass else : dades.write(c)

dades.close()

i f name ==” m a i n ”: port = 8000 s=SocketServer.TCPServer(( ’ ’ ,port) ,Servidor) print ” Servidor funcionant a l port ” , port s . s e r v e f o r e v e r ( )

16 D. Programes amb Octave

Per acabar s’inclouen els programes escrits en llenguatge Octave que s’han fet servir en el projecte.

D.1. f TF.m

Serveix per calcular la Fast Fourier Transform. function [X, F]=f TF ( x , f s ) N=length ( x ) ; X1=f f t ( x ) ; X2=f f t s h i f t (X1) ; X=X2/N; F=[− c e i l ((N−1) /2) : floor ((N−1) /2) ] ∗ f s /N;

D.2. grafic.m

S’utilitza per mostrar les dades de l’acceleraci´oen forma de gr`afica,tant en el domini temporal com en el freq¨uencial(FFT). function grafic(f ,Fm) data = dlmread( f , ’ , ’ ) ; t = data(:,1) − data ( 1 , 1 ) ; ax = data(:,2); ay = data(:,3); az = data(:,4); figure ( 1 ) ; t h r e e a x i s=plot ( t , ax , ” ; x component;”,t ,ay,”;y component;”,t,az,”;z component;”) ; xlabel (”Temps(ms)” ,”LineWidth” ,4) ; ylabel (”Acceleraci (mg) ” ) ; t i t l e ( ”Dades Acceleraci ”); set ( t h r e e axis ,”linewidth”,1);

17 D. Programes amb Octave

[X, F]=f TF ( ax ,Fm) ; figure ( 2 ) , ax=plot (F, abs (X)); set (ax,”linewidth”,1); xlabel ( ” f (Hz) ” ) ; ylabel (”Acceleraci (mg) ” ) ; t i t l e ( ”TF ax” )

[ X2 , F2]=f TF ( ay ,Fm) ; figure ( 3 ) , ay=plot (F2 , abs (X2) ) ; set (ay,”linewidth”,1); xlabel ( ” f (Hz) ” ) ; ylabel (”Acceleraci (mg) ” ) ; t i t l e ( ”TF ay” )

[ X3 , F3]=f TF ( az ,Fm) ; figure ( 4 ) , az=plot (F3 , abs (X3) ) ; set (az,”linewidth”,1); xlabel ( ” f (Hz) ” ) ; ylabel (”Acceleraci (mg) ” ) ; t i t l e ( ”TF az ” )

18