Tillämpade Datorsystem Projektarbete 5 poäng D-nivå. Väderstation. Nicole Moradian, Matz Johansson och Jonas Claréus



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

DIGITALA PROJEKT Väderstation

Bruksanvisning. Swema AB Tel: För support och nedladdning av aktuell programvara kontakta:

FrontPage Express. Ämne: Datorkunskap (Internet) Handledare: Thomas Granhäll

Manual för RN

Bruksanvisning

web: fax: tel: kontor , Toby Edmundsson mobil: , Jan

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Olika slags datornätverk. Föreläsning 5 Internet ARPANET, Internet började med ARPANET

Laboration med Internet och HTML

Kapitel 4 Arkivmenyn Innehåll

Föreläsning 2. Operativsystem och programmering

Enchipsdatorer med tillämpningar LABORATION 7, ROBOT

Pulsmätare med varningsindikatorer

Internets historia Tillämpningar

Programmering av. PADDY mini

Digitala projekt, EDI021 Rapport Handledare: Bertil Lindvall

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

HANTERING AV MÄTDATA FRÅN SVAN 958

1. Introduktion Instruktionen utgörs av Radian Innovas handledning för ML-1.

FULL KOLL. på mätdatan överallt

Väderstation på Ven -en projektbeskrivning

FÄLTMÄTINSTRUKTION TESTO 177-H1

Kort-kort om utdelade användarkonton och datormiljön på NADA

Cargolog Impact Recorder System

PlantPuppy Räddaren för den som inte kan hålla växterna vid liv

Uppdatera Mobilus Professional till version * Filen MpUpdate.exe får inte köras när du startar denna uppdatering.

Datum Den första bilden i installationsprogrammet visar vilken version det är. Klicka på Nästa eller tryck Enter för att fortsätta.

Swema 05. Bruksanvisning vers 1.01 MB

Krav: * Filen MpUpdate.exe får inte köras när du startar denna uppdatering.

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

Wöhler CDL 210 CO2-logger

Innehåll. 1 Inledning 3

The Intelligent Timer

SNABB-GUIDE FÖR GOOGOL T1 PROGRAMMERING.

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

Introduktion till programmering och Python Grundkurs i programmering med Python

SORSELE KOMMUN. Handbok OEW. 28 sept 2012 Mari-Anne Englund Barbro Olofsson. Sorsele kommun Version , rev (19)

Mäta rakhet Scanning med M7005

Skärmbilden i Netscape Navigator

LC Sweex Wireless LAN PC Card 54 Mbps

INNEHÅLLSFÖRTECKNING... 2 FÖRORD... 3 INLEDNING... 4 ATT ANVÄNDA MOTORERNA... 9 LOOP (UPPREPANDE) FUNKTIONEN SKAPA EN EGEN KLOSS...

Digitala projekt - Radiostyrd bil

Mätstyrning med M7005

FLEX Personalsystem. Uppdateringsanvisning

Introduktion till Word och Excel

Laboration 0. Enhetsbokstaven anges med ett kolon efter och man läser ofta ut detta, exempelvis C:(sekolon).

USB till COM-port. Inlämningsuppgift 10b USB till COM-port. Här ska du: Installera en konverterare mellan gränssnitten USB och RS232 (COM-port).

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

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor

Uppdrag för LEGO projektet Hitta en vattensamling på Mars

Blinkande LED med 555:an, två typkopplingar.

TETRIS. LTH, Campus Helsingborg EITA15 Digitala System

Hur hänger det ihop? För att kunna kommunicera krävs ett protokoll tcp/ip, http, ftp För att veta var man skall skicka

emopluppen Användning av "Ant" Niklas Backlund Version: 1.4 ( 2002/04/26 07:27:52 UTC)

Laboration 1 Introduktion till Visual Basic 6.0

Användarhandledning Version 1.2

Flexiservice PS/2. Bruksanvisning

Ladda upp filer fra n PLC till PC

PROJEKT LJUD. KOPIERINGSUNDERLAG Martin Blom Skavnes, Staffan Melin och Natur & Kultur Programmera i teknik ISBN

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

SGH-A400 WAP Browser Användarhandbok

Kort om World Wide Web (webben)

Mäter. Övervakar. Larmar. Dokumenterar. Trådlöst hela vägen. Från givare till basstation till molnet till mobil eller dator

FULL KOLL. på mätdatan överallt

Elektronik grundkurs Laboration 1 Mätteknik

Klassdeklaration. Metoddeklaration. Parameteröverföring

Projekt EITA15. Väckarklocka. LTH Ingenjörshögskolan vid Campus Helsingborg Datateknik

WEBDESIGN A - DTR 1210

FÄLTMÄTINSTRUKTION C.A 1510

Datakommunika,on på Internet

MANUAL. till CARDMAN

Webbservrar, severskript & webbproduktion

Teknikprogrammet, inriktning informations- och medieteknik

Uppgift 1a (Aktiekurser utan poster)

Välkommen som användare av medietekniks och informatiks publika studentserver

Manuell SMARTCD.G

Widgetguiden Vad är Publits widgetshop?

krävs för att kunna utföra arbete. Den finns i många former men kan inte förstöras, bara omvandlas från en form till en annan.

Grundläggande datorkunskap

Webbserver och HTML-sidor i E1000 KI

Game of 40. Regler och om sidan är in princip samma sak. Det som skiljer dem åt är att de inte har samma text.

OBS!!! Anslut ej USB kabeln till dator eller GPS innan du först har installerat drivrutinerna för USB kabeln i din dator.

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

EV3 Roboten. Sida 1 av 13

Uppdatera Mobilus Professional till version * Filen MpUpdate.exe får inte köras när du startar denna uppdatering.

Kom igång. Readyonet Lathund för enkelt admin. Logga in Skriv in adressen till din webbsida följt av /login. Exempel:

Fakta om robotar VAD HANDLAR BOKEN OM? LGR 11 CENTRALT INNEHÅLL SOM TRÄNAS ELEVERNA TRÄNAR FÖLJANDE FÖRMÅGOR. Lärarmaterial EVA MOSEGAARD AMDISEN

2.Starta GPSTrack genom att klicka på GPSTrack-programvarans genväg 1.

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Grundläggande datavetenskap, 4p

Instruktioner för uppdatering av enheter med ISP

PROGES PLUS THERMOSCAN RF. Instruktionsmanual V

Lektion 5 HTML, CSS, PHP och MySQL

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

Digitala Projekt (EITF11)

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Strömdelning. och spänningsdelning. Strömdelning

GASMÄTARE DRÄGER PacIII

Transkript:

Tillämpade Datorsystem Projektarbete 5 poäng D-nivå Väderstation Nicole Moradian, Matz Johansson och Jonas Claréus Magisterprogrammet i elektroteknik och automatisering 160p Örebro höstterminen 2002 Examinator: Dag Stranneby Handledare: Kjell Mårdensjö Örebro universitet Örebro University Institutionen för teknik Department of technology 701 82 Örebro SE-701 82 Örebro, Sweden

Sammanfattning Projektet har gått ut på att konstruera en extern trådlös väderstation med hjälp av en mikroprocessor och lämpliga sensorer. Väderstationen skulle också via en seriell kommunikation anslutas till en persondator och via en hemsida presentera de aktuella mätvärdena. Väderstationen kan anslutas till vilken persondator som helst. Förutsättningar för att hela konceptet skall utnyttjas är att programvaran installeras på webbserver och i persondatorn. Samt att persondatorn är Internetansluten. Resultatet blev en väderstation med seriell kommunikation dock utan den tänkta radiomodulen som skulle ha gjort hela väderstationen trådlös mot persondatorn. Orsaken till detta var leveransproblem av den tilltänkta modulen. Projektet har dock med goda resultat visat sig fungera så som det annars var tänkt. Därefter finns det många saker som kunde förbättras, men det viktiga var att visa principen att man behärskade kedjan från väderstation till en hemsida. Abstract The purpose of this project is to build a weather station with wireless communication. To our help we had a microcontroller and suitable sensors. The weather station should also contain a serial communication with a computer and it should be able to send the information further to a website. The weather station is designed to be connected to any computer. Prerequisite for this concept is that software is installed on a web server and in the computer, further that the computer is connected to the Internet. The result of the project is a weather station with serial communication, but without the wanted radio module that was intended for the wireless communication. The reason for this was delivery problems of the radio module. The project has tended to work with good results anyway, as we intended. There are many things that we could have done better, but the important thing for us was just to show the principle that we restrained the chain all the way from the weather station to a website. Väderstation Sida 2 av 26

Innehållsförteckning Förord... 4 Inledning & bakgrund... 5 Förutsättningar & verktyg... 7 Metod... 8 Genomförande... 9 Modul 1, Väderstationens sensorer... 10 Temperaturgivare, SMT160-30... 10 Fuktgivare, 2322 691 90001... 11 Ljus, TSL230B... 12 Vindmätare, egentillverkad... 13 Modul 2, Programmering av mikrodator... 14 Modul 3, Radiomodul... 15 Modul 4, Programmering, beräkning och presentation... 16 Modul 5, Webbserver... 18 FTP... 19 Beståndsdelarna i källkoden... 20 Databasen... 22 Resultat... 23 Diskussion... 24 Referenser... 26 Bilaga 1 C-kod för processorn... Bilaga 2 C-kod för persondatorn... Bilaga 3 Script och HTML-kod för hemsidan... Väderstation Sida 3 av 26

Förord Ett särskilt tack vill projektgruppen skänka till - Bo-Lennart Silverdahl och Lars-Göran Persson för alla tips och idéer. - Thorbjörn Andersson för ditt intresse av vindmätare, ledsen att det blev en med rörliga delar. - Kjell Mårdensjö som alltid finns till hands då Borland Builder krånglar. - Jack Pencz för tipsen och hjälpen av att fixa skrivrättigheter till databasen. - Robert Ericsson som hjälpt oss med våra ASP filer. Detta projekt har både varit givande och intressant i det avseende att man förstår hur mycket man har lärt sig under dessa år men ändå kan man så lite. Väderstation Sida 4 av 26

Inledning & bakgrund Tanken på vad det är för vädret, hur vädret har varit, och hur vädret kommer att bli de närmaste dagarna, har alltid fascinerat människan sedan urminnes tider. Den moderna vetenskapen om vädret, meteorologin, började först på 1600-talet i renässansens Italien. Där uppfann man och utvecklade instrument som mätte luftens temperatur, lufttrycket och luftfuktigheten. Den första termometern tillverkades i Italien omkring år 1600 av den framstående astronomen och matematikern Galileo Galilei. Omkring 40 år senare tillverkade Galileos främste lärjunge den första fungerande barometern för att mäta lufttrycket. I mitten av 1600-talet samlades många begåvade vetenskapsmän och konstnärer i Florens, Italien. Här utvecklades allt noggrannare instrument och här gjordes de första ordnade meteorologiska observationerna som banade väg för dagens vetenskapliga väderprognoser. Dagens teknik har med hjälp av satelliter och andra tekniska utrustningar utvecklats så att man kan lätt ta reda på vädret runt omkring jorden på bara några sekunder. Med en betoning på ordet dagens teknik har projektgruppen försökt att bygga en trådlös väderstation med hjälp av en mikroprocessor och ett antal mätgivare. Dessa mätgivare används för att hämta in rådata till den externa väderstationen. Därefter skickas den inhämtade informationen trådlöst via den seriella kommunikationsporten till persondatorn. Persondatorn bearbetar sedan informationen och presenterar resultat på dataskärmen. Utöver detta skall också bearbetad information läggas ut på en hemsida via en databas. Bilden nedan illustrerar vad projektet har gått ut på. Väderstation Sida 5 av 26

En viktig sak att poängtera redan nu för läsaren är att målet inte har varit att skapa en avancerad väderstation som beräknar och förutspår vädret eller som på något sätt lagrar alla inhämtade data för att skapa en databank. Utan det har varit att visa principen hur man kan bygga en väderstation och hur man kan överföra information via olika medier. Denna fungerande kedja är också målet för kursen Tillämpade datorsystem, vilket denna rapport åsyftar till. Figuren nedan visar hur denna tänkta kedjan ser ut. Kedjan illustrerar alla de olika steg som man har varit tvungen att behärska. Det enda som syns utåt är användargränssnittet i persondatorn och på hemsidan. Figur 1: Den tänkta kedjan Väderstation Sida 6 av 26

Förutsättningar & verktyg De förutsättningar som har funnits är en laborationsplatta med en mikroprocessor av typen ATmega163. Laborationsplattan innehöll också en LCD-skärm, lysdioder, switchar och möjlighet för seriell kommunikation, vilket i detta fall blev med RS232 (nollmodem). Programspråket för att programmera processorn har varit C. I det program som använts till processorn var UART-funktionen redan implementerad. De olika komponenterna till mätgivarna har tyvärr inte valts med omsorg för bästa lösning utan beroende på vad som har funnits hemma i lager. Vid valet av programmeringsspråk i datorn som tar emot informationen och presentera önskad information på skärmen stod valet mellan Java och Borland Builder. Valet blev dock Borland Builder dels för alla i gruppen har erfarenhet av programmering i C++ samt att detta skulle ge oss chansen att få lära känna Borland Builder och Windows-programmering som ingen i gruppen hade arbetat med tidigare i större utsträckning. För kodning av webbsidan användes HTML- och ASP-kod eftersom det var relativt lätt att lära sig som nybörjare samt ett Accessobjekt som databas. En webbserver upprättades där hemsidan och databasen skulle ligga. Webbsidan visar resultatet av våra mätningar. Annars har det mesta varit fritt tänkande där inga större restriktioner har funnits. Väderstation Sida 7 av 26

Metod En arbetsplan gjordes i samband med att arbetet inleds och arbetsgången innefattade följande moment: Formulera en specifikation Skissa på några koncept Göra en elektrisk modell Programmera processorn Ta fram en prototyp Göra en hemsida Skriva rapport I och med konstruktions arbetet påbörjades, ansågs det fördelaktigt att dela in arbetet i moduler. De moduler som skapades var: Modul 1: Väderstationens sensorer Modul 2: Programmering av mikrodator Modul 3: Radiomodul, OBS! denna del är ej implementerad på grund av leveransproblem Modul 4: Programmering, beräkning och presentation av önskad information på datorn Modul 5: Webbserver Väderstation Sida 8 av 26

Genomförande Tanken var att få igång hela systemet med en parameter, därefter bygga på med allt fler parametrar. Ganska snart övergavs idéen då man insåg att tiden inte skulle räcka till för att alla skulle vara delaktiga vid konstruktion av alla moduler. Den slutliga planen var att man började vid varsin ände av projektet och arbetade sig inåt. En person angrep problemet med att börja på hemsidan och två påbörjade konstruktionen av väderstationen. Självklart bestod den första tiden av att hitta nödvändig information och programvara. Information om till exempel processorn, givarna, Borland Builder mm. Själva väderstationens uppbyggnad gick i etapper, där första etappen var att säkerhetsställa och verifiera kommunikation mellan station och dator via en RS232kabel. Efter det fortsatte uppbyggnaden av att ta in den första parametern. Som första parameter blev att få tillförlitlig mätning av temperaturen och därefter för fukt, ljus och till sist vind. Väderstation Sida 9 av 26

Modul 1, Väderstationens sensorer Temperaturgivare, SMT160-30 SMT160 är en temperaturgivare som innehåller en A/D-omvandlare och har därmed digital utgång, vilket tillåter direktanslutning till en portingång på processorn. SMT160 drivs med +5V. och är en så kallad pulsbreddmodulerad givare och dess arbetsområde ligger mellan 45ºC till +150ºC. Vid beräkning av temperaturen används en så kallad pulskvot (dc = duty cycle), vilket figur2 nedan illustrerar, där dc = t 1 /T. Temperaturen beräknas av formeln: dc = 0.320 + 0.0047*t, där t motsvarar temperaturen i grader Celsius. Den lösning som valdes i processorn var att programmet via en loop, som loopades 30000 gånger, vilket motsvarar parametern T. Loopen räknar antalet höga respektive låga pulser. Där antalet höga pulser är den parameter, t 1, som skickas till datorn. I datorn sker sedan beräkningen med hjälp av ovannämnda formel. Figur 2: Duty Cycle Väderstation Sida 10 av 26

Fuktgivare, 2322 691 90001 Figur 3: Funktionen mellan kapacitans och fuktighet för fuktgivaren Fuktgivaren är en kapacitiv atmosfärisk fuktighetsgivare, med andra ord så förändras givarens kapacitans beroende på fuktigheten i omgivningen. Kapacitansen varierar från cirka 111 pf till 144 pf varav den relativa fuktigheten kan variera mellan 10% - 90% fuktighet (se diagram ovan). Denna givare var den svåraste att implementera på ett korrekt och tillförlitligt sätt. Dels på grund av en stor svårighet att mäta en sådan liten kapacitansförändring som uppstod i givaren och dels för att givaren var redan i sin natur en opålitlig konstruktion. Komponentens arbetstemperaturområde var endast från 0ºC till +60ºC. Projektgruppen har också medvetet förvanskat det progressiva diagrammet till ett linjärt diagram, detta gjordes för att underlätta beräkningarna av luftfuktigheten. För att överhuvudtaget lyckas med en mätning har en yttre kretskonstruktion vart nödvändig. Konstruktionen syns på bilden nedan, där den variabla kondensatorn motsvarar fuktighetsgivaren. Kretsen är en oscillerande krets vars frekvens beror på vad den variabla kapacitansen har för värde. Den tid det tar att ladda upp kondensatorn påverkar antalet höga pulser. Under en viss bestämd tid räknar processorn antalet pulser och på detta vis tas en frekvens fram som är proportionell mot luftfuktigheten. Figur 4: En oscillerande krets Väderstation Sida 11 av 26

Ljus, TSL230B Ljussensorn genererar en frekvens som varierar direkt proportionellt mot summan av antalet ljusfotoner som träffar sensorns yta. Chipet kan utan problem tillämpas som en ljusmätare för fotografer och även mäta förlusten av ljuset som uppstår i en fiberoptisk kabel. Dock har inte detta projekt någon nytta av en sådan exakthet. Målet är att på hemsidan kunna urskilja om det är soligt, växlande molnighet eller om det är natt. Som läsaren förstår har inte denna avancerade ljusmätare kommit till sin rätt i detta projekt, men som sagts tidigare, har projektet i viss mån baserat på vad som funnits hemma i lager. Den lösning som har tillämpats är att utifrån vissa intervall, utgående frekvensen från sensorn, avgöra om det är regnigt, uppehåll, molnigt eller soligt för tillfället. Figurerna nedan visar hur givaren ser ut och fungerar. Komponenten har också att möjligheter till bryta ner utgående frekvens. Vilket är en bra tillämpning om man inte har tillgång till snabba processorer som hinner med i originalfrekvensspektrat. Sensorns arbetsområde sträcker sig mellan 25ºC till +70ºC. Figur 5: Ljusmätare, TSL230B Figur 6: Flödesschema för ljusmätaren Väderstation Sida 12 av 26

Vindmätare, egentillverkad En väderstation utan vindmätare är som en bil utan ratt. Vissa hade önskemålet att inga rörliga delar skulle användas, utan trycksensorer skulle tillämpas istället. Det blev dock istället ett hemmabygge av pingisbollar, delar från kulspetspennor, pilspets, och en optisk sensor, se figur nedan. Tekniken går ut på att man mäter hur länge man har en 1:a (+5 V) på utgången. På själva pilspetsens axel finns en blank yta och en svart yta, varpå den svarta ytan kommer att motsvara en 1:a för den optiska sensorn.. Processorn kommer på så sätt att mäta hur länge ingången från vindmätaren ligger hög. Denna tidsparameter skickar processorn sedan vidare till datorn för vidare bearbetning. Tiderna som avgör hur stor vindhastigheten är, kalibrerades med hjälp av en vindmätare (veloci Calc Plus, 8388) och en elektrisk fläkt. Läsaren kanske inser att kalibreringen varken varit teoretiskt eller praktiskt korrekt på något sätt. Figur 7: Vindmätare, egentillverkad Väderstation Sida 13 av 26

Modul 2, Programmering av mikrodator Kärnan i stationen är en processor som samlar in rådata som inkommer till dess portar varefter informationen skickas över till datorn. Processorn är av typen ATmega163, vilket är en 8-bitars AVR mikrokontroller. För mer information om processorn så hänvisas läsaren till rapportens referenssida. Programmet i processorn har konstruerats så att även om en givare skulle vara sönder, fortsätter all information från de övriga givarna att sändas över till datorn. För varje överföring som påbörjas skickas ett signifikant tecken som klargör från vilken sensor kommande information innehåller. För mer information om C-programmet se bilaga 1. C-programmet består av fem huvudfunktioner. I fyra av dem läses data från sensorer medan den femte är en kontrollfunktion. Funktionerna ligger i en oändlig while loop och redovisas i korthet nedan. void temp(void) Denna funktion räknar antalet pulser som inkommer på en specificerad portingång. Detta görs i en while loop som loopar 30000 gånger. Data skickas till UART:en med identifikationstecknet T som första tecken. UART:en handhar den seriella kommunikationen med persondatorn. void ljus(void) Räknarregistret är det mest väsentliga i denna funktion. Funktionen startar en räknare som räknar antalet rising edge under 200 ms. Varpå läsning av räknarregistret sker och med identifikationstecknet i täten skickas data till UART:en. void fukt(void) Funktionen fukt räknar antalet rising edge precis som ovan. Vidare behandling sker även den på samma sätt. int matavind(void) Vid användningen av makrot loop_until_bit_:is_set finns risken att programmet stannar då ingen bit blir satt, makrot används vid avläsning av vindhastigheten. Felet kan uppstå då det är vindstilla. För att undvika detta skapades funktionen matavind. Matavindfunktionen kontrollerar om det kommer in ettor och nollor på porten och på så vis kan ett beslut tas om vindmätning skall göras. void vind(void) Denna funktion används efter beslut av matavind ovan. Funktionen använder sig av makrot loop_until_bit_is_set som väntar på att en specificerad bit ska sättas. Då vilkoret är sant startar en timer som avaktiveras av makrot loop_until_bit_is_clear. Timerns värde läses och skickas till UART:en. Väderstation Sida 14 av 26

Modul 3, Radiomodul Den modul som överför information från den externa väderstationen till datorn samt modulen som tar emot informationen från sändaren, är redan en patenterad lösning som används ofta ute i industrin. Tyvärr har inte denna del implementerats på grund av leveransproblem. Radiomodulen sätts på datorns seriella port (COM1 alternativt COM2) och på processorns UART-port. Istället har radiomodulen ersattas av RS232 (nollmodem). Radiomodulen från Circuit Design har 5 mw uteffekt för ett frekvensband 869.7 870 MHz. Dessa moduler sänder smalbandigt vilket ger en räckvidd på flera hundra meter med robust kommunikation. sändarmodulens data: Strömförbrukning Matning Sändningshastighet Storlek mottagarmodulens data Strömförbrukning Matning datahastighet Storlek 22 ma 3,3 V 4 800 bps 22 x 12 x 6 mm 18 ma 3,0 till 14 V DC 4 800 bps 36 x 26 x 8 mm För vidare information hänvisas läsaren till referenssidan. Väderstation Sida 15 av 26

Modul 4, Programmering, beräkning och presentation Själva beräkningarna av mätvärdena görs i en persondator där ett C++ program behandlar inkommande information. Programmet känner hela tiden av om någon information anländer till comport 1. Då programmet registrerat att något finns att hämta på porten påbörjas behandlingen av de parametrar som inkommit. Det som händer är att en byte i taget läses in från portens buffer. Mikrodatorn sänder 6 byte till huvudprogrammet för varje givare, varav den första byten är en slags identifiering av de resterande fem byten. Identifieringstecknet kan identifieras som T (Temperatur), F (Fukt), L (Ljus) eller V (Vindhastighet). Detta görs i en switch-sats där varje case anropar en funktion som läser resterande fem byte från porten. Ett exempel på en av givarnas teckensträng kan ha följande utseende T00125 där T är identifieringstecknet och resterande fem tecken är data som ska behandlas. Efter att processorn har sänt iväg informationssträngarna från de fyra givarna och ett medelvärde av mottagna data har tagits fram, visas resultatet via användargränssnittet i huvudprogrammet. Huvudprogrammet skickar även data vidare som en URL till vår webbserver där ett asp-script tar emot och behandlar informationen. Om hur asp-scriptet och webbservern arbetar med URL:n beskrivs nedan under Modul 5, Webbserver. Programmet i sig består av ett antal funktioner. Funktionerna beskrivs nedan i korthet. void fastcall TForm1::ComPort1RxChar(TObject *Sender, int Count) I denna funktion ligger programmet och känner av porten. Så fort något dyker upp på porten startar avläsningen och identifiering av vilken parameter som är på ingång. Då identifieringen är klar med hjälp av switch-satser uppfylls någon av våra case och ett anrop till rätt funktion sker. Om ett felaktigt tecken inkommer presenteras texten felaktig mätdata på dataskärmen. void fastcall TForm1::Temp() När ett T inkommer som identifieringstecken kommer funktionen att börjar med en loop läsa ur portens buffer och samtidigt beräkna det flyttal som är av intresse. Flyttalet är det tal som används för att erhålla dc (duty cycle). dc fås genom division med den totala perioden. Som bekant är temperaturen en funktion av dc enligt t = (dc-0.32)/0.0047. Viss kalibrering har gjorts för att få ett sanningsenligt värde. Kalibreringen består av att multiplicerat hela uttrycket med 1.15 enligt ((dc-0.32)/0.0047)*1.15. För att erhålla ett stabilare och tillförlitligare värde på temperaturen beräknas medelvärdet av fem teckensträngar även extrema värden sorteras bort. Medelvärdet skrivs både ut på skärmen och till den globala variabeln temphem som ska skickas till webbservern. Väderstation Sida 16 av 26

void fastcall TForm1::Fukt() Då F är id-tecknet skall fukten beräknas. Avläsning av buffer sker på samma sätt som i ovanstående funktion. Här har en egen formel skapats för beräkning av fukten. Formeln blev efter utprovning: fukt = (158-antal)*0.6 där antal är det antal perioder som uppmätts under 2 ms, det är detta tal vi avläser i loopen. Parametern kan anta värden från 10% till 90% relativ luftfuktighet. Efter sortering och medelvärdesberäkning redovisas resultatet på användargränssnittet samt skrivs till den globala variabeln fukthem som skickar mätvärdet till webbservern. void fastcall TForm1::Ljus() Denna funktion behandlar inkommande information då L är identifikationstecknet och behandlas även här på samma sätt som tidigare. Detta var den enklaste funktionen att implementera eftersom frekvensen från givaren känner av ljus som ökar med ökande ljusintensitet. Här har endast ett antal if-satser använts som avgör om det är sol, molnigt, uppehåll eller regn beroende av frekvens. Detta resultat redovisas på användargränssnittet och skrivs till den globala variabeln ljushem som skickas till webbservern. void fastcall TForm1::Vindh() Om V skulle vara identifikationstecknet så är det vindhastigheten som ska beräknas. Efter att informationen tagits fram i loopen ska det behandlas för att få fram vindhastigheten. Även här krävs en beräkning och kalibrering för att få fram den rätta vindhastigheten. Efter kalibreringen erhölls följande beräkningsformel: value = 3300/antal Där antal är en tid av en hög puls från vindmätaren som processorn har uppmätt, det är detta tal vi avläser i loopen. För att visa det korrekta värdet medelvärdesberäknas value efter fem inläsningar. Medelvärdet redovisas även här på användargränssnittet och skrivs till den globala variabeln vindhem som ska skickas till webbservern. void fastcall TForm1::Timer1Timer(TObject *Sender) I denna funktion ligger en timer som vid valt intervall skickar en sträng till webbservern. Strängen är konkateinerad och har gjorts med funktionerna strcat och strcpy för att få det utseende som filen vader_script.asp kräver. Utseendet på strängen är: 130.243.106.184/vader_script.asp?Temperatur= temphem &Vind= vindhem &Luftfuktighet= fukthem &Ljus= ljushem där temphem, vindhem, fukthem och ljushem är de parametrar som tagits fram med hjälp av ovanstående funktioner. För ytterligare information om programmet skrivet i Borland Builder, se bilaga 2 Väderstation Sida 17 av 26

Modul 5, Webbserver Eftersom alla i gruppen var noviser inom Internet och dess möjligheter gjordes en grundläggande genomgång av de delar som måste förstås. Därav följer först lite generell Internet-relaterad information: World Wide Web (www) är en enorm, formlös klump av text -, bild-, ljud- och videodata som ligger spridda på nätverk och datorer över hela världen, därav namnet World Wide Web. Tittar man uppe i fönstret på sin www-läsare ser man en liten ruta med en adress. Den heter URL ( Uniform Resource Locator) och talar om vad man begärt att få se. En adress till en www-sida, eller en URL, kan se ut så här: http://www.yahoo.com/ http://www.yahoo.com/mail/trr.html 1 2 3 4 1. Den allra första biten i adressen anger namnet på det protokoll eller metod som ska användas. Protokollet används för att kommunikationen mellan datorn som wwwsidan finns på och din egen dator ska fungera. 2. Efter protokollet hittar man domännen, som är namnet på den önskade sidan. 3. Sedan hittar man en så kallad sökväg till en katalog som beskriver var i webbserverns katalogstruktur man kan hitta sin www-sida. 4. sist av allt i URL:en kommer filnamnet. Det är just den filen som utgör den sidan man vill se Projektets hemsida kan man se på: http://130.243.106.184/vader.asp Nedan visas en figur på hemsidan. Hemsidan visar temperatur, vind, luftfuktighet och ljuskänsligheten som har sparats på databasen. Sidan uppdateras automatiskt en gång i minuten. Figur 8: Hemsidan Väderstation Sida 18 av 26

För de flesta vanliga användarna är webbläsaren eller webbklienten det viktigaste Internetprogrammet de kommer att använda. Det är det programmet som ger användaren tillgång till Internet. Idag finns det en mängd olika alternativ för persondatorer med Windows, liksom för Macintosh, Unix-datorer och andra plattformar. FTP FTP (File Transfer Protocol) är ett verktyg för att föra över filer mellan datorer var som helst på Internet. FTP kan användas för filöverföring mellan olika typer av datorer, exempelvis från en Macintosh till en PC, vilket innebär att olika typer av datorer kan kommunicera genom filöverföring. Bilden nedan visar ett typiskt FTP utseende. Till vänster ser du filerna på din maskin och till höger vad som finns på den andra datorn (dvs. på FTP servern). Genom att navigera runt bland katalogerna kan man kopiera filer mellan de två datorerna. Det vill säga om man har behörighet. Navigera bland kataloger innebär att leta sig fram i katalogträdet tills man hittar den fil man letar efter. Rättigheter handlar om vad har givits tillstånd att göra, att se, kopiera, ta bort eller lägga till filer på Ftp-servern. Till en början hade alla användare behörighet, vilket ledde till att någon hade ändrat i koden och orsakade problem. Detta visar hur viktigt det är med säkerheten. Nedan visas en grafisk vy av ett Ftp-program. Vilket innehåller våra ASP- och databasfiler. Dessa filer beskrivs nedan. Figur 9: FTP-program Väderstation Sida 19 av 26

Beståndsdelarna i källkoden Huvud Ett huvud identifierar dokument som HTML och anger dess titel. Hela HTML-dokumentet omges av de identifierade koderna <HTML> i början och </HTML> i slutet. De anger dokumentets typdefinition så att känsliga program kan tolka innehållet på rätt sätt. En dokumenttitel markeras av HTML-koderna <TITLE>. I början av rubrikavsnittet och </TITLE> i slutet. Det viktigaste med HTML-dokuments titel är att den identifierar sig själv på ett informativt och tilltalande sätt. Dokumentets huvud markeras med HTML-koderna <HEAD> i början och </HEAD> i slutet. Kropp En kropp består av webbsidans innehåll. Det är härifrån som all text som visas på skärmen hämtas, förutom titeln, liksom alla länkar till grafik, multimediainformation och andra platser i HTML-dokument eller andra dokument. Det verkliga innehållet i alla HTML-dokument hamnar i kroppen som omges av koderna <BODY> och </BODY>. Det är här dokumentets layout och dess struktur skrivs genom att använda olika koder för textrubriker, inbäddad grafik, textstycken, listor och andra element. Det stora flertalet HTML-koder vissas i dokumentets kropp. Källkod som skrivits för detta projekt består av två ASP-filer: - vader_script.asp. - vader.asp vader_script.asp: Här sker kopplingen mellan databasen och väderstationens mätvärden med andra ord kommer alla värden som skickats från huvudprogrammet att sparas i databasen. Därefter hämtar vader.asp data från databasen som sedan visas på webbsidan. Funktionen nedan beskriver hur öppning och stängning av databasen sker. Set db = Server.CreateObject("ADODB.Connection") db.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("vader.mdb") db.close Set db = nothing Genom anrop av denna sida skickas parametrarna med URL:n (http://130.243.106.184/vader_script.asp?temperatur=22&vind=25&luftfuktighet=68) som byter ut de aktuella siffrorna till de korrekta i strängen. Värdena 22, 25 och 68 är de värden som huvudprogrammet har kommit fram till som sedan exekveras enligt: SQL = "Insert Into Vader(Temperatur,Vind,Luftfuktighet,Ljus) VALUES (" & temperatur & ", " & vind &", " & luftfuktighet &", '" & ljus &"')" Set rs = db.execute(sql) Parametrarna avläses av scriptet med hjälp av funktionen Request.QueryString som tilldelar variablerna sina värden. Tilldelningen för vind kan man se i funktionen: vind = Request.QueryString("Vind") Väderstation Sida 20 av 26

vader.asp: I vader.asp huvud finns bara titeln som inleds med ordet väder där bokstaven ä måste göras om till ASP-kod enligt: <title>väder</title> Bakgrundsfärg, bilder och text hamnar i kroppen. Där skapas även ett nytt uppkopplingsobjekt som sedan öppnas och kopplas upp till databastypen och databasfilen. Data skickas med strängar till databasen. conn.close set conn = nothing set conn = server.createobject("adodb.connection") DSNtemp="DRIVER={Microsoft Access Driver (*.mdb)}; " DSNtemp=dsntemp & "DBQ=" & server.mappath("vader.mdb") conn.open DSNtemp sqlstmt = "SELECT * FROM Vader ORDER BY Datum DESC" Set rs = conn.execute(sqlstmt) Uppdatering av sidan görs varje minut enligt funktionen: <meta http-equiv="refresh" content="60"> I programmet finns fyra olika bilder som representerar olika förhållanden i vädret. Beroende på ljussensorns mätvärde växlas mellan dessa fyra bilder. Om det till exempel regnar så visas bilden för regn och om det är sol kommer bilden för sol att visas osv. Figurerna nedan visar nuvarande väder. Figur 10: Väderbilder Väderstation Sida 21 av 26

Databasen En databas är en samling data som är logiskt sammanhängande som representerar en del av verkligheten som lagras och hanteras av en dator som är persisktent/icke-flyktigt, d v s inte försvinner om man stänger av datorn I detta fall används databasen för att spara värden som fås från givarna och processorn. Ett exempel på databasen visas nedan. Figur 11: Utdrag från databasen Väderstation Sida 22 av 26

Resultat Väderstationen uppdaterar insamlade mätvärden både på en hemsida och en persondator. Där temperaturen presenteras i Celsius, luftfuktigheten i relativ procent och vinden i meter/sekund. Ljus presenteras med ikoner som soligt, uppehåll, molnigt och regn. Fördröjningen från det att en givare påverkas till att ändringen registreras på hemsidan är upp till en minut. Exaktheten i mätresultaten är inte av högsta kvalité men illustrerar mycket väl en princip hur man kan gå till väga för att konstruera en avancerad väderstation. Prototypen på väderstationen ses nedan. Figur 12: Prototyp av väderstation Nedan visas användargränssnittet som är en prototyp där bland annat strängen som skickas till vader_script.asp kan avläsas. Presentation av mätvärden och en uppdaterad bild av hemsidan kan visas. Då bilden nedan togs var varken väderstationen eller hemsidan aktiverad. Därav visas inga mätresultat eller bild på hemsidan. Observera att webbsidan redan redovisats tidigare i rapporten, se Modul 5, Webbserver. Figur 13: Användargränssnittet Väderstation Sida 23 av 26

Diskussion I och med att detta har varit en 5-poängskurs har man (tyvärr) vart tvungen att lägga in begränsningar till vad som skall vara väsentligt för projektet. Viktigt att förstå vid diskussionen är att inga problem som till exempel. rör komponentval och kalibrering av sensorer kommer att tas upp. Detta är självklara saker att genomföra om tid hade överhuvudtaget lagts ner på val av komponenter/sensorer. Projektets vikt har legat på att visa principen hur man kan gör en avancerad väderstation. Därefter har alla olika tillämpningar tillkommit i möjligaste mån. Förbättringar i: Modul 1, Den externa väderstationen Tanken var att den externa väderstation skulle vara så energisnål som möjligt, då strömförsörjningen skulle bestå av något sorts batteri. Att ha låtit både processorn och vissa givare så som ljussensorn somnat in då inte de inte används, hade varit en utmärkt tillämpning. Ljussensorn hade då också öppnat upp möjligheten att lämnat en speciell ingång till processorn till andra vädersensorer då inte denna skulle användas för tillfället. Vad som menas med en speciell ingång är att processorn innehar två ingångar som möjliggör pulsberäkning och pulsberäkning är en ganska vanlig form att avläsa en förändring från en sensor. Ett mål var att inte använda sig av analoga sensorer, detta på grund av att A/D-omvandlaren i processorn inte borde aktiveras. Orsaken till varför inte den användes var att en sådan process kräver mycket energi, vilket man inte har råd med om man ville skapa en energisnål processor. Något som verkligen borde ha tagits med var att kunna presentera vindriktningen och tryck. Detta är två parametrar som anses var viktiga för en fullständig väderstation. Hade man kompletterat dessa parametrar så kunde man på ett mycket enkelt sätt förutspå de närmaste timmarnas väder. Modul 2, Radiomodul Radiomodulen som tyvärr inte implementerades i projektet är bland de strömsnålaste radiomodulerna på marknaden och likaså bland de enklaste att implementera. I detta fall har man använt sig av RS232 istället, vilket har varit precis samma sak, förutom att med en radiomodul överförs det trådlöst. Väderstation Sida 24 av 26