2019-11-27 11:18:47 +00:00
\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 <presentation>
{
\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
2019-11-29 16:14:26 +00:00
\DeclareFixedFont { \ttb } { T1} { ascii} { m} { n} { 7} % for bold
\DeclareFixedFont { \ttm } { T1} { ascii} { m} { n} { 7} % for normal
2019-11-27 11:18:47 +00:00
% 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,
2019-11-29 16:14:26 +00:00
basicstyle=\ttfamily \color { white} \tiny ,
2019-11-27 11:18:47 +00:00
otherkeywords={ self} , % Add keywords here
2019-11-29 16:14:26 +00:00
keywordstyle=\ttfamily \color { lightblue} ,
commentstyle=\ttfamily \color { teal} ,
2019-11-27 11:18:47 +00:00
emph={ MyClass,_ _ init_ _ } , % Custom highlighting
2019-11-29 16:14:26 +00:00
emphstyle=\ttfamily \color { deepred} , % Custom highlighting style
stringstyle=\ttfamily \color { red} ,
2019-11-27 11:18:47 +00:00
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}
2019-12-01 10:46:17 +00:00
\includegraphics <1>[scale=0.35]{ images/amplitude_ modulation.png}
\includegraphics <2>[scale=0.35]{ images/amplitude_ modulation_ 2.png}
2019-11-27 11:18:47 +00:00
\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}
2019-12-01 10:46:17 +00:00
\includegraphics <1>[scale=0.35]{ images/frequency_ modulation.png}
\includegraphics <2>[scale=0.35]{ images/frequency_ modulation_ 2.png}
2019-11-27 11:18:47 +00:00
\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}
2019-12-01 10:46:17 +00:00
\includegraphics <1>[scale=0.38]{ images/lora_ symbols_ 0.png}
\includegraphics <2>[scale=0.38]{ images/lora_ symbols_ 1.png}
\includegraphics <3>[scale=0.38]{ images/lora_ symbols_ 2.png}
\includegraphics <4>[scale=0.38]{ images/lora_ symbols_ 3.png}
\includegraphics <5>[scale=0.38]{ images/lora_ symbols_ 4.png}
\includegraphics <6>[scale=0.38]{ images/lora_ symbols_ 5.png}
\includegraphics <7>[scale=0.35]{ images/lora_ demodulation_ 0.png}
\includegraphics <7>[scale=0.35]{ images/lora_ demodulation_ 1.png}
\includegraphics <8>[scale=0.38]{ images/lora_ demodulation_ 2.png}
2019-11-27 11:18:47 +00:00
\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}
2019-12-01 10:46:17 +00:00
\only <7->{
\vspace { -0.75cm}
\textbf { Demodulation:}
\begin { itemize}
\item De-chirp signal by multiplying (mixing) with conjugate chirp
\item Fourier Transform
\item Alignment using detect sequence at start of transmission
\end { itemize}
}
2019-11-27 11:18:47 +00:00
\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}
2019-12-01 10:46:17 +00:00
\item De-chirp signal by multiplying (mixing) with conjugate chirp
2019-11-27 11:18:47 +00:00
\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}
2019-12-01 10:46:17 +00:00
\subsection { Packet format}
2019-11-27 11:18:47 +00:00
\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}
2019-12-01 10:46:17 +00:00
\subsection { Data rate and air time}
2019-11-27 11:18:47 +00:00
\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}
2019-12-01 10:46:17 +00:00
\begin { small}
2019-11-27 11:18:47 +00:00
\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} )
2019-11-29 16:14:26 +00:00
\begin { spacing} { 0.84}
2019-11-27 11:18:47 +00:00
\begin { python}
from lora_ transceiver import LoRaTransceiver
from uPySensors.ssd1306_ i2c import Display
disp = Display()
# create transceiver
lora = LoRaTransceiver(display=disp)
# send a string
2019-11-29 16:14:26 +00:00
lora.send_ string("Hello World!")
2019-11-27 11:18:47 +00:00
# send some raw binary data
lora.send([0x01, 0x02, 0x03])
\end { python}
\end { spacing}
2019-12-01 10:46:17 +00:00
\vspace { -0.1cm}
\item Alternative: HopeRF \textbf { RFM95W} chip
\item For "documentation" see: \url { https://imaginaerraum.de/git/Telos4/LoRa-Workshop}
2019-11-27 11:18:47 +00:00
\end { itemize}
2019-12-01 10:46:17 +00:00
\end { small}
2019-11-27 11:18:47 +00:00
\end { frame}
\begin { frame} [fragile]{ Playground Part I}
\begin { itemize}
\item Receiving data:
2019-11-29 16:14:26 +00:00
\begin { spacing} { 0.84}
2019-11-27 11:18:47 +00:00
\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
2019-11-29 16:14:26 +00:00
\begin { spacing} { 0.85}
2019-11-27 11:18:47 +00:00
\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}
2019-11-29 16:14:26 +00:00
\section { LoRaWAN}
2019-12-01 10:46:17 +00:00
\subsection { Network topology}
2019-11-29 16:14:26 +00:00
\begin { frame} { LoRaWAN}
\begin { reference} { 2mm} { 80mm}
https://www.thethingsnetwork.org/docs/lorawan/
\end { reference}
\begin { itemize}
\item LoRaWAN is for getting your sensor data online
\item Media access control (MAC) protocol
\item Network topology:\\
\begin { center}
\includegraphics [scale=0.085] { images/lorawan_ topology.png}
\end { center}
\item \textbf { Gateways} forward data from nodes to the \textit { cloud}
\item Transmission is secured by AES-128 encryption
\end { itemize}
\end { frame}
2019-12-01 10:46:17 +00:00
\subsection { TheThingsNetwork}
2019-11-29 16:14:26 +00:00
\begin { frame} { Device registration}
\begin { itemize}
\item \textbf { TheThingsNetwork} aims to build a global LoRaWAN network
\item Devices need to be registered and assigned to an application before they can communicate with the network
\begin { enumerate}
\item Create an account on \url { https://www.thethingsnetwork.org/}
\item Log in and open the \textit { Console}
\item
\begin { minipage} { 0.35\textwidth }
\vspace { -1.85cm} Create an application
\end { minipage} %
\begin { minipage} { 0.6\textwidth }
\vspace { -0.2cm}
\includegraphics [scale=0.08] { images/lorawan_ application.png}
\end { minipage}
\item Create a device and register it. Go to \textit { Settings} and change activation method to Activation by Personalisation (ABP)\\
\includegraphics [scale=0.08] { images/lorawan_ abp.png}
\end { enumerate}
\end { itemize}
\end { frame}
\begin { frame} { Keys}
\begin { reference} { 2mm} { 80mm}
https://nootropicdesign.com/projectlab/2018/10/28/lorawan-end-devices/
2019-11-27 11:18:47 +00:00
\end { reference}
\begin { itemize}
2019-11-29 16:14:26 +00:00
\item Three important keys (when using ABP):\\
\begin { scriptsize}
\begin { center}
\hspace * { -8pt} \makebox [\linewidth] [c] { %
\begin { tabular} { l|l}
Device Address (\textbf { DevAddr} ) & identification of the device in TTN \\
\hline
Network Session Key (\textbf { NwkSKey} ) & secure communication between device and TTN \\
\hline
Application Session Key (\textbf { AppSKey} ) & secure communication between device and application
\end { tabular}
}
\end { center}
\end { scriptsize}
2019-11-27 11:18:47 +00:00
\begin { itemize}
2019-11-29 16:14:26 +00:00
\item DevAddr tells TTN where to route the data
\item NwkSKey used for message validity check (MIC)\\ (prevents tampering with messages)
\item AppSKey are used for payload encryption/decryption\\ (prevents reading the data)
\item Need to be \textbf { hardcoded} into the device
2019-11-27 11:18:47 +00:00
\end { itemize}
2019-11-29 16:14:26 +00:00
\item Alternatively: use Over-the-Air Activation (OTAA) (more secure)
\item Frame counters: Each message is equipped with a counter that prevents re-transmit attacks
\end { itemize}
\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}
\end { frame}
\begin { frame} { LoRaWAN payload format}
\begin { reference} { 2mm} { 70mm}
http://www.techplayon.com/lora-long-range-network-architecture-protocol-architecture-and-frame-formats/
\end { reference}
\begin { center}
\includegraphics [scale=0.35] { images/lorawan_ payload_ format.png}
\end { center}
Useful link:
\begin { itemize}
\item LoRaWAN packet decoder { \small \url { https://lorawan-packet-decoder-0ta6puiniaut.runkit.sh/} }
2019-11-27 11:18:47 +00:00
\end { itemize}
\end { frame}
2019-12-01 10:46:17 +00:00
\subsection { Applications}
\begin { frame} { Use cases}
\begin { reference} { 0mm} { 80mm}
\url { https://www.semtech.com/lora/resources/lora-white-papers}
\end { reference}
\begin { minipage} { 0.5\textwidth }
\begin { flushleft}
\textbf { Smart farming}
\end { flushleft}
\includegraphics [scale=0.09] { images/smart_ farming.png}
\end { minipage} %
\begin { minipage} { 0.5\textwidth }
\begin { flushright}
\textbf { Smart parking}
\end { flushright}
\includegraphics [scale=0.09] { images/smart_ parking.png}
\end { minipage}
\begin { minipage} { 0.5\textwidth }
\begin { flushleft}
\textbf { Smart home}
\end { flushleft}
\includegraphics [scale=0.09] { images/smart_ home.png}
\end { minipage} %
\begin { minipage} { 0.5\textwidth }
\begin { flushright}
\textbf { Smart waste management}
\end { flushright}
\includegraphics [scale=0.09] { images/smart_ waste.png}
\end { minipage} %
\end { frame}
\section { Playground Part II}
2019-11-29 16:14:26 +00:00
\begin { frame} [fragile]{ Playground Part II}
Example code for sending data to \textbf { TheThingsNetwork} :
\begin { spacing} { 0.85}
\begin { python}
from lora_ transceiver import LoRaTransceiver
from uPySensors.ssd1306_ i2c import Display
import uLoRaWAN
from uLoRaWAN.MHDR import MHDR
disp = Display()
# create transceiver for LoRaWAN frequency (channel 0 = 868.1 Mhz)
lora = LoRaTransceiver(frequency=868.1E6, syncword=0x34, display=disp)
# set address and keys for LoRaWAN (with ABP)
devAddr = [0x26, 0x01, 0x16, 0x5C] # ir_ test_ device_ 01
nwkSKey = [0x9D, 0x95, 0x0F, 0xAB, 0xCB, 0x63, 0xD3, 0x04, 0xBC, 0x09,
0xC4, 0x9E, 0xC5, 0xDF, 0x3C, 0x37]
appSKey = [0xC9, 0x6C, 0x00, 0xD1, 0xB0, 0x1C, 0x2E, 0x42, 0x11, 0xBA,
0x32, 0x6F, 0x2F, 0xC2, 0x75, 0x6A]
# lorawan object for conversion of data in LoRaWAN message format
lorawan = uLoRaWAN.new(nwkSKey, appSKey)
message = list(map(ord, 'Hello World!')) # convert to bytes
lorawan.create(MHDR.UNCONF_ DATA_ UP, { 'devaddr': devAddr, 'fcnt': 0,
'data': message } )
payload = lorawan.to_ raw()
lora.send(payload)
\end { python}
\end { spacing}
(the code is based on the \texttt { uLoRaWAN} library by mallagant, see: { \small \url { https://github.com/mallagant/uLoRaWAN} } )
\end { frame}
\begin { frame} [fragile]{ Playground Part II}
For testing you can use the following device addresses and keys:
\begin { itemize}
\item
\textbf { nwkSKey}
\begin { python}
9D 95 0F AB CB 63 D3 04 BC 09 C4 9E C5 DF 3C 37
\end { python}
\item \textbf { appSKey}
\begin { python}
C9 6C 00 D1 B0 1C 2E 42 11 BA 32 6F 2F C2 75 6A
\end { python}
\item \textbf { devAddr} (choose one):
\begin { python}
1: 26 01 16 5C 10: 26 01 1A CE
2: 26 01 18 52 11: 26 01 12 F1
3: 26 01 1E 4F 12: 26 01 1B 18
4: 26 01 17 83 13: 26 01 19 40
5: 26 01 1B 5C 14: 26 01 19 96
6: 26 01 1E B5 15: 26 01 18 FF
2019-12-01 10:46:17 +00:00
7: 26 01 13 DA 16: 26 01 12 5B
8: 26 01 1E 8F 17: 26 01 13 63
9: 26 01 18 F1 18: 26 01 12 09
2019-11-29 16:14:26 +00:00
\end { python}
2019-12-01 10:46:17 +00:00
\item Watch incoming data (forwarded as HTTP POST request) at
2019-11-29 16:14:26 +00:00
\begin { center}
2019-12-01 10:46:17 +00:00
\url { https://t1p.de/ocp6}
2019-11-29 16:14:26 +00:00
\end { center}
2019-12-01 10:46:17 +00:00
and check the gateway log at (connected to @BayernWLAN wifi)
2019-11-29 16:14:26 +00:00
\begin { center}
2019-12-01 10:46:17 +00:00
\url { http://192.168.1.1:1337}
2019-11-29 16:14:26 +00:00
\end { center}
\end { itemize}
\end { frame}
2019-12-01 10:46:17 +00:00
\begin { frame} { References and more information}
2019-11-29 16:14:26 +00:00
\begin { footnotesize}
2019-12-01 10:46:17 +00:00
\textbf { References:}
2019-11-27 11:18:47 +00:00
\begin { itemize}
2019-11-29 16:14:26 +00:00
\item Decoding LoRa \url { https://revspace.nl/DecodingLora}
\item \textit { LoRa und The Things Network} - talk by Hubert Högl (FH Augsburg)
\item \href { https://electronics.stackexchange.com/questions/278192/understanding-the-relationship-between-lora-chips-chirps-symbols-and-bits} { Stackexchange thread about LoRa symbols}
\item \href { http://wireless.ictp.it/school_ 2017/Slides/LoRaDetails.pdf} { LoRa talk}
\item \href { https://www.youtube.com/playlist?list=PLmL13yqb6OxdeOi97EvI8QeO8o-PqeQ0g} { Mobilefish.com LoRa youtube tutorials}
2019-11-27 11:18:47 +00:00
\end { itemize}
2019-11-29 16:14:26 +00:00
2019-12-01 10:46:17 +00:00
\textbf { Further reading:}
2019-11-29 16:14:26 +00:00
\begin { itemize}
\item TTN Applications: APIs, Python SDK, Integrations { \scriptsize \url { https://www.thethingsnetwork.org/docs/applications/} }
\item Best practices to reduce payload size: { \scriptsize \url { https://www.thethingsnetwork.org/forum/t/best-practices-to-limit-application-payloads/1302} }
\item Forum about all things LoRa: \url { https://www.thethingsnetwork.org/forum/}
2019-11-27 11:18:47 +00:00
\begin { itemize}
2019-11-29 16:14:26 +00:00
\item Gateway guides
2019-12-01 10:46:17 +00:00
\item Radio module/antenna recommendations
2019-11-29 16:14:26 +00:00
\item ...
2019-11-27 11:18:47 +00:00
\end { itemize}
2019-11-29 16:14:26 +00:00
\item Cayenne Low Power Payload (LPP)
\end { itemize}
\end { footnotesize}
\pause
\begin { center}
\textbf { Thanks for your attention!}
\end { center}
2019-11-27 11:18:47 +00:00
\end { frame}
\end { document}