All posts by Temposcope

Prosessbeskrivelse



1.0 Oppgave

I forbindelse med faget smart systems har vi i oppgave å:

“fysisk [utvikle et] produkt med kunnskap [vi] har fått i løpet av studiet. Ønsket er at [vi] gjør bevisste valg mhp løsninger”

Etter å ha fått satt sammen en gruppe og fått oppgaven gikk vi i gang med idè myldring om hvordan vi skal takle utfordringen.
Vi måtte også finne ut hvordan vi skulle gjøre systemet “smart”.
Hver av linjene har sin bagasje med kunnskap og ønsker så kunsten var å finne et produkt som kan utfordre alle.
Det produktet vi endte opp med å utvikle er et såkalt Themposkop.
Dette er en innretning som basert på værdata input spiller av en hendelse som gjengir været i det området man er eller har spurt om.

Her er det utfordringer for alle linjene.


-Maskin må finne et metode og sikre vanntett og stabil struktur.

-Elektro må finne metode får skape omgivende belysning og strøm til nødvendige komponenter.


-Data må gjøre systemet smart så det kan ta imot inputs fra bruker og prosessere denne informasjonen.

2.1.0 Utvikling maskin

Etter flere runder rundt tegnebrett, solidworks og idè myldring endte vi til slutt opp med en løsning.

I et Temposkop er det viktig at våte og tørre områder holdes strengt separert.

Så vi måtte finne ut av hvordan de ulike områdene skulle fordeles i produktet.
I tillegg til at dette er ment som et utstillingsobjekt ville vi også se på forskjellige estetiske variasjoner.

I industri bryr vi oss oftest lite om estetikk, så siden vi utvikler et produkt som vil ha en målgruppe hvor dette er viktig, blir utfordringen er å finne en praktisk og estetisk løsning vår kundegruppe kan være interessert i.

Men hva slags form skal man velge? I start fasen så vi på forskjellige løsninger. Skulle vi lage den som en sfærisk snø kjegle, eller skulle vi ha en boksform av noe slag.

Dette var i all hovedsak de to forskjellige formene som ble diskutert.

Siden vi ville kjøre prosjektet vårt etter KISS model (keep it simple stupid) valgte vi en kvadratisk løsning. Men denne formen kan være ganske kjedelig så vi ga den litt mer sjel ved å la bunnkassen ha en trapes form.
Denne tykk i bunn og tynnere topp gir et stabilt og stasjonært inntrykk. Temposkopets vær spill står hevet på sin “trone” og lar brukere få et tydelig innsyn til det visuelle spillet.

De praktiske årsakene for dette er at vi vil sikre produktet fra å velte. Siden det er flytende væske inne i systemet vil en slik velt være kritisk ødeleggende for produktet.

I toppen av Temposkopet har vi valgt å installere pumpen og et kammer hvor vannet går inn i en spiral og drypper ned som regn.

Størrelsen på hullene er viktige. Siden vann har sine viskoelastiske egenskaper vil for små hull gi dårlig flyt og dråper men for store bare vil gi en stødig stråle.

For å gjengi ulike typer regn tenker vi å variere trykket til pumpen. Høyere trykk gir mer sprut og får det til å se ut som en storm er på gang.

2.1.1 Materialvalg

I vårt produkt har vi i all hovedsak valgt å gå bruke plexiglass og 3D-printede deler.

Dette er fordi vi ikke har behov for styrken til metaller og dette er materialer som lett lar seg tilvirkes i riktige dimensjoner.

En annen grunn til å velge bort metall er t vi har et system med rennende vann og områder hvor det kan dannes fuktighet som igjen kan lede til korrosjon.

Dette er ikke ønskelig i et pynte objekt siden rust sjeldent kan assosieres med harmoni.   

Siden vi ikke har mulighet å støpe spesiell geometri i plast har vi valgt å 3D-printe kompliserte deler. Dette gjør tilvirknings fasen vesentlig enklere og sikrer oss symmetriske deler som passer i sammensetningen.

Av 3D-print har vi laget støttestruktur til bunn boksen (se figur) og ramme til toppen. Som nevnt er dette gjort for symmetri og for å spare tid. Det printede plast materialet er stivt og solid og fungerer bra som bærende struktur i produktet.
Vegger og bunn er kappet ut av plexiglass etter mål fra Solid Works sammensetning.
Men vi har benyttet oss av to ulike tykkelser. 2mm på veggene som er transparente og 4mm på veggene som dekker elektronikk og vanntank.

For vannsirkulasjon har vi valgt en vannslange i plast som var tilgjengelig på dronesonen, kappet opp til ønskelige lengder.

Til sammenføying har vi brukt kraftig et plexiglass-lim som virkelig holder partene på plass.

Etter at alt er sammensatt og klart, males boksen for å gi et mer estetisk ytte samt dekke til elektronikk og rom i boksen.

Da er det kun det som er av interesse for brukeren som fanger oppmerksomheten.

2.1.2 Tilvirknings metoder

Delene vi ikke får printet må vi kappe til selv. Utfordringen med å jobbe med termoplaster er tendensen til at materialet smelter ved høy varmeutveksling. I motsetning til herdeplast som ikke danner viskøs smelt.

Vi registrerer ved testing hvordan kombinasjonen sponansamling og friksjon smelter sammen platene ved kutting.
For å komme rundt dette fjerner vi spon mens vi kutter og skjærer i et rolig og kontrollert tempo gjennom platene. Jo bedre dette blir gjort jo mindre må vi finpusse i ettertid.

En ulempe med smelt er at den amorfe strukturen brytes ned og vi ender opp med en hardere struktur  i materialet.

Optimalt kunne vi ha tilsatt vann ved skjæring men siden vi ikke vil risikere å ødelegge stikksaga til Richard får vi ta det i rolige segmenter.

3.1.0 Prosessbeskrivelse Maskin

Ingredienser:

Gjennomsiktige plastikk PVC plater

3d print

“Spacers” (metall)

Skruer Ø 3 mm

Slange type vann Ø 8 mm

Superlim 2 fase (en aktivator og limet

Utstyr og kobling – elektro

Utstyr:
Arduino mega 2560

RGB ledstrips, 12V 2A

Universal spylevæske pumpe, 12V 2A

2x dual motor controller, L298N

Relay control module, XD RM01 DIY, 5V

Ledninger

 

 

Vi skal bruke en arduino som en sekundær-hjerne, som skal ta imot info fra en Pi via en usb-kabel. Egentlig skulle arduinoen få info fra Pien via bluetooth eller infrarød, men vi gikk heller for USB-kabel. USB-kabel er en mer tryggere måte å få overført info enn de to andre, siden støy er ute av bildet. Og at det blir mindre koblinger, og mer plass til andre komponenter inni temposcopen. Ut fra infoen som arduinoen får fra Pien skal arduinoen utføre enkelte oppgaver. Vi valgte å bruke en arduino mega 2560, fordi den er stabil og robust, og det er den vi har best kjennskap til.

 

I starten av kodingen vår opererte vi med led lys for å finne gode koder for å kontrollere fargene, teste kodene våre og hvordan vi skal få til overgangen mellom fargene. Når det kommer til valget av type lys vis skulle bruke som illustrerte solen og himmelen var det ganske enkelt. Vi bestemte oss for å bruke rgb ledstrips istedenfor rgb led-pærer. Dette  fordi ledstrips er har mer lumen, som vil si levetid og styrke. Ledstrips er også mye lettere å montere i værboksen og på grunn av designet lå valget veldig naturlig for oss.

 

For å kontrollere av og på funksjonen vår tenkte å bruke en mosfet eller en bjt til å controllere strømmen inn til rgb ledstripsen, men etter tips fra Dag så var det bedre og lettere å bruke en motor controller. Og derfor valgte vi å gå for motor controlleren L298N, siden vi hadde det tilgjengelig på dronesonen. Vi skal bruke 2 L298N, en til å kjøre forward current og den andre til å kjøre reverse current.

 

Siden arduinoen opererer på 5v og pumpen trenger 12v for å operere, så har vi brukt en supply voltage som gir 12V. Så har vi koblet en relay mellom supply voltage og arduinoen til å styre strømmen og spenningen slik at arduino brettet ikke skal bli kortsluttet. Vi valgte Relay fordi det er enkelt å kontrollere. Relay har høysikkerhet og det er lett tilgjengelig forhold til mosfet.

 

Så har vi brukt programmet Fritzing til å tegne opp hvordan vi koblet de enkelte komponentene sammen.

 

finaly

Operasjonsbeskrivelse og mye mer

Her kommer en operasjonsbeskrivelse for deg som har lyst til å se hvordan vi satt sammen våres temposcope. Filene til Solid Works og 2D-tegninger ligger i linken under (ps. den må kopieres og limes inn i nettleseren).

I samme link ligger også sammenstillingsvidioer for den som har lyst til å se. Passer fint å bruke sammen med operasjonsbeskrivelsen.

https://l.facebook.com/l.php?u=https%3A%2F%2Fdrive.google.com%2Fdrive%2Ffolders%2F0Bx9bWc6go6aMT2FHR1JOZTB0ajg%3Fusp%3Dsharing&h=GAQEO08Rs

Forklaring på hvordan Temposcope sin liksom A.I. er bygget opp.

Heisann bloggen!

Tenkte jeg skulle dele med dere andre hvordan oppsettet på hjernen til vårt lille projekt ser ut. Det ser kanskje ikke så pent ut, men det fungerer ganske bra! Tenk “Siri” ifra eple bedriften. Jeg har prøvd å lage en simplifisert utgave av den. Min versjon heter dog “Pide” som er et ordspill på Raspberry pi og “Heidi” siden jeg både elsker Pi og sveitsiske fjellgjetere.

 

Alt som omhandler Pide!

Utstyr

  • Raspberry Pi model 3b
  • Creative Webcam HD 700
  • NITO ekstern høytaler

 

Eksterne biblotek

  • Google Speech API
  • OpenWeatherMap API
  • OpenCV v2.4.13
  • Pickle
  • JSON

 

Imports

  • Pickle
  • Threading
  • Time
  • Random
  • gTTs
  • Numpy
  • pyowm

 

Programmeringspråk

  • Python 2.6

 

Programmet består av

  • Usermanager.py
  • User.py
  • Sendweather.py
  • Pideweather.py
  • Pidestt.py
  • Pidetts.py
  • Pide.py
  • Main.py
  • Create_data.py
  • Config.py

Main.py

Denne filen består av to klasser.

Brain og Vision.

Vision

Denne klassen har ansvaret for å lete etter brukeren visuelt ved bruk av OpenCV. Den starter med å laste inn en “haarcascade” fil produsert av intel som gjør det mulig for OpenCV å gjenkjenne objekter, i dette tilfellet er det ansikter. Deretter vi en liste over ansikter som ligger i mappen angitt til å være mappen der brukerenes ansikt lagres.

Denne listen benyttes til “trene” OpenCV, slik at det vil gjenkjenne de fjesene som ligger i listen ved bruk av det som kalles “Fischer Face Recognizer”.

Når denne oppgaven er utført starter den å strømme ifra web kameraet og hvis den ser en kjent bruker sender den melding om at bruker er funnet via “Queue” til hjernen.

Grunnen til at en kø benyttes er at dette er den tryggeste måten å kommunisere på tvers av tråder i python siden den klassen har innebygd semaphorer som sørger for at mann ikke prøver å lese og skrive til samme sted i minnet ifra to forskjellige tråder.

Brain

Denne klassen er selve grunnlaget for programmet. Den har ansvaret for å ta imot en bruker og behandle brukerens ønsker. Når Brain har logget inn en registrert bruker og eller fått oppfordring til å starte igjennom tale, gir den en melding til Vision slik at videostrømmen termineres. Dette gjør jeg for å redusere forbruket av prosessorkraft slik at de viktige oppgavene får optimal ytelse.

 

Pide.py

Denne filen er grunnstammen i programmet. Det er her alle forgreninger ut til resten av funksjonaliteten kommer ifra. Mann kan si det slik at denne filen er personligheten til Pide da den har som oppgave å behandle og respondere på audiotoriske intrykk.

Den består disse metodene:

 

  • Init

Oppgaven til init er å sette igang Pide sin mulighet til å konvertere språk til tekst og er det første som kjører når pide.py eksekveres.

 

  • LoginVoice

Oppgaven til LoginVoice er å prøve å finne hvilken bruker som benytter systemet dersom det ikke finnes noen bilde gjenkjenning av personen.

 

  • ConfirmPassword

Oppgaven til ConfirmPassword er å få oppgitt passordet til den antatte brukeren for å deretter sjekke at det er det riktige passordet til den registrete brukeren.

 

  • LoginUser

Oppgaven til LoginUser er å finne brukeren i registeret for å så sette brukeren som ønsker å benytte systemet som systemets nåværende bruker.

 

  • CreateUser

Denne metoden setter igang prosessen som skal opprette en ny bruker.

 

  • PlaySong

Prøv den, jeg utforder deg.

 

  • Repeater

Denne metoden benyttes til å si tilbake det som brukeren sa og blir mest brukt for å feilsøke.

 

  • GreetUser

Denne metoden har som formål å ønske brukeren velkommen. I en senere iterasjon vil den også benytte definert informasjon om brukeren til å modifisere hilsenen.

 

  • WeatherModule

Denne metoden sitt hovedformal er å innhente informasjon om hvor brukeren ønsker å få innformert værdata for.

 

  • GetWeatherAtTime

Denne metoden har som oppgave å innhente informasjon ifra brukeren om i hvilken tidsramme han ønsker værdata for.

 

  • GetUserRequest

Her danner vi brukergrensersnittet. Når TempoScope har en bruker innlogget er det her mann kan påvirke hvilke oppgaver mann ønsker utført. Jeg har prøvd å gjøre det slik at Pide leter etter nøkkelord i stedet for nøyaktige settninger slik at brukerern finner frem lettest mulig.

Bruker kan be om:

  • “Who am I” – Denne vil returnere hvilken bruker systemet antar at den nåværende brukeren er.
  • “Weather” – Denne vil iverksette WeatherModule og gi brukeren mulighet til å be om værdata
  • “Shutdown” – Skrur av maskinen
  • “Logout” – Terminerer den nåværende brukeren og setter temposcope tilbake til søk etter bruker modus.
  • “Pictures” – Gir brukeren mulighet til å ta nye bilder for å oppdatere profilen sin.
  • “Report” – Denne returnerer en liste over alle registrerte brukere av systemet.
  • “Delete” – Denne gir nåværende bruker muligheten til å slette andre bruker profiler.
  • “Play” – Spiller favoritt sangen din.
  • “Time” – Returnerer hva klokken er lokal tid til systemet.
  • “Date” – Returnerer hvilken dag det er på nåværende tidspunkt.
  • “Help” – Returnerer instruks til brukeren om hvordan mann benytter systemet.

User.py

Dette er objektet som alle brukere lagres som. Hver bruker består av navn, passord, brukermappe og hjemsted.

Usermanager.py

Denne fila har ansvar over registeret av brukere.

Selve registeret er en liste over User objekter lagret i en pickle fil.

 

Metoder:

  • saveUsers

Denne metoden lagrer brukere til userlist.pkl som er en pickle fil.

  • loadUsers

Denne metoden henter ut brukerene ifra userlist.pkl som er en pickle fil.

  • userReport

Denne metoden leser igjennom alle user objekter som ligger i users lista.

  • addUser

Denne metoden har som oppgave å opprette brukere.

Personen som ønsker å opprette en bruker vil først bli spurt om hvilke brukernavn de ønsker å opprette, deretter må de opprette ett passord og ett hjemsted.

Når all ønskelig informasjon om brukeren er innhetet, vil web kameraet ta bilder av brukeren slik at personen kan bli gjenkjent av OpenCv, deretter vil user objektet bli opprettet lagret i bruker lista.

  • setPsw

Denne metoden har som oppgave å opprette passord for brukeren som ønsker å registrere seg.

  • setHomeLocation

Denne metoden har som oppgave å innhente informasjon om hvor brukeren som ønsker å registrere seg har bopel.

  • deleteUser

Denne metoden behandler alle forespørsler og ønsker om å fjerne brukere ifra bruker lista og sørger for at all data om bruker blir fjernet.

 

Config.py

Denne filen har som oppgave å opprette mapper dersom de mangler.

Den inneholder også informasjon som blir delt imellom de andre filene.

 

Create_data.py

Denne fila inneholder funksjonaliteten som gjør det mulig for web kameraet å ta bilder slik at brukere kan opprette bruker profiler.

Pidestt.py

Denne fila har ansvaret for alt som omhandler å gjøre språk om til tekst.

Pidetts.py

Denne fila har ansvaret for alt som omhander å gjøre tekst om til språk.

Pideweather.py

Denne fila tar for seg alt som benytter OpenWeatherMap sin api. For ordens skyld valgte jeg og bruke en python wrapper kalt pyowm siden det da ble litt ryddigere.

 

Andreas Holm

It’s alive!!.. or soon it will be.

Heisann Bloggen!

Nå har jeg laget meg litt tanker om hvordan grunn oppsettet til Hjernen bak temposcope vil fungere. Blir gøy og leke Frankenstein.

 

Øyne

Temposcope sine øyne er basert på OpenCV slik at den kan gjenkjenne brukere og dermed logge dem inn hvis den detekterer dem via et web kamera som er koblet til en Raspberry Pi.

Ører

Temposcope sine ører er basert på Google sin speech recognition API, slik at den kan forstå brukeren sine etterspørsler og behandle de som normal tekst og dermed utføre oppgaven som etterspørres. Lyd blir tatt opp av web kamera og sent til Google der den blir omformet til tekst og sendt tilbake. I tilfelle Øynene ikke registrerer at brukeren er prøver å oppnå forbindelse med Temposcope, kan også ørene benyttes til å logge inn brukeren via å snakke til den.

 

Hjerne

Temposcope sin hjerne har som oppgave å behandle informasjonen den får igjennom øynene og øre, slik at den kan gjennomføre oppgavene den blir satt til.

Dette er blitt løst ved å produsere en simulert simpel kunstig intelligens som vi kaller “Pide”. Pide sin oppgave er å behandle og bevare et register over registrerte brukere. I registeret kan Pide legge til, slette eller oppdatere brukerene på oppfordring ifra brukeren som er logget inn.

Den vil også svare brukeren ved hjelp av Google sin Speech API, slik at brukeren forstår hvilken alternativer og hvilken informasjon som er tilgjengelig.

Et av alternativene brukeren har tilgjengelig er å spørre om været. Pide vil da oppfordre bruker til å angi hvilken lokasjon som brukeren ønsker å vite vær tilstanden og i hvilken tidsramme brukeren ønsker å vite været innenfor.

Når lokasjon og tidspunkt er gitt av bruker, vil Pide benytte OpenWeatherMap sin API til å innhente værdata, for å så kommunisere det igjennom språk og deretter sende informasjonen videre til kroppen som da simulerer værtypen på det angitte stedet.

 

 

Andreas Holm

Arbeidsfordeling mellom data og elektro studenter.

Heisann bloggen!

Vi har nå foretatt en arbeidsfordeling slik at vi finner ut hvordan vi skal angripe oppgaven videre.

Data studentene bidrar i denne oppgaven ved å hente og prosessere værdata, samt lage ett brukergrensesnitt og sørge for at dataen som blir innhentet blir eksekvert korrekt på hardware siden av prosjektet.

Dette løser vi ved at data studentene splitter seg og jobbet med to separate oppgaver.

Den første delen av oppgaven blir å forsøke på å produsere en “hjerne” som kan “se” og “høre”, slik at produktet har mulighet til å kjenne igjen brukeren og utføre oppgaver basert på hva brukeren ønsker å gjøre. Den oppgaven blir Andy sin.

Den andre delen av oppgaven blir å produsere en “kropp” som kan utføre oppgavene den får beskjed om ved å fysisk manipulere eksterne komponenter. Her jobber Ine sammen med Thomas og Jan Erik.

 

Samme blog, nytt sted.

Velkommen til bloggen for Temposcope!

Vi driver herved å flytter alle våre tidligere blogg poster ifra tidligere blogg til denne. Poster blir flyttet forløpende så hold dere fast!

 

 
We were somewhere around Barstow, on the edge of the desert, when the drugs began to take hold.
– Hunter S. Thompson