2002-11-05 Sonja Carlsson. Projekt Trackman. Wearable computers D 10p Hösten 2002. Mikael Gustafsson. Sonja Carlsson



Relevanta dokument
Konstruktion av en radiostyrd legobil. Digitala projekt av Arbon Vata Leonardo Vukmanovic Amid Bhatia

Digitala projekt rapport

Felsökning av kommunikation mellan DLS och GPS mottagare.

Digitalteknik: CoolRunner-II CPLD Starter Kit Med kommentarer för kursen ht 2012

Digitalteknik: CoolRunner-II CPLD Starter Kit

Laboration 5. Temperaturmätning med analog givare. Tekniska gränssnitt 7,5 p. Förutsättningar: Uppgift: Temperatur:+22 C

Random Access Memory. Amare Reda Jenny Holmberg Henrik Kreipke Gaylord Kaya

Blue Key Digitala projekt VT

Global Positioning System GPS i funktion

Grundläggande datorkunskap

Innehållsförteckning. Figur- och tabellförteckning. Figure 1 Blockschema över hårdvaran...4 Figure 2 Blockschema över programet...

Temperaturmätare med lagringsfunktion DIGITALA PROJEKT EITF11 GRUPP 14, ERIK ENFORS, LUDWIG ROSENDAL, CARL MIKAEL WIDMAN

Den här texten ska förhoppningsvis underlätta en del av anpassningarna. Det kan säkert finnas en del fel och annat tok.

M-Bus Fjärravläsningssystem M-Bus master, GSM/GPRS, TCP/IP

Universe Engine Rapport

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

Du kan även lyssna på sidorna i läroboken: Teknik direkt s Lyssna gör du på inläsningstjänst.

Digitala projekt, EDI021 Rapport Handledare: Bertil Lindvall

Vad är kommunikation? Vad är datorkommunikation? Dataöverföring; Inledning

Operativsystem DVG A06. Definition. Varför operativsystem? - Vad är ett operativsystem?

Tentamen PC-teknik 5 p Lösningar och kommentarer

Digitala projekt Konstruktion av nummerpresentatör

Systemkonstruktion SERIEKOMMUNIKATION

Systemenhet. Delarna i en dator

X-Route Användarmanual Innehåll

Innehåll. 1 Inledning 3

Datorhistorik. Föreläsning 3 Datorns hårdvara EDSAC. Eniac. I think there is a world market for maybe five computers. Thomas Watson, IBM, 1943

GPIO - General Purpose Input Output

RemoteBud. Inlämnas: Patrik Johnsson, e01pjo Viktor Karlsson, e01vk

Boot-loader. Carl Wernstedt

Digitala Projekt Konstruktion av Tamagocchi. Av: Oskar Andersson D05 & Danial Rehman D05

Definition DVG A06. Varför operativsystem? Operativsystem. Översikt. - Vad är ett operativsystem?

Snake. Digitala Projekt (EITF11) Fredrik Jansson, I-12 Lunds Tekniska Högskola,

Pulsmätare med varningsindikatorer

Cecilia Ingard. Boksidan

DIG IN TO Dator och nätverksteknik

Introduktion till programmering och Python Grundkurs i programmering med Python

Accelerometer. Rikard Ekström Mattias Kindborg. Informationsteknologi Lunds Universitet

Föreläsning 2. Operativsystem och programmering

Moment 2 Digital elektronik. Föreläsning Inbyggda system, introduktion

Provmoment: Ladokkod: Tentamen ges för: Tentamen TE111B El3. Namn: Personnummer: Tentamensdatum: Tid: 14:00-18:00.

Digitala Projekt (EITF11)

Katalog med Innovas alkomätare 2006

LC Sweex Wireless LAN PC Card 54 Mbps

Conreg. Översikt T-Logg T-LOGG. System för insamling, bearbetning, visning och lagring av tjockleksdata 1 (14)

PROGRAMMERING I NXC. Sammanfattning KUNGLIGA TEKNISKA HÖGSKOLAN

Digitala projekt - Radiostyrd bil

Kombi-instrument UPM 3010 PK1

DVG A06. Operativsystem, mm. Karlstads universitet Datavetenskap. DVG A06 Johan Eklund. Datavetenskap, Karlstads universitet 1

Läsminne Read Only Memory ROM

Rapport Digitala Projekt EITF11 Grupp 4 Axel Sundberg, Jakob Wennerström Gille Handledare: Bertil Lindvall

Si-Tool e USB-HART Modem - Matningsdon - Precisionsmätning

Vad är en dator? Introduktion till datorer och nätverk. Pontus Haglund Institutionen för datavetenskap (IDA) 21 augusti 2018

TETRIS. LTH, Campus Helsingborg EITA15 Digitala System

Manual Sportident Onlinekontroll via GPRS

Grundläggande datavetenskap, 4p

Ett urval D/A- och A/D-omvandlare

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

Vad är en UART? Universal Asynchronous Receiver Transmitter parallella seriella parallell åttabitars signal mest signifikant bit

Snabb vägledning för 9 modul enhet Montering GSM-enheten indvändigt (oversättelse, se bilaga) Spänning

Distribuerade affärssystem

Introduktion till E-block och Flowcode

HF0010. Introduktionskurs i datateknik 1,5 hp

OLC-812. Se tabellen nedan för beskrivning av adresswitcharna.

LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall

Introduktion till Arduino

Styrteknik 7.5 hp distans: E-1000 och E-Designer

Snabbstartsguide. Mobil WiFi ZTE MF910

Inför laborationen "Öppna din dator"

Några saker att tänka på för att ni ska få ut max av er nya fiberanslutning

Seriellmeny. PS SmartSwitch. Baud. Robust XON. Databitar. Svara på DSR RS-232/RS-422. Jobb-buffring. RS-422-polaritet. NPA-läge.

Användarmanual. FXIO-Gateway. FXIO-Gateway Användarmanual. INUX AB Katrinedalsg. 3, Borås

Operativsystem. Innehåll. Operativsystemets funktion. Vad är ett OS? Vart hittar men ett OS? OS hanterar processorns resurser

IT-GUIDE Version 1.0 Författare: Juha Söderqvist

LC Sweex Wireless LAN USB-kort

Telefrang Smoke Control System Installationsmanual för Midi- och MaxiSmoke Sida 1 av 12

Svensk version. Inledning. Lådans innehåll. IP004 Sweex Wireless Internet Phone

Så sparas ström i dagens åttabitare

5:3 Datorn och datorns delar

S 103 Induktiv elektromagnetisk flödesmätare

bergerdata hb Sid 1 (11)

DIG IN TO Administration av nätverk- och serverutrustning

Systembeskrivning. Systemskiss. Moduler.

Arcus-EDS. Produktbeskrivning. Gateway KNX / DMX. KNX-GW-DMX Art.-Nr Maj LedLab AB Kungegårdsgatan Alingsås

Ingående delar. I ditt paket av IDEA-SOLO ingår följande delar. Kamerasystem. Väska för att transportera IDEA-SOLO

GPS-Link version 1.7 Användarhandledning Kort & Matrikelstyrelsen och Chips Development Team

3) Routern kontrollerar nu om destinationen återfinns i Routingtabellen av för att se om det finns en väg (route) till denna remote ost.

INDUSTRIAL COMPUTERS

Department of Information Technology Digitala projekt. SuperKull. Daniel Öhman Alexander Persson

Introduktion till programmering. Undervisning. Litteratur och examination. Lärare. Föreläsning 1

MINIX NEO A2 Användarguide

Bilaga 1: GPS-teknik, en liten ordlista

DIGITALA PROJEKT Väderstation

Trajexia Motionenhet

WAGO IO System Service Seminar. Diagnostik

Detta är en liten ordlista med förklaringar på begrepp och aktiviteter relaterade till. elvisualiseringsverktyg

KURSMÅL WINDOWS STARTA KURSEN

DIGITAL MULTIMETER BRUKSANVISNING MODELL DT9201

Videoutgång Maximal DisplayPort-upplösning Maximal HDMI-upplösning

Produktutvecklingsprocessen. (e)lvis

Transkript:

Projekt Trackman Wearable computers D 10p Hösten 2002 Sonja Carlsson 1

Innehållsförteckning Projekt Trackman... 1 INNEHÅLLSFÖRTECKNING...2 FIGURFÖRTECKNING... 3 TABELLFÖRTECKNING... 3 INLEDNING... 4 INLEDNING... 4 ANVÄNDNINGSOMRÅDEN... 4 MÅL... 4 FYSISK UTVECKLING... 4 PLATTFORM... 4 LART (Linux Advanced Radio Terminal)... 5 GPS -MOTTAGARE... 6 GN-79N... 6 Superkondensator... 7 RS232-OMVANDLARE... 8 MAX3227E... 8 DISPLAY... 9 G1216... 9 SPÄNNINGSOMVANDLARE...10 MAX680...10 MJUKVARA...11 LCD DRIVRUTIN...11 Obligatoriska drivrutinsfunktioner...12 Arbetarfunktioner...13 HAL Hardware Abstraction Layer...14 ANVÄNDARPROGRAM...15 INFORMATIONSFLÖDE I LART...16 BEGRÄNSNINGAR...17 FRAMTIDEN...17 PROBLEM OCH REFLEKTIONER...18 KÄLLFÖRTECKNING...18 APPENDIX 1 ORDLISTA...19 APPENDIX 2 KOPPLINGSSCHEMA...21 APPENDIX 3 KRETSKO RTSLAYOUT...22 BILAGOR...23 2

Figurförteckning BILD 1 LART MED HUVUDKORT (UNDERST) SAMT KSB (ÖVERST )...5 BILD 2 GPGGA -MENING...6 BILD 3 UPPKOPPLING FÖR MAX3227E...8 BILD 4 BLOCKDIAGRAM ÖVER G1216...9 BILD 5 LCD DRIVRUTIN UPPBYGGNAD...11 BILD 6 ANVÄNDARPROGRAM, TRACKMAN UPPBYGGNAD...15 BILD 7 LART INFORMATIONSFLÖDE...16 Tabellförteckning TABELL 1 TEKNISK DATA GN-79N...7 TABELL 2 TEKNISK DATA SUPERKONDENSATOR...7 TABELL 3 TEKNISK DATA MAX3227E...8 TABELL 4 TEKNISK DATA G1216...9 TABELL 5 TEKNISK DATA MAX680...10 3

Inledning Under höstterminen 2002 gavs kursen Wearable Computers D, 10p, en av målsättningarna med kursen var att studenterna skulle genomföra ett större fördjupningsprojekt anpassat efter deltagarnas egna intressen. Riktlinjerna var att skapa ett litet, strömsnålt och bärbart system, en wearable computer, från idé till färdig prototyp. Den här rapporten behandlar utvecklingen av en löpmätare, Trackman. Användningsområden Trackman är tänkt att användas som ett hjälpmedel för elitlöpare, men även vardagsmotionären har stor nytta av produkten. Genom att ta med sig Trackman på löparrundan eller promenaden får användaren information om hur långt och fort det gått, samt en grafisk bild över hur motionsrundan ser ut. Mål Inför utvecklingen av Trackman sattes ett antal mål upp: Liten, ju mindre Trackman är desto lättare är den att ta med sig. Strömsnål, batterierna ska tåla även maratonlopp. Kunna beräkna avverkad distans. Kunna beräkna hastighet. Visa text på display för att visa information om distans och hastighet. Visa karta på display över den sträcka användaren färdats. Drivrutin till display för att förenkla hanteringen av textbaserad och uppritad information. Fysisk utveckling Löpmätaren består av tre huvudsakliga delar: En plattform för att ta emot, bearbeta och skriva ut den inkommande information. En GPS-mottagare för att detektera var i världen användaren befinner sig. En display för att presentera informationen. Plattform De resurser som fanns att tillgå var utvecklingskortet Axis Developer Board LX med en ETRAX 100LX processor samt en LART med en Intel StrongARM SA-1100 mikroprocessor. Den senare valdes till projektet eftersom LART:en har lägre strömförbrukning, mer minne och en högre processorhastighet. 4

LART (Linux Advanced Radio Terminal) LART är en liten inbyggd dator utvecklat av det nederländska universitetet TUDelft (Delft University of Technology). LART:en kan drivas med 3,5 V upp till 10 V och har en effektförbrukning mindre än 1 W. Dess prestanda uppgår till mer än 200 MIPS. Den LART som användes till projektet bestod av två delar, ett huvudkort samt ett Kitchen Sink Board (KSB). På huvudkortet fanns: Mikroprocessor, 220 MHz Digital SA-1100 StrongARM 32 Mbyte EDO RAM 4 Mb Intel Fast boot block Flash memory Huvudkortets flashminne har tillräckligt med plats för en bootloader, en komprimerad linuxkernel och en ramdisk vilket gör LART:en till en komplett minidator utan behov av externa kretsar för att boota. LART:en tillhandahåller en egen bootloader, Blob (Boot Loader OBject). Uppgiften som Blob har är att initialisera hårdvaran (dvs. CPU-hastighet, minnen, avbrott och RS232) samt att starta upp kärnan. Via Blob:en går det att ladda ner en ny ramdisk och ny linuxkärna till LART:en. BILD 1 LART MED HUVUDKORT (UNDERST) SAMT KSB (ÖVERST) På KSB-kortet finns: LCD-hanterare portar för IrDA, USB-slave, video och pekskärm 44-pinnars IDE/ATA gränssnitt kontakt för Ethernetkort (kan beställas som tillval) PS/2-portar för tangentbord och mus 16-bitars stereoljudsutgång mono audio I/O från en UCB1200 port för POTS (RS232 seriell I/O) KSB-kortets LCD-hanterare har för det här projektet programmerats om till vanliga GPIO-pinnar eftersom den display som används har en egen hanterare. LART:ens POTS-port kommunicerar med GPS-mottagaren. 5

GPS-mottagare Den GPS som använts i det här projektet var den japansktillverkade GN-79N. Då GN-79N är utformad för att finnas i navigationssystem i bilar och har en positionsnoggrannhet på ungefär 5 meter ansågs den uppfylla de krav på noggrannhet som ställts på löpmätaren. GN-79N Det japanska företaget Furuno Electric CO,. LTD ligger bakom GN-79N, mottagaren är en parallell 12-kanals mottagare med en mottagningsfrekvens på 1575,42 MHz. Den har full asynkron duplex, dock behövdes enbart envägskommunikation från GPS-mottagaren in till LART:en för det här projektet. Varje sekund skickar GPS-mottagaren ut ett antal NMEA-0183 meningar där information om bland annat latitud, longitud samt antal tillgängliga satelliter finns angivet. Den mening som innehöll den information som projektet behövde kallas GPGGA (out). Den meningen består av 15 fält och kan se ut enligt följande: BILD 2 GPGGA-MENING Fält nr: 1. Tid i hhmmss 2. Latitud 3. N = Norr, S = Söder 4. Longitud 5. E = öst, W = väst 6. GPS-kvalitet 7. Antal satelliter GN-79N har kontakt med 8. Anger DOP 9. Altitud 10. Enhet för altituden 11. Geoidaltitud 12. Enhet för geoidaltitud 13. Visar den tid som gått sedan DGPS uppdaterades 14. DGPS-stationens ID 15. Checksumma Enbart fält 2 till och med 5 samt fält 7 används i projektet. 6

Då GPS-mottagaren kallstartas tar det 82,5 sekunder (±26,1 sekunder) innan den upprättat kontakt med alla tillgängliga satelliter. GPS-mottagaren kan maximalt kommunicera med 12 olika satelliter samtidigt. Teknisk data GN-79N Mottagare 12 kanals parallellmottagare Frekvens 1575,42 MHz, C/A kod Spänning 5,0 V dc (± 0.5 V) Effektförbrukning Positionsnoggrannhet Uppdateringsintervall Hastighet Utgående protokoll Storlek Vikt Temperatur (vid förvaring) Temperatur (vid drift) TABELL 1 TEKNISK DATA GN-79N 0,25 W vid 3,3 Vdc > 5.2 m 1 sek 4800 BPS NMEA-0183 4,28 x 2,60 x 0,90 cm 20 g +30 C till +80 C -40 C till +85 C Superkondensator För att GPS-mottagaren snabbare ska komma igång, användes en superkondensator som spänningsbackup. Detta sker genom att superkondensatorn förser GPS:ens backupben med spänning då den ordinarie spänningskällan är bortkopplad, GPS:en minns därigenom vilken position den har och det gör att nästa uppstart går snabbare. Den superkondensator som valdes till projektet var en NEC/TOKIN 0,22F FS 5,5V 348 M. Den här kategorin av kondensatorer är lämpade som långtids spänningsbackup för att hålla spänning till minnesmoduler så att de behåller sin data. Superkondensatorn som valdes hanterar spänningar upp till 5,5 V och räcker gott och väl till GPS-mottagarens spänningsnivå och strömbackupbehov. Superkondensatorn har en annan funktionsprincip än traditionella kondensatorer, den är baserad på att ett elektroniskt dubbellager finns i gränsskiktet mellan aktiva kolpartiklar och svavelsyreelektrolyt. Kondensatorns två elektroder är separerade med hjälp av ett poröst membran, detta membran leder joner, men är elektronisk isolerande. Genom att seriekoppla flera celler i konstruktionen erhålles önskad spänningsnivå. Teknisk data Spänning Maximal ström i 30 minuter Uppladdningstid Urladdningstid Storlek Vikt Temperatur (vid drift) NEC/TOKIN 0,22F FS 5,5V 348 M Max 5,5 V 0,033 ma 30 sek 9 min 30 sek 0,453 x 0,335 mm 0,057 g -25 C till +70 C TABELL 2 TEKNISK DATA SUPERKONDENSATOR 7

RS232-omvandlare Signalen som kommer från GPS:en behöver anpassas till LART:ens RS232-port och måste därför passera en RS232-omvandlare. Till projektet önskades en så enkel och avklädd RS232-omvandlare som möjligt för att undvika oönskade och onödiga komplikationer. Maxims MAX3227E uppfyllde systemets krav. MAX3227E Den här RS232-omvandlaren kan automatiskt försättas i strömsparläge då ingen data har passerat på 30 sekunder, för att nå detta tillstånd måste MAX3227E kopplas enligt nedan. I denna applikation finns dock inget behov av en sådan funktion eftersom GPS:en kontinuerligt förser LART:en med ny data. Därför har denna funktion stängts av genom att FORCEON och FORCEOFF har dragits hög. BILD 3 UPPKOPPLING FÖR MAX3227E Teknisk data MAX3227E Spänning +3,0 V till +5,5 V Strömförbrukning 571 mw Hastighet 1 Mbps Storlek 7,90 x 6,33 x 1,99 mm Antal ben 16 st Antal Tx/Rx 1/1 Antal transistorer 1129 st Temperatur (vid förvaring) -65 C till +160 C Temperatur (vid drift) -40 C till +70 C TABELL 3 TEKNISK DATA MAX3227E 8

Display Ett grundläggande mål med projektet var att kunna rita ut en karta över hur användaren rört sig, för att göra detta krävdes en grafisk display, därför föll valet på en grafisk LCD från Seiko Instruments. G1216 Seiko Instruments G1216 är en 128x64 pixlars LCD-modul, och har ett internt RAMminne och en inbyggd LCD-hanterare. Eftersom displayen är en kristalldisplay krävs två inspänningar, +5 V för att driva själva displaylogiken samt -8 V för kristallernas matningsspänning. Denna LCD har två typer av integrerade kretsar, den ena kretsen hanterar den vanliga spänningstillförseln samt LCD-hanteraren medan den andra kretsen kontrollerar RAM-minnet och kristallspänningen. Displayen använder direkt bitmappning vilket innebär att varje pixel överensstämmer med en viss bit i RAMminnet. G1216 har två inbyggda drivkretsar om 64*64 pixlar, dessa aktiveras separat genom att dra CS1 och/eller CS2 låg, då någon av drivkretsarna är aktiverade kan pixlar om 8 adresseras genom en 8-bitars parallell databuss. BILD 4 BLOCKDIAGRAM ÖVER G1216 Teknisk data Spänning Strömförbrukning Pixelstorlek Storlek Vikt Temperatur (vid förvaring) Temperatur (vid drift) G1216 +5,0 V (driver displayen), samt -8 V (driver kristallerna) 2 ma (displayen), samt 1,8 ma (kristallerna) 0,43 x 0,43 mm 7,50 x 5, 27 x 0,68 cm 40 g -30 C till +80 C -20 C till +70 C TABELL 4 TEKNISK DATA G1216 9

Spänningsomvandlare Eftersom G1216 är en kristalldisplay behövs -8 V för att kristallerna ska fungera, därför krävs en spänningsomvandlare som kan omvandla positiv spänning till önskat negativt volttal. Till en början användes MAX665 för att invertera +8 volt som kom direkt från spänningsmatningen. Dessvärre komplicerades driften av LART:en då den drevs med batterier. Det gjorde att designen gjordes om för att passa en mer lämplig krets nämligen MAX680. MAX680 MAX680 tillsammans med ett fyra kondensatorer omvandlar +5 V till ±10 V. Kondensatorerna tillsammans med interna komponenter bildar laddningspumpar, en för att generera -10 V samt en för +10 V. Pumparna drivs av varsin 8 khz oscillator. Genom att använda tre seriekopplade dioder för att sänka spänningen till -8 V erhölls önskad spänning till displayen. Teknisk data Spänning Strömförbrukning Effektförbrukning Storlek Antal ben Temperatur (vid förvaring) MAX680 +2,0 till +6,0 V 10 ma 727 mw 9,91 x 7,87 x 4,572 mm 8 st -65 C till +160 C TABELL 5 TEKNISK DATA MAX680 10

Mjukvara Både drivrutin och användarprogram är skrivna för Linux 2.4 i programmeringsspråket C. Tidsmässigt tog drivrutinen upp största delen av utvecklingstiden, närmare bestämt 5.5 mannaveckor av totala utvecklingstiden. Användarprogrammet tog endast en mannavecka att färdigställa. LCD Drivrutin Drivrutinen har namnet lcd och är en modul som kan laddas in och ut ur kärnan när det så önskas. Drivrutinen är uppbyggd så objektorienterat som möjligt, eftersom programmeringsspråket är C så uppnås objektskydd genom att placera de olika objekten och dess funktioner i separata filer. Varje källfil kan ses som en egen klass, varje klass har egna medlemsfunktioner som antingen är publika eller skyddade, endast de funktioner som måste användas av andra delar av drivrutinen är deklarerade publikt, övriga är skyddade genom attributet protected. Varje klass har en specifik uppgift, de kan dock delas in i tre grupper enligt bilden nedan. Varje grupp har olika uppgifter och varje klass har en specifik uppgift inom gruppen. Drivrutinens olika grupper och klasser är beskrivna separat i följande stycken. BILD 5 LCD DRIVRUTIN UPPBYGGNAD. 11

Obligatoriska drivrutinsfunktioner De funktioner som finns i filen lcd_driver.c hanterar drivrutinstekniska operationer, de är nödvändiga för att drivrutinen skall fungera tillfredställande i symbios med linuxkärnan. Nedan följer en kort beskrivning över när de exekveras samt vilken uppgift respektive funktion har. lcd_initmodule. Exekveras när drivrutinen stoppas in i kärnan, det görs lämpligen med kommandot insmod lcd.o. Den registrerar drivrutinen i kärnan, initierar displayen så att den går att använda och skriver ut textsträngen module loaded på displayen. lcd_cleanupmodule. Exekveras när drivrutinen tas bort ur kärnan, det görs lämpligen med kommandot rmmod lcd. Den skriver ut texten module unloaded på displayen och avregistrerar drivrutinen från kärnan. lcd_open. Exekveras när användarprogrammet öppnar en fildeskriptor till drivrutinen. Den rensar LCD och gör ordning drivrutinen för data. lcd_release. Exekveras när användarprogrammet stänger sin fildeskriptor till drivrutinen. Den rensar upp i drivrutinen och rensar LCD. lcd_write. Exekveras när användarprogrammet gör ett write-anrop till den öppna fildeskriptorn. Drivrutinen antar att det data som medföljer write-anropet är vanlig text och försöker skriva ut den på displayen. För detta ändamål används funktionerna som finns i filen lcd_char.c, de är beskrivna i avdelningen Arbetarfunktioner. lcd_ioctl. Exekveras när användarprogrammet gör ett ioctl-anrop på den öppna fildeskriptorn. Drivrutinen känner igen ett antal olika kommandon som den utför enligt användarprogrammets önskemål, de flesta av dessa kommandon är grafiskt orienterade. För detta ändamål används funktionerna som finns i filen lcd_graphic.c. det finns även två kommandon som gör inställningar för texthantering. Dessa funktioner finns beskrivna i avdelningen Arbetarfunktioner. 12

Arbetarfunktioner Arbetarfunktionerna är uppdelade på tre filer, lcd_text.c, lcd_generic.c och lcd_graphic.c. De utgör drivrutinens funktionalitet, som är att skriva ut text och att rita upp grafik. Funktionerna i lcd_generic är alla publika och har ingen inbördes samverkan, dessa är placerade i denna fil för att det behövs överallt i programmet och de fungerar som hjälpfunktioner för andra delar av drivrutinen. De två intressanta filerna är således lcd_text.c och lcd_graphic.c. lcd_text.c Denna fil innehåller samtliga funktioner för texthantering på displayen, den har tre publika funktioner för att hantera text. Typsnittet hämtas från en array där information om samtliga teckens pixelvärden finns lagrade. Det gör det enkelt att byta teckensnitt om så skulle önskas. Nedan beskrivs de olika funktionerna separat. LCD_setTextPosition. Denna funktion anropas av användarprogrammet genom ett ioctl-anrop. Den sätter textmarkörens position på displayen. LCD_setTextOrientation. Denna funktion anropas av användarprogrammet genom ett ioctl-anrop. Den sätter textorienteringen, det finns stöd för text i fyra riktningar vågrätt och lodrätt samt motsatt riktning vågrätt och lodrätt. LCD_drawString. Denna funktion anropas av användarprogrammet genom write-anropet. All medföljande data anses vara text, överensstämmer inte en position i det medföljande datat mot en bokstav i text-arrayen ignoreras den positionen och drivrutinen skriver ut nästa tecken. Funktionen fungerar så att den ritar text på displayen, det gör att den i nuvarande konfiguration inte gör radbrytning då texten når displayens kant. lcd_graphic.c Denna fil innehåller samtliga funktioner för grafikhantering i drivrutinen. Samtliga funktioner i denna fil exekveras genom ioctl-anrop från användarprogrammet. Nedan beskrivs de olika funktionerna separat. LCD_setGraphicPosition. Denna funktion sätter positionen där de övriga grafiska funktionerna ska börja rita. LCD_drawLineTo. Denna funktion ritar en linje från nuvarande grafisk position som sätts med LCD_setGraphicPosition och till en pixel som definieras i anropet till denna funktion därefter uppdaterar den nuvarande grafisk position till dit linjen drogs. LCD_clearDisplay. Denna funktion rensar hela displayen på data, det innebär att den även suddar eventuell text som finns utritad på displayen. Denna funktion uppdaterar inte nuvarande grafisk position. LCD_clearRect. Denna funkton rensar en del av displayen, nämligen den fyrkant som blidas av nuvarande grafisk position och den pixel som specificeras i anropet till denna position. Denna funktion uppdaterar nuvarande position. 13

HAL Hardware Abstraction Layer Denna fil innehåller funktioner som är specifika för den display som används i detta projekt. Den fungerar som ett HAL, alltså den abstrakterar bort hårdvaran så att övriga delar av drivrutinen blir hårdvaruoberoende, detta görs genom att en intern array som motsvarar displayens storlek används som mellanlagringsplats. Övriga delar i denna drivrutin sätter eller rensar pixlar i denna array genom att använda funktioner i denna fil. Därefter får drivrutinen vid lämplig tidpunkt anropa en funktion som överför informationen i den interna arrayen till displayen. Samtliga funktioner i denna fil används internt inom drivrutinen. Nedan beskrivs de olika funktionerna separat. LCD_setPixel. Denna funktion sätter en pixel i den interna arrayen. LCD_clearPixel. Denna funktion rensar en pixel i den interna arrayen. LCD_paint. Denna funktion överför informationen i den interna arrayen till displayen. LCD_initDisplay. Denna funktion initierar displayen. 14

Användarprogram Användarprogrammet i detta projekt är trackman. Den fungerar så att den ritar upp en karta över hur användaren har färdats och skriver ut hur långt användaren har sprungit. För att möjliggöra detta använder trackman serieportens och displayens respektive drivrutin. trackman tar in data från serieport 1 där en GPS finns inkopplad, bearbetar denna information, och skickar resultatet till displaydrivrutinen i form av text och en karta. Bilden nedan är en principskiss på hur trackman fungerar, det finns funktioner i detta program som inte är deklarerade nedan. BILD 6 ANVÄNDARPROGRAM, TRACKMAN UPPBYGGNAD. Trackman använder en cirkulär lista för att hantera data. GPS:en skickar en textsträng med data varje sekund, var femte textsträng tar trackman in och behandlar. Det finns inte behov för en exaktare karta. Denna sträng delas upp i dess respektive delkomponenter, det vill säga tidpunkt, latitud, longitud och antal satelliter. Dessa värden stoppas in i en lista, denna lista byggs således på för varje nytt mätvärde som kommer in från GPS:en. På denna lista agerar sedan beräkningsfunktioner och utritning till displayen. Nedan beskrivs funktionerna i trackman separat. main. Skapar de två fildeskriptorerna som behövs för kommunikationen mellan serieporten och displayen. Håller i övriga delar av programmet så att de exekverar i rätt ordning. När programmet avslutas städar main upp innan avslut. initserial. Denna funktion initierar serieporten till 4800bps, 8 databitar, 1 stoppbit, ingen hårdvarufelkontroll och ingen buffring av data på serieporten. Detta görs med termios. initlcd. Denna funktion öppnar fildeskriptorn till lcd drivrutinen. getgpsdata. Denna funktion läser in var femte textsträng och plockar ut intressant data. Denna data sparas i en cirkulär lista av typ fifo. calculatetotaldistance. Denna funktion beräknar sträckan mellan alla noder i den cirkulära listan. Denna summa sparas undan för senare utskrift. Att notera är att denna funktion inte använder mattebiblioteket för beräkning av roten ur, användningen av mattebiblioteket var tvunget att avlägsnas ur källkoden, det gjorde att egna funktioner för beräkning av roten ur gjordes. drawdisplay. Denna funktion kollar om det finns data i den cirkulära listan, om det finns så beräknas kartans max och minpunkter, samt skalas så att den zoomas ut maximalt ända tills hela displayen täcks av kartan. Därefter skrivs avverkad distans ut längst ner på kartan. cleanup. Stänger fildeskriptorer och file pekare. 15

Informationsflöde i LART Här beskrivs kort hur de olika komponenterna interagerar med varandra. I detta projekt ingår tre huvudsakliga hårdvaror, GPS, LART med tillhörande kontrollerkort för display och LCD. BILD 7 LART INFORMATIONSFLÖDE. Trafiken mellan GPS och serieport 1 (ttys1) är seriell med en hastighet på 4800 bitar per sekund, signalnivåerna är RS232. Det gör att signalen från GPS:en måste konverteras från TTL signalnivåer till RS232 signalnivåer, denna konvertering är egentligen onödig, eftersom LART:en internt har TTL signalnivåer. Det var dock inte tillåtet att modifiera LART:en så att det gick att plocka ut seriesignalen innan RS232 konverteraren. Trafiken mellan ttys1 och trackman sker internt i larten, den är löst så att trackman öppnar en fildeskriptor till /dev/ttys1 till denna fildeskriptor kopplas en file stream för att förenkla hanteringen av data. Trafiken mellan trackman och lcd-drivrutin sker också den internt i LART:en, även här används en fildeskriptor som kopplas till /dev/lcd. Men eftersom trafiken går från trackman till lcd-drivrutinen krävs ingen file stream. Trafiken mellan lcd-drivrutinen och LCD:n går via register i SA1100 processorn, där sätts och rensas pinnar på SA1100:ns LCD- och GPIOport. Trafiken är parallell och är indelad i 8 dataledningar samt 5 kontrollledningar. Trafiken mellan trackan och serieport 0 är inte implementerad för mer än debuginformation, men det är förberett för ytterligare behandling av data. Eftersom LARTEN har kopplat standard out till ttys0 så kommer debuginformationen automatiskt till den porten när trackman skriver ut data till standard out. 16

Begränsningar De mål som sattes upp i början av projektet har till nåtts, men med tanke på att LART:en är förhållandevis stor (10 x 7,5 cm) kan inte Trackman nå de små dimensioner som krävs för att den enkelt ska kunna tas med på motionsrundan. Den är dessutom allt för tung i sitt nuvarande skick och ses nog mer som barlast än ett hjälpmedel för den flitige motionären. I dagsläget finns heller ingen programvara till en stationär/bärbar dator som kan ta emot och bearbeta den information som uppsamlas under ett motionspass. Det finns heller ingen fungerande hastighetsberäkning för Trackman, som för övrigt är det enda av målen som ej uppnåtts. Funktioner för dessa beräkningar finns implementerat, men är inte färdigställt. Prototypen är dessutom tämligen känslig för stötar och kräver relativt gott väder för att fungera tillfredställande. Detta med tanke på att noggrannheten i latitud och longitud ökar med antalet tillgängliga satelliter. En kraftfullare GPS-mottagare skulle förbättra väderproblemet. Antalet satelliter som är tillgängliga för Trackman kommer att inverka på de beräkningar som görs. Detta leder i sin tur till att om användaren står på samma punkt under en längre tid och antalet satelliter varierar under den specifika tiden kommer olika latitud- och longitudkoordinater att erhållas från GPS-mottagaren, och detta kan resultera i att Trackman anser att användaren befinner sig i rörelse. Vid kallt väder kommer batterierna att kräva mer ström och således ta slut onödigt fort. Detta bör kunna avhjälpas, till viss del, genom att isolera batteripacket och ytterligare slipa ner strömförbrukningen. Framtiden Genom att förminska projektet till en armbandsklockas storlek skulle produkten kunna hitta sig en egen nisch på marknaden. Skulle dessutom tidtagarur, pulsmätare samt hastighetsberäkning implementeras på Trackman skulle framtiden se betydligt ljusare ut. Ett annat förslag är att vidareutveckla Trackman så att den kan användas för att kontrollera hundar (exempelvis jakthundar eller kapplöpningshundar), travhästar eller varför inte ledardjuret i en flock av bruksdjur som kor eller får. Här skulle givetvis högre krav ställas på höljet, det måste vara stöttåligare, vattenbeständigt samt anpassat till det djur som skall bära produkten. En annan aspekt är att byta ut den monokrona displayen till en gråskale- eller färgskärm så att kartor kan laddas ner på Trackman och öka verklighetsanknytningen. En tänkbar sak som kan genomföras för att öka displayens funktion är att utöka drivrutinen så att denna hanterar vt100 escapekoder. Det skulle göra att nuvarande display blir mycket användbar för textbaserade program som körs på LART:en. Man skulle då kunna porta programmets utdata direkt till displayen genom att skriva till exemlel vim > /dev/lcd. Detta skulle eliminera behovet av en extern dator för att kommunicera med larten. 17

Problem och reflektioner Kursen Wearable Computers har varit en givande och intressant kurs, där kursinnehållet blir vad man själv gör det till. En viss del av utvecklingstiden gått förlorad på grund av onödiga tekniska problem. Detta framgår i dagboken, se Appendix 2. Källförteckning LART http://www.lart.tudelft.nl/ Guide to ARMLinux: for Developers, Aleph One Ltd. Wookey och Paul Webb, 2001-03-12 ETRAX http://developer.axis.com GPS LCD http://www.furuno.co.jp/english/ http://www.hy-line.de/communication/download/gn79nsp.pdf (manual) http://www.seiko-usaecd.com/lcd/products/graphic_mods/pdf/g121600n000.pdf Superkondensatorn http://www.nec-tokin.net/now/english/product/pdf_dl/supercapacitors.pdf MAX3227E www.elfa.se MAX680 www.elfa.se 18

Appendix 1 Ordlista Bootloader Behövs då ett operativsystem ska laddas in från en viss sektor på hårddisk eller som i det här fallet från flashminnet (diskett alt CD är givetvis också möjliga alternativ). C/A kod (Coarse/Acquisition Code) Används för att bestämma pseudoräckvidden, det vill säga avståndet till en specifik satellit. Koden består av en sekvens av ettor och nollor, varje etta eller nolla kallas chip, detta för att betona att sekvensen inte innehåller någon data utan bara är ett fixt mönster. Mönstret kommer att repeteras i det oändliga. DGPS (Differential GPS) Ett samlingsnamn för de möjligheter som finns att förbättra noggrannheten för GPS. DOP (Dilution Of Precision) Uppvisar graden av osäkerhet vid positionsbestämning, ju högre DOP-värde desto sämre noggrannhet. EDO DRAM (Extended Data-Out Dynamic Random Access Memory) En form av DRAM som gör minnesläsningen snabbare gnom att använda speciella läsningsmetoder. Elektrolyt En vätska som innehåller joner. ETRAX 100LX (Ethernet, Token Ring, Axis -1) Ett utvecklingskort med en 32-bitars RISC-processor och kommer från svenska Axis Communications AB. ETRAX:en är designad för att vara billig och lätt att implementera. Den har en prestanda på omkring 100 MIPS. Teknisk data Spänning Flashminne RAM-minne EEPROM Portar Övrigt ETRAX 100LX +9 V till +24 v (AC eller DC) 4 Mbyte non volatile flash memory 8 Mbyte DRAM 2 Kbyte I2C EEPROM 4 asynkrona serieportar 2 synkrona serieportar 2 USB portar 2 Parallellportar 4 ATA (IDE) portar 2 SCSI-portar 10/100 Mbit Ethernet-nätverkskort GPIO (General-Purpose I/O) Pinnar/portar som kan används till varierande uppdrag, detta för att öka funktionaliteten. GPS (Global Positioning System) Ett sätt att geografiskt lägesbestämma föremål som byggs på data som sänds från satelliter och tas emot av en mottagare. 19

IDE (Integrated Drive Electronics) En standard utvecklad 1986 för styrsystem för hårddiskar där elektroniken finns på själva skrivenheten och inte på ett separat styrkort. Detta leder till att hårddisken kan göras direkt på systemkortet och kräver därför inget extra kort i datorn. Kernel Utgör själva hjärtat i operativsystemet Linux. Kärnan hanterar tid och aktivitet i systemet och fungerar som en gränsyta mellan hårdvara och användare. LCD (Liquid Crystal Display) En skärm innehållande flytande kristaller. Linux Ett UNIX-liknande operativsystem vars källkod är fri. Utvecklingen av Linux påbörjades 1991 av finlandssvensken Linus Torvalds. Linux är ett 32-bitars OS med multianvändarstöd och tillåter preemtive mulititasking. MIPS (Million Instructions Per Second) Mått på en dators arbetshastighet. NMEA-0183 En standard utvecklat för GPS, visar ett specifikt antal meningar med bland annat information om position, fart, distans samt kursinformation. Standarden definierar ett dataöverföringsprotokoll, elektriskt signalbehov samt överföringshastighet. POTS (Plain Old Telephone Service) Avser traditionell analog trådbunden telefonteknik, i detta fall två serieportar. RS232 En standard för seriell asynkron kommunikation som bland annat specificerar signalnivåer och ett protokoll för informationsutbyte. RS232 är utarbetat av Electronics Industries Association (EIA). SA-1100 32-bitars RISC-processor från Intel som är av StrongARM -arkitektur med 16 Kbyte instruktionscache och 8 Kbyte datacache, den har en skrivbuffert, läsbuffert och MMU. Dess prestanda uppgår till ungefär 250 MIPS. Det är inte så viktigt att berätta att den är statisk, det råkade bara följa med (statisk betyder bland annat att sa-1100 kommer att spara all cpu-info då processorn exempelvis befinner sig i idle-mode) Operativsystem som exempelvis Linux, NetBSD, psos och Windows CE kan portas till denna plattform. 20

Appendix 2 Kopplingsschema J8 C1 CAP 4,7uF C2 CAP 4,7uF 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 1 2 3 CONN RCPT 3 J2 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 7 1 2 3 KSB LCD_CONN U2 C1+ C1- C2+ C2- J6 3 4 2 5 1 6 MAX680 CONN To RS232 VCC V+ V- GND C9 CAP 0,1uF 6 8 4 5 C8 CAP 0,1uF C7 CAP 0,1uF 15 16 9 13 7 3 10 C3 D1 CAP 4,7uF DIODE U3 C4 CAP 4,7uF VCC FOFF R1OUT T1OUT V- V+ INVALID MAX3227E/SO GND FON READY R1IN T1IN C2- C2+ C1- C1+ 14 12 1 8 11 6 5 4 2 D2 DIODE D3 DIODE C5 CAP 0,1uF C6 CAP 0,1uF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 J1 LCD G1216 D4 DIODE C12 SUPERCAP 1 2 3 4 5 6 7 J5 CONN GPS 21

Appendix 3 Kretskortslayout Bild Ovansidan av kretskortslayouten Bild Undersidan av kretskortslayouten 22

Bilagor lcd_driver.c lcd_text.c lcd_graphic.c lcd_1216.c common.h defaults.h font2.h lcd_driver.h macros.h trackman.c CList.h Dagbok 23