@ -1,3 +1,3 @@ | 
				
			||||
\chapter{Conclusion} | 
				
			||||
 | 
				
			||||
\todo[inline]{xy was developed ... project works great ... possible future improvements ...} | 
				
			||||
\todo[inline]{TODO} | 
				
			||||
@ -1,3 +1,101 @@ | 
				
			||||
\chapter{Hardware Realization} | 
				
			||||
 | 
				
			||||
\todo[inline]{TODO schematics (maybe in appendix). photos of the PCBs. Links to this chapter from elsewhere} | 
				
			||||
\section{Using a Discovery Board} | 
				
			||||
 | 
				
			||||
It has been proposed earlier in the text that STM32 Nucleo and Discovery development boards might be used as the hardware platform for this project. Indeed, a Discovery board with STM32F072~\cite{disco-f072} was used as a development platform for the majority of the GEX firmware. This inexpensive board may be used to try the GEX firmware without having access to the custom hardware. | 
				
			||||
 | 
				
			||||
\subsection{Discovery F072 Configuration and Pin Mapping} | 
				
			||||
 | 
				
			||||
This Discovery board is fitted with four \glspl{LED} on \gls{GPIO} pins PC6 through PC9, in a compass arrangement. The ``north'' \gls{LED}, PC6, is used as the GEX status indicator. The ``User'' button, connected to PA0, is mapped as the GEX Lock button, controlling the settings storage. | 
				
			||||
 | 
				
			||||
We advise the reader, as a potential user of this discovery board, to review its schematic diagram and ensure the solder-jumpers are configured correctly: | 
				
			||||
 | 
				
			||||
\begin{itemize} | 
				
			||||
	\item Jumpers SB20 and SB23 must be closed to enable the User \gls{USB} connector | 
				
			||||
	 | 
				
			||||
	\item Jumper SB17 must be open and SB19 closed to use the 8\,MHz clock signal provided by the on-board ST-Link programmer; the internal USB-synchronized 48\,MHz oscillator will be used if the clock signal is not provided (SB19 open). | 
				
			||||
	 | 
				
			||||
	\item Jumpers SB27 through SB32 should be closed to connect the \gls{GPIO} pins normally dedicated to the touch sensing strip to the board's header.  | 
				
			||||
	 | 
				
			||||
	\item Capacitors C26 through C28 are sampling capacitors for the \gls{TSC}. There are, unfortunately, no jumpers available to disconnect them, and they interfere in high-speed signals on the used pins (PA3, PA7, PB1). The only solution is to carefully remove them from the board if the \gls{TSC} is not needed. | 
				
			||||
\end{itemize}  | 
				
			||||
 | 
				
			||||
An accelerometer \gls{IC} L3GD20 is fitted on the board. The chip is attached to SPI2 on pins PB13 (\gls{SCK}), PB14 (\gls{MISO}) and PB15 (\gls{MOSI}), with \gls{NSS} on pin PC0, and PC1 and PC2 used for interrupt flags. This chip cannot be disconnected or disabled and it is difficult to remove; care must be taken to avoid its interference on the used pins. | 
				
			||||
 | 
				
			||||
\section{GEX Hub} | 
				
			||||
 | 
				
			||||
GEX Hub was the first custom \gls{PCB} designed for GEX. It uses the same microcontroller as the Discovery board, thus the firmware modifications needed to make it work with this new platform were minimal. | 
				
			||||
 | 
				
			||||
The Hub board provides access to all the \gls{GPIO} pins using three flat-cable connectors, one for each port; they also contain a ground and power supply connection to make the connection of external boards or a breadboard easier, needing just one cable. The use of flat cables, however, is not mandatory---those connectors are based on the standard 2.54\,mm pitch pin headers, allowing the user to connect to them using widely available ``jumper wires''. | 
				
			||||
 | 
				
			||||
This board was produced in two revisions. The original model ( \cref{fig:gexhub1}) proved fully functional, except for the two connectors on the left side, the boot jumper and a programming header, which had the wrong footprints and could not be populated; this mistake was fixed by soldering the jumper from the bottom of the \gls{PCB}, and the programming header was never needed thanks to the USB bootloader working without issues.  | 
				
			||||
 | 
				
			||||
The updated revision removes the two problematic footprints altogether; a reorganization in the \gls{GPIO} connectors allowed them to be moved together with the other pins. Revision 1 used a dedicated header for the Boot jumper that was meant to be closed during normal operation, and removed only to enter the bootloader. Revision 2 moved the boot pin into the connector, and such arrangement would not be practical; the solution was to invert the jumper's logic by changing the Boot pull-up to a pull-down. The bootloader is now activated by inserting a regular 2.54\,mm jumper into the connector\footnote{A restart is required in all cases for the boot jumper changes to have effect}, as can be seen in \cref{fig:gexhub2}. | 
				
			||||
 | 
				
			||||
\begin{figure}[h] | 
				
			||||
	\centering | 
				
			||||
	\begin{subfigure}{.5\textwidth} | 
				
			||||
		\centering | 
				
			||||
		\includegraphics[width=.98\linewidth]{img/photo-hub1.jpg} | 
				
			||||
		\caption{\label{fig:gexhub1}Revision 1} | 
				
			||||
	\end{subfigure}% | 
				
			||||
	\begin{subfigure}{.5\textwidth} | 
				
			||||
		\centering | 
				
			||||
		\includegraphics[width=.98\linewidth]{img/photo-hub2.jpg} | 
				
			||||
		\caption{\label{fig:gexhub2}Revision 2} | 
				
			||||
	\end{subfigure} | 
				
			||||
	\caption[The GEX Hub module]{\label{fig:gexhub} Two revisions of the GEX Hub module, rev. 2 shown with the boot jumper and a flat cable.} | 
				
			||||
\end{figure} | 
				
			||||
 | 
				
			||||
 | 
				
			||||
\section{GEX Zero} | 
				
			||||
 | 
				
			||||
Our desire to re-use the form factor of the Raspberry Pi Zero to exploit the existing market with add-on boards and cases for it has been revealed already in \cref{sec:formfactors}. This was brought to fruition with GEX Zero, the second realized prototype board (counting the two revisions of GEX Hub as one). | 
				
			||||
 | 
				
			||||
GEX Zero exactly copies the dimensions of the Pi Zero, which introduces several challenges: | 
				
			||||
 | 
				
			||||
\begin{itemize} | 
				
			||||
	\item It must be a one-sided board, with no components on the bottom; this is needed for acrylic cases which sit flatly against the \gls{PCB}, with a cut-out for the pin header. | 
				
			||||
	\item Buttons and the USB connector have to exactly align with connectors on the Pi Zero to fit the openings in its cases. | 
				
			||||
	\item The board size is fixed, and rather small; we used only two layers to save production cost, but this proved a significant challenge and the electrical characteristics of some connections may not be ideal. | 
				
			||||
	\item To make use of the Raspberry Pi add-on boards, called HATs or pHATs, a particular organization of the pin header is required. This is discussed in more detail below. | 
				
			||||
\end{itemize} | 
				
			||||
 | 
				
			||||
\subsection{Finding the Best Pin Assignment} | 
				
			||||
 | 
				
			||||
Like our STM32 microcontroller, the Broadcom processor on the Raspberry Pi multiplexes its \gls{GPIO} pins with alternate functions, and, likewise, each function is available only on a small selection of pins. A number of compromises had to be made to achieve maximum compatibility. | 
				
			||||
 | 
				
			||||
\todo[inline]{show the pi header mappings and the gex zero pin mappings} | 
				
			||||
 | 
				
			||||
 | 
				
			||||
\begin{figure}[h] | 
				
			||||
	\centering | 
				
			||||
	\includegraphics[width=.9\textwidth]{img/photo-zero-naked.jpg} \\ | 
				
			||||
	\vspace{1mm} | 
				
			||||
	\includegraphics[width=.9\textwidth]{img/photo-zero-naked-bottom.jpg} | 
				
			||||
	\caption[The GEX Zero module]{\label{fig:gexz}GEX Zero, top and bottom side} | 
				
			||||
\end{figure} | 
				
			||||
 | 
				
			||||
\begin{figure}[h] | 
				
			||||
	\centering | 
				
			||||
	\includegraphics[width=.9\textwidth]{img/photo-zero-picase.jpg} \\ | 
				
			||||
	\vspace{1mm} | 
				
			||||
	\includegraphics[width=.9\textwidth]{img/photo-zero-transparent.jpg} | 
				
			||||
	\caption[The GEX Zero module]{\label{fig:gexzcases}GEX Zero in the official Raspberry Pi Zero case and an aftermarket acrylic case} | 
				
			||||
\end{figure} | 
				
			||||
 | 
				
			||||
 | 
				
			||||
\section{Wireless Gateway} | 
				
			||||
 | 
				
			||||
\cref{fig:gwxgw} | 
				
			||||
 | 
				
			||||
\todo[inline]{TODO about the gateway ..} | 
				
			||||
 | 
				
			||||
 | 
				
			||||
\begin{figure}[h] | 
				
			||||
	\centering | 
				
			||||
	\includegraphics[width=.9\textwidth]{img/photo-rfdongle.jpg} | 
				
			||||
	\caption{\label{fig:gwxgw}The wireless gateway module (top and bottom side)} | 
				
			||||
\end{figure} | 
				
			||||
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
| 
		 After Width: | Height: | Size: 34 KiB  | 
| 
		 After Width: | Height: | Size: 477 KiB  | 
| 
		 After Width: | Height: | Size: 290 KiB  | 
| 
		 After Width: | Height: | Size: 288 KiB  | 
| 
		 After Width: | Height: | Size: 388 KiB  | 
| 
		 After Width: | Height: | Size: 377 KiB  | 
| 
		 After Width: | Height: | Size: 1.3 MiB  | 
| 
		 After Width: | Height: | Size: 198 KiB  | 
| 
		 After Width: | Height: | Size: 292 KiB  | 
| 
		 After Width: | Height: | Size: 304 KiB  | 
| 
		 After Width: | Height: | Size: 284 KiB  | 
| 
		 After Width: | Height: | Size: 4.0 MiB  | 
| 
		 After Width: | Height: | Size: 4.0 MiB  | 
| 
		 After Width: | Height: | Size: 4.0 MiB  | 
| 
		 After Width: | Height: | Size: 4.0 MiB  | 
| 
		 After Width: | Height: | Size: 4.0 MiB  | 
| 
		 After Width: | Height: | Size: 4.1 MiB  | 
| 
		 After Width: | Height: | Size: 4.1 MiB  | 
| 
		 After Width: | Height: | Size: 3.9 MiB  | 
| 
		 After Width: | Height: | Size: 4.0 MiB  | 
@ -1,6 +1,6 @@ | 
				
			||||
% Acknowledgements | 
				
			||||
\begin{thanks} | 
				
			||||
 | 
				
			||||
blabla | 
				
			||||
\todo[inline]{TODO} | 
				
			||||
 | 
				
			||||
\end{thanks} | 
				
			||||
 | 
				
			||||