Veien mot et smart sikkerhetssystem


Heisann!

Dette er en oversikt tilbake til starten av prosjekter vårt og frem til i dag.

 

Uke 34

Første uke av prosjektet er i gang og vi har dannet en gruppe. Vi endte opp med å bli en gruppe på 6 kjekke karer; Martin og Tony fra elektro, Håkon og Torkil fra data og Jonas og Daniel fra maskin. Så kom valget av system. Det foregikk i flere faser, da vi ikke var helt  klar over hva som inngikk i et smart system. Mye av tiden gikk med til å definere hva et smart system er. Vi avtalte til slutt at vi skulle bruke uka på å komme opp med våre forslag, for så å gå igjennom dem i slutten av uka og velge en av dem.

Da vi møttes diskuterte vi de ulike forslagene, blandt dem var minigarasje, vekkerklokke, 3D printer og sikkerhetsystem. Vi endte opp med å velge sikkerhetsystemet.

 

Uke 35

Denne uka gikk  tiden med til å finne ut hvilke oppgaver systemet vårt skal utføre og hvilke metoder vi kan bruke for få det til.

Vi kom fram til at systemet skal kunne låse opp og igjen ytterdøra samt åpne og lukke vinduer i huset automatisk og at det skal lære seg typiske klokkeslett for avreise og ankomst. Poenget er at systemet skal låse døra og lukke vinduer når huseieren drar og låse og lukke opp når han kommer hjem.

Så bestemte vi oss for at systemet skal omfatte smart vindu og dørlås, kamera med ansiktsgjenkjenning (del av dørlåsen, på den måten at den gir noen bestemte personer tilgang til huset), bevegelsessensorer og for strengere sikkerhet er brikkeleser med “nærhetsteknologi” (bluetooth, NFC eller lignende) inkludert. Utenfor vanlige ankomsttider vil vi at systemet skal kreve begge sikkerhetsmetoder for adgang. Datagutta utvekslet idéer rundt system modell.

 

Uke 36

Vi har jobbet mer med hvordan systemet skal utføre oppgavene sine og laget en midlertidig komponentliste.

Maskin så på ulike måter å integrere låsemekanismen i døra og hvordan de skal få til å åpne vinduet. Etter diskusjon med elektro virker det som steppermotorer blir en del av begge løsningene.

Elektro kom fram til at de vil bruke arduino til styring av mekanismene i både vindu og dør, fordi arduinoen er enkel å tilpasse og har et stort komponentutvalg. Som bevegelsessensor valgte de å bruke en PIR-detektor som ved hjelp av infrarød sensor kan oppdage bevegelser i huset og utenfor inngangsdøren. Det er en pålitelig og mye brukt sensor som brukes til nettopp dette, så valget var ganske enkelt.

Data fikk tak i Raspberry Pien, Pi kamera og  PIR-detektor fra skolen. Og deretter satt de i gang med å installere operativsystem på Pien, i tillegg til å installere software som trengtes for å kunne styre Pien fra en annen PC over nettet, kalt “Putty” og “Xming”. Dette gjorde de for å slippe å måtte sette opp skjerm, tastatur og mus hver gang de skulle programmere på Pien. Dette ga datastudentene muligheten til å programmere på Pien samtidig fra hver sin PC!

raspiraspi-cam-v2

 

Uke 37

Vi møttes for å diskuterte løsninger på hvordan ansiktsgjenkjenningen og kameraet skulle fungere. Først ville vi at kameraet skulle kunne bevege seg for å finne ansiktet til folk uavhengig av høyde, men bestemte til slutt at kameraet skulle være fiksert i døra siden det ikke vil utgjøre noen stor forskjell i dette prosjektet.

Elektro fikk tak i arduino mega og brødbrett av skolen, så de kan gå i gang med koding i arduino.

Data starta vi med å laste ned og installere OpenCV, som er open source programvare som trengs for å bruke ansiktsgjenkjenning med Pien. De lagde også et demo program, som kan ses i bruk på bildet under.

facerec-test-resultat

 

Uke 38

Maskin diskuterte hvordan vinduåpneren skal fungere og kom fram til at de vil ha et design som overfører kraft fra en steppermotor til et tannhjul og videre til en gjengestang som skrus ut og åpner vinduet. Det ferdige designet ble printet ut ved hjelp additisjons produksjon (3D printet). Dette var fordi formene var såpass komplekse at den måttet ha blitt delt opp om det skulle gjøres på en annen måte.

Elektro arbeidet med kretsskjema for sikkerhetssystemet. Det er greit å få en visuell oversikt over koblingen mellom de forskjellige komponentene. I utarbeiding av kretsskjema jobbet de i et program som heter Fritzing. Det var med forbehold om at ting kan endre seg ettersom vi jobber mer med prosjektet og uventede overraskelser kan gjøre at det blir andre løsninger senere, men det er en god foreløpig illustrasjon og oversikt over sikkerhetssystemet vårt.

Data planla hvordan de skulle få systemet til å oppføre seg smart. De så på ulike måter å sette opp programmet, scripts, osv.

tid-logging-brainstorming-sketch

Uke 39

Elektro startet arbeidet med hvordan åpning/låsing av dør og vindu skal fungere rent kodemessig.

De tenkte også ut måter for kommunikasjon mellom raspberry pi og arduino og hvilken mikrokontroller som skal styre hva.

Maskin lagde CAD-modell til vinduåpneren og leverte den til 3D printing. De undersøkte også hvilke deler som måtte kjøpes inn til denne. Så skaffet de materialer til selve vinduet og begynte å bygge det.

b2

Data starta å programmere scriptet for deteksjon av når en person drar og returnerer til hjemmet. Scriptet kalte de TimeLogger.

tid-logging-kode-inn-i-database

 

Uke 40

Data og Elektro hadde et kort møte hvor det ble diskutert forskjellige grensesnitt mellom Raspberry Pi og Arduino. Etter litt bestemte de seg for å bruke i2c-metoden, i stedet for firmata.

Maskin skaffet deler til vinduåpneren (gjengestang, steppermotor, vinkelledd, tanhjul, mm) og fortsatte å bygge vinduet. Deler av vinduet måttet bygges på nytt pga for dårlig håndtverk, men det ble ferdig i løpet av uka.

b3

Elektro kom fram til å bruke I2C overføring i kommunikasjonen mellom arduino og Raspberry PI. De testet hvordan slik overføring fungerer ved å jobbe med programmering av dette i arduino. Så testet de overføring og det fungerte som det skulle mellom en arduino nano og en arduino mega. Da gjenstår det å se om det fungerer like problemfritt mellom Raspberry Pi og arduino. Det ble også gjort noen endringer på kretsskjema for å akkomodere endringene i løsningene våre.

b4

Data fant også ut at vi trengte enda en PIR-detektor for scriptet som sjekket når en person drar og returnerer. Og implementerte dette i koden.

raspi-pir-sensor

 

Uke 41

Maskin fikk tak i resten av delene de trengte til vinduåpneren, satte den sammen og testet at den fungerte som den skulle.

b5

Data besteme seg for å bruke en enkel database for å lagre tidene huseieren dro og kom hjem. Valget falt på TinyDB siden den ikke trenger noen form for kommunikasjon eller SQL. Den lagrer alt i en lokal fil, er lett å bruke og godt dokumentert.

database-format-pa-info

Elektro fant ut at dei ikke trengte I2C likevel. Dei skal løse kommunikasjon mellom PI og arduino med kun 2 ledninger i stedet, siden de fant ut at det er mer hensiktsmessig i forhold til vår oppgave ettersom PIen kun skal styre om Arduinoen skal åpne døra og vinduet, og Arduinoen skal gi signal til PIen når brikkeleseren er brukt. Etter dette satte de i gang med å se på koding av steppermotorene.

 

Uke 42

Data begynte med script nummer to, som skulle hente dataen fra databasen og lage det de kalte “TimeFrame”, som deretter skulle brukes til å vite når man skulle låse vinduer og dører, ved å sende signal til Arduinoen når visse betingelser var sanne.

Maskin fortsatte å jobbe med hvordan dørlåsen skal fungere. Kom fram til at en god løsning er å montere en steppermotor rett på låseakselen. De begynte også å tegne boksen som skal skjule låsesystemet, men denne kan ikke gjøres ferdig før vi får tak i en dør og bygger en ramme til denne.

Elektro jobbet med arduinokode for åpning og låsing av vindu og dører. De lekte litt med  tanken å lage power supply og en batteribackup som kan slå inn hvis strømmen går eller blir tuklet med.

 

Uke 43

Data fant ut at når tidene er lagret i databasen må de tas ut og analyseres for å kunne lage en TimeFrame. TimeFrame er gjennomsnittet av når personen drar og kommer hjem fra jobb.

F.eks. hvis personen drar ca. 07 og kommer hjem ca 16 hver dag vil timeFrame-en være 07-16.

Vi har gjort det slik at vi bare tar med ukedagene. Helgen (lørdag og søndag) er ikke med i beregningen. Personen må også være borte mellom 5 og 10 timer for at det skal bli tatt med.

Elektro jobbet videre med arduino-koden. De gjorde endringer på hvordan åpning og låsing av både vinduer og dør skal foregå.

Maskin diskuterte hva som er beste plassering for PIR-detektorer og PI kamera. Etter konsultering med data og elektro anngående plass til ledninger og nødvendige komponenter bestemte de seg for at det beste var å plassere sensorene over døra, den med kamera og PIR på utsiden og den med bare PIR på innsiden. Denne plasseringen gjør det lettere å trekke ledninger til sensorene.

 

Uke 44

Maskin tegnet bokser til PIR-detektor og PI kamera, dokumenterte disse i 2D og leverte modell til 3D printing.

b6

b7

Data har til nå hatt to script, og er i tenkeboksen på hvordan de skal eksekvere dem og i hvilken rekkefølge. Det står mellom å starte scriptB fra scriptA, eller å kjøre de samtidig. Et annet problem er hvordan de skal dele data mellom script-ene. En løsning er å lage en lokal fil hvor det ene scriptet skriver til, og det andre leser fra, kalt “pickle”.

Elektro jobbet med steppermotorene. De støtte på et problem med steppermotoren, den fungerte bare den ene veien, dvs med klokka og ikke mot. De skal se videre på dette neste uke.

b8

 

Uke 45

Data har implementert klasser i scriptene så de kan bruke variablene og funksjonene de lagde tidligere (som var uten klasser), i et Main script som eksekverer det de trenger av funksjoner når de trenger dem. Main scriptet skal oppføre seg som en master, for å få oversikt over hva som skal gjøres når. I tillegg til kommunikasjon med Ardionoen som derfra tar seg av styring av motorene etc.

Elektro fikset problemet med steppermotoren, og ordnet slik at den gikk i “dvale” når den ikke er i bruk, så den sparer strøm. Hvis den ikke går i “dvale” er det fortsatt strøm i spolene til motoren slik at den holdes fast.

Maskin diskuterte hvordan de vil produsere deler av dørlåsen og hovedboksen. I stedet for å 3D printe er planen å tilvirke disse fra metallplater. Grunnen til dette er at noen av delene blir relativt store, men også at de vil prøve seg på noe annet enn 3D printing.


Leave a Reply