• No results found

Trådlös trygghetslarm för en Androidenhet

N/A
N/A
Protected

Academic year: 2022

Share "Trådlös trygghetslarm för en Androidenhet"

Copied!
77
0
0

Loading.... (view fulltext now)

Full text

(1)

Trådlös trygghetslarm för en Androidenhet

Kristoffer Hansson

Civilingenjörsexamen Teknisk fysik och elektroteknik

Luleå tekniska universitet Institutionen för system- och rymdteknik

(2)

Wireless Panic Alarm for an Android unit

Kristoffer Hansson

Lule˚ a University of Technology

Dept. of Computer Science, Electrical and Space Engineering

13th August 2012

(3)
(4)

S AMMANFATTNING

En olycka kan snabbt vara framme. F¨or ¨aldre personer kan ett fall vara tillr¨ackligt f¨or att skada sig rej¨alt och inte ha m¨ojlighet att komma ˚at ett kommunikationsmedel, till exempel en telefon. Detta ¨ar i dagens samh¨alle ett stort folkh¨alsoproblem som b˚ade orsakar lidande och stora kostnader.

Infinner sig k¨anslan av otrygghet kan det underl¨atta och framf¨orallt hj¨alpa vid ¨overfall att snabbt kunna tillkalla uppm¨arksamhet fr˚an omgivningen men ocks˚a familjemedlemmar eller v¨anner.

F¨or att l¨osa dessa problem har ett s¨akerhetslarm utvecklats till en Android-telefon. Detta larm har i uppgift att p˚akalla omgivningens uppm¨arksamhet genom ljudsignaler men ocks˚a kontakta anh¨origa. Ett textmeddelande skickas till den anh¨origa med information om vad som h¨ant och en adress var personen befinner sig.

Alarmapplikationen l¨oser delen med kommunikation mot omv¨arlden men det ¨ar inte alltid det b¨asta alternativet att ha telefonen i handen. Framf¨orallt ¨ar det inte ett alternativ d˚a det kommer till ¨aldre m¨anniskor. D¨arf¨or har en tr˚adl¨os enhet utvecklats, denna enhet har som uppgift att baserat p˚a r¨orelser aktivera alarmet i telefonen.

En algoritm f¨or att k¨anna av fall och andra r¨orelsem¨onster utvecklades f¨or att kunna klassificera olika r¨orelser och sammanhang utifr˚an accelerometerdata. Denna algoritm implementerades i MATLAB och fungerade tillfredsst¨allande n¨ar test med den utvecklade enheten utf¨ordes. En implementation f¨or sensorn b¨or dock g¨oras i framtiden om produkten ska kunna utnyttjas i sin helhet.

Den utvecklade sensorenheten har m¨ojlighet att m¨ata acceleration som en person uts¨atter den f¨or och d¨arefter kommunicera med andra enheter ¨over Bluetooth. Den ¨ar dock inte optimerad f¨or massproduktion. Skall enheten anv¨andas i ett kommersiellt syfte b¨or vissa komponenter bytas ut och enheten b¨or krympas i allm¨anhet.

iii

(5)
(6)

A BSTRACT

If an elderly people fall they can get injured and lose their ability to get help. This is a major health problem in the society today which generates great expenses and suffering.

Today smart phones are both cheap and are used by more and more people. These phones have the ability to get the users current location and communicate with other devices.

In this thesis a smart phone has been used as an alarm. If the alarm is triggered the application starts an alarm sound and gets the user’s position. This position is then converted to an address and sent to an ”in case of emergency” number.

The alarm application solves the problem how to contact the surroundings but the most optimal way is not to have the phone in your hands all the time. With a wireless sensor the phone can be use independently and a sensor can be made smaller which make it easier to attach and won’t interfere with the user as much as a phone.

A sensor unit that can communicate with the smart phone through Bluetooth has been developed. This unit is supposed to classify the user’s motion pattern, via an accelero- meter, and start the alarm in the phone when an certain motion is detected, such as a fall.

An algorithm that can classify falls and motion patterns from the accelerometer was developed. The developed algorithm did work satisfying when tests were preformed with the sensor unit. The algorithm was however only developed and tested in MATLAB since this made it easier to evaluate the result. Due to time restrictions the algorithm was never implemented on the sensor and if the sensor is supposed to work with the alarm application as expected this must be done.

The developed device has the ability to do all the required calculations and is able to pair and send all needed data to a smart phone. The device is however not made for production since the size and price of the components have not been optimized.

v

(7)
(8)

F ¨ ORORD

Denna rapport gjordes som en del av ett examensarbete inom Civilingenj¨orsprogrammet Teknisk fysik och elektroteknik med inriktning Elektroniksystem. I dagens informations- samh¨alle anv¨ands mer och mer sensorer av olika slag f¨or att samla in data. Ett s¨att att anv¨anda denna information kan vara att bed¨oma skador efter olyckor.

F¨oretaget Neava har idag en s¨akerhetsapplikation som kan bed¨oma om en bil har krockat och utifr˚an detta sl˚a larm. Denna applikation ville de utvidga funktionaliteten p˚a genom att l¨agga till en extern k¨alla som kan trigga alarmet. Jag ¨ar mycket intresserad av b˚ade utveckling av inbyggda system och programmering av dessa. D˚a jag dessutom g¨arna vill utvecklas och l¨ara mig mer om detta best¨amdes det, tillsammans med Neava, att genomf¨ora id´en om en r¨orelsesensor som ett examensarbete.

Jag vill b¨orja med att tacka Neava f¨or att jag f˚att chansen till att g¨ora detta examens- arbete det g˚angna halv˚aret hos dem och f¨or allt de har tillhandah˚allit i materiell v¨ag.

Ut¨over detta vill jag rikta ett s¨arskilt tack till min handledare p˚a Neava, Pierre Sund- berg, f¨or att ha st¨allt upp som bollplank och framf¨orallt varit snabb med att inf¨orskaffa materiell som beh¨ovts.

Vill ¨aven tacka min interna handledare p˚a LTU, Jens Eliasson, som tillf¨ort nyttig infor- mation d˚a det kommer till inbyggda system och skrivandet av rapporten.

Ut¨over detta vill jag tacka mina n¨armsta v¨anner, ingen n¨amnd ingen gl¨omd men ni vet vilka ni ¨ar, som har hj¨alpt mig genom detta halv˚ar b˚ade i diskussioner om mitt examensarbete men ocks˚a de g˚anger de lyckats f˚a mig att sl¨appa det ifr˚an mig och t¨anka p˚a n˚agot annat.

vii

(9)
(10)

I NNEH ALL ˚

Kapitel 1 – Introduktion 1

1.1 Bakgrund . . . 1

1.2 Neava . . . 1

1.3 Syfte och m˚al . . . 2

1.4 Tidigare arbeten . . . 2

1.5 Avgr¨ansningar . . . 3

1.6 Metodik . . . 4

Kapitel 2 – R¨orelseklassificering 5 2.1 Begr¨ansningar . . . 5

2.2 Positionering av sensor . . . 6

2.3 Filtrering av data . . . 7

2.4 Skilja p˚a aktivitet och vila . . . 7

2.5 Kroppspositioner . . . 8

2.6 Fall . . . 9

2.7 Implementation . . . 10

2.8 Sammanfattning . . . 10

Kapitel 3 – H˚ardvara 13 3.1 Specifikationer . . . 13

3.2 Val av komponenter . . . 14

3.2.1 Microkontroller . . . 14

3.2.2 Accelerometer . . . 15

3.2.3 Bluetooth . . . 16

3.2.4 Str¨omf¨ors¨orjning . . . 17

3.2.5 Lysdioder . . . 17

3.3 Proof of concept-modul . . . 18

3.3.1 Dotterkort . . . 19

3.4 Sammanfattning . . . 20

Kapitel 4 – Mjukvara 23 4.1 Sensorkortet . . . 23

4.1.1 Utvecklingsmilj¨o . . . 23

4.1.2 Reaktiv programmering . . . 24

(11)

4.2 Programmering av smartphone . . . 26

4.2.1 Val av plattform . . . 27

4.2.2 Utvecklingsmilj¨o . . . 27

4.2.3 Anv¨andargr¨anssnitt . . . 28

4.2.4 Bluetooth-kommunikation . . . 28

4.2.5 Alarm . . . 29

Kapitel 5 – Utv¨ardering 31 5.1 H˚ardvara . . . 31

5.2 Mjukvara . . . 32

5.2.1 Android . . . 32

5.2.2 MSP430 . . . 33

5.3 R¨orelsealgoritm . . . 33

5.3.1 Datainsamling . . . 34

5.3.2 Datasammanst¨allning . . . 35

Kapitel 6 – Diskussion och Slutsats 39 6.1 H˚ardvara . . . 39

6.2 Mjukvara . . . 40

6.2.1 Android . . . 40

6.2.2 MSP430 . . . 41

6.3 R¨orelsealgoritm . . . 41

Kapitel 7 – Framtida arbete 43 7.1 H˚ardvara . . . 43

7.2 Mjukvara . . . 44

7.2.1 Android . . . 44

7.2.2 MSP430 . . . 44

7.3 R¨orelsealgoritm . . . 44

Appendix A – Komponentlista 45 Appendix B – L˚agpassfilter i MATLAB 47 B.1 MATLAB r¨orelseklassificering . . . 47

B.2 MATLAB l˚agpassfilter . . . 51

Appendix C – Kopplingsschema 53

x

(12)

C.1 Kopplingsscheman . . . 53 C.2 Kortlayout . . . 57

Appendix D – Dotterkort 59

D.1 Schema f¨or dotterkort . . . 59 D.2 Layout p˚a dotterkort . . . 60

xi

(13)
(14)

K APITEL 1 Introduktion

1.1 Bakgrund

I dagens samh¨alle ¨ar en stort h¨alsoproblem fallolyckor som i framf¨orallt drabbar ¨aldre personer. Dessa olyckor orsakar stora kostnader men framf¨orallt stort lidande f¨or den som drabbas. Enligt socialstyrelsen [1] drabbas ca 18000 personer varje ˚ar av h¨oftfrakturer d¨ar de allra flesta har orsakats av en fallolycka. Ut¨over detta d¨or ca 3 personer om dagen p˚a grund av dessa olyckor enligt folkh¨alsoinstitutet [2]. Dessa olyckor kan ge stora bekymmer men ocks˚a psykologiska besv¨ar. F¨or att snabbare kunna f˚a hj¨alp, vilket underl¨attar b˚ade medicinskt och psykologiskt till en viss grad, vill Neava komplettera sina redan befintliga trygghetsapplikationer med ett tr˚adl¨os sensorenhet.

Andra anv¨andningsomr˚aden kan vara som ¨overfallslarm p˚a v¨ag hem fr˚an krogen eller f¨or yrkeschauff¨orer inom bland annat taxibranschen. Som ¨overfallslarm, speciellt f¨or taxi- chauff¨orer, r¨acker det dock inte med att detektera fall varf¨or andra r¨orelsem¨onster ocks˚a b¨or vara m¨ojliga att detektera.

1.2 Neava

Neava ¨ar ett f¨oretag inom IT-branschen d¨ar de bland annat har ett avknoppningsf¨oretag som heter Neava Applications. Denna avknoppning har som huvudm˚al att utveckla di- verse applikationer till handh˚allna och portabla enheter och dagsl¨aget l¨aggs de st¨orsta

1

(15)

resurserna ner p˚a diverse s¨akerhetsapplikationer. En av de st¨orre produkter de har idag

¨ar en krock¨overvakningsapplikation, [3]. Denna applikation sl˚ar larm till n¨arst˚aende med information vart personen befinner sig om en bilolycka skulle vara framme.

1.3 Syfte och m ˚al

Syftet med detta projekt var att utveckla en prototyp till en tr˚adl¨os sensor som skul- le kunna komplettera Neavas trygghetsapplikationer. Ut¨over det har projektet best˚att av programmering av den tr˚adl¨osa sensorn s˚av¨al som en frist˚aende applikation f¨or en Android-enhet. Dessutom har reaktiv programmering av systemet anv¨ants f¨or att p˚a s˚a s¨att kunna spara s˚a mycket str¨om som m¨ojlig genom att l¨agga processorn i vila d˚a denna inte har n˚agra ber¨akningar att utf¨ora.

M˚alet var att f¨ardigst¨alla en ”proof of concept”-enhet som skulle kunna utf¨ora de efter- fr˚agade funktionerna och ¨aven vara s˚a str¨omsn˚al att man kan driva enheten fr˚an ett litet smidigt batteri i minst en dag.

1.4 Tidigare arbeten

Det har genom ˚aren utvecklats en rad olika sensorenheter f¨or att uppt¨ack just olika r¨orelser. Bland annat har en sensor f¨or h¨ojdm¨atning av ett hopp utvecklats p˚a Lule˚a tekniska universitet [4]. Denna enhet st¨odjer Bluetoothstandarden och anv¨ander en re- lativt str¨omsn˚al processor. D¨aremot utvecklades den enbart p˚a ett testkort vilket gjorde enheten stor och dessutom sv˚artillg¨anglig f¨or detta projekt.

En annan enhet specifikt f¨or fall¨overvakning har utvecklats p˚a Trentos universitet i Italien [5]. Denna enhet ¨ar relativt stor fast den har tillverkats p˚a ett specialbyggt m¨onsterkort.

Ut¨over detta st¨odjer den inte heller Bluetoothstandarden eller n˚agot annat tr˚adl¨ost pro- tokoll som dagens mobiltelefoner har st¨od f¨or.

Wocketen [6] ¨ar en enhet som utvecklats p˚a MIT, Massachusetts Institute of Technology.

Denna har utvecklats i syfte att ¨overvaka en persons aktiviteter i realtid. Den ¨ar designad f¨or att vara billig d˚a man med hj¨alp av flera sensorer r¨aknar ut hur en person r¨or sig.

Detta kan dock vara en nackdel d˚a anv¨andare f¨ormodligen har tillr¨ackligt jobbigt att komma ih˚ag att anv¨anda en enhet. Sensorn ¨ar dessutom baserad p˚a en ˚atta bitars AVR- arkitektur fr˚an ATMEL [7] som ¨ar relativt begr¨ansad i ber¨akningskapacitet och dessutom

(16)

1.5. Avgr¨ansningar 3

inte ¨ar str¨omsn˚alare ¨an andra mikroprocessorer med betydlig h¨ogre kapacitet.

BTNode [8] ¨ar ¨aven denna en enhet som baserats p˚a AVR-arkitekturen likt Wocketen [6]. Den drivs p˚a vanliga AA-batterier vilket kan vara till en f¨ordel men g¨or att enheten inte ¨ar s˚a liten och dessutom ¨ar inte batteritiden den mest optimala.

Mulle [9] och Shimmer [10] ¨ar tv˚a andra enheter som ¨ar v¨aldigt kompetenta. Mullen som utvecklats p˚a Lule˚a tekniska universitet ¨ar v¨aldigt str¨omsn˚al och liten i formatet.

Shimmer ¨ar ¨aven denna v¨aldigt str¨omsn˚al om ¨an designad p˚a en annan plattform ¨an Mullen. Dessa tv˚a ¨ar dock nackdelen att de kostar en del d˚a de har m˚anga funktioner som inte skulle beh¨ovas till det tillt¨ankta ¨andam˚alet.

1.5 Avgr ¨ansningar

M˚alet med examensarbetet var inte att arbeta fram en slutgiltig produkt utan ist¨allet visa hur problemet skulle kunna l¨osas och ber¨atta p˚a vilka s¨att detta skulle kunna f¨orb¨attras.

D¨arf¨or lades inte allt f¨or stor vikt vid att g¨ora den tr˚adl¨osa enheten s˚a liten som en kommersiell produkt skulle beh¨ova vara.

I projektet anv¨andes en Bluetoothenhet med f¨ardig Bluetoothstack ¨aven fast detta skulle kunna g¨oras av mikroprocessorn som hela systemet baseras p˚a. Detta f¨or att det skulle ta f¨or l˚ang tid att skriva en egen Bluetoothstack till plattformen.

D˚a handh˚allna Android-enheter med Bluetooth Smart-standarden inte fanns i tillg¨angligt kommersiellt vid starten av detta examensarbete sattes Bluetooth 2.1 som Bluetoothstan- dard. Detta satte begr¨ansningar i str¨ombesparing vilket resulterade i att inte lika stor vikt lades p˚a str¨ombesparingen som det hade ¨onskats.

(17)

1.6 Metodik

Vid projektstarten p˚ab¨orjades litteraturstudier som i st¨orsta del bestod av att studera tidigare l¨osningar vilka problem dessa haft och hur dessa har utf¨orts. Detta gav ett bra un- derlag f¨or hur h˚ardvaran kunde utvecklas men ocks˚a vilken h˚ardvara som skulle beh¨ovas.

Ut¨over detta studerades ¨aven s¨att att l¨osa r¨orelseklassificering via diverse vetenskapliga artiklar vilket gav en hel del id´er p˚a hur detta kunde l¨osas p˚a ett tillfredsst¨allande och resurssn˚alt s¨att.

Efter litteraturstudien delades projektet i tre st¨orre delar n¨amligen programmering, h˚ardvaruutveckling, och utveckling av r¨orelsealgoritm. Uppdelningen gjordes f¨or att un- derl¨atta planering av jobbet men ocks˚a f¨or att p˚a detta s¨att ta bort s˚a mycket beroende som m¨ojligt och p˚a detta s¨att f˚a ett j¨amnt arbetsfl¨ode.

F¨orsta steget som utf¨ordes var tester med h˚ardvara och programmering av denna.

Samtidigt som detta utf¨ordes p˚ab¨orjades implementeringen av en applikation till en smartphone.

Andra steget var att ta den testade h˚ardvaran vid steg ett ner till ett m¨onsterkort f¨or att f˚a ett smidigt system att kunna testa r¨orelseklassificering med.

Det sista steget i projektet var att utveckla en r¨orelseklassificeringsalgoritm och utf¨ora empiriska tester p˚a f¨or att verifiera att allt fungerade korrekt.

Projektet avslutades med att sammanst¨alla veckorapporter som gjorts, via e-mail till handledare, och anv¨anda dessa till att slutligen skriva en rapport.

(18)

K APITEL 2 R ¨orelseklassificering

I detta kapitel framf¨ors en algoritm som utifr˚an accelerometerdata kan best¨amma vilken position b¨araren av sensorn har. Dessutom g˚ar det att best¨amma vilken aktivitet b¨araren av sensorn har utf¨ort utifr˚an analyser av r¨orelsem¨onstren.

2.1 Begr ¨ansningar

F¨or att spara str¨om p˚a den b¨arbara sensorenheten skall s˚a f˚a meddelanden som m¨ojligt skickas ¨over Bluetooth. F¨or att undvika detta m˚aste klassificering av aktiviteter och positionering g˚a att utf¨ora direkt p˚a mikroprocessorn. Detta medf¨or, d˚a mikroprocessorn har v¨aldigt lite minne och dessutom begr¨ansad ber¨akningskapacitet, att algoritmen m˚aste h˚allas enkel och dessutom inte beh¨ova utf¨ora tunga ber¨akningar f¨or ofta.

En l¨osning p˚a detta problem ¨ar att anv¨anda ett ”sekund f¨or sekund”-schema. I korthet betyder detta att en g˚ang under varje period, d¨ar periodtiden h˚alls konstant, ber¨aknas och unders¨oks ber¨aknade variabler f¨or att uppskatta vad som intr¨affat. I detta fall anv¨andes just 1 sekund som periodtid d˚a studier av Mathie et al. [11] visar att f¨or r¨orelsem¨onster

¨ar de optimala tidsf¨onstret n˚agonstans mellan 0.8 till 1.4 sekunder.

Alla r¨orelse som en kropp utf¨or ¨ar i ca 99% av fallen under 20Hz i frekvens enligt [11].

Detta medf¨or att, med Nyquists-samplingsteorem vilket anger att sampling b¨or ske med minst dubbla frekvensen ¨an vad som skall m¨atas, samplingar b¨or utf¨oras i ˚atminstone 40 Hz. I detta fall valdes att anv¨anda en samplingsfrekvens p˚a 100Hz d˚a utr¨akningarna

5

(19)

skulle g¨oras i MATLAB och p˚a grund av att accelerometern d¨artill har en inbyggd funk- tion f¨or att sampla i den hastigheten. Denna hastighet b¨or dock vid implementering i programspr˚aket C minskas till cirka 50Hz f¨or att till˚ata mikroprocessorn g˚a i vila oftare d˚a f¨arre ber¨akningar beh¨ovs.

2.2 Positionering av sensor

F¨or att data som g˚ar att bearbeta ska kunna samplas och analyseras ¨ar en av f¨orut- s¨attningarna att veta ungef¨ar vad accelerometern kommer m¨ata. En arm r¨or sig, vid till exempel ett fall, v¨aldigt of¨oruts¨agbart vilket medf¨or att det inte ¨ar en s˚a god id´e att s¨atta en sensor p˚a handleden om man vill uppt¨acka en s˚adan r¨orelse. M˚alet med denna rapport var framf¨orallt att uppt¨acka fall men ¨aven positionering av kroppen. D¨arf¨or beh¨ovdes en plats p˚a kroppen som inte r¨or sig annat ¨an vid vanliga r¨orelser; en s˚adan plats ¨ar bland annat vid b¨ackenbenet. Eftersom denna plats ¨ar v¨aldigt stilla och dessutom p˚averkas en del av kroppens positionering som till exempel vid sittande, st˚aende och liggande st¨allning ¨ar det en bra placering vilket st¨ammer bra ¨overens med andra publikationer som gjorts [11, 12, 13]. Accelerometern fixerades med hj¨alp av tejp direkt p˚a f¨ors¨okspersonens b¨alte som i sin tur justerades f¨or att sitta stabilt och p˚a r¨att st¨alle. Accelerometerns axelriktningar d˚a den var f¨ast p˚a f¨ors¨okspersonen kan ses i figur 2.1.

Figur 2.1: Placering av sensorn med accelerometerns riktningsaxlar utm¨arkta.

(20)

2.3. Filtrering av data 7

2.3 Filtrering av data

Data som samplas inneh˚aller alltid en viss m¨angd brus och filtrering b¨or d¨arf¨or alltid ske. F¨or att f˚a bort tv¨ara spikar och felm¨atta v¨arden anv¨ands ett medianfilter. Ju st¨orra filter desto b¨attre f¨or en j¨amnare signal; detta kommer vid anv¨andning av stora filter att ta bort alla spikar till exempel vid fall. Storleken har dessutom betydelse n¨ar filtret senare ska implementeras till mikroprocessorn; dels att det tar minne att ha l˚anga filter men ocks˚a att det tar betydlig mycket mer resurser att ber¨akna medianen p˚a stora filter.

Med tanke p˚a detta och att m¨atv¨ardena var relativt stabila valdes ett kort medianfilter med l¨angden 3. Detta filter ¨ar l¨att att implementera i C-kod d˚a v¨aldigt f˚a j¨amf¨orelser beh¨ovs j¨amf¨ort med de n˚agot st¨orre medianfiltren och fungerar bra vid tester vilket ocks˚a Mathie et al. [11, 14] har kommit fram till.

Det intressanta vid m¨atningar av en persons aktivitet ¨ar accelerationen kroppen uts¨atter sensorn f¨or. En accelerometer m¨ater dock ¨aven accelerationen fr˚an jordens gravitation vilket medf¨or problem d˚a denna kraft inte kommer fr˚an anv¨andaren av sensorn. Kraften fr˚an jordens gravitation kan ocks˚a vara bra att veta d˚a denna kan hj¨alpa till vid identifi- ering av kroppsposition. De tv˚a komponenterna, kropps- och jordens kraftkomponenter,

¨

overlappar varandra b˚ade i tids- och i frekvensdom¨anen vilket g¨or det sv˚art att separera dessa. Med ett l˚agpassfilter, LPF, kan gravitationsp˚averkan approximeras och n¨ar detta

¨ar gjort g˚ar det r¨akna ut den kroppsliga p˚averkan. Ett l˚agpassfilter med brytningsfre- kvensen 0.25 Hz [11, 14], fungerar bra f¨or att separera ut gravitationskomponenterna.

Denna kan sedan subtraheras fr˚an det filtrerade data, som erh˚allits fr˚an medianfiltret, f¨or att f˚a fram kroppskomposanterna. F¨or implementering av l˚agpassfiltret i MATLAB se appendix B.2.

2.4 Skilja p ˚a aktivitet och vila

F¨or att skilja p˚a om en person ¨ar aktiv eller i vila beh¨ovs ett m¨atv¨arde som tar h¨ansyn till alla tre axlarna p˚a en accelerometer d˚a kroppen skapar krafter ˚at alla olika riktningar.

Ett l¨ampligt m˚att ¨ar enligt [11, 14] och [15] den normaliserade signalmagnitudens area (SMA). I ekvation 2.1 ses hur SMA-v¨ardet ber¨aknas d¨ar x(t), y(t) och z(t) ¨ar kroppskom- posanterna av accelerationen som erh˚allits efter att den l˚agpassfiltrerade komposanten subtraherats fr˚an det medianfiltrerade datat.

SM A = 1 t

Z t 0

|x(t)| dt + Z t

0

|y(t)| dt + Z t

0

|z(t)| dt



(2.1)

(21)

Ber¨akningar av SMA-v¨ardet g¨ors, som n¨amnts tidigare i kapitel 2.1, p˚a sekundbasis.

Eftersom m¨atv¨arden f˚as med en konstant str¨om, samma tid mellan dem, ¨ar det enkelt att ber¨akna integralen. Detta g¨ors genom att summera alla m¨atpunkter under den g˚angna sekunden och multiplicera summan med tiden mellan varje m¨atning. Detta medf¨or att det ¨ar enkelt att utf¨ora p˚a begr¨ansade system som till exempel en mikrokontroller.

F¨or att skilja p˚a aktivitet och vila anv¨ands sedan ett tr¨oskelv¨arde som j¨amf¨ors mot SMA- v¨ardet. Detta v¨arde testades fram genom att bland annat falla, g˚a, sitta och ligga och j¨amf¨ora de olika resultaten, tillv¨agag˚angs¨attet liknar mycket det Mathie et al. anv¨ant i [14] och Jeon et al. [15] . Tr¨oskelv¨ardet valdes till 0,2 g efter diverse olika tester. Ett h¨ogre v¨arde fungerar b¨attre om falska ”vilopauser”inte vill uppt¨ackas n¨ar vissa typer av g˚ang utf¨ors. Ett l¨agre v¨arde kommer dock att ge fler aktivitetsutslag d˚a det inte beh¨ovs samma m¨angd r¨orelser f¨or att uppn˚a tr¨oskelv¨ardet. Detta ger i sin tur fler falska aktiviteter vid vila och d¨arf¨or var en avv¨agning tvungen att g¨oras.

2.5 Kroppspositioner

En m¨anniskokropps olika positioner kan urskiljas genom att besk˚ada kroppens relativa vinkel mot gravitationen. N¨ar en person st˚ar upp ¨ar gravitationsvektorn parallell med kroppen medans om personen ligger ¨ar den vinkelr¨at mot kroppen. Mathie et al. har i en artikel [11] konstaterat att 20 eller mindre beskriver en st˚aende person medans en sittande person befinner sig n˚agonstans under 60. Detta medf¨or att dessa tv˚a positioner

¨overlappar varandra n˚agot men b˚ade studier gjorda p˚a denna algoritm av Mathie et al.[11] och denna rapport visar p˚a att det dock ¨ar stor sannolikhet att algoritmen f˚ar r¨att. En sittande position anses ligga mellan 20 och 60. Ut¨over dessa tv˚a positioner g˚ar det ¨aven att best¨amma om en person ligger ner d˚a detta sker vid vinklar st¨orre

¨an 60. F¨or en sammanfattning av dessa vinklar se figur 2.2 . F¨or att ber¨akna vinkeln konstaterades att den negativa y-axeln, se figur 2.1, b¨or beaktas vilket ger ekvation 2.2, d¨ar y ¨ar kroppskomposanten som filtrerats fram av l˚agpassfiltret, se 2.3. Ist¨allet f¨or att anv¨anda ekvation 2.2 i mikroprocessorn kommer senare tr¨oskelv¨arden som motsvarar de efters¨okta vinklarna att anv¨andas vid j¨amf¨orelser p˚a y-axeln. Detta f¨or att de relativt tunga ber¨akningarna inte skall beh¨ova utf¨oras och dessutom kommer tr¨oskelv¨arden att ge exakt samma svar. MATLAB-skriptet som k¨ordes p˚a en PC anv¨ande dock den exakta formeln f¨or att kunna ˚ask˚adligg¨ora vinkeln i till exempel en graf.

Eftersom gravitationskomponenterna redan har filtrerats fram med hj¨alp av ett l˚agpassfilter, se kapitel 2.3, g˚ar en ekvation av vilken vinkel gravitationen har mot en axel p˚a accelero- metern att h¨arleda, se ekvation 2.2.

(22)

2.6. Fall 9

Figur 2.2: Avl¨asning av en persons position utifr˚an gravtitationsvektorn. Bilden ¨ar h¨amtad fr˚an artikel skriven av Mathie et al. [11].

Φ = arccos(−y) (2.2)

Ut¨over detta skulle samma vinkelber¨akningar kunna utf¨oras p˚a x- och y-axeln f¨or att best¨amma vilken position en person har d˚a denne ligger ner. Detta ans˚ags inte relevant i sammanhanget, d˚a information om att personen ligger ner ¨ar tillr¨ackligt f¨or att uppskatta att ett fall skett, men mer information om detta finns tillg¨anglig i en artikel skrivern av Mathie et al. [11].

2.6 Fall

F¨or att best¨amma om ett eventuellt fall har skett beh¨ovs n˚agot slags m˚att p˚a storleken av alla krafter som kroppen har utsatt accelerometern f¨or. H¨ar blir signalvektorns magnitud, SVM, relevant. I ekvation 2.3 ses hur detta m˚att ber¨aknas d¨ar xi, yi och zi ¨ar den momentana accelerationen som kroppen uts¨atter accelerometern f¨or, det vill s¨aga det v¨arde som f˚as efter l˚agpassfiltret.

(23)

SV M = q

x2i + yi2+ zi2 (2.3)

SVM-v¨ardet j¨amf¨ors sedan med ett tr¨oskelv¨arde. Om detta tr¨oskelv¨arde ¨overskrids med mer ¨an tv˚a p˚a varandra f¨oljande m¨atpunkter tilldelas det p˚ag˚aende tidsintervallet ett m¨ojlig fall. Ett tr¨oskelv¨arde testades fram via ett flertal olika fall fr˚an olika positioner och mot olika underlag. I enlighet med [11] var de b¨asta tr¨oskelv¨ardet 1,8 g.

2.7 Implementation

Som n¨amnts tidigare i detta kapitel valdes att i detta projekt implementera

r¨orelseklassificeringsalgoritmen i MATLAB [16]. Detta var ett val som gjordes bland an- nat d¨arf¨or att det g˚ar l¨att att komma ig˚ang med den seriella kommunikationen i Windows.

Det medf¨or att man i realtid kan ta emot data fr˚an enheten och analysera informationen som det skulle ha gjorts p˚a ett inbyggt system. Det ¨ar dessutom l¨att att spara undan data och information f¨or att analysera i efterhand. Sparat data fr˚an varje k¨orning g˚ar l¨att att sammanst¨alla i grafer vilket kan underl¨atta fels¨okning men ocks˚a underl¨atta diskussioner och slutsatser om det resultat som f˚as.

2.8 Sammanfattning

F¨or att systemet skall kunna k¨anna av alla ovan n¨amnda situationer m˚aste de g¨oras tillsammans i en algoritm. Som tidigare n¨amnts filtreras f¨orst data via ett medianfilter som i sin tur delas upp i gravitations- och kroppskomposanter. Efter detta ber¨aknas SMA- v¨arde f¨or att best¨amma om personen utf¨or en aktivitet eller om den har en viloposition.

Om en aktivitet har utf¨orts, det vill s¨aga ett SMA-v¨arde ¨over tr¨oskelv¨ardet 0,2 g, j¨amf¨ors SVM-v¨ardet mot ett tr¨oskelv¨arde p˚a 1,8 g f¨or att kontrollera om ett fall har skett. Har inte ett fall skett best¨ams vinkeln mot gravitationskomponenten ,Φ, f¨or att se om personen

¨ar aktiv i liggande eller uppr¨att position.

Har inte en aktivitet utf¨orts, det vill s¨aga ett SMA-v¨arde under tr¨oskelv¨ardet 0,2g, kon- trolleras kroppspositionen via gravitationens vinkel mot den negativa y-axeln. Utifr˚an denna best¨ams sedan kroppens position.

F¨or en ¨oversk˚adlig bild av hela algoritmf¨orloppet, se figur 2.3.

(24)

2.8. Sammanfattning 11

F¨or en MATLAB implementation se appendix B.1.

Figur 2.3: Fl¨odesschema ¨over r¨orelsealgoritmen.

(25)
(26)

K APITEL 3 H ˚ardvara

Detta kapitel behandlar h˚ardvarans funktioner och hur den designats utifr˚an uppsatta specifikationer.

3.1 Specifikationer

F¨or att ¨overhuvudtaget kunna m¨ata r¨orelser f¨or att k¨anna av till exempel ett fall eller en speciell r¨orelse med handen m˚aste det f¨or det f¨orsta finnas en sensor f¨or r¨orelser. En sensor som accelerationen krafter den uts¨atts f¨or ¨ar accelerometern. F¨or att kunna m¨ata r¨orelser i alla tre dimensionerna beh¨ovs en tri-axial accelerometer. Samlingsfrekvensen p˚a accelerometern uppskattades till att beh¨ova sampla uppemot 100 Hz.

F¨or att kunna l¨osa ut ett larm n¨ar en speciell r¨orelse uppt¨acks av enheten s˚a m˚aste den kommunicera med smartphone i fr˚aga, mer specifikt i denna rapport en Android- telefon. S˚adana mobiler har i skrivande stund tillg˚ang att kommunicera via Bluetooth, d¨ar version 2.1 ¨ar vanligast, Wi-Fi och ¨over telefonn¨atet. Att g˚a ¨over telefonn¨atet ¨ar f¨or de f¨orsta kr˚angligt och f¨or de andra blir de dyrt d˚a ett abonnemang m˚aste anv¨andas i b˚ada ¨andpunkter. Att anv¨anda mobilens Wi-Fi som ett n¨atverk ihop med sensor-enheten

¨ar ett alternativ. Detta skulle tyv¨arr g¨ora det on¨odigt kr˚angligt att anv¨anda internet i mobilen samtidigt som sensor-enheten d˚a Android-telefoner anv¨ander antingen Wi-Fi eller telefonn¨atet f¨or att komma ˚at internet. Dessutom ¨ar Wi-Fi mindre energieffek- tivt ¨an andra alternativ. Bluetooth ¨ar relativt str¨omsn˚alt, speciellt den nya ”Bluetooth smart-standarden. Ut¨over detta st¨ods SPP, serial port profile [17], f¨or att simulera seriell

13

(27)

kommunikation och haren r¨ackvidd p˚a 10 meter.

F¨or att driva systemet beh¨ovs n˚agon slags str¨omf¨ors¨orjning. Eftersom enheten skall vara tr˚adl¨os och m¨ata r¨orelser anv¨ands ett batteri till detta ¨andam˚al. Sp¨anningen fr˚an batteriet regleras sedan f¨or att f˚a en stabil sp¨anning p˚a r¨att niv˚a.

3.2 Val av komponenter

I denna sektion diskuteras varf¨or de viktigaste komponenterna valdes och vilka avv¨agningar som gjordes.

3.2.1 Microkontroller

Mikroprocessor, skulle st¨odja att sampla i 100Hz men dessutom hinna g¨ora ber¨akningar emellan˚at och ut¨over detta h˚alla koll p˚a bland annat batteriet. Dessutom var str¨om- effektiviteten ett krav som stod h¨ogt p˚a listan. F¨or att kunna vara str¨omsn˚al och g˚a i vila n¨ar MCUn inte anv¨ands ¨ar reaktiv programmering en f¨oruts¨attning. P˚a LTU anv¨ands TinyTimber [18, 19] f¨or detta ¨andam˚al och denna k¨arna har st¨od f¨or ett antal olika plattformar, se TinyTimber tabell 3.1. Dessutom var kravet att de skulle vara enkelt att komma ig˚ang med, d¨aribland m¨ojligheten att f˚a tag p˚a utvecklings kort snabbt. D¨arf¨or valdes Texas Instruments MSP430 som arkitektur. Denna enhet ¨ar mycket str¨omsn˚al [20], har fem olika str¨omsparl¨agen och st¨od f¨or alla protokoll som beh¨ovs, se kapitel 3.2.2 och 3.2.3. Dessutom ¨ar den relativt ber¨akningskraftig d˚a det ¨ar ett 16-bitarssystem j¨amf¨ort med till exempel AVR som ¨ar 8 bitar och d¨arf¨or kr¨aver fler cykler f¨or tyngre ber¨akningar.

Tillg¨angliga arkitekturer f¨or TinyTimber.

ARM7

AVR 8-bitars GBA

M16C MIPS MSP430 PIC18

Tabell 3.1: Arkitekturer som st¨ods av TinyTimber-k¨arnan [19]

(28)

3.2. Val av komponenter 15

Ett utvecklingskort MSP430P1611, se figur 3.1, k¨optes in fr˚an Olimex [21] bestyckad med en

MSP430F1611 processor. Denna processor har tillg˚ang till relativt mycket minne, tv˚a UART moduler, Universal Asynchronous Receiver/Transmitter, som ut¨over seriell kom- munikation kan konfigureras att k¨ora SPI, Serial Peripheral Interface [22], eller I2C , Inter-Integrated Circuit [23]. Den har dessutom tillg˚ang till ˚atta olika analoga ing˚angar, ADC pinnar, 16 olika externa interrupting˚angar och ut¨over detta en hel del generella utg˚angar. F¨or utvecklingen av ”proof of concep”-enheten valdes det att forts¨atta med MSP430f1611-processorn d˚a all kod var skriven specifikt f¨or denna processor och att den dessutom kommer med mycket minne tillg¨angligt utan att beh¨ova l¨agga till externa komponenter.

Figur 3.1: Utvecklingskortet fr˚an Olimex [21], som anv¨ants vid diverse tester.

3.2.2 Accelerometer

Enligt specifikationerna skulle en accelerometer med tre axlar och som kunde sampla i minst 100 Hz anv¨andas. H¨ar finns det tv˚a olika v¨agar att g˚a, i det f¨orsta tillv¨agag˚angss¨attet anv¨ands en analog accelerometer och m¨atningar p˚a sp¨anning den avger sker med mikro- processorns inbyggda ADC; Analoga till Digital Converter. Det andra alternativet ¨ar att anv¨anda en digital accelerometer som kommunicerar digitalt med mikroprocessorn vanligtvis via SPI, Serial Peripheral Interface [22], eller I2C , Inter-Integrated Circuit [23]. F¨ordelen med den analoga accelerometern ¨ar att det ¨ar ganska l¨att att f˚a informa- tion fr˚an den n¨ar v¨al ADC fungerar p˚a mikroprocessorn, vilket ofta ¨ar en enkel bit att

(29)

komma ig˚ang med. Nackdelen ¨ar dock att dessa tar mer str¨om ¨an en digital. De digitala accelerometrarna ¨ar str¨omsn˚ala och allt som oftast har de inbyggda funktioner som kan underl¨atta m¨atningar, till exempel ¨oversamplings-buffertar, buffertar f¨or att spara un- dan v¨arden s˚a att avl¨asningar inte beh¨over ske lika ofta etcetera. Dessutom har de ofta ett st¨allbart m¨atintervall vilket underl¨attar d˚a information om maximala krafterna ¨ar ok¨anda. Nackdelen med de digitala accelerometrarna ¨ar att de brukar vara dyrare ¨an de analoga.

Efter ¨overv¨agande av ovanst˚aende och med tanke p˚a att systemet ska vara s˚a str¨omsn˚alt som m¨ojligt f¨or att kunna f˚a l¨angre batteritid valdes en digital accelerometer. I detta fall mer specifikt ADXL345 f¨or att denna ¨ar en av de mest str¨omsn˚ala och st¨odjer b˚ade I2C och SPI, se [24]. Den samplar dessutom i hastigheter mellan 6.25 till 3200 Hz vilket uppfyller kraven p˚a de 100 Hz som efterstr¨avades.

3.2.3 Bluetooth

Som tr˚adl¨os modul skulle Bluetooth anv¨andas och eftersom detta examensarbete hade ganska begr¨ansad tillg˚ang av tid s˚ags ingen m¨ojlighet till att skriva en hel Bluetooth- stack till mikroprocessorn f¨or kommunikationen. D¨arf¨or best¨amdes det ganska fort att en Bluetooth-enhet med inbyggt dito skulle anv¨andas. En annan f¨ordel med att anv¨anda f¨ardiga produkter ¨ar att enheten annars inte f˚ar anv¨andas utanf¨or labbmilj¨oer f¨ore den har blivit CE-godk¨and. Enheten b¨or st¨odja SPP d˚a detta ¨ar ett av de l¨attaste s¨atten att kommunicera ¨over Bluetooth. kommunikationsmodulen ska ¨aven st¨odja kommunikation med mikroprocessorn antingen via ett av de tidigare n¨amnda protokollen I2C, SPI el- ler ocks˚a seriell kommunikation,UART (Universal Asynchronous Receiver/Transmitter).

Tv˚a enheter fr˚an Roving Networks fanns tillg¨angliga som hade st¨od f¨or de funktioner som beh¨ovdes, RN-41 [25] och RN-42 [26]. Vid prototypbygge anv¨andes RN-41 d˚a denna gick att f˚a tag i f¨ardigmonterad p˚a ett m¨onsterkort med alla utg˚angar till stiftlister, f¨or att underl¨atta kopplingar till bland annat ett utvecklingskort. Vid ”proof of concept”- enheten anv¨andes den senare, RN-42, d˚a denna ¨ar mer str¨omsn˚al men dock har lite kortare r¨ackvidd, RN-41 har ca 100 meter medans RN-42 cirka 10 meter. Om mer r¨ackvidd se- nare skulle beh¨ovas, vilket ¨ar ganska osannolikt d˚a telefonerna inte har s˚a l˚ang r¨ackvidd,

¨ar b˚ada enheterna pin-kompatibla vilket medf¨or att det g˚ar anv¨anda b˚ada enheterna p˚a det utvecklade m¨onsterkortet.

(30)

3.2. Val av komponenter 17

3.2.4 Str ¨ omf ¨ ors ¨ orjning

Eftersom enheten ska vara tr˚adl¨os valdes ett batteri som str¨omf¨ors¨orjning. F¨or att f¨orenkla anv¨andningen av enheten s˚a anv¨ands ett uppladdningsbart batteri och en laddningskrets p˚a kortet. F¨or att f˚a s˚a l˚ang batteritid som m¨ojligt med ett litet batteri best¨amdes det att ett Litium-polymer batteri skulle anv¨andas. Dessa batterier har en av det h¨ogsta energi-densiteterna av dagens batterier och har dessutom v¨aldigt l˚ag sj¨alvurladdning.

Li-Po-batterier har dock nackdelar d¨aribland att de l¨att kan g˚a s¨onder om de under- laddas/¨overladdas och om inte laddning sker p˚a korrekt s¨att kan brand uppst˚a. D¨arf¨or valdes ett batteri med inbyggd ¨over- och undersp¨anningsskydd samt ¨overstr¨omsskydd.

F¨or att ladda batteriet valdes en f¨ardig laddkrets som under laddningsf¨orloppet m¨ater sp¨anningen p˚a batteriet och f¨oljer sin laddningsalgoritm utefter detta. Den specifika ladd- ningskretsen som valdes var MCP73831 fr˚an Microchip, [27]. Denna laddningskrets ¨ar v¨aldigt billig, liten, kr¨aver f˚a andra komponenter f¨or att fungera och har st¨od f¨or ladd- ning via USB. F¨or att l¨att kunna st¨odja laddning s˚a valdes ing˚angen till en micro-USB kontakt. Micro-USB valdes d¨arf¨or att alla dagens mobiltelefoner i EU ska st¨odja laddning via denna port vilket medf¨or att de flesta har tillg˚ang till en s˚adan sladd.

D˚a mikroprocessorn, accelerometern och Bluetooth-enheten b¨or drivas med sp¨anningar mellan 3,0-3,3V och batteriet levererar 3,7V i nominalsp¨anning s˚a m˚aste denna sp¨anning regleras. Detta g¨ors mest effektivt via en LDO-regulator, Low Dropout, i detta fall en TPS76933DBVT fr˚an Texas Instruments som reglera sp¨anningen till 3,3V. F¨or att vara p˚a den s¨akra sidan d˚a de g¨allde Bluetoothkommunikationen valdes regulatorsp¨anningen till 3,3V men enheten skall enligt specifikation, se [25], klara ner till 3,0V.

Ut¨over dessa komponenter lades en MOSFET, en sp¨anningsstyrd transistor, till. Denna hade som uppgift att st¨anga av str¨ommen till Bluetooth-modulen utifall att batteriet skulle f˚a f¨or l˚ag sp¨anning. Detta f¨or att inte ladda ur batteriet allt f¨or fort vid l˚aga sp¨anningar. Se appendix C f¨or mer detaljer om hur detta gjordes.

3.2.5 Lysdioder

F¨or att kunna f˚a information direkt till anv¨andaren fr˚an kortet anv¨ands tv˚a lysdioder, Light emitting diodes (LEDs), men ocks˚a en RGB-LED, r¨od gr¨on bl˚a LED. De tv˚a vanliga lysdioderna anv¨ands till att visa Bluetooth-modulens status. Den f¨orsta visar direkt om Bluetooth-modulen ¨ar uppkopplad mot n˚agot eller inte och den andra vilken status modulen har genom att blinka i olika frekvenser. RGB-LEDen som egentligen bara

¨ar tre lysdioder i samma skal anv¨ands f¨or att visa batteristatus. Gr¨on d˚a batteriet laddas.

(31)

N¨ar batteriet inte laddas m¨ats sp¨anningen f¨or att kunna avg¨ora hur mycket batteri som finns kvar. Vid n¨ara nog fullt lyser dioden bl˚att, vid halv fullt batteri lyser den lila och n¨ar det ¨ar n¨ara slutet lyser den r¨ott, se tabell 4.1 f¨or en sammanst¨allning. Alla dess LEDs ¨ar kopplade till mikroprocessorn s˚a man vid behov kan byta ut funktionerna de har. De ¨ar kopplade s˚a att katoden g˚ar till processorn via ett motst˚and och matning hela tiden ligger p˚a via anoden, se appendix C.4. Detta kan k¨annas lite bakv¨ant d˚a en h¨og utsignal fr˚an mikroprocessorn kommer ge en sl¨ackt diod medan en l˚ag utsignal kommer t¨anda dioden. Hade inte dioden t¨ants p˚a detta s¨att hade en transistor beh¨ovt anv¨andas d˚a processorn inte orkar driva den str¨om som skulle beh¨ovas men den klarar d¨aremot att ta emot betydligt h¨ogre str¨ommar. Att l¨agga till transistorer hade b˚ade ¨okat priset, komplexiteten och utrymmet av prototypen s˚a n¨ar det ¨ar s˚a enkelt att l¨osa p˚a annat s¨att var det aldrig ett alternativ.

3.3 Proof of concept-modul

F¨or att f˚a produkten mindre och mer anv¨andbar till tester utvecklades en ”proof of concept”-enhet. Denna enhet har som m˚al att vara s˚a liten och smidig som m¨ojligt men samtidigt vara relativt enkel att l¨oda och m¨ata saker p˚a. F¨or att programmera MSP430f1611-processorn beh¨ovs en JTAG-kontakt, Joint Test Action Group. Denna kon- takt best˚ar av vanliga ”pin-headers” i en matris p˚a 2x10 pinnar. Med 2.54 mm mellan varje ben betyder det att bredden p˚a kortet m˚aste vara ˚atminstone 25.4mm vilket ¨ar aningen stort. Dessutom om fler utg˚angar f¨or diverse m¨atningar skulle beh¨ovas s˚a m˚aste fler pinnar till vilket kommer ¨oka storleken p˚a antingen l¨angden eller bredden av kortet.

F¨or att f˚a ut s˚a m˚anga signaler som m¨ojligt valdes d¨arf¨or att ist¨allet satsa p˚a en kortkon- takt, s˚a kallad card edge. Den modell som valdes var samtec MEC1 [28] , vilken har cirka 1 mm mellan varje utg˚ang. MEC1 har dessutom utg˚angar p˚a b˚ada kortsidorna och ¨ar polariserad s˚a det inte g˚ar ansluta kortet fel. F¨or att kunna anv¨anda denna kortkontakt skapades ett dotterkort, se kapitel 3.3.1. kortkontakten satte dock ¨aven den begr¨ansningar p˚a bredden f¨or prototypen. Dessutom l¨agger denna kontakt p˚a ganska mycket p˚a l¨angden d˚a den har ett stort ”jack” f¨or att skapa polariseringen, se figur 3.2. Bluetooth-modulen

¨ar annars den enskilt st¨orsta komponenten och skulle f¨ormodligen s¨atta begr¨ansningen p˚a storleken om en mindre processor, d˚a det finns betydligt mindre processorer i MSP430 serien, och mindre komponenter i allm¨anhet hade valts.

F¨or att underl¨atta tillverkningen av ”proof of concept”-enheten designades ett m¨onsterkort, printed circuit board (PCB), i CAD-programmet EAGLE [29] vilket ¨ar ett program spe- cifikt f¨or att designa m¨onsterkort. B˚ade huvudkortet, se appendix C.1, och dotterkortet, se appendix D, designades i detta program. F¨or att spara tid och undvika problem som kan uppst˚a n¨ar man etsar kort sj¨alv best¨alldes korten fr˚an en tillverkare. Eftersom till-

(32)

3.3. Proof of concept-modul 19

Figur 3.2: Det f¨ardiga m¨onsterkortet d¨ar kortkontakten ¨ar p˚a v¨anstra sidan.

verkningen av korten skulle g¨oras av ett externt f¨oretag gjordes kortet p˚a tv˚a lager. Detta eftersom leveranstiden kunde h˚allas kort, de ¨ar billigare att best¨alla prototyper p˚a tv˚a lager och att storleken inte var av st¨orsta vikt i detta skede. Hade d¨aremot storleken och massproduktion varit ett m˚al hade det funnits st¨orre motiv att ¨overg˚a till ˚atminstone fyralagers kort.

3.3.1 Dotterkort

F¨or att kunna programmera ”proof of concept”-enheten lades en s˚a kallad kortkontakt till. Med hj¨alp av denna kan de n¨odv¨andiga utg˚angarna f¨or programmering via JTAG, Joint Test Action Group, f˚as till ett dotterkort, se figur 3.3. P˚a detta dotterkort kan andra n¨odv¨andiga utg˚angar ocks˚a f˚as f¨or externa m¨atningar eller andra sorters test om de skulle beh¨ovas. F¨or ett kopplingsschema och bilder p˚a layouten se appendix D.

(33)

Figur 3.3: Dotterkort f¨or anslutning av sensorkortet och en JTAG.

3.4 Sammanfattning

Till en b¨orjan testades alla komponenter tillsammans med hj¨alp av ett utvecklings kort.

Dessa komponenter anv¨andes senare vid bygget av ”proof of concept”-enheten. De huvudsakliga komponenterna som anv¨andes var:

MSP430f1611 Mikrokontroller som har den fina egenskapen att vara str¨omsn˚al.

RN-42 Bluetooth-enhet med inbyggd Bluetooth-stack.

ADXL345 Digital accelerometer som ¨ar str¨omsn˚al.

Str¨omf¨ors¨orjning Best˚ar av lite olika delar f¨or att kunna ge en j¨amn str¨om men ocks˚a f¨or att kunna ladda enheten vid behov.

Li-Po batteri Batteri med relativt h¨og energidesitet.

MCP73831 Laddningskrets f¨or Li-Po-batterier. Tar str¨om fr˚an en micro-USB port.

TPS76933DBVT , reglerar sp¨anningen fr˚an batteriet till 3.3V.

Lysdioder F¨or status av Bluetooth och batteriets h¨alsa.

En blockdiagram ¨over de signalerna och protokoll som anv¨ands mellan de olika kompo- nenterna kan ses i figur 3.4

(34)

3.4. Sammanfattning 21

Figur 3.4: Blockdiagram ¨over kommunikationssignaler mellan de olika komponenterna.

F¨or fullst¨andig komponentlista se appendix A, f¨or kopplingsschema och layout C.1 re- spektive D.1.

(35)
(36)

K APITEL 4 Mjukvara

I detta kapitel kommer utvecklingen av programkoden f¨or b˚ade Android-telefoner och f¨or kodningen av mikroprocessorn MSP430 att behandlas.

4.1 Sensorkortet

F¨or att enkelt kunna samla information fr˚an en accelerometer och dessutom kunna skicka meddelande beh¨ovs n˚agon sorts inbyggd ”intelligens”. F¨or att kunna g¨ora detta direkt p˚a ett litet smidigt kort anv¨ands en mikrokontroller. Dessa finns i v¨aldigt m˚anga oli- ka storlekar, snabbhet och funktioner. F¨or ¨andam˚alet som diskuteras i denna rapport anv¨ands en MSP430 mikrokontroller som ¨ar relativt str¨omsn˚al och dessutom har m˚anga olika funktioner tillg¨angliga.

4.1.1 Utvecklingsmilj ¨ o

F¨or att programmera mikroprocessorer anv¨ands f¨or det mesta programmeringsspr˚aket C och s˚a ¨aven i detta fall. F¨or att underl¨atta programmeringsdelen anv¨ands en IDE, ”In- tegrated Development Environment”, eller p˚a svenska integrerad utvecklingsmilj¨o. En ofta anv¨and milj¨o till diverse olika programmeringsspr˚ak ¨ar Eclipse [30] d˚a den ¨ar gratis och relativt enkelt att skriva plugins till. I detta fall anv¨andes Eclipse tillsammans med en verktygskedjan MSPGCC [31], vilket bland annat inneh˚aller kompilator f¨or MSP430

23

(37)

serien. Detta tillsammans med MSPdebug [32] g¨or det m¨ojligt att b˚ade programmera processorn men ¨aven att debugga den via JTAG-gr¨anssnittet. F¨or installationsinstruk- tioner av dessa verktyg i Eclipse anv¨andes en f¨ardig guide [33]. Ett annat alternativ till detta som eventuellt kunnat f¨orkorta uppstarten av projektet hade varit att anv¨anda IAR Embedded Workbench, [34]. Detta har dock sina nackdelar i att den finns i antingen en betalversion, som f¨orvisso g˚ar att k¨ora i 30 dagars test version, eller k¨ora en gratis version som begr¨ansar programstorleken.

4.1.2 Reaktiv programmering

F¨or att kunna spara str¨om beh¨over processor g˚a i vilol¨age s˚a ofta som m¨ojligt. Det- ta g¨ors enklast genom att anv¨anda s˚a kallad reaktiv programmering, ocks˚a k¨ant som h¨andelsestyrd programmering. Kortfattat inneb¨ar detta att processorn alltid sover utom vid tillf¨allen d˚a de finns olika h¨andelser som ¨ar inplanerade eller vid externa interrupt.

F¨or att kunna skriva reaktiva program beh¨ovs en k¨arna, ett operativsystem, att bygga sina program runt. I detta fall anv¨andes en ”realtidsk¨arna” utvecklad p˚a Lule˚a tekniska universitet, LTU, vid namn TinyTimber. F¨ordelen med att anv¨anda denna realtidsk¨arna ist¨allet f¨or en av de m˚anga andra som finns var till st¨orsta delen att hj¨alp var l¨attillg¨anglig d˚a utvecklarna fanns tillg¨angliga p˚a universitetet f¨or fr˚agor. Ut¨over detta tar TinyTimber, f¨orkortat tT, relativt liten plats j¨amf¨ort med andra k¨arnor och det har v¨aldigt h¨og nog- grannhet p˚a hur precist de schemalagda h¨adelserna kan utf¨oras enligt en unders¨okning av Lindgren et al [19]. F¨or lite mer information och exempel p˚a hur TinyTimber har anv¨ands finns till exempel i ett licentiat skriver av Johan Eriksson [35].

En annan f¨ordel med att anv¨anda tT ¨ar att det redan fanns f¨ordefinierad inst¨allningar specifikt f¨or processorn MSP430f1611 som anv¨andes i projektet. Detta medf¨orde att bland annat UART-inst¨allningar, klockinst¨allningar etcetera var f¨orinst¨allda. Allt detta hade dock redan gjorts i syfte att l¨ara sig om MSP430 arkitekturen innan en k¨arna skulle anv¨andas, dels f¨or att det underl¨attar att kunna systemet om problem skulle uppst˚a men ocks˚a f¨or att veta att allt fungerar utan k¨arnan till en b¨orjan.

4.1.3 Basfunktioner

F¨or att systemet skall vara l¨attare att anv¨anda och samtidigt ge ett b¨attre intryck ¨ar det bland annat bra att ge lite information till anv¨andaren av produkten. H¨ar ing˚ar till exempel att visa att enheten ¨ar uppkopplad mot en annan enhet eller att den v¨antar p˚a att n˚agon ska f¨ors¨oka ansluta. Bluetooth-modulen som anv¨ants, RN-42 [26], i ”proof of

(38)

4.1. Sensorkortet 25

concept”-enheten har utg˚angar f¨or att visa b˚ada dessa statusar och dessa anv¨andes till att trigga en interrupt i mikroprocessorn s˚a att denna kan styra indikationen. Information om att enheten inte ¨ar kopplad kan bland annat utnyttjas till att f¨ors¨oka para med en f¨orutbest¨amd enhet etcetera.

Annan information som ocks˚a ¨ar l¨att att visa via lysdioder och framf¨orallt nyttig att ha f¨or anv¨andaren ¨ar batteristatus. Detta l¨ostes genom att anv¨anda mikroprocessorns inbyggda analoga till digitala omvandlare, ADC (Analog to Digital Converter). ADCn i mikropro- cessorn kan dock bara m¨ata upp till samma sp¨anningen som processorn drivs med, i detta fall 3,3V, och d˚a batteriets nominalsp¨anning ligger p˚a 3,7V m˚aste en sp¨anningsdelare anv¨andas. Sp¨anningsdelaren valdes att halvera sp¨anningen s˚a den m¨atta sp¨anningen ¨ar h¨alften s˚a stor som den verkliga, se formel 4.1 f¨or utr¨akning av batterisp¨anningen utifr˚an uppm¨atta sp¨anningen. I formeln ¨ar Vmatning matningen till mikroprocessorn p˚a 3,3V och ADCarde ¨ar det momentana v¨ardet som m¨atts medans ADCmax ¨ar de maximala v¨ardet.

ADCmax var i det h¨ar fallet 4095 d˚a m¨atningarna gjordes med hj¨alp av en 12-bitars ADC. Denna information visades sedan p˚a en flerf¨argad lysdiod, RGB-LED, genom att lysa i olika f¨argkombinationer, se tabell 4.1. Information om batteriet laddas tas direkt via en interrupt ing˚ang fr˚an laddningskretsen vilken har en anpassad utg˚ang just f¨or detta ¨andam˚al.

Vbat =ADCarde∗ 2 ∗ Vmatning ADCmax

=ADC ∗ 2 ∗ 3, 3 4095

(4.1)

Batteristatus F¨arg p˚a RGB-LED

Laddar Gr¨on

>90% Bl˚a

<90% och >25% Lila

<25% R¨od

Tabell 4.1: Tabell f¨or att avl¨asa batteristatus utifr˚an RGB-LEDens f¨arg.

4.1.4 Kommunikation

F¨or att kunna skicka data ¨over Bluetooth anv¨andes i detta fall det digitala kommuni- kationsprotokollet UART, som diskuterats i kapitel 3.2.3. Eftersom mikroprocessorn har

(39)

en inbyggd UART-enhet handlar programmeringen av UART om att st¨alla in kommu- nikationsfrekvenser och sedan skicka data till enheten som representeras av ett register s˚a sk¨oter mikroprocessorn kommunikationen. Detta underl¨attades en hel del av att det dessutom fanns f¨ardiga ”drivrutiner” f¨or detta inbyggt i TinyTimber-k¨arnan vilket kunde anv¨andas som exempel innan k¨arnan anv¨andes fullt ut.

F¨or att avl¨asa informationen fr˚an accelerometern fanns tv˚a protokoll att v¨alja mellan, SPI och I2C. SPI [22] har f¨ordelen att det st¨odjer h¨ogre ¨overf¨oringshastigheter medans I2C [23] har f¨ordelen att f¨arre ledare beh¨ovs. Ut¨over detta st¨odjer I2C adressering med f¨orinst¨allda adresser om flera enheter skulle anv¨andas i samma kedja medan SPI beh¨over en ing˚ang p˚a varje enhet som s¨ager om enheten ska anv¨andas, en s˚a kallad ”chip select ing˚ang”. Med f¨ordelen att I2C kr¨aver f¨arre ledare och att de h¨ogsta hastigheterna inte var av st¨orre vikt b¨orjade implementering av I2C att ske. Efter f¨ors¨ok att implementera I2C hittades en errata till MSP430F1611-processorn , [36]. Med hj¨alp av denna kunde ett tiotal fel p˚a I2C-enheten konstateras och det beslutades d˚a att SPI var ett b¨attre alternativ.

SPI-kommunikationen var l¨att att f˚a ing˚ang n¨ar v¨al protokollet f¨orstods. Ett problem som orsakades av detta var d˚a avl¨asning av data skulle ske. Detta kr¨aver p˚a MSP430- enheten att, efter registerv¨ardet som skall avl¨asas skickats, denna skickar n˚agot ut˚at f¨or att starta klocksignalen som tillhandah˚alls av mikroprocessorn. Klocksignalen beh¨ovs f¨or att accelerometern skall kunna skicka tillbaka data och n¨ar inte detta gjordes korrekt returnerade accelerometern aldrig n˚agon data.

4.2 Programmering av smartphone

I denna sektion kommer programmeringen av en enkel s¨akerhetsapplikation att disku- teras. Id´en med denna applikation ¨ar att n¨ar ett speciellt meddelande tas emot ¨over Bluetooth fr˚an sensorenheten skall ett SMS, Short Message Service, med platsangivel- se skickas till ett n¨odnummer som anges i applikationens inst¨allningar. Denna position h¨amtas i b¨asta fall fr˚an en GPS, Global Positioning System, som de flesta av dagens smartphones har inbyggt. Finns ingen GPS-data att hitta, vid till exempel d˚alig mottag- ning, s˚a anv¨ands en uppskattad position utifr˚an mobiln¨atet. Den information som erh˚alls sl˚as sedan upp emot en karta vilket ger en adress som ¨ar l¨attare att f¨orst˚a f¨or en m¨ansklig mottagare.

(40)

4.2. Programmering av smartphone 27

4.2.1 Val av plattform

P˚a dagens smartphonemarknad finns ett antal operativsystem att v¨alja p˚a. De vanligaste

¨ar i skrivande stund iOS, Android och Symbian d¨ar de tv˚a f¨orstn¨amnda ¨ar de betydligt vanligaste [37, 38]. Symbian ¨ar ett operativsystem som mer eller mindre har ¨overgivits av de stora mobiltelefontillverkarna idag och ¨ar d¨arf¨or inte en av de b¨attre plattformarna att satsa p˚a.

F¨or att utveckla applikationer till en iPhone, som k¨or iOS, beh¨ovs tillg˚ang till en Mac- dator, som egentligen ¨ar en PC specialanpassad f¨or Apples egna operativsystem MAC OS X. En licens f¨or att f˚a tillg˚ang till Apples utvecklingsprogram f¨or iOS-enheter m˚aste k¨opas, kostar$99, och dessutom m˚aste en iPhone,Ipad eller iPod touch finnas tillg¨anglig.

Ut¨over detta st¨aller Apple krav p˚a vilka Bluetooth-enheter som f˚ar paras med enheten.

Detta g¨or det sv˚art att p˚a prototypniv˚a testa Bluetooth-kommunikation med en IOS enhet eller s˚a s¨atts restriktiva krav p˚a vilka f¨ardiga Bluetooth-enheter som g˚ar anv¨anda.

Android som ¨ar en av de mest anv¨anda operativsystemet har f¨ordelen att all kod ¨ar

¨oppen och att komma ig˚ang med programmeringen g˚ar fort, inte ens en enhet beh¨ovs d˚a emulator g˚ar anv¨anda till att testa de flesta applikationer. Nackdelen med Android ¨ar d¨aremot att enheterna ¨ar ganska segmenterade, det vill s¨aga att det finns m˚anga olika enheter med mycket skillnader i h˚ardvara vilket kan medf¨ora strul om bak˚atkompatibilitet till ¨aldre versioner av Android skall st¨odjas. F¨or applikationen som ¨ar t¨ankt anv¨andas mot sensor-noden ¨ar detta inte ett problem d˚a varken h¨oga krav p˚a prestandan eller h¨oga krav p˚a utseendet av appen beh¨ovs. Ut¨over detta ¨ar m˚alet med detta exjobb att ut¨oka Neavas s¨akerhtsapplikationer som i dag ¨ar gjorda till Android-enheter. Allt detta tillsammans med att en enhet redan ¨agdes av rapportskrivaren gjorde valet f¨oll p˚a Android som plattform.

Ar m˚¨ alet en slutgiltig produkt b¨or en satsning dock g¨oras f¨or att ˚atminstone kunna k¨ora applikationen p˚a b˚ade iPhone och Android f¨or att n˚a ut till den breda massan. Det ¨ar inte heller en nackdel att n˚a fler segment som till exempel Windows Mobile som idag ¨ar p˚a frammarsch.

4.2.2 Utvecklingsmilj ¨ o

Aven h¨¨ ar, som vid MSP430 programmeringen, anv¨andes Eclipse som utvecklingsmilj¨o men ist¨allet f¨or spr˚aket C s˚a anv¨andes Java. Tillsammans med Androids egna SDK, Software Development Kit, finns alla tillg¨angliga API:er, Application Programming In- terface, f¨or Android-enheter tillg¨angliga. Denna SDK ger ¨aven tillg˚ang till en emulator

(41)

f¨or att simulera en enhet direkt p˚a datorn f¨or att l¨attare kunna fels¨oka eller n¨ar ing- en telefon finns att tillg˚a. Denna funktion ¨ar dock inte optimal vid programmering och tester av mobiltelefonernas Bluetooth-modul d˚a emulatorn inte kan simulera Bluetooth- kommunikation och d¨armed alltid skapar en applikationskrasch. Detta l¨ostes mycket l¨att genom att alla tester och debuggningar enkelt kan k¨oras fr˚an utvecklingsmilj¨on direkt p˚a en fysisk enhet.

4.2.3 Anv ¨andargr ¨anssnitt

Eftersom den t¨ankta trygghetsapplikationen skall ligga och v¨anta p˚a ett Bluetooth- meddelande och i detta fall utl¨osa ett alarm s˚a ¨ar behovet av ett anv¨andargr¨anssnitt ganska litet. Det som beh¨ovs ¨ar en inst¨allningsmeny, n˚agonstans att st¨alla in uppkopp- lingen mot Bluetooth-enheter och en vanlig knapp som startar applikationen.

Fr˚an den enkla huvudsk¨armen g˚ar det med hj¨alp av menyknappen, h˚ardvaruknappar p˚a alla Android-enheter som kom innan Android version 4.0 och d¨arefter mjukvaruknapp, snabbt och enkelt att n˚a en meny, se figur 4.1a. Denna meny ger tillg˚ang att ansluta till/koppla fr˚an en Bluetooth-enhet eller g¨ora inst¨allningar. Anv¨ands knappen f¨or att ansluta en Bluetooth-enhet listas tillg¨angliga enheter som g˚ar att ansluta till, se figur 4.1b. Inst¨allningsknappen leder vidare till en inst¨allningssk¨arm, se figur 4.1c, d¨ar bland annat mottagarens telefonnummer g˚ar knappa in. H¨ar g˚ar ¨aven att v¨alja om den inbyggda GPS:en ska anv¨andas eller inte.

4.2.4 Bluetooth-kommunikation

F¨or att snabbt och enkelt komma ig˚ang med Bluetooth-kommunikationen i Android anv¨andes ett kodexempel vid namn Bluetoothchat [39]. Detta exempel beh¨ovde dock modifierades en aning f¨or att kunna st¨odja bland annat SPP.

I grund och botten skapas en egen tr˚ad f¨or Bluetooth-kommunikationen s˚a att framf¨orallt inte anv¨andargr¨anssnittet tappar kapacitet och blir okontaktbart. Skulle anv¨andar- gr¨anssnittet vara okontaktbart en l¨angre stund, en l¨angre stund ¨ar f¨or Androidsystemet cirka 5 sekunder, kommer operativsystemet automatiskt st¨anga ner applikationen d˚a det anser att programmet har h¨angt sig. Denna tr˚ad bevakas sedan av huvudtr˚aden f¨or att kunna uppdatera olika statusf¨alt som till exempel om n˚agon enhet h˚aller p˚a att kopplas upp, ¨ar uppkopplad eller om den ¨ar fr˚ankopplad. Bevakningen av Bluetooth-tr˚aden tar

¨aven emot meddelandena, som i sin tur kommer fr˚an en annan Bluetooth-enhet, och utifr˚an detta best¨ams vad som skall g¨oras (till exempel sl˚a p˚a larmet).

(42)

4.2. Programmering av smartphone 29

(a) Huvudsk¨armen med me- nyf¨altet ¨oppnat.

(b) Sk¨arm ¨over m¨ojliga en- heter att ansluta till.

(c) Inst¨allningsmenyn.

Figur 4.1: Sk¨armdumpar fr˚an anv¨andargr¨anssnittet av den utvecklade applikationen

4.2.5 Alarm

N¨ar ett f¨orutbest¨amt meddelande tas emot av Bluetooth-tr˚aden, se kapitel 4.2.4 f¨or mer information, skall ett larm utl¨osas. Detta larm har i uppgift att b˚ade meddela personer i omgivningen om att n˚agot har h¨ant och att kontakta n¨arst˚aende via SMS, Short Message Service, med platsbeskrivning med mera.

F¨or att meddela omgivningen att n˚agot har h¨ant anv¨ands en alarmsignal. Denna startas i en egen tr˚ad f¨or att inte belasta anv¨andargr¨anssnittet d˚a ljud spelas upp.

P˚a samma s¨att som ljudtr˚aden skapas en tr˚ad f¨or att skicka SMS. Denna tr˚ad b¨orjar med att kolla om GPS:en ¨ar tillg¨anglig och om den ¨ar detta b¨orjar den s¨oka efter satelliter.

Finns inte GPS:en tillg¨anglig eller om det tar f¨or l˚ang tid att hitta en GPS-signal, satt till 30 sekunder vid test, s˚a anv¨ands ist¨allet telefonn¨atet f¨or att uppskatta en position.

Oavsett vart ifr˚an positionsdatat kommer ifr˚an s˚a anv¨ands det f¨or att sl˚a upp en plats- beskrivning som ¨ar l¨attare f¨or en m¨anniska att f¨orst˚a. I detta fall anv¨andes Androids inbyggda API f¨or ”Geocoding” [40]. Denna fungerar s˚a att med hj¨alp av en adress g˚ar det att h¨amta ut latitud och longitud eller som i denna applikation h¨amta ut en adress

(43)

eller platsbeskrivning utifr˚an latitud och longitud.

B˚ada de h¨ar tr˚adarna kan anv¨andaren stoppa, till exempel vid oavsiktlig aktivering.

Detta g¨ors via en knapp i applikationen.

(44)

K APITEL 5 Utv ¨ardering

I detta kapitel tas resultaten av de olika delarna upp d¨ar b˚ade det som fungerar och det som har varit problem tas upp.

5.1 H ˚ardvara

D˚a h˚ardvaran n¨astan uteslutande hade testats p˚a en labbkort innan designen f¨or m¨onsterkortet gjordes fungerade de mesta sm¨artfritt direkt efter att allt hade blivit monterat p˚a det designade kortet. En sak som inte fungerade som det var t¨ankt var den MOSFET som skulle kunna st¨anga av Bluetooth-enheten. Detta berodde p˚a att fel variant av MOSFET hade valts och denna byttes snabbt ut fr˚an en N- till en P-kanals MOSFET, en N-kanals MOSFET hade givetvis g˚att anv¨anda men hade beh¨ovt vara p˚a jordsidan av Bluetooth- enheten. Efter detta byte fungerade allt p˚a kortet i enlighet med specifikationerna. I figur 5.1 kan det monterade kortet ses.

31

(45)

(a) ¨Oversidan p˚a kortet med batteriet liggandes bredvid. (b) Undersidan p˚a kortet.

Figur 5.1: Monterad ”proof of concept”-enhet.

5.2 Mjukvara

5.2.1 Android

Applikationen som programmerades till Android-telefonen fungerade som det var t¨ankt.

Eftersom algoritmen f¨or r¨orelseigenk¨anning aldrig gjordes i C s˚a utf¨ordes tester som ist¨allet f¨or att larma vid specifika r¨orelser larmade vid ett klick p˚a accelerometern. Detta utl¨oste en alarmsignal som skickades till Androidapplikationen via Bluetooth och som i sin tur startade SMS-tj¨ansten. SMS-tj¨ansten i sin tur h¨amtade GPS-data, om GPS var vald, och slog upp adressen som motsvarar positionen. Om en GPS-signal inte fanns tillg¨anglig eller enheten inte var vald h¨amtades en approximerad position utifr˚an telefonn¨atet som

¨aven denna slogs upp korrekt mot en verklig adress. Det senare fallet ger dock en v¨aldigt approximerad position men denna information inkluderas i det skickade SMS:et.

(46)

5.3. R¨orelsealgoritm 33

5.2.2 MSP430

Att skicka data ¨over Bluetooth-enheten gick snabbt att komma ig˚ang med d˚a det enda som kr¨avdes var en fungerande UART-kommunikation. Efter att l¨ange ha f¨ors¨okt h¨amta data fr˚an accelerometern ¨over I2C-protokollet uppt¨acktes det att de fanns ett tiotal h˚ardvarufel i mikroprocessorn som gjorde att den inbyggda I2C-modulen i stort sett var obrukbar. Det fanns d˚a tv˚a alternativ som innebar att antingen anv¨anda en vanlig port och simulera I2C-protokollet via detta eller ¨overg˚a till SPI. Det senare valdes d˚a detta medf¨or att betydligt h¨ogre ¨overf¨oringsfrekvenser kan uppn˚as och att den inbyggda SPI- enheten kunde ta hand om det inkommande paketet. Efter detta problem var l¨ost var de i stort sett inga problem med programmeringen av MSP430 plattformen.

Efter allt ovan var testat beslutades att en realtidsk¨arna skulle k¨oras p˚a processorn.

Detta f¨or att spara energi n¨ar inget k¨ors, det vill s¨aga g˚a ner i vila, och f¨or att kunna schemal¨agga h¨andelser s˚a de utf¨ors regelbundet. F¨or att g¨ora detta valdes, som n¨amnts i tidigare kapitel 3.2.1, TinyTimber-k¨arnan. Detta skapade en del problem d˚a den senast anv¨ants p˚a en MSP430-plattform var av utvecklaren f¨or cirka 4 ˚ar sedan. Vilket medf¨orde att bland annat Watchdog-funktionen, en s¨akerhetsfunktion som ˚aterst¨aller processorn till dess utg˚angsl¨age om den inte ˚aterst¨alls med j¨amna mellanrum, fick st¨angas av f¨or att inte st¨ora k¨arnan.

5.3 R ¨ orelsealgoritm

F¨or att testa om r¨orelseklassificeringsalgoritmen fungerade som det var t¨ankt implemen- terades den i MATLAB [16], d¨ar ¨aven ett skript f¨or att ta emot data ¨over Bluetooth im- plementerades. Detta underl¨attade en hel del d˚a accelerometerdata samt alla ber¨aknade storheter l¨att kunde ˚ask˚adligg¨oras i diverse grafer. Ut¨over detta kunde all data sparas ner f¨or senare tester om det skulle beh¨ovas.

F¨or att data l¨att skulle kunna skickas till MATLAB skrevs ett program till sensornoden som tar emot data fr˚an accelerometern och sedan omvandlar de hexadecimala talen till en str¨ang i ASCII formatet. Denna str¨ang omvandlas i sin tur fr˚an det hexadecimala v¨ardet till en decimal representation av g-krafter i MATLAB efter att detta skript mottagit str¨angen ¨over Bluetooth.

(47)

5.3.1 Datainsamling

F¨or att kunna testa den implementerade algoritmen gjordes ett antal olika m¨atningar.

Dessa m¨atningar g˚ar i grund och botten ut p˚a att uppt¨acka olika r¨orelsem¨onster som till exempel att resa sig, kallat ”sitta till st˚a” i figuren 5.2. Vid m¨atningarnas b¨orjan har redan testpersonen intagit den korrekta startpositionen. Efter cirka fem sekunder g˚ar personen fr˚an f¨orsta l¨aget till det andra. Under r¨orelsen f¨or att byta position f¨orv¨antas n˚agon slags kortvarig aktivitet att detekteras. I figur 5.2 kan alla olika r¨orelsetester och hur de detekteras ses, sekundangivelserna ¨ar inte alltid s˚a exakta utan ska ses som en riktlinje.

Figur 5.2: F¨orv¨antat resultat f¨or de olika r¨orelsem¨onstren n¨ar ett positionsbyte sker vid tiden 5 sekunder.

F¨or att ¨overhuvudtaget ha n˚agot resultat att analysera utf¨ordes ett antal tester p˚a alla olika ”r¨orelsem¨onster”. Dessa test utf¨ordes dock bara p˚a en person, d˚a tiden var v¨aldigt begr¨ansad, men eftersom bland annat ref [11, 15, 13] har gjort tester p˚a samma eller mycket liknande algoritmer s˚a fanns ¨and˚a en del resultat att j¨amf¨ora emot. F¨or att d¨aremot testa olika sorters r¨orelser gjordes de flesta test i olika varianter. Att g˚a fr˚an st˚aende till sittande gjordes genom att f¨ors¨okspersonen satte sig olika varianter av b˚ade stolar och f˚at¨oljer med varierande h¨ojd och mjukhet. Att falla gjordes fr˚an diverse olika

(48)

5.3. R¨orelsealgoritm 35

positioner, som till exempel vid st˚aende och sittande, ner p˚a olika mjuka material men ocks˚a direkt ner p˚a golvet.

I figur 5.2 visas ¨aven hur r¨orelsem¨onstret ”g˚a” kan uppt¨ackas men detta ¨ar inte rik- tigt sant d˚a det som g¨ors ¨ar att uppt¨acka l˚angvariga anv¨andaraktiviteter, det vill s¨aga r¨orelsem¨onstret ”g˚a” uppst˚ar d˚a 4 p˚a varandra f¨oljande anv¨andaraktiviteter har uppt¨ackts.

F¨or att verkligen kunna se om en person g˚ar b¨or mer analys ske p˚a de olika kroppskom- ponenterna fr˚an accelerometern, detta gjordes dock aldrig i brist p˚a tid men ocks˚a d˚a det inte ans˚ags ha ett viktigt anv¨andningsomr˚ade.

Ut¨over dessa test gjordes en del tester f¨or att f¨ors¨oka utl¨osa en fall-signal. En rad upp- repade hopp, relativt h¨oga, fick en fallindikation att uppst˚a. Ut¨over detta var det inga

”vanliga” r¨orelser som lyckades att f˚a ett s˚adant larm att uppst˚a. Dessa tester utf¨ordes fortfarande bara ut av en person. Fler tester med andra personer i olika ˚aldersgrupper skulle beh¨ovas f¨or att kunna dra en tydlig slutsats av detta. Detta gjordes dock aldrig d˚a det inte rymdes i tidsplanen f¨or detta projekt men ocks˚a f¨or att det skulle beh¨ovas ett godk¨annande av etikpr¨ovningsn¨amnden [41] f¨or att f˚a genomf¨ora testerna.

5.3.2 Datasammanst ¨allning

Som n¨amnts ovan gjordes en rad olika tester och dessutom anv¨andes en hel del olika objekt vid de olika testerna. I figur 5.3 kan datainsamling vid ett simulerat fall ses. I figur 5.4 kan datainsamling d˚a ett r¨orelsem¨onster fr˚an st˚aende till sittande har utf¨orts. I den senare figuren kan man se att den uppr¨atta aktiveten uppt¨acks ett tag efter att den skett i verkligheten , g˚ar att se om x-,y- och z-axelns acceleration besk˚adas. Detta beror p˚a sekund till sekund”implementationen som g¨or att vid n¨asta helsekund ber¨aknas ett nytt SMA-v¨arde och eventuellt utl¨oser som en aktiv r¨orelse.

En sammanst¨allning av alla tester gjorda av f¨ors¨okspersonen kan ses i tabell 5.1.

(49)

R¨orelsem¨onster Antal test Antal korrekta test Noggrannhet (i %)

Sitt till St˚a 23 21 91.3

St˚a till Sitt 24 23 95.8

Sitt till Ligg 20 20 100

Ligg till Sitt 20 20 100

Olika positioner, liggandes 20 20 100

F¨orflytta sig 15 13 86.7

Fall 16 16 100

Totalt 138 133 96.4

Tabell 5.1: Tabell ¨over gjorda m¨atningar och deras utfall.

Figur 5.3: Insamlad data och ber¨aknade variabler d¨ar ett fall har skett efter cirka 5 sekunder.

(50)

5.3. R¨orelsealgoritm 37

Figur 5.4: Insamlad data och ber¨aknade variabler d¨ar en person har r¨ort sig fr˚an st˚aende till sittande position.

(51)

References

Outline

Related documents

Handeln inom Afrika har ökat och ekonomin har förbättrats, enligt IMF , som för i år förutspår en femprocentig tillväxt för .. länder

Sydafrika har till exempel förlorat  procent av sina läkare och sju procent av sina sköterskor till Australien, USA och Europa.. Detta förvärrar ytterligare en situation

Och Josef, som genom sin här- komst hörde till Davids hus, begav sig från Nasaret i Galileen upp till Judeen, till Davids stad Betlehem, för att skattskriva sig tillsammans med

De pekar på Östergötland och menar att de lyckades korta köerna när man införde vårdval 2013, men att hörselvården blivit betydligt sämre!. Bland annat pekar man på att

Även om många hållbarhetsrisker påverkar företagens reala förutsättningar under årtionden så går det självklart att kortsiktigt spekulera och investera baserat

Detta g¨aller alla tal vars dyadiska utveckling ¨ar ¨andlig; man beh¨over inte kasta fler kast ¨an vad som anges av den position d¨ar sista ettan finns i utvecklingen.. Det betyder

Eleverna har bättre möjlighet att lägga tid på att plugga istället för att åka buss Man väljer inte skola utifrån hur det är lättast att ta sig dit. • Det fi nns en

Tavlorna skall vara Norrköpings skyttegille tillhanda senast torsdagen den 14 juni.. • Fullständig resultatlista på