Vesipisteen kulutuksen mittaus

Samankaltaiset tiedostot
Projektisuunnitelma: Vesipistekohtainen veden kulutuksen seuranta, syksy Mikko Kyllönen Matti Marttinen Vili Tuomisaari

Väliraportti: Vesipistekohtainen veden kulutuksen seuranta, syksy Mikko Kyllönen Matti Marttinen Vili Tuomisaari

TYÖ 2: OPERAATIOVAHVISTIMEN PERUSKYTKENTÖJÄ

OPERAATIOVAHVISTIN. Oulun seudun ammattikorkeakoulu Tekniikan yksikkö. Elektroniikan laboratoriotyö. Työryhmä Selostuksen kirjoitti

AS Automaatio- ja systeemitekniikan projektityöt

Sisältö. Työn lähtökohta ja tavoitteet Lyhyt kertaus prosessista Käytetyt menetelmät Työn kulku Tulokset Ongelmat ja jatkokehitys

S14 09 Sisäpeltorobotti AS Automaatio ja systeemitekniikan projektityöt. Antti Kulpakko, Mikko Ikonen

Vedenseurantaja rjestelma

DC-moottorin pyörimisnopeuden mittaaminen back-emf-menetelmällä

LOPPURAPORTTI Lämpötilahälytin Hans Baumgartner xxxxxxx nimi nimi

S09 04 Kohteiden tunnistaminen 3D datasta

Operaatiovahvistimen vahvistus voidaan säätää halutun suuruiseksi käyttämällä takaisinkytkentävastusta.

A13-03 Kaksisuuntainen akkujen tasauskortti. Projektisuunnitelma. Automaatio- ja systeemitekniikan projektityöt AS-0.

Siimasta toteutettu keinolihas

ELEKTRONISET JÄRJESTELMÄT, LABORAATIO 1: Oskilloskoopin käyttö vaihtojännitteiden mittaamisessa ja Theveninin lähteen määritys yleismittarilla

OPERAATIOVAHVISTIMET 2. Operaatiovahvistimen ominaisuuksia

Värähtelymittaus Tämän harjoituksen jälkeen:

S Elektroniikan häiriökysymykset. Laboratoriotyö, kevät 2010

Laboratorioraportti 3

DIGIBONUSTEHTÄVÄ: MPKJ NCC INDUSTRY OY LOPPURAPORTTI

PYP I / TEEMA 8 MITTAUKSET JA MITATTAVUUS

Mittaustekniikka (3 op)

1. Projektin status. 1.1 Tavoitteiden päivitys. 1.2 Tulokset Mallinnus

Electric power steering

Testidatan generointi

PYP I / TEEMA 4 MITTAUKSET JA MITATTAVUUS

PID-sa a timen viritta minen Matlabilla ja simulinkilla

GROHE Sense Guard: 7 vesitoimintoa takaa parhaan vedenkäytön turvallisuuden

FYSP105 / K3 RC-SUODATTIMET

Tällä ohjelmoitavalla laitteella saat hälytyksen, mikäli lämpötila nousee liian korkeaksi.

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Joni Heikkilä WINTEVE SÄHKÖAUTON TALVITESTIT

Moottorin kierrosnopeus Tämän harjoituksen jälkeen:

20 Kollektorivirta kun V 1 = 15V Transistorin virtavahvistus Transistorin ominaiskayrasto Toimintasuora ja -piste 10

Pinnoitteen vaikutus jäähdytystehoon

ELEKTRONISET TOIMINNOT

VAATIMUKSIA YKSINKERTAISILLE VIKAILMAISIMILLE HSV:N KJ-VERKOSSA

a) I f I d Eri kohinavirtakomponentit vahvistimen otossa (esim.

WintEVE Sähköauton talvitestit

Electric power steering

Laskuharjoitus 2 ( ): Tehtävien vastauksia

IIZE3010 Elektroniikan perusteet Harjoitustyö. Pasi Vähämartti, C1303, IST4SE

Tiedonkeruu ja analysointi

TIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ

Yhtälöryhmä matriisimuodossa. MS-A0004/A0006 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 7: Pienimmän neliösumman menetelmä ja Newtonin menetelmä.

EVTEK/ Antti Piironen & Pekka Valtonen 1/6 TM01S/ Elektroniikan komponentit ja järjestelmät Laboraatiot, Syksy 2003

Kiinteistötekniikkaratkaisut

AS Automaatio- ja systeemitekniikan projektityöt - Projektisuunnitelma

Mikrokontrollerikitit - väliraportti

ELEC-A4010 Sähköpaja Arduinon ohjelmointi. Jukka Helle

LIITE 1 VIRHEEN ARVIOINNISTA

KOHINA LÄMPÖKOHINA VIRTAKOHINA. N = Noise ( Kohina )

Flash AD-muunnin. Ominaisuudet. +nopea -> voidaan käyttää korkeataajuuksisen signaalin muuntamiseen (GHz) +yksinkertainen

AS Automaatio- ja systeemitekniikan projektityöt

Tähtitieteen käytännön menetelmiä Kevät 2009

Matlab-tietokoneharjoitus

A14-11 Potilaan mittaustiedon siirtäminen matkapuhelimeen

GSRELE ohjeet. Yleistä

Taajuusmittauskilpailu Hertsien herruus Mittausraportti

S14 09 Sisäpeltorobotti AS Automaatio ja systeemitekniikan projektityöt. Antti Kulpakko, Mikko Ikonen

S OPTIIKKA 1/10 Laboratoriotyö: Polarisaatio POLARISAATIO. Laboratoriotyö

Amazon Web Services (AWS) on varmaankin maailman suosituin IaaS-tarjoaja. Lisäksi se tarjoaa erilaisia PaaS-kategoriaan kuuluvia palveluita.

A11-02 Infrapunasuodinautomatiikka kameralle

Työ 31A VAIHTOVIRTAPIIRI. Pari 1. Jonas Alam Antti Tenhiälä

A13-03 Kaksisuuntainen akkujen tasauskortti. Väliaikaraportti. Automaatio- ja systeemitekniikan projektityöt AS Syksy 2013

Harjoitustyö 1. Signaaliprosessorit Sivu 1 / 11 Vähämartti Pasi & Pihlainen Tommi. Kaistanestosuodin, estä 2 khz. Amplitudi. 2 khz.

5.3 Ensimmäisen asteen polynomifunktio

Yhtälöryhmä matriisimuodossa. MS-A0007 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

Vapaapäivien optimointi

CEM DT-3353 Pihtimittari

Ledien kytkeminen halpis virtalähteeseen

AS Automaatio ja systeemitekniikan projektityöt A13 10 Radio ohjattavan pienoismallin ohjausjärjestelmän ja käyttöliittymän kehittäminen

LABORATORIOTYÖ 3 VAIHELUKITTU VAHVISTIN

Projektisuunnitelma. (välipalautukseen muokattu versio) Vesiprosessin sekvenssiohjelmointi ja simulointiavusteinen testaus

Videotoisto Nexus 7 tableteilla: Android 4.4 KitKat selvästi edellistä versiota heikompi

Aki Taanila YHDEN SELITTÄJÄN REGRESSIO

Tiedonkeruu ja analysointi

A/D-muuntimia. Flash ADC

Connexx 6 Siemens-kuulokojeiden sovitusohjelma.

Kannattaa opetella parametrimuuttujan käyttö muidenkin suureiden vaihtelemiseen.

Project group Tete Work-time Attendance Software

Kahden laboratorion mittaustulosten vertailu

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

Supply jännite: Ei kuormaa Tuuletin Vastus Molemmat DC AC Taajuus/taajuudet

Autentikoivan lähtevän postin palvelimen asetukset

Demo 5, maanantaina RATKAISUT

Aki Taanila AIKASARJAENNUSTAMINEN

RADIOTEKNIIKKA 1 HARJOITUSTYÖ S-2009 (VERSIO2)

Pynnönen SIVU 1 KURSSI: Opiskelija Tark. Arvio

Kriittiset vaiheet mittausten laadunvarmistuksessa

TASA- JA VAIHTOVIRTAPIIRIEN LABORAATIOTYÖ 5 SUODATINPIIRIT

1 PID-taajuusvastesuunnittelun esimerkki

Kauko-ohjauslaite GSM rele 2011 v

Ohjeita fysiikan ylioppilaskirjoituksiin

aktiivikaiuttimet Profel Nuovo Gamba aktiivinen High End subwoofer vallankumouksellisella bassoäänen automaattisella huonetilasäädöllä

74 cm - 89 cm ASENNUSOHJEET KOMPACT

Projektiryhmä Tete Work-time Attendance Software. Henkilökohtainen SE harjoitus: loppuraportti

Aineopintojen laboratoriotyöt I. Ominaiskäyrät

Transkriptio:

Loppuraportti Vesipisteen kulutuksen mittaus AS-0.3200 Automaatio- ja systeemitekniikan projektityöt Opintopisteitä: 3 op Aloituspäivä: 8.9.2015 Lopetuspäivä: 20.12.2015 Tekijät: Mikko Kyllönen Matti Marttinen Vili Tuomisaari Ohjaaja: Panu Harmo Tehtävänanto: Työssä kehitetään järjestelmää asuntojen vedenkulutuksen seurantaan. Kotona asuvien vanhusten veden käyttö kertoo paljon heidän aktiivisuudestaan ja aktiivisuuden muutoksista, jotka voivat johtua erilaisista terveydellisistä ongelmista tai muista vaikeuksista. Tällainen järjestelmä olisi suuri apu kotihoitohenkilökunnalle, joka saisi reaaliaikaista ja kerättyä tietoa asiakkaan aktiivisuudesta. Tarkoituksena on toteuttaa järjestelmä, joka havaitsee kulkeeko vesi putken sisällä ja lähettää tämän tiedon langattomasti internetin välityksellä palvelimelle. Koko järjestelmään kuuluu laite itse, Amazonin pilvipalvelut, tietokanta ja nettisivut tiedon visualisointia varten. 1

Sisällys Sisällys Johdanto Projektin toteutus Vaihe 1 Vaihe 2 Elektroniikka ja mekaniikka Laitteiston kokoonpano Vahvistinpiiri Alipäästösuodatin Konseptin kehitys Ohjelmisto ja ohjelmistokehitys Vaihe 3 Tiedon säilöntä Tiedon visualisointi Havainnot ja päätelmät Jatkokehitys ja parantamiskohteet Virtauksen määrittäminen Tiedon visualisointi Projektinhallinta Riskienhallinta Aikataulutus Tekniset vaikeudet Muut ongelmat Aikataulu Ajankäyttö Lähteet Liitteet LIITE A: Mallien vertailu projektihuoneen hanalla LIITE B: Pyhton-skripti datan lähettämiseen MySQL-tietokantaan 2

Johdanto Ihmisen aktiivisuudesta voidaan tehdä monenlaisia päätelmiä hänen terveydentilastaan. Eräs tehokas aktiivisuuden mittari on veden käyttö. Tämän projektin tarkoituksena oli luoda prototyyppi yksittäisen vesipisteen kulutuksen seurantaan tarkoitetusta laitteesta. Tavoite oli luoda laite, joka voitaisiin helposti asentaa mihin tahansa, ilman että vesiputkiin tarvitsee tehdä muutoksia. Toki virtausmittarin voisi asentaa suoraan putkeen suhteellisen pienellä vaivalla, mutta sellaiseen asennukseen tarvitaan putkimies. On myös olemassa jälkiasennettavia ultraääneen perustuvia mittareita, mutta nämä ovat melko kalliita. Tavoite oli tehdä laite edullisista komponenteista. Projektin toteutus Vaihe 1 Projektin ensimmäisen vaiheen tavoitteena oli tutkia diplomityön[1] ja edellisen projektityöryhmän[2] laitteistojen toimivuutta. Diplomityö ja projektityöryhmä olivat saaneet ristiriitaista dataa, joten totuuden selvittäminen menetelmistä oli kriittistä. Diplomityössä mikrofoneina käytettiin perinteisiä kondensaattorimikrofoneja, mitkä oli kiinnitetty vahvistuspiiriin. Kyseessä on Adafruitin MAX4466 mikrofoni-vahvistinpiiri[3]. Edellinen projektityöryhmän oli valmistanut oman vahvistinpiirin sekä käyttivät akustiseen kitaraan kiinnitettäviä mikrofoneja. Edellinen projektityöryhmä käytti mikrofoneina dynaamisia mikrofoneja[4]. Edellisen projektityöryhmän laitteiston pystyimme kasaamaan ja varmistamaan heidän konseptinsa toimivuuden. Diplomityöntekijä oli omissa mikrofoneissaan ja vahvistuspiireissään käyttänyt 10 V ohjausjännitettä, kun projektityöryhmä oli käyttänyt vain 5 V jännitettä. Projektin tavoitteena oli kuitenkin käyttää Arduino Yún:ia mittausten suorittamiseen, joten emme toistaneet diplomityön kokeita täydellisesti. Diplomityön mikrofoni-vahvistinpiireillä sekä Arduino Yún:illa saimme suuntaa antavia tuloksia jotka tukivat myös diplomityön konseptin toimivuutta. Toisena tavoitteena oli tehdä päätös tässä projektissa käytettävistä komponenteista. Vaihtoehtoina olivat edellisen projektiryhmän mikorofonit ja heidän vahvistuspiirinsä, diplomityössä käytetyt MAX4466 mikrofoni-vahvistinpiirit tai piezo-anturit. Datan keräämiseen käytimme Data Translationin DT9812 mittauskorttia ja MATLABin Simulinkiä datan keräämiseen tietokoneelle. MATLABiin täytyi asentaa ensin Data Translationin DT-Open Layers ajurit [5]. Ne toimivat ainoastaan 32 bittisellä MATLAB-versiolla. Saimme kuvan 1 mukaisia mittaustuloksia. Kitara-mikrofonien signaali oli erittäin samanlainen kuin meidän piezo-antureidemme signaali. Käytimme piezo-anturissamme myös edellisen ryhmän vahvistinpiiriä. Tutkimme vastaavia kitaramikrofoneja internetissä, ja lopputuloksena uskomme, että edellisen ryhmän kitaramikrofonit ovat itseasiassa piezo-elementillä varustettuja. Kuvassa 2 on puolestaan MAX4466 mikrofoni-vahvistinpiirin signaali. Normaali taustakohina on 3

kitaramikrofoneilla huomattavasti pienempää, joten päädyimme käyttämään niitä, vaikka MAX4466- piirilläkin olisi mahdollista havaita virtaus. Kuva 1: Kitaramikrofonin ja piezo-anturin mittaukset Kuva 2. MAX4466 mikrofoni-vahvistinpiirin mittaus Näiden perusteella todettiin, että ainakin joitain päätelmiä veden virtauksesta voidaan tehdä värähtelyn perusteella. Seuraavaksi tutkimme virtausmäärän artiviointia. Vaihe 2 Toisessa vaiheessa valitut komponentit yhdistetään Arduino YUN -mikrokontrolleriin, joka toimii lopullisen järjestelmän datankeräimenä. Arduino YUNissa on valmiina Wi-Fi valmius ja Linux prosessori, jotka helpottavat datan lähettämistä eteenpäin. Elektroniikka ja mekaniikka 4

Laitteiston kokoonpano Kuva 3: Laitteiston elektroniikka. Kuvassa 3 on laitteiston lopullinen kokoonpano. Laitteistossa kaksi kitaramikrofonia on kytketty edellisen ryhmän rakentamaan vahvistinpiiriin. Vahvistin piiriltä molemmat mikrofonit tulevat omina kanavinaan arduinolle. Huomasimme, että vahvistimesta tuleva signaali on 0 V keskiarvoista. Arduino tunnistaa jännitteitä ainoastaan välillä 0-5V, joten nollakeskiarvoisesta symmetrisestä värähtelystä puolet tulkittiin virheellisesti nollaksi. Näin ollen jouduimme tuomaan mittauskanaiin vastusten R1 ja R2 läpi 3,3 V jännite. Tällä saimme nostettua vahvistinpiiriltä tulevan signaalin noin 2,5 V tasoon, jolloin arduino pystyy kyseistä signaalia mittaamaan. Molemmat vastukset R1 ja R2 ovat 10 kω vastuksia. Kuvasssa 3 näkyvä painike on arduinolla pyörivää initialisointi ja setup toimintoja varten. Näissä toiminnoissa määritellään esimerkiksi signaalille maksimi- ja minimiarvot mittaamalla signaalia hanan ollessa kiinni ja hanan ollessa täysin auki. Lisäksi toiminnoissa lasketaan muun muassa muun koodin tarvitsemia vakioita. Vastus R3 on myös 10 kω vastus ja mahdollistaa painikkeen toiminnan. Vahvistinpiiri Kuten edellä on mainittu päädyimme projektissamme käyttämään edellisen ryhmän rakentamaa vahvistinpiiriä. Vahvistinpiiri on valmistettu rakennussarjan k2572[6] mukaan. Tämä vahvistinpiiri tukee suoraan kahta kanavaa, mutta sen jännite vaatimus on suurempi kuin arduinosta saatava 5V:ia. Vahvistinpiiri vahvistus ei myöskään ole tarvittavalla tasolla, sillä kumpaakin kanavaa vahvistetaan vain yhdellä operaatiovahvistimella. Vahvistinpiiriin on tehty seuraavia muutoksia mitkä parantavat piirin toimintaa käyttötärkoituksessamme. Muutokset teki edellinen ryhmä. 5

Kuva 4: k2572 kytkentäkaavio, missä A1 ja A2 ovat piirissä TM358 olevat operaatiovahvistimet[6]. Jotta vahvistinpiiri tukisi arduinosta saatavaa 5 V jännitettä, on vahvistuspiirin mikropiiri TL072 vaihdettu LM358 mikropiiriin. Alemman käyttöjännitteen vaikutus piirin toimintaan on ainoastaan se, että se alentaa piiriltä saatavaa vahvistusta. Piirin vahvistusta oli muutettu vaihtamalla vastuskset R5 ja R6 10 kω vastuksista 2,2 kω vastuksiin. Viimeinen muutos piiriin oli vaihtaa kondensaattorit C5 ja C7 hyppylankoihin. Tällöin arduinolle ei tule kelluvaa jännitettä. Säätötarkkuuden parantamiseksi säätövastukset RV1 ja RV2 on vaihdettu 100 kω säätövastuksiin. Alipäästösuodatin Mittaustuloksia tarkastelemalla huomasimme, että mittauksissa on suuria määriä kohinaa. Teimmekin mittauksilla taajuusanalyysin. Kuten kuvasta 5 huomataan on mittauksissa kuitenkin dominoivina 6

taajuuksina on matalammat taajuudet. Päätimme kokeilla parantaa mittaustuloksiamme suodattamalla mitattavasta signaalista korkeat taajuudet pois. Kuva 5: Mittaussignaalin taajuusanalyysi. Kuva 6: Alipäästösuodattimen kytkentäkaavio. Alipäästösuodatusta varten teimme yksinkertaisen kuvan 6 mukaisen alipäästösuodattimen. Kokeilimme alipäästösuodatinta eri leikkaustaajuuksilla(~700hz, ~350Hz ja ~1Hz). Kaikissa tapauksissa huomasimme alipäästösuodattimen ainoastaan laskevan signaalin vahvuutta eikä kohina vähentynyt huomattavasti. Tämän takia emme lopullisissa mittauksissa käyttäneet alipäästösuodatinta. Jälkeenpäin ajateltuna alipäästösuodattimen poistaminen järjestelmästä saattoi olla hätiköity päätös. Arduinolla yhden AnalogRead()-funktion suorittamiseen kuluu 100 µs[7]. Tämä tarkoittaa, että maksimissaan arduinolla pystyy siis näytteistämään signaalia 10 khz taajuudella. Koska luimme kahta kanavaa pääsimme noin 5 khz näytteistämistaajuuteen. Ottaen tämä ja kuvan 5 taajuusanalyysi huomioon, olivat leikkaustaajuutemme aivan liian matalat. Mikäli leikkaustaajuus olisi esimerkiksi ollut 2,5 khz kohdalla, ei signaali olisi välttämättä heikentyisi merkittävästi. Tämä on mahdollisia tulevaisuuden tutkimuskohteita tämän järjestelmän suhteen. 7

Konseptin kehitys Kun oli huomattu, että putken värähtelystä voi tehdä päätelmiä veden virtauksesta, aloimme kehittää menetelmää muuttaa värähtely virtausdataksi. Huomasimme myös saman ristiinkytkennän kylmän ja kuuman putken välillä, jonka Behar oli havainnut diplomityössään [1]. Vaikka hanasta lasketaan vettä vain toiselta puolelta, myös toinen puoli värähtelee melko voimakkaasti. Aluksi koetimme minimoida ristiinkytkennän siirtämällä anturit mahdollisimman kauas sekoituspisteestä. Tämä ei kuitenkaan auttanut kovinkaan paljon, ja tämän lisäksi loppukäyttöä ajatellen tämä ei olisi toimiva ratkaisu, sillä se lisäisi asennuskohteiden välistä vaihtelua kohtuuttomasti. Vaihdoimme lähestymistapaa, ja maksimoimme ristiinkytkennän siirtämällä anturit mahdollisimman lähelle sekoituspistettä. Lisäksi summasimme signaalit yhteen, ja jatkoimme tarkastelua tälle yhdistetylle signaalille. Kuvassa 7 on kaksi sykäystä vettä. Ensimmäisessä lasketaan pelkästään kylmää vettä, ja toisessa pelkästään kuumaa. Kuva 7: Putkien värinän ristiinkytkentä Aluksi kokeilimme samaa menetelmää kuin diplomityössä, jossa värähtelystä otettiin itseisarvo ja näistä laskettiin keskiarvo[1]. Vaikka tämä menetelmä todellakin kuvastaa värähtelyn suuruutta, emme saaneet toivottuja tuloksia. Arduinolla havaittiin usein virheellisesti veden virtaus. Tämä johtui todennäköisesti siitä, että tätä menetelmää käyttämällä kynnysarvo jäi liian matalaksi, ja normaali taustakohina aiheutti virhetulkintoja. Meidän ratkaisumme tähän ongelmaan oli liukuvan ikkunan L2-normi. Toisin kuin edeltävä menetelmä, tämä perustuu mitattujen arvojen neliöihin. Laskukaava tälle menetelmälle on n L2(n) = i=n 99 x i 2 Intuitiivisesti mittaukset saapuvat siis virtana, jossa sadasta peräkkäisestä arvosta lasketaan L2-normi. Ikkunan koko voisi olla muutakin kuin sata, mutta ajatellen arduinon suorituskykyä, se on syytä pitää 8

suhteellisen pienenä. Tässä muutokset arvoissa vaikuttavat neliöllisesti. Tämä johtaa siihen, että pienetkin vaihtelut tasapainotilasta näkyvät suurempana. Käytimme Remag-virtausmittaria referenssinä. Kuvassa 8 on esitelty tällä menetelmällä laskettu L2- normi ja normalisoitu virtausmittaus. Tällöin arvo 1 kuvaa tilannetta, jossa hana on kokonaan auki, ja 0 sitä, että hana on kokonaan kiinni. Voidaan havaita, että menetelmä todellakin kertoo virtauksen suuruudesta. Kuva 8: Liukuvan ikkunan L2-normi ja todellinen virtaus Kuvassa 9 on normalisoitu virtaus L2-normin funktiona. Ylimmässä kuvassa hana on kokonaan keskellä, eli vesi on keskilämmitä. Keskimmäisessä hana on kuumalla ja alimmassa hana on kylmällä. Nähdään, että värähtelyn ja virtauksen välinen yhteys on myös lämpötilasta riippuvainen, eli täysin tarkkoja tuloksia ei voidakaan odottaa tällä menetelmällä. Selkeä yhteys kuitenkin on, joten suuntaa antavia tuloksia voidaan saada. Kokeilimme useita erilaisia malleja kuvaamaan värähtely virtausnopeudeksi. Kokeilimme lineaarista mallia, vaikka oli selvää, ettei se ole täysin riittävä. Lineaarisessa mallissa hana avattiin täysin auki ja laskettiin L2-normi. Tällä maksiminormilla skaalattiin lineaarisesti Kokeilimme myös log-lineaarista mallia, jossa L2-normista otettiin ensin logaritmi ja tämän jälkeen tehtiin lineaarinen sovitus pienimmän neliösumman menetelmällä. Lisäksi mielenkiinnosta kokeiltiin Matlabin neuroverkkopaketin sovituksia. Projektin lopussa meidän laitteemme käytti lineaarista skaalausta, vaikka se ei tuotakaan tarkinta tulosta. Tähän oli useita syitä. Ensinnäkin havaitsimme, että lineaarinen malli toimii kohtalaisen tarkasti joillain vesipisteillä. Projektihuoneen vesihanalla se ei toiminut, mutta Marttisen kotona WC:ssä päästiin melko hyviin tuloksiin. Toiseksi, log-lineaarisen mallin opettamiseen tarvittaisiin tieto 9

todellisesta virtauksesta, jota ei oletusarvoisesti ole saatavissa asennuskohteessa, sillä tarkoituksena oli luoda plug-n-play -konsepti. Neuroverkkoja ei missään vaiheessa harkittu käytettäväksi Arduinolla, eikä niillä myöskään saatu merkittäviä parannuksia log-lineaarisen mallin arviointiin verrattuna. Kuva 9: Virtaus L2-normin funktiona. Yllä hana keskellä, keskellä hana kuumalla, alla hana kylmällä Loppujen lopuksi vesimäärä arvioitiin seuraavalla tavalla. Arduino määrittää keskiarvon L2-normille. Keskiarvo skaalataan lineaarisesti maksimivärähtelyn keskiarvolla, jolloin saadaan arvio siitä, kuinka paljon hana on ollut auki. Kun tämä 0 ja 1 välillä oleva luku kerrotaan maksimivirtauksella ja kuluneella ajalla, saadaan arvio kuluneesta vesimäärästä. 10

Ohjelmisto ja ohjelmistokehitys Arduino YUNiin asennettiin ylimääräinen microsd-muistikortti, sillä linux-puolen muistilla on rajallinen määrä IO-operaatioita. Lisäksi muistia ei ole alunperinkään paljon. Arduino YUNin muistin laajentamiseen löytyy ohjeet Arduinon sivuilta [8]. Varsinainen Arduino ohjelmamme toimii seuraavalla periaatteella. Alussa järjestelmä alustetaan. Nappia painamalla Arduino aloittaa alustussekvenssin. Alustus tapahtuu Arduinon setup-osiossa, joten se ajetaan vain kerran. Alustussekvenssissä Arduino määrittelee laitteistossa kiinni olevan hanan minimi- ja maksimivärähtelyt. Tämä suoritettiin laskemalla ensiksi 10 000 mittauksesta keskiarvo, jota käytettiin tuomaan mitattavat signaalit nollakeskiarvoisiksi. Hanan ollessa kiinni nollakeskiarvoistetusta signaalista laskettiin 10 000 mittauspisteen keskiarvo sekä standardipoikkeama. Standardipoikkeamaa käytettiin keskiarvon kanssa laskemaan kynnysarvo, jonka yli menevät värähtelyt tulkitaan veden virtaukseksi. Seuraavaksi aloitussekvenssi laski 10 000 mittauspisteestä hanan ollessa täysin auki keskiasennossa keskiarvon. Tätä keskiarvoa käytettiin indikoimaan putkien maksimivärähtely. Maksimi- ja minimivärähtelyä käytettiin yksinkertaiseen laskentaan virtausnopeudesta mitatun virtauksen keskivärähtelyn suhteesta maksimivärähtelyyn. Hanasta mitattua maksimaalista virtausnopeutta kerrottiin kyseisellä suhdeluvulla, jolloin saataisiin tunnistetun virtauksen virtausnopeus. Tällä menetelmällä saadut virtausnopeudet eivät kuitenkaan kuvaa todellisuutta hirveällä tarkkuudella, sillä värähtely on epälineaarisesti verrannollinen virtausnopeuteen. Varsinaisessa suoritussyklissä Arduino tarkkailee putkien tärinän summasignaalia ja laskee sille jatkuvasti liukuvan ikkunan L2-normia. Kun normi ylittää alustussekvenssissä lasketun kynnysarvon, otetaan aloitusaika talteen ja Arduino alkaa laskea normin keskiarvoa. Kun normi laskee alle kynnysarvon, veden virtaus tulkitaan loppuneeksi. Alku- ja loppualoista lasketaan virtauksen kesto, ja kun edellisessä kappaleessa mainitulla tavalla laskettua virtausta kerrotaan tätä kestoa, saadaan arvio vesimäärästä. Teimme linjauksen, jonka mukaan alle puolen sekunnin havaintoja ei tulkita virtauksiksi. Tämä vähensi virheellisiä havaintoja merkittävästi. Kun edellä kuvatulla tavalla oli arvioitu veden määrä, kutsuttiin Arduino YUNin bridge-kirjaston avulla python-skriptiä, jolla MySQL-palvelimelle lähetettiin lasketut tiedot. Lähetysprosessi on kuvattu paremmin seuraavassa luvussa. Ohjelmistoa kehitettäessä huomattiin, että mitä herkemmäksi laite halutaan tunnistamaan pieniä virtauksia sitä herkemmin laitteisto tunnistaa muista vesipisteistä virtaavaa vettä. Testiympäristöissämme vesiputket olivat metallia. Koska ääni kulkeutuu metallia pitkin helposti pitkälle vaimenematta, mikä aiheuttaa virheellisiä tunnistuksia. Näin ollen yhden laitteen järjestelmässä täytyy saavuttaa tasapaino pienien virtausten tunnistamisessa ja virheellisissä tunnistuksissa. Ohjelmistoa kehitettäessä huomasimme myös, että kommunikointi Arduinon ja linux prosessorin välillä oli suhteellisen hidasta. Arduinon ja linux prosessorin välinen kommunikointi vei noin kaksi sekuntia. Tämä tarkoittaa sitä, että kun Arduino ja linux prosessori keskustelevat, esim dataa lähetettäessä, ei uutta virtausta pystytä tunnistamaan ennen kuin lähetys on suoritettu loppuun. 11

Vaihe 3 Projektin kolmannessa vaiheessa tehtävänä oli datan visualisointi ja säilöntä palvelimella. Suunnitelmana oli hyödyntää Huttusen ja Rekolan [2] käyttämää Amazon Web Services -palvelua (AWS) sekä tiedon säilöntään että visualisointiin. AWS tarjoaa kattavat pilvipalvelu-työkalut ja sitä on mahdollista käyttää ilmaiseksi vuoden, joten sen uskottiin soveltuvan hyvin käyttötarkoitukseemme. Tiedon visualisointi oli alunperin tarkoitus Huttusen ja Rekolan tapaan toteuttaa verkkosivuna, mutta tästä luovuttiin (kts. Riskienhallinta). Tiedon säilöntä Tiedon säilöntään käytimme Amazonin Relational Database Serviceä (RDS), joka on osa Amazon Web Services -palvelua. Tämän avulla pystyimme helposti luomaan MySQL-tietokannan, johon Arduino Yùnimme pystyy lisäämään dataa. Päädyimme MySQL-tietokantaan, koska se oli ryhmällemme ennestään jossain määrin tuttu ja se on suosittu web-palveluiden toteutuksessa. Loimme tietokantaamme taulukon, jonka sarakkeet ovat seuraavat: measpointid starttime avgflow durat liters measpointid:n tarkoituksena on ilmoittaa vesipisteen tunniste (esim. Keittiön hana ), joka mahdollistaa vedenkulutuksen tarkastelun vesipisteen mukaan. Prototyypissä tätä pidettiin kuitenkin kokonaisluku-tunnisteena. starttime ilmoittaa virtauksen alkuajan muodossa vvvv-kk-pp tt:mm:ss, avgflow erittäin karkean arvion virtauksen keskiarvosta litroissa minuutissa, durat virtauksen keston sekunneissa, ja liters erittäin karkean arvion kulutetusta vesimäärästä litroina. Tarkoituksena on, että visualisoinnissa tietoa voidaan suodattaa vesipisteen mukaan sekä päivämäärän mukaan. Tietokantaan pystyttiin manuaalisesti lisäämään tietoa muun muassa ilmaisella MySQL Workbench - ohjelmalla. Tämä oli tarpeellista visualisoinnin testaamiseen ennen kuin prototyyppimme pystyi lähettämään tietoa palvelimelle. Datan lähettäminen palvelimelle toteutettiin yksinkertaisella Python-skriptillä. Arduinon pääohjelma kutsuu Arduino YUNin Bridge-kirjaston Process-oliota. Process-oliolla voidaan suorittaa komentoja Arduino YUNin linux-suorittimella. Python-skripti ainoastaan ottaa yhteyden MySQL-tietokantaan, ja lisää haluttuun tauluun tiedot, jotka se saa Arduino-ohjelmasta komentoriviparameteina. Käytetty Python-skripti on liitteessä B. Huomattavaa on se, että aikaleima täytyy muodostaa kahdesta komentoriviparametrista. Komentoriviparametrit erotetaan toisistaan välilyönnillä, ja Arduinon pääohjelmasta saatava aikaleima sisältää itsessään välilyönnin. Python-skriptiä varten Arduinon YUNin linux järjestelmään täytyi asentaa Python-mysql paketti. Arduino YUNin Linino Linux-jakelussa on opkg-pakettienhallinta. Arduinon Lininoon otettiin yhteys SSH:lla. Opkgn pakettilistaus täytyy päivittää aina ennen pakettien asentamista, joten se päivitettiin. Tämä jälkeen asennettiin python-mysql-paketti. 12

Tiedon visualisointi Kuten yllä mainittiin, visualisointi oli alunperin tarkoitus toteuttaa käyttäen Huttusen ja Rekolan [2] luomaa verkkosivua. Tämän kanssa oli kuitenkin vaikeuksia (kts. osio Muut ongelmat), joten päädyimme toiseen ratkaisuun. Ryhmällä ei ollut aikaisempaa kattavaa kokemusta verkkosivujen luomisesta, ja koska toivoimme, että Huttusen ja Rekolan verkkosivu saataisiin vielä toimimaan prototyyppimme kanssa, päätimme olla käyttämättä aikaa verkkosivun luomiseen. Sen sijaan päädyimme kokeilemaan Tableauohjelmistoa, joka on varta vasten tarkoitettu tiedon visualisointiin. Ohjelmisto on kallis, mutta sille tarjottiin kahden viikon ilmaista kokeilua, joka riitti ryhmän tarpeisiin. Vastaavaa visualisointia olisi myös voinut toteuttaa käyttäen Microsoft Exceliä ja sen Power Query -lisäosaa, jolla saa ladattua tietoa muun muassa MySQL-tietokannasta Exceliin. Kuva 10: Tiedon visualisointi Tableau-ohjelmistossa. Havainnot ja päätelmät Tärkein havainto projektissa oli se, että värähtely todellakin antaa tietoa virtauksesta. Virtauksen alku ja loppu voidaan havaita hyvinkin tarkasti. Virtaus määristäkin voidaan tehdä jopa lineaarisesti karkeita arvioita. Taulukossa 1 on projektihuoneen vesihanoilla saatuja tuloksia, ja taulukossa 2 Marttisen kotona WC:n hanalla mitattuja tuloksia. Tulokset on saatu nimenomaan loppuprototyypillä, eikä Matlabilla. Taulukko 1 - Projektihuoneen vesihanat hanan asento virtaus oikea vesimäärä arvioitu vesimäärä 13

Hana 1: keskellä keskikovaa 700ml 1400ml Hana 1: keskellä kovaa 530ml 630ml Hana 1: kylmällä keskikovaa 650ml 1070ml Hana 1: kylmällä kovaa 570ml 410ml Hana 1: kuumalla kovaa 600ml 692ml Hana 1: kuumalla keskihiljaa 470ml 640ml Hana 1: kylmällä hiljaa 620ml 852ml Hana 1: keskellä hiljaa 390ml 418ml Hana 2: keskellä keskikovaa 390ml 468ml Hana 2: keskellä hiljaa 450ml 650ml Taulukko 2 - Marttisen WC:n hanan tulokset hanan asento virtaus oikea vesimäärä arvioitu vesimäärä Hana 1: keskellä keskikovaa 380ml 540ml Hana 1: keskellä kovaa 570ml 780ml Hana 1: kylmällä keskikovaa 400ml 520ml Hana 1: kylmällä kovaa 580ml 720ml Hana 1: kuumalla kovaa 590ml 780ml Hana 1: kuumalla keskihiljaa 440ml 490ml Hanojen välillä on todellakin huomattavia eroja tarkkuuksissa. Marttisen hanalla kaikki mittaukset olivat noin kahden desilitran päässä todellisesta arvosta. Todellinen arvo oli mitattu mittakannulla, jossa oli 10 ml asteikko. Projektihuoneen hanastakin saatiin vastaavan tarkkuuden mittauksia hitailla ja suurilla virtauksilla, mutta keskinopeuden virtauksilla virhettä syntyi paljon. Tämä selittyy kuvan 9 kuvaajien muodolla. On selvää, ettei lineaarinen malli ole täysin riittävä. Lineaarinen malli muodostuu käytännössä nollatilan ja maksimivirtauksen avulla, jolloin lähellä näitä alueita voidaankin odottaa tarkempia tuloksia. 14

Jatkokehitys ja parantamiskohteet Virtauksen määrittäminen Kuten havaittiin, käyttämämme lineaarinen malli ei ole riittävä kuvaamaan tilannetta täydellisesti. Liitteessä A on vertailtu erilaisten mallien suorituskyvystä. Vertailu on siinä mielessä virheellinen, että se tehtiin silloin, kun ajateltiin ristiinkytkennän minimoimisen olevan järkevää. Vertailu pitäisi siis suorittaa uudestaan siten, että anturit ovat lähellä sekotuspistettä. Tämä olisi siis ensimmäinen askel jatkokehityksessä. Oletetaan, log-lineaarinen malli toimisi tässäkin vertailussa paremmin kuin lineaarinen malli. Tämä on perusteltu oletus aiemmin näytetyn kuvan 9 perusteella. Tällöin ongelmaksi muodostuu laitteen asennuksen helppous. Log-lineaarisen mallin opettamiseen tarvitaan opetusdataa, jossa on värinän L2- normi ja sitä vastaava normalisoitu virtaus. Koska tarkoituksena on rakentaa plug-n-play -tuote, ei virtausdataa välttämättä ole saatavilla. Mallin opettamisessa törmätään siis ongelmiin. Eräs ratkaisu tähän voisi olla dynamic time warping (DTW). DTW:ssa idea on, että aikasarjat kuvataan mahdollisimman hyvin kohdakkain. Kaikkia aikasarjan pisteitä ei tarvitse käyttää. Alku- ja loppupiste kuvataan aina kohdakkain, mutta välissä olevat pisteet voidaan kuvata tiettyjen sääntöjen mukaan toisiksi. [5] Hyödyntämällä DTW:tä olisi mahdollista pitää tallessa kellokäyrän muotoinen referenssivirtaus, jossa siis hana avataan täysin auki ja suljetaan tämän jälkeen. Kellokäyrä menisi siis nollasta yhteen ja takaisin nollaan. Vastaava voitaisiin sitten tehdä asennuskohteen hanalla, ja käyttää DTW:a kuvaamaan saatu värähtelydata referenssikäyrälle. Näitä arvopareja voitaisiin sitten käyttää loglineaarisen mallin opettamiseen. Luonnollisesti näillä arvopareilla voitaisiin opettaa muitakin malleja, jotka vaativat vastaavan tiedon. Esimerkiksi ajattelimme, että log-lineaarisen mallin sijaan voisi kokeilla sellaista mallia, jossa toiminta-alue jaetaan useaan lineaariseen alueeseen. Tätä ei toteutettu meidän projektimme puitteissa, vaan se jää jatkokehitettäväksi. DTW on suhteellisen raskas algoritmi, ja vaatii jonkin verran muistia. Arduinossa itsessään ei ole riittävästi muistia tähän, vaan toteutuksessa täytyisi hyödyntää erillistä muistikorttia, joka olisi yhdistetty Arduino YUNin Linux-puoleen. Tiedon visualisointi Mikäli projektissa tuottamamme prototyyppi otettaisiin käyttöön esimerkiksi hoitokodissa, verkkosivu olisi ehdottomasti kätevin ja halvin tapa esittää kerättyä tietoa. Käyttämämme Tableau-ohjelmisto on kallis, mikä kumoaisi halvan laitteiston tuomat säästöt. Exceliä taas emme saaneet päivittämään taulukoita automaattisesti, mikä on epäkäytännöllistä, jos halutaan reaaliajassa seurata, että esimerkiksi suihku ei ole jäänyt vahingossa päälle pidemmäksi aikaa. Näin ollen Huttusen ja Rekolan [2] verkkosivu olisi tiedon visualisoinnille vähintään hyvä lähtökohta, josta jatkaa visualisoinnin kehitystä. Verkkosivukin tosin luo kustannuksia ajan myötä, kun sitä halutaan laajentaa useampien henkilöiden käyttöön. Mikäli tiedon visualisoinnille riittää, että näkymä päivitetään manuaalisesti, Excel olisi varteenotettava vaihtoehto. 15

Projektinhallinta Projektin etenemisen takaamiseksi päätimme pyrkiä tapaamaan ryhmän kanssa viikoittain. Nämä tapaamiset pidettiin yhdessä projektiryhmän sekä ohjaajan kanssa. Ensimmäisessä tapaamisessa suunnittelimme projektiin tulevat osiot ja määriteltiin kullekkin osiolle vastuuhekilöt. Mikko Kyllönen oli vastuussa elektronisesta toteutuksesta ja arduinon koodista. Matti Marttinen oli vastuussa mittaus- ja suodatusmallien suunnittelusta ja Vili Tuomisaari oli vastuussa palvelimen toteutuksesta Amazon Web Service:en. Ryhmän pääasialliseksi kommunikointi kanavaksi valittiin Whatsap-viestintä ohjelma. Tämä mahdollisti ryhmän ripeän ja joustavan kommunikoinnin sekä reagoinnin äkillisiin aikataulu muutoksiin. Riskienhallinta Projektin alussa riskit, joita pidimme todennäköisimpinä, olivat vaikeudet aikataulutuksen kanssa sekä tekniset vaikeudet. Näiden lisäksi kohtasimme tosin muitakin vaikeuksia. Aikataulutus Heti projektin alussa tiedostimme, että ryhmän jäsenillä on kiireinen syyslukukausi muiden opintojen ja töiden vuoksi. Tästä johtuen vaikutti varmalta, että syksyn aikana tulisi jaksoja, jolloin yhteisen työajan löytäminen olisi vähintäänkin haastavaa, ellei mahdotonta. Tämän lisäksi aiemmista projekteista oli kokemusta, että tilattujen komponenttien toimitukset saattaisivat viivästyä. Molemmat tunnistetut aikataulutukseen liittyvät riskit toteutuivat. Ensinnäkin, projektimme sai hitaan alun, kun ensimmäiset tilaamamme komponentit eivät löytäneet perille. Näin ollen emme vielä syyslukukauden puolivälissä olleet saaneet paljoa tehtyä. Seuraavat komponentit onneksi tulivat ajallaan. Toiseksi, kuten oli odotettavissa, yhteistä aikaa oli vaikea löytää. Onnistuimme kuitenkin tapaamaan lähes viikoittain sekä ohjaajamme että tiimimme kesken, mutta välillä tämä edellytti työskentelyä myöhään illalla ja viikonloppuna. Projektin loppuvaiheessa oli kuitenkin ilmeistä, että enemmän yhteistä aikaa olisi tarvittu. Tekniset vaikeudet Projektin alussa testaamamme aikaisemmista projekteista säilyneet MAX4466-mikrofonit todettiin ainakin osittain viallisiksi. Tämä johtopäätös saattoi tosin olla väärä, sillä tilaamamme uudet MAX4466-mikrofonit eivät tuottaneet juurikaan parempaa signaalia. Emme saaneet näitä toimimaan samoin kuin Beharin [1] diplomityössä. Ensimmäisessä komponenttierässä tilasimme myös koekytkentälevyjä helpottamaan erilaisten toteutuksien kokeilussa. Koska ensimmäin tilaus ei ikinä selvinnyt meille asti, jouduimme pitkään pärjäämään ilman näitä, mikä tuotti omat vaikeudet. Vaikka yhdellä ryhmän jäsenistä oli hyvä kokemus kolvaamisesta, uusien kokoonpanojen tuottaminen oli silti vaivalloista ja aikaa vievää. Muita suuria teknisiä ongelmia emme kohdanneet, joskin pienempiä ongelmia oli muutamia. Esimerkiksi, käyttämämme virtausmittari ei pystynyt mittaamaan suurempia virtauksia kuin 25 l/min, 16

mikä ei riittänyt ainakaan testauksessa käytetylle hanalle. Tämä lisäsi vesimäärän mittauksen epätarkkuutta huomattavasti. Virtausmittarin käytössä oli toinenkin ongelma. Virtausmittarin signaali on pulssisignaalia. Data Translationin Open Layers -ajurit Matlabiin eivät tue muuta kuin analogimittauksia. Emme siis voineet hyödyntää mittauskortissa olevaa counter-sisääntuloa, jolla pulssit olisi voitu havaita helposti, vaan ne täytyi etsiä analogisignaalista. Virtausmittarin signaalin nolla-taso vaihteli myöskin satunnaisesti, erityisesti jos käytettiin suuria virtauksia. Tällöin pulssi jäi ikään kuin päälle, ja mittaus jouduttiin ottamaan uudestaan. Lisäksi yhteensopivuudessa oli toinenkin ongelma. Mittauskortin kanavat vaihtuivat Matlabissa satunnaisesti. Tämä vaikeutti automaattisten skriptien ajoa data-analyysissä. Käytännössä jokaisen mittauksen kanavat täytyi erikseen validoida. Muut ongelmat Tarkoituksemme oli hyödyntää Huttusen ja Rekolan [2] luomaa verkkosivua tiedon visualisointiin. Tämä edellytti, että saisimme avattua kopion heidän luomasta AWS EC2 -instanssista, johon verkkosivun toteutus oli tehty. Tämä kuitenkin osoittautui haastavammaksi, kuin oli osattu odottaa. Saimme instanssin viimein auki noin viikkoa ennen prototyypin demo-sessiota, jolloin suuri osa Arduinon koodista ja tiedon säilöntä oli jo toteutettu. Valitettavasti toteutuksemme ei ollut suoraan yhteensopiva verkkosivu-toteutuksen kanssa, ja ajan käydessä vähiin, ei tähän jäänyt aikaa perehtyä tarkemmin. Aikataulu Kuten riskien yhteydessä mainittiin, olimme tietoisia kaikkien ryhmän jäsenten kiireellisestä syksystä. Tämän perusteella loimme projektisuunnitelman, missä keskityimme tutkimaan ongelmaa edellisten ryhmien työn pohjalta. Jaoimme myös työn selkeisiin osatekijöihin joista jokaisesta vastasi yksi ryhmän jäsen. Suurin osa työstä oli mahdollista suorittaa itsenäisesti. Tämän oletimme vähentävän aikataulujen yhteensovittamisesta aiheutuvia viivästyksiä. Mutta kuten edellä on mainittu, aliarvioimme tämän henkilökohtaisten aikataulujen impaktin projektin etenemiseen. Aikataulun loimme projektisuunnitelman pohjalta sellaiseksi, että työt pystyttiin aloittamaan nopeasti ja että pääpainona oli ohjelmiston toteutus arduinolle. Mutta kuten riskien yhteydessä kerrottiin, myöhästyi aikataulumme pahasti muun muassa hävinneen komponentti toimituksen johdosta.toinen suuri aikataulu myöhästyttävä tekijä oli ennakoitua hankalampi mittaus- ja suodatusmallin sovittaminen mittausdataan. Myöhästymiset aiheuttivat laitteiston palvelinpuolen kehityksen ja toteuttamisen prioriteetin alenemiseen. Teimme siis palvelinpuolesta toissijaisen tavoitteen projektin kannalta. Tästä syystä myös emme myöskään toteuttaneet minkään sorttista datan käsittelyä palvelimella. Alla olevasta kuvasta näkee suunnitellun ja toteutuneen aikataulun. 17

Kuva 11: Projektin suunniteltu ja toteutunut aikataulu 18

Ajankäyttö Matti Mikko Vili Yhteensä Yleiset: Luennot 10 10 10 30 Ohjaaja-tapaamiset 6,5 6,5 7,5 20,5 Raporttien kirjoitus 19.5 15 16 50,5 Esiintymisiin valmistautuminen 3 3 3 9 Phase 1: Edellisten laitteistojen kokoaminen ja vaihtoehtoisten komponenttien testaus 4 8 4 16 Phase 2: Elektroniikan toteutus ja suunnittelu 0 12 0 12 Mittaukset 15 10 10 35 Mittausten käsittely 17 3 0 20 Arduino-koodi 12 18 8 38 Phase 3: AWS 2 0 20 22 Tableau ja Excel visualisointiin 1 1 5 7 Yhteensä: 90 86.5 83,5 260 19

Lähteet [1] Behar, N. (2014). Water consumption measurements using inexpensive microphones and temperature sensors. Diplomityö, Aalto yliopisto. [2] Huttunen, J. & Rekola, M. (2015). Vedenseurantajärjestelmä. Projektityöraportti, Aalto yliopisto. [3] https://www.adafruit.com/products/1063 Luettu 20.12.2015 [4] http://www.ebay.com/itm/universal-general-guitar-acoustic-clip-line-pickup-microphone-wire- Black-/121427337175?pt=LH_DefaultDomain_3&hash=item1c45a21fd7 Luettu 20.12.2015 [5] http://www.datatranslation.com/products/low-cost-daq/dt9812-low-cost-usb-daq Luettu 20.12.2015 [6] http://www.velleman.eu/downloads/0/illustrated/illustrated_assembly_manual_k2572_rev2.pdf, Luettu 20.12.2015. [7] https://www.arduino.cc/en/reference/analogread, Luettu 20.12.2015. [8] https://www.arduino.cc/en/tutorial/expandingyundiskspace Luettu 20.12.2015. [9] Keogh, E. and Ratanamahatana, C.A., 2005. Exact indexing of dynamic time warping. Knowledge and information systems, 7(3), pp.358-386. 20

Liitteet LIITE A: Mallien vertailu projektihuoneen hanalla Hidas keskellä Lineaarinen 1.6147 Log-lineaarinen 1.9491 Neuroverkko 1.2536 Mitattu 0.93 Hidas kuumalla Lineaarinen 1.8188 Log-lineaarinen 2.1091 Neuroverkko 1.4617 Mitattu 0.93 Hidas kylmällä Lineaarinen 1.6276 Log-lineaarinen 1.7959 Neuroverkko 1.3212 Mitattu 0.93 Keskinopea keskellä Suhteella 2.1758 Log-lineaarinen 0.8806 Neuroverkko 0.9395 Mitattu 0.81 Keskinopea kuumalla Lineaarinen 2.6738 Log-lineaarinen 0.8135 Neuroverkko 0.8488 Mitattu 0.83 Keskinopea kylmällä Lineaarinen 2.3806 Log-lineaarinen 0.7481 Neuroverkko 0.7789 Mitattu 0.77 21

LIITE B: Pyhton-skripti datan lähettämiseen MySQL-tietokantaan import MySQLdb import sys con = MySQLdb.connect(host='vesimikkidb.cfnlomxn1vo0.eu-central- 1.rds.amazonaws.com',user='VesiMikki',passwd='vesimikki',db='VesiMikkiDB') c = con.cursor() timestamp = "'%s %s'" % (str(sys.argv[2]),str(sys.argv[3])) print(timestamp) c.execute('insert INTO Measurements (measpointid,starttime,avgflow,liters,durat) VALUES(%s,%s,%s,%s,%s)' % (str(sys.argv[1]),timestamp,str(sys.argv[4]),str(sys.argv[5]),str(sys.argv [6]))) con.commit() 22