% CREATED BY MAGNUS GUSTAVER, 2020
\chapter{Introduktion}
\label{sec:introduktion}
\section{Syfte}
\label{sec:syfte}
De senaste åren har bostadsinbrotten i Sverige ökat. Från 2015 till 2021 har andelen hushåll som blivit utsatta för bostadsinbrott legat på en 
stadig nivå runt 1,8 \%, till skillnad från tidigare år då andelen legat mellan 1,2 \% och 1,7 \%. Stölder vid inbrott har även ökat de senaste åren, 
särskilt vid den senaste mätning år 2020 där stölderna ökade med 8 \% jämfört med föregående år~\cite{bra_bostadsinbrott}. Ett larmsystem är ett bra sätt
att avskräcka stölder då det agerar som ett förhinder och komplicerar en potentiell stöld.

\section{Mål}
Målet med detta projekt var att konstruera ett larmsystem bestående av en centralenhet och flera periferienheter. De
periferienheter som projektgruppen ville konstruera var en dörrenhet som kan känna av om en dörr är öppen eller stängd och hantera den informationen, larma osv.
Gruppen ville även konstruera en enhet som kunde känna av rörelse. Målet med denna enhet var att med hjälp av två subenheter kunna göra just detta.
En av subenheterna var en vibrationssensor som ska kunna monteras på t.ex. ett fönster för att detektera om någon försökte bryta sig in. Den andra subenheten var en avståndsmätare som
ska agera rörelsesensor.

\subsection{Systemöversikt}
\label{ssec:systemöversikt}
Systemet är grundat i centralenheten, enheten som hanterar larm och styr periferienheterna. Kommunikation
med periferienheterna sker via en kommunikationsbuss från centralenheten. På kommunikationsbussen sänds alla
styrsignaler och data som systemet kräver utbytes. Knappsatsen används för att avlarma systemet och är avskilt
ansluten till centralenheten vars kommunikationsprotokoll är helt separat från bussen. Hårdvaran är 
sammankopplad som i figur~\ref{fig:systemöversikt}. 

\begin{figure}[H]
    \centering
    \includegraphics{figure/auxiliary/systemöversikt}
    \caption{Systemöversikt av hårdvara}
    \label{fig:systemöversikt}
\end{figure}

\subsection{Modulöversikt}
\label{ssec:modulöversikt}
Enheter interagerar med varandra och sig själva genom olika kodmoduler, vars struktur kan ses i figur~\ref{fig:modulöversikt}.
Varje modul är ett separat kodpaket och är designade för enkel sammankoppling med andra kodpaket, exempelvis
är dörr-, rörelse- och centralenhetens nätverkslager samma kodpaket. Abstraheringen inom varje kodpaket är hög
för att underlätta och påskynda implementation och särkoppling av moduler.

\begin{figure}[H]
    \centering
    \includegraphics[width = \textwidth]{figure/auxiliary/modulöversikt}
    \caption{Modulöversikt av system}
    \label{fig:modulöversikt}
\end{figure}

%detta blocket ligger bara här för referensera projektplanens syfte och mål
\begin{comment}
ålet med projektet är att konstruera ett säkert larm- och låssystem med en centralenhet samt flera periferienheter.
Systemet kommer ha stöd för ett flertal dörr- och rörelselarm kopplade till centralenheten.
Varje enhet ska styras av en mikrokontroller av modellen MD407. Kommunikation mellan dessa enheter kommer att ske genom en CAN-buss (Controller Area Network) med ett egenutvecklat protokoll som ska kunna kommunicera även om det förekommer störningar på bussen.
För att simulera störningar kommer en MD407 skicka ut en justerbar mängd brusdata på bussen.

Syftet med detta projekt är att utveckla ett säkert larmsystem som ger trygghet i hemmet. Systemet ska fungera felfritt i både villor och lägenheter 
med möjligheten att koppla flera dörrlarm och sensorer till en och samma centralenhet. Sensorerna ska kunna känna av både rörelse i rummet samt 
vibrationer från t.ex. ryck i en dörr.
\end{comment}

Larmsystemet består av hård- och mjukvara som tillsammans bildar en funktionell produkt när de sammanlänkas.
Tillsammans ska dessa delar samverka för att utlösa larm när fördefinierade kriterier uppnås, vilka t.ex.
kan vara:
\setlength{\parskip}{1pt plus 1em}
\begin{itemize}
    \item En dörr öppnas utan att en korrekt kod angivits.
    \item En komponent slutar fungera.
    \item En sensors mätvärde överskrider larmtröskeln.
\end{itemize}
\setlength{\parskip}{1em plus 1pt}
För att denna logik, kommunikation och samspel ska kunna existera måste systemet vara sammankopplat på
ett specifikt sätt vilket definieras i systemöversikten (\ref{ssec:systemöversikt}) nedan. Hur mjukvaran platsar in i systemöversikten
beskrivs i modulöversikten (\ref{ssec:modulöversikt})

\section{Arbetsmetod}
\label{sec:Arbetsmetod}
Eftersom koden var så abstraherad och särkopplad så var det lätt att delegera ut vad som behövde kodas så alla kunde
jobba på sin egen grej utan att det strulade med versionshanteringen~(\ref{ssec:Utvecklingsmiljö och kommunikation}).

\subsection{Utvecklingsmiljö och versionshantering}
\label{ssec:Utvecklingsmiljö och kommunikation}
Utvecklingen av all mjukvara skedde i programspråket C, då det finns väldigt bra möjlighet att kompilera detta språk till maskinkod som MD407 kan exekvera. För
att utveckla denna kod använde projektgruppen utvecklingsmiljöerna VS Code, Clion och Codelite. För samarbete och versionshantering användes
ett Git-fjärrarkiv med tjänsten \href{www.github.com}{github.com}. Det lades stor vikt på att testa reguljärt på hårdvara då simulatormjukvaran
SimServer är opålitlig.

\subsection{Testning}
\label{sec:testning}
Testningen skedde först enskilt på de olika modulerna vilket gjorde det lättare eftersom det var mindre saker som kunde gå fel samt att felen var enklare att hitta.
När alla delar fungerade separat kunde de interageras med varandra och sedan testas på det sättet. All kod testades nästan exklusivt på hårdvara då
simulatormjukvaran inte gick att lita på. Många saker som fungerade på mjukvaran fungerade inte på hårdvaran. Alla komponenter fanns inte heller tillgängliga på
simulatorn vilket också gjorde simulatortestning svårt.



