summaryrefslogtreecommitdiff
path: root/doc/MPU/inputs
diff options
context:
space:
mode:
Diffstat (limited to 'doc/MPU/inputs')
-rw-r--r--doc/MPU/inputs/ComponentArchitecture.tex16
-rw-r--r--doc/MPU/inputs/Introduction.tex12
-rw-r--r--doc/MPU/inputs/OperatingSystem.tex114
-rw-r--r--doc/MPU/inputs/ProcessTask_Camera.tex6
-rw-r--r--doc/MPU/inputs/ProcessTask_IHU.tex6
-rw-r--r--doc/MPU/inputs/ProcessTask_Kernel.tex6
-rw-r--r--doc/MPU/inputs/ProcessTask_LightSens.tex6
-rw-r--r--doc/MPU/inputs/ProcessTask_SDCard.tex6
-rw-r--r--doc/MPU/inputs/RelatedWork.tex59
-rw-r--r--doc/MPU/inputs/SystemOverview.tex22
-rw-r--r--doc/MPU/inputs/firstpage.tex28
-rw-r--r--doc/MPU/inputs/header.tex132
12 files changed, 413 insertions, 0 deletions
diff --git a/doc/MPU/inputs/ComponentArchitecture.tex b/doc/MPU/inputs/ComponentArchitecture.tex
new file mode 100644
index 0000000..597909c
--- /dev/null
+++ b/doc/MPU/inputs/ComponentArchitecture.tex
@@ -0,0 +1,16 @@
+% --------------------------------------
+% CHAPTER: Component Architecture
+% --------------------------------------
+\subsection{Component Architecture}
+
+The software consists of several components. Each component has its dedicated functionality as described before.
+
+\begin{figure}[h] % [top, bottom, h ... where defined, p ... own page]
+\centering
+\includegraphics[keepaspectratio,width=\hsize]
+{figures/mursat_SW_SystemOverview.pdf}
+\caption{Software System Overview.}
+\label{fig:SWSystemOverview}
+\end{figure}
+
+Figure~\ref{fig:SWSystemOverview} shall give an overview of the software components and how thea are related to each others.
diff --git a/doc/MPU/inputs/Introduction.tex b/doc/MPU/inputs/Introduction.tex
new file mode 100644
index 0000000..1add09e
--- /dev/null
+++ b/doc/MPU/inputs/Introduction.tex
@@ -0,0 +1,12 @@
+% --------------------------------------
+% CHAPTER: Introduction
+% --------------------------------------
+\section{Introduction}
+\label{sec:Introduction}
+
+%What is my theme, why am I interested in it.
+%State the problem, the motivation of your work, write down your
+%hypotheses.
+%-------------------------------------------------------------
+
+MurSat is a sub-project of an art project in Graz, which tries to give its visitors some insight into the world of technique. The project tries to combine art and technique in an exhibition in Graz, but also through a very small satellite, also called nano-satellite or tube-sat, traveling around mother earth in a low orbit. MurSat is also the name of this nano-satellite, which is developed and assembled by a team of engineering students. In march 2012 the satellite will be launched and brought to an orbit in a distance to the earths surface of about 310 km. It will stay there for 4-6 weeks and travel at a speed of approximately 23.000 km/h. Then it will come closer to earth, loose speed and finally enter the earths atmosphere where it will burn up. During the time in orbit, it will hold radio contact with several base stations in Austria, Germany and Spain. It will also take pictures which will be sent to earth whenever the satellite passes by on of the base stations. The satellite is built up of several units. There is a communication unit, a house holding unit, responsible for the electric energy on board, a main processing unit and several sensors. My tasks in this project are the development and implementation of the main processing unit. It is powered by an ARM M3 micro processor running a free real time operating system. The entire software for the main processing unit is written in ANSI C and compiled and built using the GNU ARM tool chain running in the eclipse IDE. \ No newline at end of file
diff --git a/doc/MPU/inputs/OperatingSystem.tex b/doc/MPU/inputs/OperatingSystem.tex
new file mode 100644
index 0000000..bfdd415
--- /dev/null
+++ b/doc/MPU/inputs/OperatingSystem.tex
@@ -0,0 +1,114 @@
+% --------------------------------------
+% CHAPTER: Operating System
+% --------------------------------------
+
+\section{Operating System}
+\label{sec:Operating System}
+
+The software running on the MPU is based on a preemtive real time operating systems
+and manages the tasks the satellite has to fulfill.
+The Operating system, on which the whole software is based on, is FreeRTOS. %\hyperlink{http://www.freertos.org}{FreeRTOS}.\\
+
+\url{http://www.freertos.org}
+
+\subsection{FreeRTOS}
+
+FreeRTOS is a preemtive multitasking real time operating sytem. It provides methods for
+creating and sceduling tasks and implements queues and semaphores for communication
+between, and synchronisazion of the tasks.
+
+\subsection{MPU Tasks}
+
+The MPU gets commands from the low level control interface IHU and from the Hackled Handheld
+Transceiver.
+The IHU sends mainly commands which are related to the power management, whereby the Hackeld
+Handheld Transceiver is the command communication interface between the satellite and a base
+station on earth.
+The satellite has to send its bacon signal permanently. This way it can be located in space.
+When the satellite gets in communication distance to a base station on earth, a special signal
+is sent to the satellite which is received by the IHU via the Hacked Handheld Scanner. The IHU
+then tells the MPU to swith on the Hacked Handheld Transceiver. From now on a communication
+between the base station and the satellite is possible.
+
+The satellite can receive configuration commands and data request commands from the base
+station. The configuration commands are used to set parameters like e.g. the sampling rate
+of the microphone (piezzo element), or to set parameters for the camera, as well as to tell
+the satellite when and how often to take pictures.
+
+\subsubsection{Messages}
+The communication inside the operatin system is based on a message system. Tasks can send messages to each others.
+
+FreeRTOS provides with an object called xQueue. This is used to communnicate between tasks in
+FreeRTOS. An xQueue is primarily a void pointer which can be sent to a task. This pointer can
+point to any address in the memory. In this implementation xQueues are used to point to
+structures which represent "Messages".
+
+\begin{lstlisting}
+typedef struct
+{
+ void *pData;
+ Sender_t Sender;
+}Message_t;
+\end{lstlisting}
+
+A message consists of a pointer to the data which shall be sent and an identifier of the
+sender. The Sender type is just an enumeration of the tasks that want to communicate with
+each others.
+
+\subsubsection{Kernel Process Task}
+The Kernel Process Task is reponsible for dispatching the jobs and assigning them to the
+according tasks.
+Each time a communication interface (UART, SPI, I2C) receives data, its interrupt service
+routine notifies the Communication Process about this event. The Communication Process
+collects all arriving data and when a comand is completely received, the Kernel Process Task
+is notified, gets the command via a message, checks this command and sends the respective
+message to the task which is responsible for the execution of the command.
+
+\subsubsection{IHU Process Task}
+It seems that the IHU Process Task is not needed, so it will be taken out of the operating
+system.
+Actually the Internal Householding Unit IHU is providing the satellite with energy which is a
+rather limited ressource. Therefore it is necessary to implement some kind of protocol to
+manage the energy consumtion of all satellite components. This IHU Process Tasks was ment to
+handle this protocol, but right now it looks like if this task is taken over by the Kernel
+Processing Task.
+
+\subsubsection{Communication Process Task}
+This tasks purpose is to receive commands and send responses over the respecting interface
+(UART, SPI, I2C).
+When ever a byte arrives at one of the interfaces, the respective interrupt service routine
+ISR is triggert. The ISR copies the received byte to a buffer and if the end of frame EOF
+character is received, it sends a message to the communication task. The communication task
+then analyses the received frame and informs the Kernel Process Task.
+The Communication Task can also receive messages from other tasks. These messages contain data
+frames that shall be sent via one of the interfaces. When such a message is received by the Communication Task, it sends the messages data over the respective interface.
+
+\subsubsection{Alien Encounter Process Task}
+The Alien Encounter Task is waiting for a message which is sent by the interrupt service
+routine of the according external interrupt. When ever an alien is passing by the satellite
+who is willing to press the Alien Encounter Button, and also can manage to do so, an external
+interrupt is triggert.
+
+\subsubsection{Light Sensor Process Task}
+The Light Sensor Process Task is responsible for handling light sensor related jobs.
+The light sensors are placed such way that they detect light in all three dimmensions in
+relation to the satellites local coordinate system. When sampling the intensity of light
+for these directions it shall be possible to calculate the satellites, especially the cameras
+orintation related to sun and earth. This should help to decide at which moment a picture of
+the earth can be taken. The sampling rate of the light sensors can be adjusted and is
+depending of the angular velocity of the satellites rotation.
+
+\subsubsection{Camera Process Task}
+The Camera Process Task handels all camera related jobs. It triggers the camera to take
+pictures and reads the cammeras data (pictures) from the cameras memory to a buffer. When
+ever the buffer is filled, this task sends a message to the Memory Process Task to store the
+data in the SD-Card.
+
+\subsubsection{Memory Process Task}
+The responsibility of the Memory Process Task is to read and write data from and to the
+SD-Card. This task can receive messages from any other task.
+If a message sender wants to write data to the SD-Card, the Memory Process Task reads the
+data from the message and sends it to the SD-Card. If a task wants to read data from the
+SD-Card, the Memory Process Task reads the desired data from the SD-Card and writes it to a
+message which is then sent to the requesting task.
+
diff --git a/doc/MPU/inputs/ProcessTask_Camera.tex b/doc/MPU/inputs/ProcessTask_Camera.tex
new file mode 100644
index 0000000..02abc7f
--- /dev/null
+++ b/doc/MPU/inputs/ProcessTask_Camera.tex
@@ -0,0 +1,6 @@
+% --------------------------------------
+% SUBSUBCHAPTER: Camera Process Task
+% --------------------------------------
+\subsubsection{Camera Process Task}
+
+\todo{Put detailed description here.}
diff --git a/doc/MPU/inputs/ProcessTask_IHU.tex b/doc/MPU/inputs/ProcessTask_IHU.tex
new file mode 100644
index 0000000..cf5f766
--- /dev/null
+++ b/doc/MPU/inputs/ProcessTask_IHU.tex
@@ -0,0 +1,6 @@
+% --------------------------------------
+% SUBSUBCHAPTER: IHU Process Task
+% --------------------------------------
+\subsubsection{IHU Process Task}
+
+\todo{Put detailed description here.}
diff --git a/doc/MPU/inputs/ProcessTask_Kernel.tex b/doc/MPU/inputs/ProcessTask_Kernel.tex
new file mode 100644
index 0000000..82e5a14
--- /dev/null
+++ b/doc/MPU/inputs/ProcessTask_Kernel.tex
@@ -0,0 +1,6 @@
+% --------------------------------------
+% SUBSUBCHAPTER: Kernel Process Task
+% --------------------------------------
+\subsubsection{Kernel Process Task}
+
+\todo{Put detailed description here.}
diff --git a/doc/MPU/inputs/ProcessTask_LightSens.tex b/doc/MPU/inputs/ProcessTask_LightSens.tex
new file mode 100644
index 0000000..92a73d8
--- /dev/null
+++ b/doc/MPU/inputs/ProcessTask_LightSens.tex
@@ -0,0 +1,6 @@
+% --------------------------------------
+% SUBSUBCHAPTER: Light Sensor Process Task
+% --------------------------------------
+\subsubsection{Light Sensor Process Task}
+
+\todo{Put detailed description here.}
diff --git a/doc/MPU/inputs/ProcessTask_SDCard.tex b/doc/MPU/inputs/ProcessTask_SDCard.tex
new file mode 100644
index 0000000..acdbe04
--- /dev/null
+++ b/doc/MPU/inputs/ProcessTask_SDCard.tex
@@ -0,0 +1,6 @@
+% --------------------------------------
+% SUBSUBCHAPTER: SDCard Process Task
+% --------------------------------------
+\subsubsection{SDCard Process Task}
+
+\todo{Put detailed description here.}
diff --git a/doc/MPU/inputs/RelatedWork.tex b/doc/MPU/inputs/RelatedWork.tex
new file mode 100644
index 0000000..cb35a7d
--- /dev/null
+++ b/doc/MPU/inputs/RelatedWork.tex
@@ -0,0 +1,59 @@
+% --------------------------------------
+% CHAPTER: Related Work
+% --------------------------------------
+\section{Related Work}
+\label{sec:Related Work}
+
+
+It is not possible to navigate the satellite since it has no rocket propulsion built in.
+Therefore it is also not possible to aim the camera to a certain object.
+This circumstance makes it quite hard to take pictures.
+
+So the first consideration is just
+to take any pictures and send them from the satellite down to the base stations on earth.
+But this method is not very feasible for some reasons. First we need to take a lot of pictures
+to get at least some good ones. This would need a lot of memory on the satellite, which is not
+such a big deal, but the writing of data needs electric energy which is quite limited on the
+satellite. The second problem is, that we also would need to transfer a big amount of data.
+Data transfer is limited through transfer rate and also through the time windows that allow
+communication with the satellite.
+
+It is quite obvious that there is a need of preselection of the pictures which shall be
+downloaded from the satellite. So we thought about a simple algorithm which could be able
+to do some evaluation if a picture wether it is 'interesting' or not. Totally black and
+totally white pictures can be sorted out. Other pictures could show something intresting.
+The satellite travels on a n orbit which is about 318 km above the earths surface. Therefore
+the dihedral angle of earth in view is about \textbf{TOTO: check raumwinkel} which is rather
+big compared to the one which is showing the sun. This means, that the likelyhood that a
+picture, which is not only black or white, is rather big that it shows some parts of the earth.
+
+In order to raise the likelyhood of shooting a picture at the right moment, we were searching
+for a way of how to find this right moment.
+Using the magnetic field of the earth is not an appropriate approach since the magnetic force
+lines of the earth run approximately parallel to the earth surface (except of near the poles),
+which would not provide enough information to calculate the satellites orientation in a rather
+easy way. Furthermore, a teslameter that provides values of a usable accuracy would be to
+expensive as well as too damageable.
+
+Finally we decided to use a 3D - light sensor. It shall help to find out the relative
+orientation of the satellite to the earth. One photodiode on each side of a cube would provide
+6 lines of different light intensities. When the satellite is spinning through space, the
+photodiodes will give periodical signals, such way that three different periodes will be seen.
+The satellite will rotate around three axis, whereby each of these three periods corresponds to the rotation around one of these axes.
+
+\begin{figure}[h] % [top, bottom, h ... where defined, p ... own page]
+\centering
+\includegraphics[keepaspectratio,width=\hsize]
+%{drawings/Crc_Check.pdf}
+{figures/ligth_sens_1_ggb.pdf}
+\caption{Periodic output of 3 photodiodes.}
+\label{fig:lightsens1}
+\end{figure}
+
+In Figure~\ref{fig:lightsens1} we can see, that these periodes have one common periode,
+which is starting at t0. The point im time tp (here just an example) can the be taken as
+the point in time which is perfect for taking a picture. So the idea is to cumulate the
+photosensors measurements and download them to earth. After analysing and calculating a
+certain point in time tp, the satellite can be asked to take pictures at tp. If these
+pictures are not satisfying, tp can be tuned until the results fit to the expected outcome.
+
diff --git a/doc/MPU/inputs/SystemOverview.tex b/doc/MPU/inputs/SystemOverview.tex
new file mode 100644
index 0000000..5ec0b7c
--- /dev/null
+++ b/doc/MPU/inputs/SystemOverview.tex
@@ -0,0 +1,22 @@
+% --------------------------------------
+% CHAPTER: System Overview
+% --------------------------------------
+
+\section{System Overview}%% Kapitel Überschrift
+\label{sec:System Overview}
+
+The satellite system consists of several units. All of these parts are needed to fulfill the
+tasks the satellit shall take. The satellite shall be able to communicate via radio,
+is equiped with a camera an Alien-Encounter and a microphone, almost like a bluetooth webcam.
+Furthermore there are 3 light-sensors and 4 temperature sensors on board.
+Please refer to figure~\ref{fig:sys_overview} to get an overall picture.
+
+\begin{figure}[h] % [top, bottom, h ... where defined, p ... own page]
+\centering
+\includegraphics[keepaspectratio,width=\hsize]
+{figures/component-diagram.pdf}
+\caption{System Component Overview.}
+\label{fig:sys_overview}
+\end{figure}
+
+As shown in the Figure~\ref{fig:sys_overview}, there are many parts. \ No newline at end of file
diff --git a/doc/MPU/inputs/firstpage.tex b/doc/MPU/inputs/firstpage.tex
new file mode 100644
index 0000000..a6e669e
--- /dev/null
+++ b/doc/MPU/inputs/firstpage.tex
@@ -0,0 +1,28 @@
+\begin{titlepage}
+
+
+\title{
+MPU \\[1.5cm]
+\sffamily\bfseries
+Main Processing Unit\\
+of\\ Mur SAT
+}
+
+
+\author{
+{\large\bfseries Roland Sahlsten} \\
+{\smaller FH JOANNEUM} \\
+{\smaller Kapfenberg, Austria} \\
+\email{roland.sahlsten.ase10@fh-joanneum.at}
+%\and
+%{\large\bfseries Christoph Grissemann} \\
+%{\smaller Department of acidness} \\
+%{\smaller ORF} \\
+%{\smaller Vienna, Austria} \\
+%\email{christoph.grissemann@orf.at}
+}
+
+\maketitle
+\thispagestyle{empty}
+
+\end{titlepage} \ No newline at end of file
diff --git a/doc/MPU/inputs/header.tex b/doc/MPU/inputs/header.tex
new file mode 100644
index 0000000..e795bf0
--- /dev/null
+++ b/doc/MPU/inputs/header.tex
@@ -0,0 +1,132 @@
+%----------------------------------------------------------------
+% HEADER File
+% Based on template by Keith Andrews. Thanks!
+%----------------------------------------------------------------
+
+%\documentclass[10pt,twocolumn]{article}
+\documentclass[12pt,twocolumn]{article}
+
+\usepackage[ % set page and margin sizes
+ a4paper,
+ twoside,
+ top=4mm,
+ bottom=8mm,
+ inner=15mm,
+ outer=15mm,
+ bindingoffset=0mm,
+ head=10mm,
+ foot=10mm,
+ headsep=15mm,
+ footskip=15mm,
+ includeheadfoot,
+]{geometry}
+% A4 is 210 x 297 mm
+% want block of 180 x 235 mm
+\setlength{\columnsep}{8.5mm}
+\usepackage{balance}
+\usepackage{times} % use PostScript fonts
+\usepackage[utf8]{inputenc} % allow direct input of special chars
+\usepackage{textcomp} % symbols such as \texttimes and \texteuro
+\usepackage[bf,sf]{titlesec}
+\usepackage[
+ position=bottom,
+ margin=1cm,
+ font=small,
+ labelfont={bf,sf},
+ format=hang,
+ indention=0mm,
+]{caption,subfig}
+
+%% add if necessary: %%
+\hyphenation{op-tical net-works semi-conduc-tor}
+
+\usepackage{relsize}
+\usepackage{tabularx}
+\usepackage{listings}
+\lstset{numbers=left, frame=single, captionpos=b,
+ breaklines=true, tabsize=2,basicstyle=\footnotesize,numbersep=5pt,
+ language=Ruby}
+\usepackage[hyphens,obeyspaces]{url}
+\def\UrlFont{\small\ttfamily}
+\renewcommand{\url}[1]
+{
+{% \def\UrlFont{\small\ttfamily}%
+\begingroup \Url{#1}
+}%
+}
+\usepackage{color}
+\definecolor{darkgreen}{rgb}{0,0.3,0}
+\definecolor{darkblue}{rgb}{0,0,0.2}
+\definecolor{darkred}{rgb}{0.5,0,0}
+\definecolor{lightgrey}{rgb}{0.8,0.8,0.8}
+\definecolor{black}{rgb}{0,0,0}
+
+\usepackage{ifpdf}
+\ifpdf
+ % pdflatex
+ \usepackage[pdftex]{graphicx}
+ \DeclareGraphicsExtensions{.pdf,.jpg,.png}
+ \pdfcompresslevel=9
+ \pdfpageheight=297mm
+ \pdfpagewidth=210mm
+ \usepackage[ % hyperref should be last package loaded
+ pdftex,
+ pdftitle={A Template For a Short Paper},
+ pdfsubject={Adjust to Your Needs!},
+ pdfauthor={Johannes Feiner, Sybille Paar},
+ bookmarks,
+ bookmarksnumbered,
+ linktocpage,
+% pagebackref,
+ colorlinks,
+ linkcolor=black,
+ anchorcolor=black,
+ citecolor=black,
+ urlcolor=black,
+ pdfview={FitH},
+ pdfstartview={Fit},
+ pdfpagemode=UseOutlines, % open bookmarks in Acrobat
+ plainpages=false, % avoids duplicate page number problem
+ pdfpagelabels, % avoids duplicate page number problem
+ ]{hyperref}
+
+\else
+ % latex
+ % should never have to run latex, since l2h now understands pdflatex .aux
+ \usepackage[dvips]{graphicx}
+ \usepackage[dvips]{hyperref}
+ \DeclareGraphicsExtensions{.eps}
+\fi
+% IEEE specific names
+
+\newcommand{\isbn}[1]
+{
+{\small
+\href{http://www.amazon.com/exec/obidos/ASIN/#1/}{#1}%
+}%
+}
+
+
+% DOIs http://www.doi.org/ e.g.
+% doi:10.1038/nature723
+% http://dx.doi.org/10.1038/nature723
+\newcommand{\doi}[1]
+{
+{\def\UrlFont{\rmfamily}
+\href{http://dx.doi.org/#1}{\protect\nolinkurl{doi:#1}}%
+}%
+}
+
+
+% based on url package
+% define styles for class, file, and variable names
+% which break nicely at line breaks
+\newcommand\cname{\begingroup \small\urlstyle{tt}\Url}
+\newcommand\fname{\begingroup \small\urlstyle{tt}\Url}
+\newcommand\vname{\begingroup \small\urlstyle{tt}\Url}
+\newcommand\email{\begingroup \small\urlstyle{tt}\Url}
+\newcommand{\halfh}{9.5cm} % height of figures for 2 per page
+\newcommand{\thirdh}{6cm} % height of figures for 3 per page
+\date{}
+
+\newcommand{\todo}[1]{{\color{red}{#1}}} \ No newline at end of file