@ -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} |
||||
|