\documentclass[onecolumn, draftclsnofoot,10pt, compsoc]{IEEEtran}
\usepackage{graphicx}
\usepackage{url}
\usepackage{setspace}

\usepackage{geometry}
\geometry{textheight=9.5in, textwidth=7in}

% 1. Fill in these details
\def \CapstoneTeamName{		30K CS Avionics}
\def \CapstoneTeamNumber{		41}
\def \GroupMemberOne{			<NAME>}
\def \GroupMemberTwo{			<NAME>}
\def \GroupMemberThree{			<NAME>}
\def \CapstoneProjectName{		30K Rocket Spaceport America}
\def \CapstoneSponsorCompany{	Oregon State University}
\def \CapstoneSponsorPerson{	Dr. <NAME>}

% 2. Uncomment the appropriate line below so that the document type works
\def \DocType{		%Problem Statement
				%Requirements Document
				Technology Review 
				%Design Document
				%Progress Report
				}
			
\newcommand{\NameSigPair}[1]{\par
\makebox[2.75in][r]{#1} \hfil 	\makebox[3.25in]{\makebox[2.25in]{\hrulefill} \hfill		\makebox[.75in]{\hrulefill}}
\par\vspace{-12pt} \textit{\tiny\noindent
\makebox[2.75in]{} \hfil		\makebox[3.25in]{\makebox[2.25in][r]{Signature} \hfill	\makebox[.75in][r]{Date}}}}
% 3. If the document is not to be signed, uncomment the RENEWcommand below
\renewcommand{\NameSigPair}[1]{#1}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\begin{titlepage}
    \pagenumbering{gobble}
    \begin{singlespace}
    	%\includegraphics[height=4cm]{coe_v_spot1}
        \hfill 
        % 4. If you have a logo, use this includegraphics command to put it on the coversheet.
        %\includegraphics[height=4cm]{CompanyLogo}   
        \par\vspace{.2in}
        \centering
        \scshape{
            \huge CS Capstone \DocType \par
            {\large\today}\par
            \vspace{.5in}
            \textbf{\Huge\CapstoneProjectName}\par
            \vfill
           % {\large Prepared for}\par
           % \Huge \CapstoneSponsorCompany\par
            %\vspace{5pt}
            %&{\Large\NameSigPair{\CapstoneSponsorPerson}\par}
            {\large Prepared by }\par
            Group\CapstoneTeamNumber\par
            % 5. comment out the line below this one if you do not wish to name your team
            %\CapstoneTeamName\par 
            \vspace{5pt}
            {\Large
                \NameSigPair{\GroupMemberOne}\par
                %\NameSigPair{\GroupMemberTwo}\par
                %\NameSigPair{\GroupMemberThree}\par
            }
            \vspace{20pt}
        }
        \begin{abstract}
        % 6. Fill in your abstract  
        This document serves to illustrate the differences between the networking-related technology options for the CS 30K Rocketry team's ground station.
        This will include the network type used to connect the ground station modules to each other as well as the hardware and software used to host the database and server.

        \end{abstract}     
    \end{singlespace}
\end{titlepage}
\newpage
\pagenumbering{arabic}
\tableofcontents
% 7. uncomment this (if applicable). Consider adding a page break.
%\listoffigures
%\listoftables
\clearpage

% 8. now you write!
%*************************************************************************
\section{Introduction}

\subsection{Project Goals}
The purpose of the 30k Rocket Spaceport America project is to design and build a rocket that can reach an altitude of 30,000 feet. 
This rocket must be recoverable as part of the competition guidelines.
As part of the challenge, the payload should achieve at least 10 seconds of micro gravity in order to conduct a successful experiment.
As the computer science sub-group on the project, the main goal of this team will be to display collected telemetry and payload data, as well as live GPS tracking of the rocket and payload for recovery of each after the launch through the ground station. 

\subsection{Group Roles}
The project is comprised of six sub teams, including four mechanical engineering sub teams, one electrical engineering sub team, and one computer science sub team.
Each of the mechanical teams are responsible for one of the following: aerodynamics and recovery, payload, propulsion, and structures.
Rocket avionics are handled by both the electrical engineering and computer science teams, with the on board electronics primarily the responsibility of the electrical team, and the ground station software and electronics primarily the responsibility of the computer science team. 
There may be some crossover where the avionics code on board the rocket is involved.
The computer science team will also write unit tests for the software written by the team as a whole.


Within the CS team, I expect that each member will share a part of all pieces of the project, but each of us may take the lead for certain portions of it.
Since all of my technology review pieces are related to networking technology, it may become my focus for the project, but I'd also be interested in helping with the other areas of the project, especially those not covered by this round of reviews.


%*************************************************************************

\section{Network Type}

\subsection{Overview}
 For the implementation of the ground station, some kind of network will be required to connect the devices displaying and graphing the flight data to the device hosting the database and to the devices parsing the radio signals. 
 The goal is to allow team members to connect phones and laptops to the network, allowing them to view the live GPS data on their personal devices.
 Because the network does not need a connection to the wider internet, the focus of this section will be on infrastructure-less, or ad hoc networks.

\subsection{Criteria}
The network should be wireless to support connections with mobile devices.
Because launches happen in remote areas, cell service may be poor where the system is deployed and the network cannot rely on the internet.
The network should support devices frequently connecting and disconnecting, as the devices viewing the served data may change throughout the flight.

\subsection{Potential Choices}

\subsubsection{Mobile Ad Hoc Network}
A mobile ad hoc network, or MANET, is a type of decentralized network, meaning that it operates without any centralized administration.
The network is formed from wireless mobile hosts that may leave or join the network freely.
Each mobile node has relatively short range, which keeps battery consumption low and allows reuse of bandwidth.
Connections within the network are made by using each node as a router, packet source, and packet sink. 
This means that any node may send, receive, or route packets to and from other nodes. 
The routing protocols are more complicated in a MANET because of their dynamic nature.\cite{1}

\subsubsection{Wireless Local Area Network}
A wireless local area network, or WLAN, is a centralized network that typically deploys one or two access points to broadcast a signal in a 100 to 200 foot radius.\cite{2} 
Depending on how it is configured, a WLAN may operate in an "infrastructure" or "ad hoc" mode.\cite{5} 
Here, we would be configuring the network without access to the greater internet, so it would be run in ad hoc mode.


\subsubsection{Wireless Personal Area Network}
A wireless personal area network, or WPAN, is a centralized network that typically connects very close laptops, cellphones, and peripherals.
These networks can connect devices up to 100 meters apart.
There are several standards for this kind of network.
Zigbee and Bluetooth standards operate over shorter ranges, while WiMAX has a larger range. \cite{5}


\subsection{Discussion}
The major differences between types of wireless networks lie in centralization and infrastructure.
There is a central unit in this network, the database and server host.
The network needs no internet connection, so an infrastructure-less network is ideal.
Distances between nodes are expected to be quite close, because the team will be standing together at the launch site.

\subsection{Conclusion}
Because we already have a centralized server and distances will not be far enough to warrant a multi-hop system like a MANET, a wireless local area network should serve our purposes just fine.


%*************************************************************************
\section{Server Type}

\subsection{Overview}
We plan on using a web based display program for graphing the flight data that is parsed into the database.
This webpage will be be viewed over a local network on mobile devices.
For serving the page over a network, server software will need to be selected.

\subsection{Criteria}
The server will need to handle enough connections to serve pages to each team member's mobile device, about 20. 
Updating the displayed graphs should be quick enough to display the live GPS data, which will arrive about once per second.

\subsection{Potential Choices}

\subsubsection{Apache}
Apache is the most commonly used web server software. 
It's open source and has a very supportive community that would make development easier.\cite{3}
This web server is favored for flexibility, power, and support. 
It features a system of dynamically loadable modules.
Apache supports language interpreters for dynamic content.\cite{4}

\subsubsection{Node.js}
As one of the servers covered by OSU curriculum (In CS 290), the team has some experience with node.js. 
Another open source server, it focuses on supporting the use of Java on the back end.
This may be helpful if the team decides to make heavy use of Java for displaying the graphical flight data because a lot of support is built in.
There are libraries that make this web server very easy to use with databases.\cite{8}

\subsubsection{NGINX}
Another popular server, NGINX relies on an asynchrous, events-driven architecture and sports lightweight resource use.
This web server focuses on being able to support many connections by passing dynamic requests off to other software.
It excels at serving static content to many connections.\cite{4}

\subsection{Discussion}
The content being served is dynamic in nature, and while NGINX boasts great scale-ability, this network will not have nearly enough connections to warrant using software that isn't as good at serving dynamic content.
Both Node.js and Apache have libraries that support database use and make it relatively straightforward to serve dynamic content. 

\subsection{Conclusion}
All of these web servers are open source and have supportive communities.
Apache has the advantage of being able to dynamically include any modules we need, as well as being one of the more popular and widely supported servers. 
Because this web server is so common, it would be good for the team to gain experience with this technology for applications in the job market.
This server also excels at serving dynamic content. 
All of our content is dynamic, so this is ideal.


%*************************************************************************
\section{Host Hardware}

\subsection{Overview}
 The database used to populate the display app must be served to other devices from some physical location.
 The server must also be hosted from some physical location.
 Both locations must be able to communicate with each other and with other networked devices.

\subsection{Criteria}
The hardware should be low cost to stay within budget.
Both the server and the database must be hosted.
The selected network type should be supported.
The ground station would ideally be contained altogether in an enclosure including the parsers and host hardware.

\subsection{Potential Choices}

\subsubsection{Raspberry Pi 3}
 The raspberrry Pi 3 has wifi capabilities and would be able to serve as a host.
 Using an rpi would allow the ground station to be contained in an enclosure with the parsers and receivers.
 The raspberry pi does not have a real time clock, but could be connected to one.
 Wireless LAN, Bluetooth, and Ethernet are supported.
 An external LED screen could be connected for debugging.
 These each cost \$34.95. \cite{6}
 

\subsubsection{Laptop}
A laptop would be more than adequate as a host for the database and server.
However, this would prevent us from keeping the ground station in a compact box. 
Previous years have seen some degree of dust build up on laptops, which wouldn't affect immediate performance at launch, but isn't ideal.
Most laptops support Bluetooth, wireless LAN, and Ethernet.
A personal laptop could be used with our server and database software, which would keep the cost for this component at \$0. 

\subsubsection{BeagleBone Blue}
This beagle board is an open source linux-enabled robotics computer.
It includes an on-board programmable real time unit.
Both Bluetooth and WLAN are supported.
These each cost \$79.\cite{7}

\subsection{Discussion}
For hosting the server and database, any of these options would be sufficient and would work with our network.
The laptop would meet out needs, but remove some of the separation we wanted from the ground station and display.
The beagle board was suggested due to the real time unit, but isn't strictly necessary for hosting the database and server.
The raspberry pi is cheaper than the beagle board and would accomplish much of the same thing.

\subsection{Conclusion}
Based on the price and the general desire for a separated ground station, the Raspberry Pi 3 seems like the best choice for our system.
It will provide minimum cost and meet all other criteria.
 
\newpage
%*************************************************************************

\bibliography{references}
\bibliographystyle{IEEEtran}

\end{document}