Introdução à Redes
Sem Fio Inteligentes
Software Defined Radio
Minicurso
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
Cristiano Both, Rafael Kunst, Lucas Bondan,
Maicon Kist, Leonardo Faganello, Lisandro
Granville, Juergen Rochol
`
Roteiro
① Software Defined Radio
① O que é?
② Vantagens e Desvantagens
③ SDR hoje
② GNU Radio
① Visão Geral
② Instalação e Utilização
③ GNU Radio + USRP
③ Resumo
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
2
Roteiro
① Software Defined Radio
① O que é?
② Vantagens e Desvantagens
③ SDR hoje
② GNU Radio
① Visão Geral
② Instalação e Utilização
③ GNU Radio + USRP
③ Resumo
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
3
O que é SDR ?
 Software Defined Radio
 Rádios implementados em software
 Tecnologia de implementação
 Traz os módulos de processamento de sinais
digitais para perto da antena
 Substitui hardware dedicado por software
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
4
O que é SDR ?
Hardware
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
5
O que é SDR ?
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
6
O que é SDR ?
SDR Ideal
Software
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
5
O que é SDR ?
SDR Ideal
Software
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
5
O que é SDR ?
SDR Real
Software
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
5
Roteiro
① Software Defined Radio
① O que é?
② Vantagens e Desvantagens
③ SDR hoje
② GNU Radio
① Visão Geral
② Instalação e Utilização
③ GNU Radio + USRP
③ Resumo
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
10
Vantagens de utilizar SDR
 Flexibilidade
 Redução do tempo de desenvolvimento
 Custo
 Para comercializar poucas unidades
 Inovações:
 Novas técnicas de modulação
 Acesso dinâmico ao espectro
 Rádios Cognitivos
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
11
Desvantagens de utilizar SDR
 Maior consumo de energia
 Maior poder de processamento para realizar a
mesma tarefa do que em um FPGA/ASIC
 Custo
 Para comercializar um produto
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
12
Roteiro
① Software Defined Radio
① O que é?
② Vantagens e Desvantagens
③ SDR hoje
② GNU Radio
① Visão Geral
② Instalação e Utilização
③ GNU Radio + USRP
③ Resumo
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
13
Um pouco de história:SPEAKEasy (1/2)
 1991-1995
 Projeto para emular os mais de 10 tipos de
rádios do exército americano
 Frequências de 2 a 2000 MHz
 Possibilitar a integração de novos tipos de
rádios
 Fracassou
 DSPs vs GPP
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
14
Um pouco de história:SPEAKEasy (2/2)
 Lições aprendidas no projeto:
 Utilizar GPP – Moore está do nosso lado
 SPEAKEasy durou 2 ciclos de Moore
 Em 1995 os processadores já eram 4x mais
rápidos
 Não utilizar código específico para um
hardware
 Código do SPEAKEasy era “amarrado” ao DSP
C40 (40MHz)
 Em 1995 o Pentium Pro rodava a 200 MHz
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
15
SDRs hoje (1/2)
 Um PC realiza o processamento de sinais
 O Front-End de rádio é conectado ao PC
 USB, Ethernet, PCI-Express
 Toda a preparação do sinal é feita no Front-End
 Um software no PC substitui o hardware de
processamento de sinais
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
16
SDRs hoje (2/2)
Don't have $1500 to drop on a USRP?
A Linux kernel developer has discovered that a Realtek digital TV
tuner chip has an undocumented mode that turns it into a
software-defined radio, with a frequency range of 64-1700MHz.
The going rate for one of these USB devices can be as low as
US$11. If you're unfamiliar with software-defined radio and have
20 minutes to spare, Balint Seeber has a great video introduction.
Fonte: Slashdot
http://hardware.slashdot.org/story/12/03/31/1914217/softwaredefined-radio-for-11
Projeto Open-Source para o módulo: http://sdr.osmocom.org/trac/
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
17
SDRs amanhã
 Irradiar e receber sinais em qualquer
frequência do espectro
 Obstáculos:
 De hardware: conseguir sintonizar em qualquer
frequência do espectro, taxa de amostragem
 De Software: processamento, restrições de tempo,
estabilidade
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
18
SDR + Rádio Cognitivo
 SDR oferecem a flexibilidade necessária para
implementar um rádio cognitivo
 SDR é um habilitador para rádio cognitivo
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
19
Os SDR mais utilizados
 OSSIE
 Sora
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
20
Roteiro
① Software Defined Radio
① O que é?
② Vantagens e Desvantagens
③ SDR hoje
② GNU Radio
① Visão Geral
② Instalação e Utilização
③ GNU Radio + USRP
③ Resumo
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
21
O que é o GNU Radio?
 É um SDR
 Gratuito e Open Source
 Licença GPL
 Muito utilizado na academia
 Disciplina de Comunicação de Dados
 Pesquisa
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
22
GNU Radio (1/2)
 Desenvolvimento iniciou em 2001
 Disponível para *nix, Windows e iOS
 Códigos em C++ e Python
 C++: Módulos de processamento de alto
desempenho
 Python: Ligação de módulos. Usado pelo
“usuário final”
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
23
GNU Radio (2/2)
 Não é necessário “programar”
 Ferramenta para “montagem” de um fluxo de
processamento facilita o desenvolvimento de
novos sistemas
 GNU Radio Companion – GRC
 GRC gera o Python final
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
24
Arquitetura
Python é utilizado para a criação
de fluxos de dados (FlowGraphs)
C++ é usado para criar blocos de
processamento de sinais
Biblioteca atual é completa
Python
Desenvolvimento de
FlowGraphs
C++
Módulos de
Processamento de Sinais
Escalonador controla o fluxo das
informações entre os blocos
Escalonador
Controla o Fluxo
de Execução
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
25
GNU Radio + USRP
Python
SWIG
Blocos de Processamento de Sinais em
C++
Interface Gigabit Ethernet
Front End de RF (USRP)
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
26
Os blocos do GNU Radio
 GNU Radio utiliza o conceito de “blocos”
 Cada bloco realiza uma função especifica
Somente saídas
Gerador de sinal
Somente entradas
Transmissão/Visualização
N entradas e N saídas
Processamento de sinais
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
27
Os blocos do GNU Radio
Sources
Processamento
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
Sinks
28
FlowGraph (1/2)
 Quando blocos são conectados para realizar
alguma tarefa temos um FlowGraph
 Todo FlowGraph possui 1+ Source(s) e 1+
Sink(s)
 Ex:
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
29
FlowGraph (2/2)
 FlowGraph são executados no computador
 Tudo é feito por software
 E se eu usar o USRP?
 Ainda executa no computador
 USRP atua como um source e/ou sink
 Falta pouco para as demos !!!
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
30
Contras
 GNU Radio não oferece garantias de
desempenho
 Latência é o calcanhar de Aquiles
 Desenvolver blocos novos requer
conhecimentos em comunicação de dados e
programação
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
31
Roteiro
① Software Defined Radio
① O que é?
② Vantagens e Desvantagens
③ SDR hoje
② GNU Radio
① Visão Geral
② Instalação e Utilização
③ GNU Radio + USRP
③ Resumo
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
32
Instalação
 Ubuntu:
 Do repositório: apt-get install gnuradio
 Versão em desenvolvimento:
wget http://www.sbrac.org/files/build-gnuradio &&
chmod a+x ./build-gnuradio && ./build-gnuradio
 Windows:
 Guia em
http://code.ettus.com/redmine/ettus/projects/uhd/wiki/GNURadio
_Windows
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
33
O que é instalado? (1/3)
 /usr/local/share/gnuradio
 Exemplos
 /usr/local/share/doc/gnuradio-<versão>
 Documentação do código C++
 /usr/local/lib/python2.7/dist-packages/gnuradio
 Fontes em Python
 Nada legíveis
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
34
O que é instalado? (2/3)
 Diversos FlowGraphs úteis
 uhd_fft: Analisador de espectro
 Úteis:
 uhd_find_devices: Encontra os dispositivos USRP
na rede local
 gr_mod_tool: Cria os arquivos necessários para
desenvolver um novo bloco
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
35
O que é instalado? (3/3)
 GNU Radio Companion
 Interface para a criação do FlowGraphs
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
36
GNU Radio Companion (1/3)
 Muito útil para criação rápida de FlowGraphs
 Blocos mostrados são descritos em XML
/usr/local/share/gnuradio/grc/blocks/
 GRC apenas gera o código em Python
 Ótimo para aprender a mecânica do código Python
 Arquivo top_block.py no mesmo diretório do .grc
 FlowGraphs limitados aos blocos que aparecem no
menu de seleção
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
37
GNU Radio Companion (2/3)
Criação do
FlowGraph
Blocos de
processamento
Mensagens
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
38
GNU Radio Companion (3/3)
 Blocos possuem diferentes tipos de dados
de entrada e saída
 GRC identifica esses tipos por cores
 Dois blocos conectados devem utilizar o
mesmo tipo de dado
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
39
Exemplo 1
Necessário quando
source e sink
são simulados
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
40
Exemplo 1
Necessário quando
source e sink
são simulados
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
41
Exemplo 1
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
42
Show Time !
 Geração de ondas senoidais
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
43
Desenvolvimento em Python
#!/usr/bin/env python
dst = audio.sink(sampling_rate)
from gnuradio import gr
tb.connect( sin_350, (dst, 0) )
from gnuradio import audio
tb.connect( sin_440, (dst, 1) )
if __name__ == '__main__':
tb.start()
sampling_rate = 48000
raw_input('Pression Enter para terminar')
amplitude = 1
tb.stop()
tb = gr.top_block()
sin_350 = gr.sig_source_f(sampling_rate,
gr.GR_SIN_WAVE, 350, amplitude)
sin_440 = gr.sig_source_f(sampling_rate,
gr.GR_SIN_WAVE, 440, amplitude)
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
44
Passo a passo (1/8)
#!/usr/bin/env python
Para o Sistema Operacional
saber que o restante do arquivo
é um código Python
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
45
Passo a passo (2/8)
#!/usr/bin/env python
from gnuradio import gr
Importa os módulos
necessários do GNU Radio
from gnuradio import audio
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
46
Passo a passo (3/8)
#!/usr/bin/env python
from gnuradio import gr
from gnuradio import audio
Corpo principal do código
sampling_rate é a amostragem
da placa de som
if __name__ == '__main__':
sampling_rate = 48000
amplitude = 1
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
47
Passo a passo (4/8)
#!/usr/bin/env python
Instância o FlowGraph
from gnuradio import gr
from gnuradio import audio
if __name__ == '__main__':
sampling_rate = 48000
amplitude = 1
tb = gr.top_block()
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
48
Passo a passo (5/8)
#!/usr/bin/env python
from gnuradio import gr
Cria os dois blocos geradores
de sinais
from gnuradio import audio
if __name__ == '__main__':
sampling_rate = 48000
amplitude = 1
tb = gr.top_block()
sin_350 = gr.sig_source_f(sampling_rate,
gr.GR_SIN_WAVE, 350, amplitude)
sin_440 = gr.sig_source_f(sampling_rate,
gr.GR_SIN_WAVE, 440, amplitude)
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
49
Passo a passo (6/8)
from gnuradio import gr
Cria o sink como sendo a placa
de som
from gnuradio import audio
if __name__ == '__main__':
sampling_rate = 48000
amplitude = 1
tb = gr.top_block()
sin_350 = gr.sig_source_f(sampling_rate,
gr.GR_SIN_WAVE, 350, amplitude)
sin_440 = gr.sig_source_f(sampling_rate,
gr.GR_SIN_WAVE, 440, amplitude)
dst = audio.sink(sampling_rate)
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
50
Passo a passo (6/8)
if __name__ == '__main__':
Conecta os blocos source e sink
sampling_rate = 48000
amplitude = 1
tb = gr.top_block()
sin_350 = gr.sig_source_f(sampling_rate,
gr.GR_SIN_WAVE, 350, amplitude)
sin_440 = gr.sig_source_f(sampling_rate,
gr.GR_SIN_WAVE, 440, amplitude)
dst = audio.sink(sampling_rate)
tb.connect( sin_350, (dst, 0) )
tb.connect( sin_440, (dst, 1) )
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
51
Passo a passo (6/8)
amplitude = 1
Inicia o FlowGraph e espera
uma tecla ser pressionada
tb = gr.top_block()
sin_350 = gr.sig_source_f(sampling_rate,
gr.GR_SIN_WAVE, 350, amplitude)
sin_440 = gr.sig_source_f(sampling_rate,
gr.GR_SIN_WAVE, 440, amplitude)
dst = audio.sink(sampling_rate)
tb.connect( sin_350, (dst, 0) )
tb.connect( sin_440, (dst, 1) )
tb.start()
raw_input('Pression Enter para terminar')
tb.stop()
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
52
Roteiro
① Software Defined Radio
① O que é?
② Vantagens e Desvantagens
③ SDR hoje
② GNU Radio
① Visão Geral
② Instalação e Utilização
③ GNU Radio + USRP
③ Resumo
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
53
GNU RADIO + USRP
 USRP é representado por um bloco source e um
bloco sink
 Configurações são simples
 Somente um FlowGraph pode acessar o mesmo
USRP ao mesmo tempo
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
54
GNU RADIO + USRP
 Usando apenas um USRP:
 Transmissão e recepção devem estar no mesmo
FlowGraph
Transmissão
Recepção
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
55
GNU RADIO + USRP
 Source:
 Sink:
Tipo do dado enviado/recebido
pelo USRP.
Geralmente usamos complex.
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
56
GNU RADIO + USRP
Tipo do dado enviado/recebido
pelo USRP
Endereço
IPusamos
do equipamento.
Geralmente
complex.
Não é obrigatório
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
57
GNU RADIO + USRP
Endereço IP do equipamento.
Não é obrigatório
Taxa de amostragem do sinal.
Mínimo de 195312 amostras/s
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
58
GNU RADIO + USRP
Taxa de amostragem do sinal.
Minimo
de 195312
amostras/s
Frequência
de transmissão
ou recepção
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
59
GNU RADIO + USRP
Frequência de transmissão
ou
recepção.
Ganho
do sinal
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
60
GNU RADIO + USRP
Antena.
Ganho
sinal
Vazio =do
Automático
TX/RX = Antena 1
RX2 = Antena 2
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
61
Show Time !
 Modulação OFDM
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
62
Show Time !
Fonte dos
Dados
Processamento
Codificação +
Modulação
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
Transmissão
63
Show Time !
Fonte dos
Dados
Processamento
Codificação +
Modulação
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
Transmissão
64
Um detector de energia simples
Detector de
energia
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
65
Um detector de energia simples
S/P
FFT
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
Detector de
energia
66
Roteiro
① Software Defined Radio
① O que é?
② Vantagens e Desvantagens
③ SDR hoje
② GNU Radio
① Visão Geral
② Instalação e Utilização
③ GNU Radio + USRP
③ Resumo
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
70
Resumo
 SDRs
 O que são ?
 Avanços
 GNU Radio
 Arquitetura
 Conceitos
 GNU Radio + USRP2
 Demonstrações
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
71
Conclusões
 SDR é perfeito para desenvolvimento de novos
protocolos de camada física
 SDR reduz o tempo de desenvolvimento de
produtos
 SDR possibilita o desenvolvimento de Rádios
Cognitivos
Semana Acadêmica do Instituto de Informática
Porto Alegre, 22 a 24 de maio de 2013
72
Obrigado!
Perguntas?
Maicon Kist
[email protected]
Leonardo Roveda Faganello
[email protected]
http://labcom.inf.ufrgs.br/dcg
Curso de Extensão
Semana Acadêmica 2013-1
Porto Alegre, 20 a 24 de maio de 2013
`