\documentclass[11pt,ngerman]{beamer} %\usetheme{Antibes} \usetheme{Bergen} \usecolortheme{seagull} \usepackage{listings} \usepackage{color} \lstset{ language=c++, columns=flexible, basicstyle={\small\ttfamily}, keepspaces=true, breaklines=true, breakatwhitespace=true, } \begin{document} \begin{frame} \title{Implement Updates \textit{Over the Air} for \textit{ESP8266} microcontrollers} \author{Dustin Frisch\\ C/C++ for Embedded Systems and Physical Computing\\ Angewandte Informatik\\ University of Applied Sciences Fulda\\ \texttt{dustin.frisch@informatik.hs-fulda.de}} \date{\today} \titlepage \end{frame} \begin{frame} \frametitle{About the Project} \framesubtitle{ESPer} \centering{\includegraphics[width=\columnwidth]{esp-01s.jpg}} \end{frame} \begin{frame} \frametitle{About the Project} \framesubtitle{Magrathea Laboratories e.V.} \centering{\includegraphics[scale=0.04]{maglab.png}} \end{frame} \begin{frame} \frametitle{Updates} \begin{itemize} \item Changed requirement or environment \item Closing security issues \item Fixing bugs \item New Features \end{itemize} \centering{Often possible without hardware changes.} \end{frame} \begin{frame} \frametitle{\textit{Over the Air (OTA)}} \centering{Reduces maintenance cost.} \end{frame} \begin{frame} \frametitle{Requirements} \begin{itemize} \item Automatic updates \textit{OTA} without administrative interaction \item Insusceptible to errors of any kind \item Downloading side-by-side with payload traffic \item Maximal uptime and minimal network load \item Maintenance and monitoring \item Categorizing devices by task-specific hardware \end{itemize} \end{frame} \begin{frame} \frametitle{Implementation} \framesubtitle{Update mechanism} \begin{columns} \begin{column}{0.6\textwidth} \begin{enumerate} \item Download \texttt{.version} file and compare \item Download firmware binary for \emph{other} slot \item Reconfigure \textit{rBoot} bootloader \item Restart \end{enumerate} \end{column} \begin{column}{0.4\textwidth} \centering{\includegraphics[height=0.75\textheight]{flash_layout.pdf}} \end{column} \end{columns} \end{frame} \begin{frame}[fragile] \frametitle{Implementation} \framesubtitle{Supporting multiple devices} \begin{lstlisting} #include "Device.h" #include "features/Socket.h" Device device; constexpr const char SOCKET_NAME[] = "socket"; constexpr const uint16_t SOCKET_GPIO = 12; OnOffFeature socket(&device); Device* getDevice() { return &device; } \end{lstlisting} \end{frame} \begin{frame} \frametitle{Implementation} \framesubtitle{Supporting multiple devices} \centering{\texttt{make socket/flash} \\ to build and flash.} \end{frame} \begin{frame} \frametitle{Implementation} \framesubtitle{Automatic deployment and roll-out} \begin{itemize} \item \texttt{git commit} \item \textit{drone} builds it \item \texttt{scp *.version *.rom\{0,1\}} to deployment server \item Served by \textit{nginx} \end{itemize} \end{frame} \begin{frame} \frametitle{Conclusion} \centering{It works!} \end{frame} \begin{frame} \centering{\url{https://git.maglab.space/esper/esper}} \vspace{20mm} \centering{\large{Thank you for your attention.}} \end{frame} \end{document}}