diff --git a/presentation/images/amplitude_modulation.png b/presentation/images/amplitude_modulation.png new file mode 100644 index 0000000..7ccb78a Binary files /dev/null and b/presentation/images/amplitude_modulation.png differ diff --git a/presentation/images/beehive.jpeg b/presentation/images/beehive.jpeg new file mode 100644 index 0000000..a59eac7 Binary files /dev/null and b/presentation/images/beehive.jpeg differ diff --git a/presentation/images/chirp.png b/presentation/images/chirp.png new file mode 100644 index 0000000..eaf4b67 Binary files /dev/null and b/presentation/images/chirp.png differ diff --git a/presentation/images/chirp_spectrogram.png b/presentation/images/chirp_spectrogram.png new file mode 100644 index 0000000..797bc99 Binary files /dev/null and b/presentation/images/chirp_spectrogram.png differ diff --git a/presentation/images/distance.jpg b/presentation/images/distance.jpg new file mode 100644 index 0000000..7c8bcf2 Binary files /dev/null and b/presentation/images/distance.jpg differ diff --git a/presentation/images/distance_record.png b/presentation/images/distance_record.png new file mode 100644 index 0000000..0abee15 Binary files /dev/null and b/presentation/images/distance_record.png differ diff --git a/presentation/images/frequency_modulation.png b/presentation/images/frequency_modulation.png new file mode 100644 index 0000000..41312f6 Binary files /dev/null and b/presentation/images/frequency_modulation.png differ diff --git a/presentation/images/gateways-ttn.png b/presentation/images/gateways-ttn.png new file mode 100644 index 0000000..680885a Binary files /dev/null and b/presentation/images/gateways-ttn.png differ diff --git a/presentation/images/honeybee.png b/presentation/images/honeybee.png new file mode 100644 index 0000000..648e972 Binary files /dev/null and b/presentation/images/honeybee.png differ diff --git a/presentation/images/humidity.jpg b/presentation/images/humidity.jpg new file mode 100644 index 0000000..73cfbf6 Binary files /dev/null and b/presentation/images/humidity.jpg differ diff --git a/presentation/images/iR.pdf b/presentation/images/iR.pdf new file mode 100644 index 0000000..a1bac0f Binary files /dev/null and b/presentation/images/iR.pdf differ diff --git a/presentation/images/iR.pdf_tex b/presentation/images/iR.pdf_tex new file mode 100644 index 0000000..7b674bf --- /dev/null +++ b/presentation/images/iR.pdf_tex @@ -0,0 +1,54 @@ +%% Creator: Inkscape inkscape 0.91, www.inkscape.org +%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010 +%% Accompanies image file 'iR.pdf' (pdf, eps, ps) +%% +%% To include the image in your LaTeX document, write +%% \input{.pdf_tex} +%% instead of +%% \includegraphics{.pdf} +%% To scale the image, write +%% \def\svgwidth{} +%% \input{.pdf_tex} +%% instead of +%% \includegraphics[width=]{.pdf} +%% +%% Images with a different path to the parent latex file can +%% be accessed with the `import' package (which may need to be +%% installed) using +%% \usepackage{import} +%% in the preamble, and then including the image with +%% \import{}{.pdf_tex} +%% Alternatively, one can specify +%% \graphicspath{{/}} +%% +%% For more information, please see info/svg-inkscape on CTAN: +%% http://tug.ctan.org/tex-archive/info/svg-inkscape +%% +\begingroup% + \makeatletter% + \providecommand\color[2][]{% + \errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}% + \renewcommand\color[2][]{}% + }% + \providecommand\transparent[1]{% + \errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}% + \renewcommand\transparent[1]{}% + }% + \providecommand\rotatebox[2]{#2}% + \ifx\svgwidth\undefined% + \setlength{\unitlength}{99.79101296bp}% + \ifx\svgscale\undefined% + \relax% + \else% + \setlength{\unitlength}{\unitlength * \real{\svgscale}}% + \fi% + \else% + \setlength{\unitlength}{\svgwidth}% + \fi% + \global\let\svgwidth\undefined% + \global\let\svgscale\undefined% + \makeatother% + \begin{picture}(1,0.90241433)% + \put(0,0){\includegraphics[width=\unitlength,page=1]{iR.pdf}}% + \end{picture}% +\endgroup% diff --git a/presentation/images/iR.svg b/presentation/images/iR.svg new file mode 100644 index 0000000..4d3347c --- /dev/null +++ b/presentation/images/iR.svg @@ -0,0 +1,138 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/presentation/images/lora.jpg b/presentation/images/lora.jpg new file mode 100644 index 0000000..7cf6486 Binary files /dev/null and b/presentation/images/lora.jpg differ diff --git a/presentation/images/lora_downchirp.png b/presentation/images/lora_downchirp.png new file mode 100644 index 0000000..cd89919 Binary files /dev/null and b/presentation/images/lora_downchirp.png differ diff --git a/presentation/images/lora_packet_structure.png b/presentation/images/lora_packet_structure.png new file mode 100644 index 0000000..203e601 Binary files /dev/null and b/presentation/images/lora_packet_structure.png differ diff --git a/presentation/images/lora_signal.png b/presentation/images/lora_signal.png new file mode 100644 index 0000000..7622258 Binary files /dev/null and b/presentation/images/lora_signal.png differ diff --git a/presentation/images/lora_signal_2.png b/presentation/images/lora_signal_2.png new file mode 100644 index 0000000..35b1bd2 Binary files /dev/null and b/presentation/images/lora_signal_2.png differ diff --git a/presentation/images/lora_signal_3.png b/presentation/images/lora_signal_3.png new file mode 100644 index 0000000..81a1fed Binary files /dev/null and b/presentation/images/lora_signal_3.png differ diff --git a/presentation/images/lora_spreading_factors.png b/presentation/images/lora_spreading_factors.png new file mode 100644 index 0000000..a029753 Binary files /dev/null and b/presentation/images/lora_spreading_factors.png differ diff --git a/presentation/images/lora_symbols_0.png b/presentation/images/lora_symbols_0.png new file mode 100644 index 0000000..db66774 Binary files /dev/null and b/presentation/images/lora_symbols_0.png differ diff --git a/presentation/images/lora_symbols_1.png b/presentation/images/lora_symbols_1.png new file mode 100644 index 0000000..2bd54ac Binary files /dev/null and b/presentation/images/lora_symbols_1.png differ diff --git a/presentation/images/lora_symbols_2.png b/presentation/images/lora_symbols_2.png new file mode 100644 index 0000000..5edb0b1 Binary files /dev/null and b/presentation/images/lora_symbols_2.png differ diff --git a/presentation/images/lora_symbols_3.png b/presentation/images/lora_symbols_3.png new file mode 100644 index 0000000..cfc7938 Binary files /dev/null and b/presentation/images/lora_symbols_3.png differ diff --git a/presentation/images/lora_symbols_4.png b/presentation/images/lora_symbols_4.png new file mode 100644 index 0000000..b75f7ed Binary files /dev/null and b/presentation/images/lora_symbols_4.png differ diff --git a/presentation/images/lora_symbols_5.png b/presentation/images/lora_symbols_5.png new file mode 100644 index 0000000..5bba4dd Binary files /dev/null and b/presentation/images/lora_symbols_5.png differ diff --git a/presentation/images/lora_upchirp.png b/presentation/images/lora_upchirp.png new file mode 100644 index 0000000..4b875a6 Binary files /dev/null and b/presentation/images/lora_upchirp.png differ diff --git a/presentation/images/lorawan.jpg b/presentation/images/lorawan.jpg new file mode 100644 index 0000000..665474c Binary files /dev/null and b/presentation/images/lorawan.jpg differ diff --git a/presentation/images/no-electricity.png b/presentation/images/no-electricity.png new file mode 100644 index 0000000..839d9c4 Binary files /dev/null and b/presentation/images/no-electricity.png differ diff --git a/presentation/images/spreading_factors.png b/presentation/images/spreading_factors.png new file mode 100644 index 0000000..72e0b4a Binary files /dev/null and b/presentation/images/spreading_factors.png differ diff --git a/presentation/images/temperature.jpg b/presentation/images/temperature.jpg new file mode 100644 index 0000000..8f713d0 Binary files /dev/null and b/presentation/images/temperature.jpg differ diff --git a/presentation/images/ttgo_module.JPG b/presentation/images/ttgo_module.JPG new file mode 100644 index 0000000..8a9ecd4 Binary files /dev/null and b/presentation/images/ttgo_module.JPG differ diff --git a/presentation/images/ttn.png b/presentation/images/ttn.png new file mode 100644 index 0000000..5fff0d3 Binary files /dev/null and b/presentation/images/ttn.png differ diff --git a/presentation/images/unmodulated.png b/presentation/images/unmodulated.png new file mode 100644 index 0000000..c1bba75 Binary files /dev/null and b/presentation/images/unmodulated.png differ diff --git a/presentation/images/weight.png b/presentation/images/weight.png new file mode 100644 index 0000000..3c07eb6 Binary files /dev/null and b/presentation/images/weight.png differ diff --git a/presentation/presentation.tex b/presentation/presentation.tex new file mode 100644 index 0000000..c376c5f --- /dev/null +++ b/presentation/presentation.tex @@ -0,0 +1,540 @@ +\documentclass{beamer} +% +% Choose how your presentation looks. +% +% For more themes, color themes and font themes, see: +% http://deic.uab.es/~iblanes/beamer_gallery/index_by_theme.html +% +\mode +{ + \usetheme{Singapore} % or try Darmstadt, Madrid, Warsaw, ... + \usecolortheme[RGB={3,138,94}]{structure} + \usefonttheme{structurebold} % or try serif, structurebold, ... + \setbeamertemplate{navigation symbols}{} + \setbeamertemplate{headline}{} + %\setbeamertemplate{caption}[numbered] + \setbeamertemplate{footline}[frame number] +} + +\usepackage[english]{babel} +\usepackage[utf8x]{inputenc} +\usepackage{fancyvrb} +\usepackage{tcolorbox,listings} +\usepackage{textpos} +\usepackage{setspace} + +% Default fixed font does not support bold face +\DeclareFixedFont{\ttb}{T1}{txtt}{bx}{n}{7} % for bold +\DeclareFixedFont{\ttm}{T1}{txtt}{m}{n}{7} % for normal + +% Custom colors +\usepackage{color} +\definecolor{deepblue}{rgb}{0,0,0.5} +\definecolor{deepred}{rgb}{0.6,0,0} +\definecolor{deepgreen}{rgb}{0,0.5,0} +\definecolor{lightblue}{rgb}{0.6,0.8,1.0} +\definecolor{teal}{rgb}{0.45,0.85,1.0} + + +\fvset{frame=single,framesep=1mm,fontfamily=courier,fontsize=\scriptsize,framerule=.3mm,numbersep=1mm,commandchars=\\\{\}} +\usepackage{color} + +\tcbuselibrary{listings,skins,breakable} + + +\lstdefinestyle{commandline}{ + basicstyle=\ttfamily\scriptsize, + numbers=none, + keywordstyle=\color{blue}, + morekeywords={{git add}}, + %numberstyle=\tiny, + numbersep=2pt, + moredelim=**[is][\color{darkgreen}]{_green_}{_green_}, + moredelim=**[is][\color{red}]{_red_}{_red_}, + moredelim=**[is][\color{blue}]{_blue_}{_blue_}, + } + +% Python style for highlighting +\newcommand\pythonstyle{ +\lstset{ +language=Python, +basicstyle=\ttm\color{white}, +otherkeywords={self}, % Add keywords here +keywordstyle=\ttb\color{lightblue}, +commentstyle=\ttb\color{teal}, +emph={MyClass,__init__}, % Custom highlighting +emphstyle=\ttb\color{deepred}, % Custom highlighting style +stringstyle=\color{red}, +frame=tb, % Any extra options here +backgroundcolor = \color{black}, +showstringspaces=false % +}} + +\newtcblisting{ConsoleVerbatim}{ + arc=0mm, + top=-2mm, + bottom=-2mm, + left=0mm, + right=0mm, + width=\textwidth, + boxrule=0.5pt, + colupper=white, + colback=black, + spartan, + listing only, + listing options={style=commandline}, + breakable +} + +% Python environment +\lstnewenvironment{python}[1][] +{ +\pythonstyle +\lstset{#1} +} +{} + +\lstdefinestyle{commandline}{ + basicstyle=\ttfamily\tiny, + numbers=none, + keywordstyle=\color{blue}, + morekeywords={{git add}}, + %numberstyle=\tiny, + numbersep=2pt, + moredelim=**[is][\color{darkgreen}]{_green_}{_green_}, + moredelim=**[is][\color{red}]{_red_}{_red_}, + moredelim=**[is][\color{blue}]{_blue_}{_blue_}, + } +\newtcblisting{ConsoleVerbatimTiny}{ + arc=0mm, + top=-2mm, + bottom=-2mm, + left=0mm, + right=0mm, + width=\textwidth, + boxrule=0.5pt, + colupper=white, + colback=black, + spartan, + listing only, + listing options={style=commandline}, + breakable +} + +\newenvironment{reference}[2]{ % + \begin{textblock*}{\textwidth}(#1,#2) % + \rule{10cm}{0.5pt}\\ + \tiny\bgroup\color{black}}{\egroup % for the emulated + \end{textblock*}} + +\usepackage{hyperref} + + +\definecolor{darkgreen}{rgb}{0.0,0.5,0.0} + +\title[LoRa]{A Brief Introduction to \includegraphics[trim=0 4cm 0 0, scale=0.15]{images/lora.jpg}} +\author{Simon Pirkelmann} +\institute{\includegraphics[scale=0.5]{images/iR.pdf}} +\date{December 2nd, 2019} + +\AfterPreamble{\hypersetup{ + urlcolor=blue, +}} + +\begin{document} + +\begin{frame} + \titlepage +\end{frame} + +% Uncomment these lines for an automatically generated outline. +\begin{frame}{Outline} + \tableofcontents +\end{frame} + + + +\section{LoRa} + +\subsection{Motivation} +\begin{frame}{Motivation} +\begin{itemize} +\item Example: monitor well-being of honey bees\\[0.5cm] +\includegraphics[scale=0.10]{images/honeybee.png} +\hspace{0.5cm} +\includegraphics[scale=0.055]{images/weight.png} +\includegraphics[scale=0.045]{images/temperature.jpg} +\includegraphics[scale=0.60]{images/humidity.jpg}\\[0.3cm] +\hspace{6cm} +\includegraphics[scale=0.04]{images/distance.jpg} \hspace{0.5cm} +\includegraphics[scale=0.15]{images/no-electricity.png} \\ +\pause +\begin{minipage}{0.40\textwidth} +\vspace{-2cm} +\item Requirements: +\begin{itemize} +\setlength{\itemsep}{0pt} +\item Low data rate (a few bytes per day) +\item Low power consumption +\item Low cost +\item Long range +\end{itemize} +\end{minipage} +\pause +\begin{minipage}{0.45\textwidth} +\hspace{0.2cm} +Options: +\begin{itemize} +\setlength{\itemsep}{0pt} +\item Data line (e.g. ethernet) +\item Wifi, Bluetooth +\item Cellular +\end{itemize} +\end{minipage} +\vspace{0.1cm} +\pause +\item Solution: LPWAN (\textbf{L}ow-\textbf{P}ower \textbf{W}ide-\textbf{A}rea \textbf{N}etwork) +\begin{itemize} +\item \textbf{LoRa}, \textbf{LoRaWAN}, \textbf{TheThingsNetwork} +\item SigFox, NB-IoT, Weightless, ... +\end{itemize} +\end{itemize} +\end{frame} + +\subsection{LoRa facts} +\begin{frame}{LoRa Facts} +\begin{reference}{0mm}{70mm} +https://www.thethingsnetwork.org/docs/lorawan/ +\end{reference} +\begin{itemize} +\item Developed by \textbf{Semtech} (originally by Cycleo)\\ +\hspace{0.3 cm}\textbf{Note:} parts of the PHY layer are \textbf{proprietary}! +\item Frequency: \textbf{868 MHz} \textbf{SRD} band (in the EU) +\item \textbf{25 mW} transmission power +\item Bandwidth: \textbf{125} to \textbf{500 kHz} +\item Data rate between \textbf{250 Bit/sec} and 21 \textbf{kBit/sec} \\ +\hspace{0.3 cm}\textbf{BUT}: not made for a lot of data +\item Low cost: \textbf{$\sim $10 EUR} CAPEX (for nodes), almost no OPEX +\item Low power: devices can last \textbf{years on battery} +\item Long distance: up to \textbf{10 km} range +\end{itemize} +\only<2>{ +\begin{textblock*}{100mm}(-5mm,-65mm) +\textblockcolour{white} +\begin{exampleblock}{LoRa distance record} +\includegraphics[scale=0.3]{images/distance_record.png} +\end{exampleblock} +\end{textblock*} +} +\end{frame} + +\begin{frame}{LoRa facts} +\begin{reference}{0mm}{75mm} +https://www.thethingsnetwork.org/docs/lorawan/ +\end{reference} +LoRa is \textbf{NOT} for: +\begin{itemize} +\item Realtime data - only small packets, every couple of minutes +\item Phone calls - you can do that with GPRS/3G/LTE +\item Controlling lights in your house - check out ZigBee or BlueTooth +\item Sending photos, watching Netflix - check out WiFi +\end{itemize} +Important: \includegraphics[trim=0cm 4cm 0 0cm, scale=0.11]{images/lora.jpg} $\leftrightarrow$ \includegraphics[trim=0cm 4cm 0 0cm,scale=0.15]{images/lorawan.jpg} $\leftrightarrow$ \includegraphics[trim=0cm 4cm 0 0cm,scale=0.06]{images/ttn.png}\\[0.3cm] +\begin{itemize} +\item \textbf{LoRa}: PHY layer $\Rightarrow$ modulation technique +\item \textbf{LoRaWAN}: Network protocol +\item \textbf{TheThingsNetwork (TTN)}: Network server, handles routing of data to the \textit{cloud} +\end{itemize} +\end{frame} + +\subsection{PHY layer: modulation and demodulation} +\begin{frame}{Digital modulation} +\begin{itemize} +\item \textbf{A}mplitude \textbf{S}hift \textbf{K}eying (ASK) +\end{itemize} +\includegraphics[scale=0.35]{images/unmodulated.png} +\includegraphics[scale=0.35]{images/amplitude_modulation.png} +\end{frame} + +\begin{frame}{Digital modulation} +\begin{reference}{0mm}{75mm} +https://en.wikipedia.org/wiki/Chirp\_spread\_spectrum +\end{reference} +\begin{itemize} +\item \textbf{F}requency \textbf{S}hift \textbf{K}eying (FSK) +\end{itemize} +\includegraphics[scale=0.35]{images/unmodulated.png} +\includegraphics[scale=0.35]{images/frequency_modulation.png} +\end{frame} + +\begin{frame}{Digital modulation} +\begin{itemize} +\item Used by LoRa: \textbf{C}hirp \textbf{S}pread \textbf{S}pectrum (CSS) modulation +\begin{center} +\includegraphics[scale=0.3]{images/chirp.png} +\includegraphics[scale=0.3]{images/chirp_spectrogram.png} +\end{center} +\begin{itemize} +\item Chirp = frequency change over time\\ +\end{itemize} +\end{itemize} +\end{frame} + +\begin{frame}{LoRa modulation} +\begin{itemize} +\item LoRa uses \textbf{Up-Chirps} (frequency increases) and \textbf{Down-Chirps} (frequency decreases) +\end{itemize} +\includegraphics[scale=0.3]{images/lora_upchirp.png} +\includegraphics[scale=0.3]{images/lora_downchirp.png} +%\item Messages always start with 8 Up-Chirps +\end{frame} + +\begin{frame}{Example LoRa packet} +\begin{reference}{0mm}{70mm} +Thanks Valentin and Stefan (DM4SG) for providing this data +\end{reference} +\begin{center} +\includegraphics<1>[scale=0.2]{images/lora_signal.png} +\includegraphics<2>[scale=0.2]{images/lora_signal_2.png} +\includegraphics<3>[scale=0.2]{images/lora_signal_3.png} +\end{center} +\end{frame} + +\begin{frame}{Chirps and Symbols} +\begin{overlayarea}{\textwidth}{\textheight} +\begin{center} +\includegraphics<1>[scale=0.4]{images/lora_symbols_0.png} +\includegraphics<2>[scale=0.4]{images/lora_symbols_1.png} +\includegraphics<3>[scale=0.4]{images/lora_symbols_2.png} +\includegraphics<4>[scale=0.4]{images/lora_symbols_3.png} +\includegraphics<5>[scale=0.4]{images/lora_symbols_4.png} +\includegraphics<6>[scale=0.4]{images/lora_symbols_5.png} +\end{center} +\only<2->{ +Time of frequency jump determines which data is encoded\\ +} +\begin{center} +\only<3>{Example: \texttt{data = }\texttt{00000}} +\only<4>{Example: \texttt{data = }\texttt{00010}} +\only<5>{Example: \texttt{data = }\texttt{00011}} +\only<6>{Example: \texttt{data = }\texttt{10110}} +\end{center} +\end{overlayarea} +\end{frame} + +\begin{frame}{Spreading factor} +\begin{itemize} +\item Number of bits per symbol is determined by \textbf{spreading factor} (SF) +\begin{center} +\includegraphics<1>[scale=0.5]{images/lora_spreading_factors.png} +\end{center} +\item Possible values: SF7 - SF12\\ +\hspace{0.5cm} SF7: 7 bits per symbol \\ +\hspace{0.5cm} SF12: 12 bits per symbol +\item Spreading factor influences max. range +\end{itemize} +\end{frame} + +\begin{frame}{Demodulation} +\begin{itemize} +\item Signal is multiplied by (mixed with) Down-Chirp +\item Fourier Transform +\end{itemize} +\end{frame} + +\begin{frame}{Forward error coding} +\begin{itemize} +\item For each symbol several \textbf{parity bits} are added (= redundant information) \\ +Reason: allows to detect and fix errors that occur during transmission (due to interference, etc.) +\item \textbf{Coding rate} determines number of parity bits:\\ +\hspace{0.25cm} CR 4/5 : of 5 bits transmitted, 4 bits are actual data\\ +\hspace{1.5cm}$\vdots$\\ +\hspace{0.25cm} CR 4/8 : of 8 bits transmitted, 4 bits are actual data +\item Additionally: \textbf{C}yclical \textbf{R}edundancy \textbf{C}heck (CRC) +\end{itemize} +\end{frame} + +\begin{frame}{LoRa package format} +\begin{reference}{0mm}{70mm} +Source: SX1276/77/78/79 datasheet +\end{reference} +\includegraphics[scale=.3]{images/lora_packet_structure.png} +\begin{itemize} +\item Header: contains information about +\begin{itemize} +\item payload length +\item coding rate +\item CRC present? +\end{itemize} +\item Implicit header mode: no header sent +\end{itemize} +\end{frame} + +\begin{frame}{Data rate and air time} +\begin{itemize} +\item Data rate depends on bandwidth (BW), spreading factor (SF) and coding rate (CR)\\[0.3cm] +\begin{minipage}{0.4\textwidth} +\textbf{Symbol duration}: +\begin{equation*} +T_{sym} = \frac{2^{SF}}{BW} +\end{equation*} +\end{minipage} +\begin{minipage}{0.5\textwidth} +\textbf{Symbol rate}: +\begin{equation*} +R_{sym} = \frac{1}{T_{sym}} +\end{equation*} +\end{minipage} + +\item \textbf{Data rate}: +\begin{equation*} +R_{data} = \underbrace{SF}_{\# \text{bits per symbol}} \cdot \underbrace{R_{symb}}_{\text{symbol rate}} \cdot \underbrace{\frac{4}{4 + CR}}_{\text{coding rate}} +\end{equation*} +\item Example data rates:\\ +\begin{tabular}{lll|lr} +SF7 &BW250 &CR4/5 & $\approx 10.9$ &$\tfrac{kbit}{s}$ \\ \hline +SF7 &BW125 &CR4/5 & $\approx 5.5$ &$\tfrac{kbit}{s}$ \\ \hline +SF12 &BW125 &CR4/5 & $\approx 0.29$ & $\tfrac{kbit}{s}$ +\end{tabular} +%\item Sync word: \url{https://forum.chirpstack.io/t/relation-between-sync-word-private-network-and-end-nodes/191/17} +\end{itemize} +\end{frame} + +\begin{frame}{Time-On-Air} +\begin{reference}{0mm}{65mm} +According to \textit{Allgemeinzuteilung von Frequenzen zur Nutzung durch Funkanwendungen mit geringer Reichweite für nicht näher spezifizierte Anwendungen; Non-specific +Short Range Devices (SRD)}, Bundesnetzagentur, 2018 +\end{reference} +\begin{itemize} +\item Comply with \textbf{duty cycles} of the SRD band: +\begin{tabular}{l|r|r} +Frequency & Duty Cycle & ERP \\ +\hline +868,0 - 868,6 MHz & 1 \% & 25 mW +\end{tabular} +\item This amounts to $\approx 30$ seconds of transmission time per hour (maximum!). Try to keep it way below. +\item Airtime calculator: \url{https://www.loratools.nl/\#/airtime} +\item Example: \texttt{20 bytes} payload \\ +$\rightarrow$ max. 25 messages per hour on SF12 \\ +$\rightarrow$ max. 600 messages per hour on SF7 \\ + + +\end{itemize} +\end{frame} + +\section{Playground Part I} +\begin{frame}[fragile]{Playground Part I} +\begin{itemize} +\item Module used: \textbf{Wemos® TTGO LORA32 868Mhz ESP32} +\begin{minipage}{0.6\textwidth} +\begin{small} +\begin{itemize} +\item ESP32 +\item LoRa Chip SX1276 +\item OLED display +\item Antenna (needs to be connected!) +\end{itemize} +\end{small} +\end{minipage}% +\begin{minipage}{0.4\textwidth} +\includegraphics[scale=0.075]{images/ttgo_module.JPG} +\end{minipage} +\item Programmable in MicroPython thanks to \texttt{uPyLora} library by lemariva (\url{https://github.com/lemariva/uPyLora}) + +\begin{spacing}{0.52} +\begin{python} +from lora_transceiver import LoRaTransceiver +from uPySensors.ssd1306_i2c import Display + +disp = Display() + +# create transceiver +lora = LoRaTransceiver(display=disp) + +# send a string +lora.send_string("hello world!") + +# send some raw binary data +lora.send([0x01, 0x02, 0x03]) +\end{python} +\end{spacing} +\item Have a look at SX1276 datasheet +\end{itemize} +\end{frame} + +\begin{frame}[fragile]{Playground Part I} +\begin{itemize} +\item Receiving data: +\begin{spacing}{0.52} +\begin{python} +from lora_transceiver import LoRaTransceiver +from uPySensors.ssd1306_i2c import Display + +disp = Display() + +# create transceiver +lora = LoRaTransceiver(display=disp) + +# start receiving data (and output on the screen) +lora.recv() +\end{python} +\end{spacing} +\item Change LoRa parameters +\begin{spacing}{0.52} +\begin{python} +# change the spreading factor +lora.setSpreadingFactor(10) + +# change the frequency +lora.setFrequency(868.1e6) + +# change signal bandwidth +lora.setSignalBandwidth(250e3) + +# change sync word +lora.setSyncWord(0x34) +\end{python} +\end{spacing} +\item Task: \textit{Turn off your neighbors LED!} +\end{itemize} +\end{frame} + +\section{LoRaWAN or 'How to send data to the cloud'} +\begin{frame}{Introduction} +\begin{reference}{2mm}{70mm} +https://www.thethingsnetwork.org/forum/t/limitations-data-rate-packet-size-30-seconds-uplink-and-10-messages-downlink-per-day-fair-access-policy-guidelines/1300 +\end{reference} +\textbf{Outline:} +\begin{itemize} +\item Extensions: LoRaWAN +\begin{itemize} +\item explain basic idea (getting your sensor data online) +\item network topology +\item protocol +\item encryption +\item Fair use policy \url{https://www.thethingsnetwork.org/forum/t/limitations-data-rate-packet-size-30-seconds-uplink-and-10-messages-downlink-per-day-fair-access-policy-guidelines/1300} +\end{itemize} +\item Practical part II: playing around with MicroPython LoRa modules, getting data into the cloud +\end{itemize} +\end{frame} + +\section{Practical Part II} +\begin{frame}[fragile] +\begin{itemize} +\item Set device address, network and application key +\item Encrypt data (done by uLoRaWAN) +\item Encode data (as in Part I) +\item Send data ... +\end{itemize} +On the receiver side: +\begin{itemize} +\item ... receive data +\item Decrypt data (using keys) +\item Decode data (as in Part I) +\item Do something with the data +\end{itemize} +Best practices to reduce payload size: \url{https://www.thethingsnetwork.org/forum/t/best-practices-to-limit-application-payloads/1302}\\ +Cayenne Low Power Payload (LPP) +\end{frame} + +\end{document}