Software weiter (Display)
This commit is contained in:
parent
f6172bd5ac
commit
430b4ff47e
8 changed files with 165 additions and 128 deletions
166
code/main.sh
166
code/main.sh
|
@ -26,78 +26,78 @@ then
|
|||
fi
|
||||
while true
|
||||
do
|
||||
uhrzeit=$(date +%Y/%m/%d\ %H:%M:%S)
|
||||
uhrzeit_display=$(date +%d.%m\ %H:%M:%S)
|
||||
uhrzeit_lang=$(date +%d.%m.%y\ %H:%M:%S)
|
||||
rasp=$(/opt/vc/bin/vcgencmd measure_temp | cut -c 6,7,8,9)
|
||||
temp1=$(echo "scale=3; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/10-000802b53835/w1_slave | awk -F 't=' '{print $2}') / 1000" | bc -l)
|
||||
while [ "$temp1" == "-1.250" ] || [ "$temp1" == "85.000" ]
|
||||
do
|
||||
gpio write 13 1
|
||||
echo "----Temp1: $temp1"
|
||||
temp1=$(echo "scale=3; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/10-00080277abe1/w1_slave | awk -F 't=' '{print $2}') / 1000" | bc -l)
|
||||
gpio write 13 0
|
||||
done
|
||||
temp2=$(echo "scale=3; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/10-00080277a5db/w1_slave | awk -F 't=' '{print $2}') / 1000" | bc -l) #Gerätesensor 1
|
||||
while [ "$temp2" == "-1.250" ] || [ "$temp2" == "85.000" ] || [ "$temp2" == "85.000" ]
|
||||
do
|
||||
gpio write 13 1
|
||||
echo "----Temp2: $temp2"
|
||||
temp2=$(echo "scale=3; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/10-00080277a5db/w1_slave | awk -F 't=' '{print $2}') / 1000" | bc -l)
|
||||
gpio write 13 0
|
||||
done
|
||||
temp3=$(echo "scale=3; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/10-000802b4635f/w1_slave | awk -F 't=' '{print $2}') / 1000" | bc -l) #Außensensor
|
||||
while [ "$temp3" == "-1.250" ] || [ "$temp3" == "85.000" ] || [ "$temp3" == "85.000" ]
|
||||
do
|
||||
gpio write 13 1
|
||||
echo "----Temp3: $temp3"
|
||||
temp3=$(echo "scale=3; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/10-000802b4635f/w1_slave | awk -F 't=' '{print $2}') / 1000" | bc -l)
|
||||
gpio write 13 0
|
||||
done
|
||||
temp4=$(echo "scale=3; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/10-00080277a5db/w1_slave | awk -F 't=' '{print $2}') / 1000" | bc -l) #Gerätesensor 2
|
||||
while [ "$temp3" == "-1.250" ] || [ "$temp4" == "85.000" ] || [ "$temp4" == "85.000" ]
|
||||
do
|
||||
gpio write 13 1
|
||||
echo "----Temp4: $temp4"
|
||||
temp4=$(echo "scale=3; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/10-00080277a5db/w1_slave | awk -F 't=' '{print $2}') / 1000" | bc -l)
|
||||
gpio write 13 0
|
||||
done
|
||||
uhrzeit=$(date +%Y/%m/%d\ %H:%M:%S)
|
||||
uhrzeit_display=$(date +%d.%m\ %H:%M:%S)
|
||||
uhrzeit_lang=$(date +%d.%m.%y\ %H:%M:%S)
|
||||
rasp=$(/opt/vc/bin/vcgencmd measure_temp | cut -c 6,7,8,9)
|
||||
temp1=$(echo "scale=3; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/10-000802b53835/w1_slave | awk -F 't=' '{print $2}') / 1000" | bc -l)
|
||||
while [ "$temp1" == "-1.250" ] || [ "$temp1" == "85.000" ]
|
||||
do
|
||||
gpio write 13 1
|
||||
echo "----Temp1: $temp1"
|
||||
temp1=$(echo "scale=3; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/10-00080277abe1/w1_slave | awk -F 't=' '{print $2}') / 1000" | bc -l)
|
||||
gpio write 13 0
|
||||
done
|
||||
temp2=$(echo "scale=3; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/10-00080277a5db/w1_slave | awk -F 't=' '{print $2}') / 1000" | bc -l) #Gerätesensor 1
|
||||
while [ "$temp2" == "-1.250" ] || [ "$temp2" == "85.000" ] || [ "$temp2" == "85.000" ]
|
||||
do
|
||||
gpio write 13 1
|
||||
echo "----Temp2: $temp2"
|
||||
temp2=$(echo "scale=3; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/10-00080277a5db/w1_slave | awk -F 't=' '{print $2}') / 1000" | bc -l)
|
||||
gpio write 13 0
|
||||
done
|
||||
temp3=$(echo "scale=3; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/10-000802b4635f/w1_slave | awk -F 't=' '{print $2}') / 1000" | bc -l) #Außensensor
|
||||
while [ "$temp3" == "-1.250" ] || [ "$temp3" == "85.000" ] || [ "$temp3" == "85.000" ]
|
||||
do
|
||||
gpio write 13 1
|
||||
echo "----Temp3: $temp3"
|
||||
temp3=$(echo "scale=3; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/10-000802b4635f/w1_slave | awk -F 't=' '{print $2}') / 1000" | bc -l)
|
||||
gpio write 13 0
|
||||
done
|
||||
temp4=$(echo "scale=3; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/10-00080277a5db/w1_slave | awk -F 't=' '{print $2}') / 1000" | bc -l) #Gerätesensor 2
|
||||
while [ "$temp3" == "-1.250" ] || [ "$temp4" == "85.000" ] || [ "$temp4" == "85.000" ]
|
||||
do
|
||||
gpio write 13 1
|
||||
echo "----Temp4: $temp4"
|
||||
temp4=$(echo "scale=3; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/10-00080277a5db/w1_slave | awk -F 't=' '{print $2}') / 1000" | bc -l)
|
||||
gpio write 13 0
|
||||
done
|
||||
|
||||
luft_roh=$(sudo python /home/pi/Temperaturmessung/Fremddateien/AdafruitDHT.py 2302 17)
|
||||
set -- $luft_roh
|
||||
luft_temp=$1
|
||||
luft_feucht=$2
|
||||
while [ -z "$luft_roh" ] || [ "$(echo $luft_temp '>' 40 | bc -l)" -eq 1 ] || [ "$(echo $luft_temp '<' -20 | bc -l)" -eq 1 ]
|
||||
do
|
||||
gpio write 13 1
|
||||
echo "----Luft: $luft_roh"
|
||||
luft_roh=$(sudo python /home/pi/Temperaturmessung/Fremddateien/AdafruitDHT.py 2302 17) # Rohdaten des Luftfeuchtigkeits-Sensors
|
||||
set -- $luft_roh #Zerlegen mithilfe von IFS (siehe ganz oben)
|
||||
set -- $luft_roh
|
||||
luft_temp=$1
|
||||
luft_feucht=$2
|
||||
while [ -z "$luft_roh" ] || [ "$(echo $luft_temp '>' 40 | bc -l)" -eq 1 ] || [ "$(echo $luft_temp '<' -20 | bc -l)" -eq 1 ]
|
||||
do
|
||||
gpio write 13 1
|
||||
echo "----Luft: $luft_roh"
|
||||
luft_roh=$(sudo python /home/pi/Temperaturmessung/Fremddateien/AdafruitDHT.py 2302 17) # Rohdaten des Luftfeuchtigkeits-Sensors
|
||||
set -- $luft_roh
|
||||
luft_temp=$1
|
||||
luft_feucht=$2
|
||||
gpio write 13 0
|
||||
done
|
||||
druck_roh=$(sudo python /home/pi/Temperaturmessung/Fremddateien/Adafruit_BMP085_auswertung.py) # Rohdaten des Luftdruck-Sensors
|
||||
set -- $druck_roh
|
||||
temp_druck=$1
|
||||
druck=$2
|
||||
qualitat=$(sudo /home/pi/Temperaturmessung/Fremddateien/airsensor -v -o)
|
||||
if [ "$qualitat" = "0" ] || ! [[ $qualitat =~ $re ]]
|
||||
then
|
||||
qualitat=""
|
||||
fi
|
||||
ausgabe=${uhrzeit}\,${temp1}\,${temp2}\,${temp3}\,${temp4}\,${luft_temp}\,${luft_feucht}\,${druck}\,${temp_druck}\,${rasp},${qualitat}
|
||||
echo $ausgabe >>/home/pi/Temperaturmessung/dygraph.csv
|
||||
echo "$uhrzeit ${temp1},${temp2},${temp3},${temp4},${luft_temp},${luft_feucht},${druck},${temp_druck},${rasp},${qualitat}" #Ausgabe des aktuellen Wertes im Terminal
|
||||
temp1_r=$(echo $temp1 |rev | cut -c 3- |rev)
|
||||
temp2_r=$(echo $temp2 |rev | cut -c 3- |rev)
|
||||
temp3_r=$(echo $temp3 |rev | cut -c 3- |rev)
|
||||
temp4_r=$(echo $temp4 |rev | cut -c 3- |rev)
|
||||
luft_temp_r=$(echo $luft_temp |rev | cut -c 3- |rev)
|
||||
luft_feucht_r=$(echo $luft_feucht |rev | cut -c 3- |rev)
|
||||
temp_druck_r=$(echo $temp_druck |rev | cut -c 2- |rev)
|
||||
druck_r=$(echo $druck |rev | cut -c 2- |rev)
|
||||
echo "$uhrzeit_display
|
||||
gpio write 13 0
|
||||
done
|
||||
druck_roh=$(sudo python /home/pi/Temperaturmessung/Fremddateien/Adafruit_BMP085_auswertung.py) # Rohdaten des Luftdruck-Sensors
|
||||
set -- $druck_roh
|
||||
temp_druck=$1
|
||||
druck=$2
|
||||
qualitat=$(sudo /home/pi/Temperaturmessung/Fremddateien/airsensor -v -o)
|
||||
if [ "$qualitat" = "0" ] || ! [[ $qualitat =~ $re ]]
|
||||
then
|
||||
qualitat=""
|
||||
fi
|
||||
ausgabe=${uhrzeit}\,${temp1}\,${temp2}\,${temp3}\,${temp4}\,${luft_temp}\,${luft_feucht}\,${druck}\,${temp_druck}\,${rasp},${qualitat}
|
||||
echo $ausgabe >>/home/pi/Temperaturmessung/dygraph.csv
|
||||
echo "$uhrzeit ${temp1},${temp2},${temp3},${temp4},${luft_temp},${luft_feucht},${druck},${temp_druck},${rasp},${qualitat}" #Ausgabe des aktuellen Wertes im Terminal
|
||||
temp1_r=$(echo $temp1 |rev | cut -c 3- |rev)
|
||||
temp2_r=$(echo $temp2 |rev | cut -c 3- |rev)
|
||||
temp3_r=$(echo $temp3 |rev | cut -c 3- |rev)
|
||||
temp4_r=$(echo $temp4 |rev | cut -c 3- |rev)
|
||||
luft_temp_r=$(echo $luft_temp |rev | cut -c 3- |rev)
|
||||
luft_feucht_r=$(echo $luft_feucht |rev | cut -c 3- |rev)
|
||||
temp_druck_r=$(echo $temp_druck |rev | cut -c 2- |rev)
|
||||
druck_r=$(echo $druck |rev | cut -c 2- |rev)
|
||||
echo "$uhrzeit_display
|
||||
$temp1_r
|
||||
$temp2_r
|
||||
$temp3_r
|
||||
|
@ -109,19 +109,19 @@ $druck_r
|
|||
$rasp
|
||||
$qualitat" >/home/pi/Temperaturmessung/text.txt.temp #zuerst in temporäre Datei schreiben und dann verschieben, um kurzzeitig leere Datei zu vermeiden
|
||||
|
||||
echo "$uhrzeit_lang,${temp1_r},${temp2_r},${temp3_r},${temp4_r},${luft_temp_r},${luft_feucht_r},${temp_druck_r},${druck_r},${rasp},${qualitat}" >/home/pi/Temperaturmessung/text_ws.txt # Daten für Webseite
|
||||
/home/pi/Temperaturmessung/diverses/wunderground.py $temp1 $temp2 $temp3 $temp4 $luft_temp $luft_feucht $temp_druck $druck $rasp $qualitat >> /home/pi/wunderground.log &
|
||||
sudo cp /home/pi/Temperaturmessung/text_ws.txt ${PFAD}text_ws.txt
|
||||
mv /home/pi/Temperaturmessung/text.txt.temp /home/pi/Temperaturmessung/text.txt
|
||||
sudo cp /home/pi/Temperaturmessung/dygraph.csv ${PFAD}dygraph.csv
|
||||
sleep 8 # kurz warten
|
||||
r=$(($r +1)) # Anzahl der Durchläufe zählen
|
||||
if [ "$r" == "1000" ] # und alle 1000 Durchgänge Sicherung anfertigen
|
||||
then
|
||||
cp /home/pi/Temperaturmessung/dygraph.csv /home/pi/Temperaturmessung/dygraph.csv.bak
|
||||
python /home/pi/Temperaturmessung/Fremddateien/send.py "l.winkler23@me.com" "Backup" "" "/home/pi/Temperaturmessung/dygraph.csv" &
|
||||
/home/pi/Temperaturmessung/Fremddateien/pushbullet_cmd.py $pushbullet_api_key note $pushbullet_device "Backup erfolgreich" "$uhrzeit_display"
|
||||
echo "Backup"
|
||||
r=0
|
||||
fi
|
||||
echo "$uhrzeit_lang,${temp1_r},${temp2_r},${temp3_r},${temp4_r},${luft_temp_r},${luft_feucht_r},${temp_druck_r},${druck_r},${rasp},${qualitat}" >/home/pi/Temperaturmessung/text_ws.txt # Daten für Webseite
|
||||
/home/pi/Temperaturmessung/diverses/wunderground.py $temp1 $temp2 $temp3 $temp4 $luft_temp $luft_feucht $temp_druck $druck $rasp $qualitat >> /home/pi/wunderground.log &
|
||||
sudo cp /home/pi/Temperaturmessung/text_ws.txt ${PFAD}text_ws.txt
|
||||
mv /home/pi/Temperaturmessung/text.txt.temp /home/pi/Temperaturmessung/text.txt
|
||||
sudo cp /home/pi/Temperaturmessung/dygraph.csv ${PFAD}dygraph.csv
|
||||
sleep 8 # kurz warten
|
||||
r=$(($r +1)) # Anzahl der Durchläufe zählen
|
||||
if [ "$r" == "1000" ] # und alle 1000 Durchgänge Sicherung anfertigen
|
||||
then
|
||||
cp /home/pi/Temperaturmessung/dygraph.csv /home/pi/Temperaturmessung/dygraph.csv.bak
|
||||
python /home/pi/Temperaturmessung/Fremddateien/send.py "l.winkler23@me.com" "Backup" "" "/home/pi/Temperaturmessung/dygraph.csv" &
|
||||
/home/pi/Temperaturmessung/Fremddateien/pushbullet_cmd.py $pushbullet_api_key note $pushbullet_device "Backup erfolgreich" "$uhrzeit_display"
|
||||
echo "Backup"
|
||||
r=0
|
||||
fi
|
||||
done
|
||||
|
|
11
hardware.tex
11
hardware.tex
|
@ -1,4 +1,4 @@
|
|||
\chapter{Hardware}
|
||||
indus\chapter{Hardware}
|
||||
\label{cha:Hardware}
|
||||
|
||||
\todo{Einleitung}
|
||||
|
@ -120,16 +120,9 @@ Der Sensor wird über USB an den Raspberry Pi angeschlossen. Um die Daten unter
|
|||
\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 Display von \emph{Conrad Electronic} verwendet.\footcite{conrad_datenblatt}
|
||||
Dieses wird nach der Anleitung von \emph{www.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 ist.
|
||||
|
||||
|
||||
\begin{figure}[h]
|
||||
\centering
|
||||
\includegraphics[width=0.9\textwidth]{figures/display.jpg}
|
||||
\caption{eingebautes Display (eigenes Werk)}
|
||||
\label{fig:display}
|
||||
\end{figure}
|
||||
|
||||
\section{Anschluss}
|
||||
\label{sec:Anschluss}
|
||||
|
|
BIN
main.pdf
BIN
main.pdf
Binary file not shown.
20
main.tex
20
main.tex
|
@ -57,7 +57,7 @@
|
|||
%% See babel documentation for further details.
|
||||
|
||||
%% BibLaTeX-settings: (see biblatex reference for further description)
|
||||
\newcommand{\mybiblatexstyle}{authoryear-ibid}
|
||||
\newcommand{\mybiblatexstyle}{authortitle-icomp}
|
||||
%% e.g., "alphabetic", "authoryear", ...
|
||||
%% The biblatex style which is being used for referencing. See
|
||||
%% biblatex documentation for further details and more values.
|
||||
|
@ -194,7 +194,7 @@
|
|||
stepnumber=1,
|
||||
stringstyle=\color{mymauve},
|
||||
tabsize=2,
|
||||
morekeywords={gpio, out, sudo, python, bc, cut, date, rev},
|
||||
morekeywords={gpio, out, sudo, python, bc, cut, date, rev, vcgencmd},
|
||||
}
|
||||
\lstdefinestyle{terminal}{
|
||||
backgroundcolor=\color{black},
|
||||
|
@ -238,16 +238,16 @@
|
|||
\renewcommand{\lstlistingname}{Datei}
|
||||
\renewcommand{\lstlistlistingname}{Dateiverzeichnis}
|
||||
\newcommand{\code}[4]{
|
||||
\lstinputlisting[language=#2,style=mystyle,firstline=#3,lastline=#4,caption=#1 (Zeile #3 bis #4),firstnumber=#3]{code/#1}
|
||||
\lstinputlisting[language=#2,style=mystyle,firstline=#3,lastline=#4,caption=#1 (Zeile #3 bis #4),firstnumber=#3,label=file:#1]{code/#1}
|
||||
}
|
||||
\newcommand{\codeline}[3]{
|
||||
\lstinputlisting[language=#2,style=mystyle,firstline=#3,lastline=#3,caption=#1 (Zeile #3),firstnumber=#3]{code/#1}
|
||||
\lstinputlisting[language=#2,style=mystyle,firstline=#3,lastline=#3,caption=#1 (Zeile #3),firstnumber=#3,label=file:#1]{code/#1}
|
||||
}
|
||||
\newcommand{\dateiklein}[1]{
|
||||
\lstinputlisting[style=mystyle,caption=#1,basicstyle=\scriptsize]{code/#1}
|
||||
\lstinputlisting[style=mystyle,caption=#1,label=file:#1,basicstyle=\scriptsize]{code/#1}
|
||||
}
|
||||
\newcommand{\datei}[1]{
|
||||
\lstinputlisting[style=mystyle,caption=#1]{code/#1}
|
||||
\lstinputlisting[style=mystyle,caption=#1,label=file:#1]{code/#1}
|
||||
}
|
||||
\usepackage[binary-units = true]{siunitx}
|
||||
\usepackage{tabulary}
|
||||
|
@ -257,6 +257,10 @@
|
|||
\input{glossar.tex}
|
||||
\makeglossaries
|
||||
|
||||
\usepackage{chngcntr}
|
||||
\counterwithout{footnote}{chapter}
|
||||
|
||||
|
||||
\hyphenpenalty=3000 %test von weniger Trennungen
|
||||
\tolerance=1000
|
||||
|
||||
|
@ -329,8 +333,8 @@
|
|||
\include{hardware}
|
||||
\include{software}
|
||||
\appendix %% closes main document, appendix follows until end; only available in book-classes
|
||||
\addpart*{Anhang} %% adding Appendix to tableofcontents
|
||||
|
||||
%\addpart*{Anhang} %% adding Appendix to tableofcontents
|
||||
\include{weitere_informationen}
|
||||
\printbibheading
|
||||
\printbibliography[type=book,heading=subbibliography,title={Literatur}]
|
||||
\printbibliography[type=online,heading=subbibliography,title={Online-Literatur}]
|
||||
|
|
|
@ -35,6 +35,17 @@
|
|||
Timestamp = {2014.10.25}
|
||||
}
|
||||
|
||||
@Online{conrad_datenblatt,
|
||||
Title = {AV1624 Datasheet},
|
||||
Author = {{ANAG VISION}},
|
||||
Date = {2006-05-22},
|
||||
Url = {http://conrad.ru/doci/tekstovyy_displey_stn_anag_vision_av1624gfbw_sj__seryy_181664_en.pdf},
|
||||
Urldate = {2014-11-23},
|
||||
|
||||
Owner = {lukas},
|
||||
Timestamp = {2014.11.23}
|
||||
}
|
||||
|
||||
@Online{DHT22,
|
||||
Title = {Digital-output relative humidity \& temperature sensor/module DHT22},
|
||||
Author = {{Aosong Electronics Co.,Ltd}},
|
||||
|
@ -127,6 +138,27 @@
|
|||
Urldate = {2014-07-04}
|
||||
}
|
||||
|
||||
@Online{schnatterente,
|
||||
Title = {Raspberry Pi: 32 Zeichen Hitachi HD44780 Display},
|
||||
Author = {Schnatterente.net},
|
||||
Date = {2014-10-10},
|
||||
Url = {http://www.schnatterente.net/technik/raspberry-pi-32-zeichen-hitachi-hd44780-display#},
|
||||
Urldate = {2014-11-23},
|
||||
|
||||
Owner = {lukas},
|
||||
Timestamp = {2014.11.23}
|
||||
}
|
||||
|
||||
@Online{schnatterente_code,
|
||||
Title = {displaytest.py},
|
||||
Author = {Schnatterente.net},
|
||||
Url = {http://www.schnatterente.net/code/raspberrypi/displaytest.py},
|
||||
Urldate = {2014-12-13},
|
||||
|
||||
Owner = {lukas},
|
||||
Timestamp = {2014.12.13}
|
||||
}
|
||||
|
||||
@Online{usb-sensors-linux,
|
||||
Title = {Install AirSensor on Linux},
|
||||
Author = {usb-sensors-linux},
|
||||
|
@ -149,17 +181,6 @@
|
|||
Timestamp = {2014.11.08}
|
||||
}
|
||||
|
||||
@Online{conrad_datenblatt,
|
||||
Title = {AV1624 Datasheet},
|
||||
Author = {ANAG VISION},
|
||||
Date = {2006-05-22},
|
||||
Url = {http://conrad.ru/doci/tekstovyy_displey_stn_anag_vision_av1624gfbw_sj__seryy_181664_en.pdf},
|
||||
Urldate = {2014-11-23},
|
||||
|
||||
Owner = {lukas},
|
||||
Timestamp = {2014.11.23}
|
||||
}
|
||||
|
||||
@Online{wiki:bus,
|
||||
Title = {Bus--- Wikipedia{,} Die freie Enzyklopädie},
|
||||
Author = {Wikipedia},
|
||||
|
@ -190,14 +211,3 @@
|
|||
Timestamp = {2014.11.11}
|
||||
}
|
||||
|
||||
@Online{schnatterente,
|
||||
Title = {Raspberry Pi: 32 Zeichen Hitachi HD44780 Display},
|
||||
Author = {www.schnatterente.net},
|
||||
Date = {2014-10-10},
|
||||
Url = {http://www.schnatterente.net/technik/raspberry-pi-32-zeichen-hitachi-hd44780-display#},
|
||||
Urldate = {2014-11-23},
|
||||
|
||||
Owner = {lukas},
|
||||
Timestamp = {2014.11.23}
|
||||
}
|
||||
|
||||
|
|
29
software.tex
29
software.tex
|
@ -42,16 +42,17 @@ In den folgenden drei Zeilen wird der aktuelle Zeitpunkt in drei verschiedenen F
|
|||
\subsection{Messung}
|
||||
\label{subsec:main.sh/messung}
|
||||
|
||||
Als erstes werden die Sensoren ausgelesen. Am einfachsten kann der im Raspberry Pi integrierte Thermometer für die \acrshort{cpu}-Temperatur ausgelesen werden:
|
||||
Als erstes werden die Sensoren ausgelesen. Am einfachsten kann mit dem im Raspberry Pi integrierten Thermometer die \acrshort{cpu}-Temperatur ausgelesen werden:
|
||||
\codeline{main.sh}{bash}{32}
|
||||
|
||||
Nur etwas aufwändiger sind die Temperatursensoren (\emph{DS18B20}, siehe \ref{subsec:Temperatur}). Da die Sensoren manchmal ungültige Werte zurückgeben, wird nach der ersten Messung überprüft, ob dies der Fall ist (Zeile 34) und die Messung solange wiederholt, bis eine gültige Messung erfolgt.
|
||||
Nur wenig aufwändiger sind die Temperatursensoren (\emph{DS18B20}, siehe \ref{subsec:Temperatur}). Da die Sensoren manchmal ungültige Werte zurückgeben, wird nach der ersten Messung überprüft, ob dies der Fall ist (Zeile 34) und die Messung solange wiederholt, bis eine gültige Messung erfolgt.
|
||||
\code{main.sh}{bash}{33}{40}
|
||||
|
||||
Das Programm des Luftfeuchtesensors (siehe \ref{subsec:Luftfeuchtigkeit}) und des Luftdrucksensors (siehe \ref{subsec:Luftdruck}) geben die Feuchtigkeit und die Temperatur durch einen Strichpunkt getrennt an. Daher wird dies zu Beginn als Trennzeichen angegeben.
|
||||
Die Adafruit-Programme\footcite{DHT}\footcite{bmp058_adafruit}, die den Luftfeuchtesensor (siehe \ref{subsec:Luftfeuchtigkeit}) und den Luftdrucksensor (siehe \ref{subsec:Luftdruck}) auslesen, geben die Feuchtigkeit und die Temperatur durch einen Strichpunkt getrennt an. Daher wird dies zu Beginn als Trennzeichen angegeben.
|
||||
\codeline{main.sh}{bash}{4}
|
||||
Danach kann die Ausgabe einfach aufgetrennt werden.
|
||||
Dadurch kann die Ausgabe einfach aufgetrennt werden:
|
||||
\code{main.sh}{bash}{66}{69}
|
||||
Auch hier wird bei ungültigen Messwerten mehrmals gemessen.
|
||||
|
||||
\emph{usb-sensors-linux}\footcite{usb-sensors-linux} gibt direkt den relativen Wert für die Luftqualität zurück, der nicht weiterbearbeitet werden muss.
|
||||
\codeline{main.sh}{bash}{84}
|
||||
|
@ -67,10 +68,30 @@ Diese Datei wird auch in den Ordner des Webservers kopiert, damit es grafisch da
|
|||
Als nächstes wird der Text für das Display (siehe \ref{sec:Display}) erzeugt. Da dort der Platz beschränkt ist (16x2 Zeichen), werden alle Messwerte um 3 Stellen (bzw. 2 bei Luftdruck) gekürzt. Anschließend werden diese Daten in text.txt (für Display) und text\_ws.txt (für Webinterface) exportiert.
|
||||
\codeline{main.sh}{bash}{92}
|
||||
\datei{text.txt}
|
||||
\label{file:text.txt}
|
||||
\lstinputlisting[style=mystyle,caption=text\_ws.txt,basicstyle=\footnotesize]{code/text_ws.txt}
|
||||
|
||||
Abschließend wird noch 8 Sekunden gewartet und jedes tausende Mal ein Backup gemacht und mir per E-Mail geschickt, bevor die nächste Messung von vorne beginnt.
|
||||
|
||||
\section{Display}
|
||||
\label{sec:Software/Display}
|
||||
Um die aktuellen Messungen auch ohne Computer zu sehen, werden sie auch direkt am Raspberry Pi auf einem Display angezeigt (siehe auch \ref{sec:Display}). Um das Display anzusteuern wird ein Programm\footcite{schnatterente_code} von \emph{www.schnatterente.net} verwendet. Dieses wurde von mir um einige Funktionen ergänzt.
|
||||
|
||||
Das Programm liest aus \emph{text.txt} (siehe \ref{file:text.txt}) die aktuellen Messwerte aus. Da der Platz jedoch stark beschränkt ist, werden diese auf 11 Seiten aufgeteilt, zwischen denen das Display alle 3 Sekunden wechselt.
|
||||
\begin{figure}[h]
|
||||
\centering
|
||||
\includegraphics[width=0.9\textwidth]{figures/display.jpg}
|
||||
\caption{eingebautes Display (eigenes Werk)}
|
||||
\label{fig:display}
|
||||
\end{figure}
|
||||
|
||||
\section{Webinterface}
|
||||
\label{sec:Webinterface}
|
||||
|
||||
Einer der wichtigsten Teile des Projektes ist die grafische Auswertung. Diese kann live auf der Webseite des Raspberry Pi und zeitverzögert unter \href{http://winkler.kremszeile.at}{winkler.kremszeile.at} angesehen werden. Die Auswertung besteht aus zwei von einander unabhängigen Teilen. Zum einen gibt es die Anzeige der Live-Daten, zum anderen die Darstellung der kompletten Aufzeichnung als interaktives Diagramm.
|
||||
|
||||
\subsection{Livedaten}
|
||||
\label{subsec:Livedaten}
|
||||
|
||||
|
||||
%%\begin{lstlisting}[language=bash,style=terminal]
|
||||
|
|
|
@ -556,7 +556,6 @@ dashed=\mybiblatexdashed, %% do *not* replace recurring reference authors with a
|
|||
backref=\mybiblatexbackref, %% create backlings from references to citations
|
||||
natbib=true, %% offering natbib-compatible commands
|
||||
hyperref=true, %% using hyperref-package references
|
||||
bibstyle=authortitle, %% eigene Änderung
|
||||
]{biblatex} %% remove, if using BibTeX instead of biblatex
|
||||
|
||||
\addbibresource{\mybiblatexfile} %% remove, if using BibTeX instead of biblatex
|
||||
|
|
12
zeichen.sh
12
zeichen.sh
|
@ -13,5 +13,15 @@ echo ""
|
|||
echo "einleitung.tex"
|
||||
echo $(detex einleitung.tex | wc -m)
|
||||
echo ""
|
||||
echo "weitere_informationen.tex"
|
||||
echo $(detex weitere_informationen.tex | wc -m)
|
||||
echo ""
|
||||
echo "main.tex"
|
||||
echo $(detex main.tex | wc -m)
|
||||
echo ""
|
||||
echo ""
|
||||
echo "gesamt"
|
||||
echo $(detex einleitung.tex software.tex hardware.tex| wc -m)
|
||||
echo $(detex einleitung.tex software.tex hardware.tex weitere_informationen.tex| wc -m)
|
||||
echo ""
|
||||
echo "gesamt mit main.tex"
|
||||
echo $(detex einleitung.tex software.tex hardware.tex weitere_informationen.tex main.tex| wc -m)
|
||||
|
|
Reference in a new issue