\chapter{Hardware}
\label{cha:Hardware}

Bevor man Daten auswerten kann, muss man diese erst aufzeichnen. Hierzu wird ein \emph{Raspberry Pi} verwendet, welcher die komplette Aufzeichnung und Auswertung steuert. An diesem sind sämtliche Sensoren und das Display zur Anzeige der aktuellen Messwerte angeschlossen.

\section{Der Raspberry Pi}
\label{sec:Raspberry}
Der \emph{Raspberry Pi} ist ein \gls{Einplatinencomputer}, der 2012 von der \emph{Raspberry Pi Foundation} auf den Markt gebracht wurde.

\begin{figure}[h]
  \centering
     \includegraphics[width=0.8\textwidth]{figures/raspberry.jpg}
 \caption[Raspberry Pi - Modell B]{Raspberry Pi - Modell B}
  \label{fig:raspberry}
\end{figure}

\subsection{Geschichte}
\label{subsec:Geschichte}
Ursprünglich war der Raspberry Pi als günstiger Computer gedacht, um britischen Jugendlichen das Programmieren näher zu bringen. An der \emph{University of Cambridge} stellte man fest, dass die Vorkenntnisse von Studienanfängern immer geringer wurden, weil sie -- sowohl privat als auch in der Schule -- sich immer weniger mit der Funktionsweise von Computern und Programmieren beschäftigen. Daher wollte man einen Computer entwickeln, mit dem die Jugendlichen experimentieren können.
\footcite{aboutraspberry}$^,$
\footcite[Geschichte]{wiki:raspberry}

Aufgrund des günstigen Preises\footnote{je nach Modell zwischen 30 und \SI{40}{\text{\texteuro}}}, der leichten Erweiterbarkeit und der guten Softwareunterstützung ist der \emph{Raspberry Pi} bei Bastlern sehr beliebt. Inzwischen wurden 3,8 Millionen Stück verkauft (Stand Oktober 2014\footcite{verkauf}) und 6 verschiedene Modelle entwickelt (bis Februar 2015).

\subsection{Technische Daten}
\label{subsec:Technische Daten}
Die Technik in einem Raspberry Pi ist vergleichbar mit der eines Smartphones. Der Raspberry Pi hat eine \gls{CPU} mit \SI{700}{\glslink{Hertz}{\mega\hertz}}, welche auf bis zu \SI{1}{\glslink{Hertz}{\giga\hertz}} übertaktbar ist, und je nach Modell \SI{256}{} oder \SI{512}{\mega\byte} Arbeitsspeicher. Das neueste Modell (\emph{Raspberry Pi 2 Model B}; lieferbar seit dem 2. Februar 2015) hat sogar 4\ensuremath{\times} \SI{900}{\glslink{Hertz}{\mega\hertz}} \gls{CPU}-Takt und \SI{1}{\giga\byte} Arbeitsspeicher. Als Speicher für das Betriebssystem (verschiedene \glspl{Linux-Distribution} stehen zur Auswahl) wird eine SD-Karte bzw. eine microSD-Karte verwendet.

Zur Stromversorgung genügt ein normales Handyladegerät mit Micro-USB-Anschluss und mindestens \SI{1}{\gls{Ampere}} Stromstärke, denn der Raspberry Pi verbaucht nur \SI{3.5}{Watt}\footcite{strom} (Modell B).

Zum Anschließen anderer Hardware gibt es zwei USB-Anschlüsse und mindestens 26 \gls{gpio}-Pins.

\section{Sensoren}
\label{sec:Sensoren}

Zur Messung der Umweltdaten werden folgende Sensoren verwendet:
\begin{itemize}
\item 4 Temperatursensoren \emph{DS18B20} (\ref{subsec:Temperatur})
\item Luftfeuchtesensor \emph{DHT22} (\ref{subsec:Luftfeuchtigkeit})
\item Luftdrucksensor \emph{BMP085} (\ref{subsec:Luftdruck})
\item Luftqualitätssensor \emph{VOLTCRAFT CO-20} (\ref{subsec:Luftqualitat})
\item\gls{CPU}-Temperatur des \emph{Raspberry Pi}
\end{itemize}
\subsection{Temperatur}
\label{subsec:Temperatur}

Mithilfe von 4 Sensoren des Typs \emph{DS18B20} werden die Innentemperatur, die Gehäusetemperatur und die Bodentemperatur (Außen) gemessen. Diese haben eine Messgenauigkeit von \SI{\pm 0.5}{\degreeCelsius}  und einen Messbereich von \SI{-10}{\degreeCelsius}  bis \SI{+85}{\degreeCelsius}. \footcite[20]{temp}

\begin{figure}[h]
  \centering
     \includegraphics[width=0.4\textwidth]{figures/temp_pin.png}
  \caption{Pinbelegung des DS18B20}
  \label{fig:temp_pin}
\end{figure}

Der Sensor wird mithilfe von einem \gls{1-Wire}-\gls{Bus} ausgelesen. Hierbei benötigt man (außer für die Stromversorgung mit \SI{5}{\gls{Volt}}) nur ein Kabel, auf dem die Daten übertragen werden.\footcite{1-wire} Zusätzlich wird ein \SI{4.7}{\kilo\glslink{Ohm}{\ohm}} Widerstand zwischen dem Pin für Daten und dem Pin für \SI[retain-explicit-plus]{+5}{\glslink{Volt}{\volt}} benötigt (siehe Abbildung \ref{fig:temp_pin}).
Ein weiterer Vorteil von 1-Wire ist, dass nahezu beliebig viele Sensoren auf einem Datenkabel parallel geschaltet werden können.

Die Messdaten des \emph{DS18B20} können auf dem Raspberry Pi sehr einfach ausgelesen werden, weil dies von einem Linux-\gls{Kernelmodul} erledigt wird. Um die Temperatur auszulesen, muss  nur eine \gls{Geraetedatei} ausgelesen werden, welche das Messergebnis in tausendstel Grad Celsius enthält (Siehe Abbildung \ref{fig:temp_screenshot}).

\begin{figure}[h]
  \centering
     \includegraphics[width=\textwidth]{figures/temp_screenshot.png}
  \caption{Die erste erfolgreiche Messung}
  \label{fig:temp_screenshot}
\end{figure}

\subsection{Luftfeuchtigkeit}
\label{subsec:Luftfeuchtigkeit}

Zum Messen der Luftfeuchtigkeit der Außenluft wird der \emph{DHT22} verwendet. Dieser kann auch die Temperatur messen. Die Messgenauigkeit beträgt \SI{\pm 0.5}{\degreeCelsius} und \SI{\pm 2}{\% .relative.Luftfeuchte}.\footcite{DHT22}
Wie der \emph{DS18B20} (\ref{subsec:Temperatur}) benötigt der Luftfeuchtigkeitssensor zusätzlich zur Stromversorgung nur ein Kabel zur Datenübertragung. Es können jedoch nicht mehrere Sensoren parallel geschaltet werden. \footcite[Wiring]{DHT}

\begin{figure}
  \centering
     \includegraphics[width=\textwidth]{figures/steckbrett.png}
  \caption{Anschlussskizze von \emph{DS18B20} (Mitte; \ref{subsec:Temperatur}), \emph{DHT22} (Links; \ref{subsec:Luftfeuchtigkeit}) und \emph{BMP085} (Rechts; \ref{subsec:Luftdruck})}
  \label{fig:steckbrett}
\end{figure}

Die Daten des Sensors werden von einem \gls{C}-Programm von \emph{Adafruit} ausgelesen.
\footcite[Software Install]{DHT}

\subsection{Luftdruck}
\label{subsec:Luftdruck}

Der \emph{BMP085} ist der präziseste Sensor. Er wird zum Messen des Luftdruckes und der Außentemperatur verwendet und hat dabei eine Genauigkeit von \SI{\pm 1.0}{\hecto\glslink{Pascal}{\pascal}} und \SI{0.5}{\degreeCelsius} bei \SI{25}{\degreeCelsius}\footcite[6]{BMP085}

Die Messdaten überträgt der Sensor über einen \gls{I2C}-\glslink{Bus}{Bus}. Dabei werden (zusätzlich zur Stromversorgung) \emph{zwei} Kabel zur Datenübertragung benötigt.
Über eines (in Abbildung \ref{fig:steckbrett} gelb) schickt der Raspberry Pi dem Sensor die Taktfrequenz, in der er die Daten übertragen soll, und im anderen (grün) werden die eigentlichen Daten übertragen.
\footcite[Hooking Everything Up]{bmp058_adafruit}

Auch hier werden die Daten von einem Programm von \emph{Adafruit} ausgelesen. \footcite[Using the Adafruit BMP Python Library (Updated)]{bmp058_adafruit}

\subsection{Luftqualität}
\label{subsec:Luftqualitat}
Der letzte Sensor, der hinzugekommen ist, ist der \emph{VOLTCRAFT CO-20}. Da CO\textsubscript{2}-Sensoren und andere genaue Luftqualitätssensoren teuer sind, habe ich mich für einen einfachen \acrshort{voc}-Sensor entschieden. Dieser misst die Menge an \emph{Flüchtigen organischen Verbindungen} in der Luft. Dies sind Stoffe, die schon bei niedrigen Temperaturen verdampfen. Sie können von verschiedensten Quellen stammen (\zB: Benzindämpfe, Tabakrauch, Lacke)\footcite[41\psqq]{innenraum} und von leichten Kopfschmerzen und Konzentrationsstörungen bis zu bleibenden Gesundheitsschäden führen.\footcite[Gesundheitliche Wirkung]{VOC}

Der Sensor gibt einen Wert an, der die relative Verschlechterung seit dem Einschalten angibt. Hierbei steht 450 für die anfängliche Qualität ist und ein höherer Wert für eine schlechtere Luftqualität.
Da der \emph{VOLTCRAFT CO-20} jedoch nicht mehr erhältlich ist, verwende ich den baugleichen \emph{Raumluftfühler} von Velux.\footcite{Velux}

\begin{figure}[h]
  \centering
     \includegraphics[width=\textwidth]{figures/velux.jpg}
  \caption{Velux Raumluftfühler}
  \label{fig:velux}
\end{figure}

Der Sensor wird über USB an den Raspberry Pi angeschlossen. Um die Daten unter Linux auszulesen, wird das Programm \emph{usb-sensors-linux}\footcite{usb-sensors-linux} verwendet.

\section{Display}
\label{sec:Display}

\begin{figure}[h]
  \centering
     \includegraphics[width=\textwidth]{figures/erstes_display.jpg}
  \caption{Das erste Display}
  \label{fig:erstes_display}
\end{figure}

Damit nicht immer ein Computer benötigt wird, um die aktuellen Messwerte zu erfahren, verwende ich ein Display, welches diese anzeigt. Ursprünglich habe ich ein 16x2 Zeichen \gls{LC-Display} von \emph{Conrad Electronic} verwendet.\footcite{conrad_datenblatt}
Dieses wird nach der Anleitung von \emph{schnatterente.net}\footcite{schnatterente} angeschlossen.

Da jedoch fix angelötete Kabel unflexibel sind, bin ich auf ein Display von \emph{Pollin.de}\footcite{display_pollin} umgestiegen, welches mit einer Steckverbindung angeschlossen wird.

\section{Anschluss}
\label{sec:Anschluss}

Anfangs wurde sämtliche Hardware auf einem \gls{Steckbrett} aufgesteckt und mit einzelnen Kabeln verbunden. Dies ist sehr praktisch für schnelle Versuche und häufige Änderungen, ist aber sehr unstabil und nicht transportabel.

\begin{figure}[h]
	\begin{minipage}[b]{0.45\textwidth}
		\centering
		\includegraphics[width=\textwidth]{figures/anschluss/1_1.jpg}
		\caption{\emph{DS18B20} (\ref{subsec:Temperatur})}
	\end{minipage}\hfill
	\begin{minipage}[b]{0.45\textwidth}
		\centering
		\includegraphics[width=\textwidth]{figures/anschluss/1_2.jpg}
		\caption{\gls{Steckbrett} mit Display (\ref{sec:Display})}
	\end{minipage}\hfill
	\begin{minipage}[b]{0.45\textwidth}
		\centering
		\includegraphics[width=\textwidth]{figures/anschluss/1_3.jpg}
		\caption{erste mehrwöchige Messung}
	\end{minipage}\hfill
	\begin{minipage}[b]{0.45\textwidth}
		\centering
		\includegraphics[width=\textwidth]{figures/anschluss/1_4.jpg}
		\caption{neue Sensoren auf dem \gls{Steckbrett}}
	\end{minipage}
\end{figure}

Daher wurden alle Sensoren auf \glspl{Streifenplatine} gelötet, welche mit Steckverbindungen und Kabeln miteinander verbunden werden.

\begin{figure}[h]
	\begin{minipage}[b]{0.45\textwidth}
		\centering
		\includegraphics[width=\textwidth]{figures/anschluss/2_1.jpg}
		\caption{Außensensoren}
	\end{minipage}\hfill
	\begin{minipage}[b]{0.45\textwidth}
		\centering
		\includegraphics[width=\textwidth]{figures/anschluss/2_2.jpg}
		\caption{Innensensoren}
	\end{minipage}\hfill
	\begin{minipage}[b]{0.45\textwidth}
		\centering
		\includegraphics[width=\textwidth]{figures/anschluss/2_3.jpg}
		\caption{Steckverbindung am Display}
	\end{minipage}\hfill
	\begin{minipage}[b]{0.45\textwidth}
		\centering
		\includegraphics[width=\textwidth]{figures/anschluss/2_4.jpg}
		\caption{Hauptplatine}
	\end{minipage}
\end{figure}

Die komplette Hardware ist nun in einer Holzbox, mit einer Öffnung für das Display und 3  \glspl{LED} auf der Vorderseite untergebracht. Eine grüne \gls{LED} signalisiert, dass die Aufzeichnung gerade läuft. Eine gelbe \gls{LED} leuchtet kurz auf, wenn gerade eine Messung aufgrund eines Fehlers wiederholt wird. Und eine rote \gls{LED} zeigt, dass die Aufzeichnung gerade gestoppt ist. Zusätzlich gibt es am rechten Rand eine Öffnung für die USB-Anschlüsse und zwei Steckverbindungen für die Außensensoren. Am linken Rand ist eine kleine Öffnung für die Spannungsversorgung.

\begin{figure}[h]
	\centering
	\includegraphics[width=0.75\textwidth]{figures/anschluss/2_5.jpg}
	\caption{Komplette Hardware}
\end{figure}	

\begin{figure}[h]
  \centering
     \includegraphics[width=0.75\textwidth]{figures/anschluss/3.jpg}
  \caption{Die Hardware in der Holzbox}
  \label{fig:holzbox}
\end{figure}