Abstract
The purpose of the project was to illustrate how developing work can be done in the industry by developing a prototype sailing indicator, a type of weather station, with capability of indicating whether it is a good idea to get out on the water with a sailing boat. The result is based on temperature and wind speed which the product can show independently as well. With the help from tutors, classmates and many hours checking data sheets the project resulted in a successful prototype with a simple interface.
Syftet med denna rapport är att beskriva och dokumentera det arbete som har utförts i samband med att konstruera en elektronisk väderstation med inbyggd funktion som bedömer om det är seglarväder, alltså en seglarindikator. Denna process och arbetssätts syfte är vidare att uppfylla kursen Digitala Projekt, EITF12, övergripande syfte att illustrera industriellt utvecklingsarbete genom att bland annat söka upp och tillgodogöra sig relevant information för att kunna realisera digitala system av låg och medelhög komplexitet.
Den produkt gruppen bestämde sig för att konstruera blev seglarindikator, det vill säga en väderstation med specifik funktionalitet att ange om det är en bra dag att segla eller om det är bättre att hålla sig på land. Genom att analysera temperatur och vindhastighet ges ett resultat i om det är för varmt, för kallt, för blåsigt, inte tillräckligt med vind eller om det är helt perfekt väderförhållanden för att ta sig ut på de sju haven, eller närmsta dypöl för en trevlig seglats. Utöver denna funktion ska produkten även kunna fungera som en traditionell väderstation och visa tidpunkt, temperatur och vindhastighet.
Se bilaga 1.
Arbetet inleddes med att bestämma seglarindikatorns omfattning och vilka funktioner som skulle implementeras. Detta resulterade till slut i en kravspecifikation. Efter detta bestämdes vilka huvudsakliga komponenter som skulle användas och hur dessa, på ett logiskt plan, skulle sammankopplas med hjälp av ett blockschema.
Utifrån blockschemat togs ett kopplingschema fram med alla komponenter som skulle krävas och godkändes av handledaren. Konstruktionsarbetet inleddes och i enlighet med kopplingsschemat fästes komponenter på kortet genom att lödas fast. Dessa kopplades samman med tråd som virades på komponenternas ben med virpistol. Arbetet skedde etappvis där processor, LED:er och knappar först monterades, vidare monterades display, temperatursensor, RTC och till sist vindsensor. Mellan varje etapp testades kortet med hjälp av JTag för att lättare hitta hårdvarufel som kunnat uppstå i konstruktionsfasen.
Mjukvaran, som skrevs i Atmel Studio 7.0 i språket C, konstruerades till en början etappvis i takt med att kortet fylldes med komponenter men den större delen av arbetet tog fart då hårdvaran var slutkonstruerad och de mer avancerade komponenterna, som RTC och Vindsensor, skulle inkorporeras i systemet med sina respektive funktioner. Slutligen när alla komponenterna var för sig gav korrekt information skapades ett användarvänligt interface som sammanställde informationen. Datablad för respektive komponent inspekterades grundligt för att rätt information skulle skickas och tas emot av processorn.
Arbetet resulterade i en seglarindikator som uppfyllde de krav på funktionalitet som vi satt upp enligt kravspecifikationen i 2.1. Ett misstag som upptäcktes var att korrekt färgkonvention ej följts då sladdarna virades för att koppla ihop komponenterna. Svart sladd till GND, vit sladd till VCC och gul sladd för data. Då sladdarna var konsekvent kopplade åtgärdades det ej.
Då seglarindikatorn startas välkomnas användaren av systemet och genom att trycka på de tre olika knapparna kan olika information visas på displayen. Knapparnas position kan ses i figur 1.
De utmaningar gruppen stötte på grundades till stor del på den begränsade erfarenheten av liknande projekt och att kunskaperna inom ellära och C-programmering var knapp.
Hårdvarumässigt monterades kristallen på RTC felaktigt, för långt från RTC och med koppling till grund vilket den ej skulle ha. Detta åtgärdades med hjälp av handledare efter lång felsökning från gruppens sida. Vid montering av vindsensor behövde även ett redan upptaget ben på processorn (INT0) användas vilket resulterade i att displayen till viss del kopplas om och kopplingsschemat uppdaterades. Dessutom behövdes ett “pull down”-motstånd för att vindsensor skulle kunna ge de impulser som önskades till processorn.
När mjukvaran utvecklades uppstod flera svårigheter. Dels var de komponenterna vi arbetade med som exempelvis vår RTC och displayen svårprogrammerade och dels hade vi som grupp få erfarenheter inom C-programmering. En utmaning som vi tidigt identifierade var hur vi skriva mjukvaran så att displayen skulle fungera. Det gick att konstatera att all information fanns tillgänglig i tillhörande datablad men att det inte var så enkelt att omsätta till mjukvara. Detta var den första komponenten som vi skrev mjukvaran till på egen hand vilket gjorde att vi fortfarande hade bristfällig erfarenhet att C-programmering.
En ytterligare utmaning var att få vår RTC att fungera. Trots de hårdvarufel som identifierades var vår RTC svårprogrammerad då den kommunicerade genom ett protokoll som heter I2C. För att lösa utmaningen användes inspiration från en färdigskriven c-fil med I2C-protokollet efter godkännande av handledarna. Detta löste endast delar av utmaningen då det fortfarande fanns svårigheter i att få vår RTC att fungera. Detta löstes dock med hjälp av databladet och många timmars arbete.
Övriga utmaningar vi stötte på i vår mjukvaruutveckling var av mindre karaktär. Dessa löstes oftast genom datablad eller handledning. Några av dessa mindre utmaningar var hur vi skulle arbeta med interrupts, hur en av de timers som var inbyggda i processorn fungerade och hur man får AD-omvandlingen att fungera.
De främsta lärdomarna från detta projekt kan sammanfattas följande punkter:
Med de nyvunna kunskaper gruppen besitter efter utfört projekt fanns grund för en kortare reflektion över vad som skulle kunna förbättras med produkten. Det gruppen kom fram till var att exempelvis skulle följande förbättringar kunna utföras.