Category Archives: Temposcope

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

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